From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 47B4BC433DF for ; Sat, 13 Jun 2020 08:23:57 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 163EF207DD for ; Sat, 13 Jun 2020 08:23:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="bpRIWyPu"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fe+VxsiJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 163EF207DD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=um7Kor9z6ru5rVXzXWXiG1DtcJJZAA1lznnDkis+5+E=; b=bpRIWyPueUF4zN /qlsOo4tbyufEfllTYF+sXoAzkOWSJgzNseSHl4jRwUr7iMdQOn5gUwYkuCQyvyoSZDiiQP7b1bWU /2mgF53NGBrr+suMMpJbs3mhxWIhbHV85qvSmVu09+9FRELDa/H2uNnazgjntqeTgU2x53toCULvT OxOt0JhyCF5eZQ1jwUxNjdThWUvYz3W7wAyfM9bPzsEZIHUhDh10+yLFbYwIR6m1SmxJ8MVcLXYWx EBHJLJeNH5y2HX6L4JJNXIbu0JDMWgT4kyV3/JrBY/vMBNTc2GMj8p4gxFhD1HFcZvP+F3O7xAYTO BE1XzlSaM39l54jPzJhw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jk1SF-0007O1-CX; Sat, 13 Jun 2020 08:23:55 +0000 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jk1QF-0005fr-Rd for linux-arm-kernel@lists.infradead.org; Sat, 13 Jun 2020 08:21:54 +0000 Received: by mail-wm1-x341.google.com with SMTP id u26so10453519wmn.1 for ; Sat, 13 Jun 2020 01:21:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=C4bfyVONOHjcFyM7sJIEOYSWfm64yEtLiOJDCx3EJbM=; b=fe+VxsiJ2aLLcurn27oooHYDzruQSLHqQV6NJVUI08Ahni23BqSpG2mC7OjbEFvyPA BYRw44rMww8tN10plqDA6Jr17l0kGSdLMXpVjZ6VWb24OdrDXTHmp7AiIj/NMvP2Zv5O fKZ8RHasFKBjAZzlI1wQtDvzrZjyZK+fimhFjNihoYKHP7rhPxbilIyiJjIasImiD89F 7XhFf0dMY0EUVqwPT7hLa8bh3XBcCpKOMY3z0Xhud5Tzykq8BL4GunvhrkaA6ibQuHpP ET1ysYdu3UxKZhFdtaU1D1MCVrSnENdmWzMrXCimGc+86fpanDU3iY9VxdR3FpeCKuml IGXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=C4bfyVONOHjcFyM7sJIEOYSWfm64yEtLiOJDCx3EJbM=; b=KMsJWMVQC56Vbwt3WXuMLjbSSpZ5FAyktfUnl+zZlGjV8Wb1f5GsUy86B0wcVxN8G7 5CKOORl8WffrCfMrSQZ1yeXKpBPvOAwYYAr2YsHTMglBH99bRXz7oqqBlkEXaWd84i1v 12dqaCOK7+FCjvr1L1emVri5x6UC0CX8JU4KRD5F19zVpLi5bzgiHeNxhierBxG3vJpZ IXhhN9TPNzFLNYYGosGM3bBvcuqlXtAKvwJJKKyLV6FzRHvOGN4PcHt/rjlOdNG2Lml6 gCqRLkm4eEkpsqJfdoF2PGz2WF5JYnRSldrP7t4ZXQw8jQOh+psJTLBs/GZC1EcBYsPo WP1Q== X-Gm-Message-State: AOAM531eDRsLKqLC8sNZ3tHXCRLe1/sItD2X5LPEzwzZ7XxBJTKP5MYS 2RXGJlD7iMu6mQBtD5MOwHM= X-Google-Smtp-Source: ABdhPJy1PC/bskdeYWnOqeO7otjJvlSboU8zNxvQBtf/D60FD3pp6y5OeQPPTq/GaqO6FbTD3M+vkw== X-Received: by 2002:a1c:7f44:: with SMTP id a65mr3026760wmd.53.1592036510041; Sat, 13 Jun 2020 01:21:50 -0700 (PDT) Received: from skynet.lan (168.red-88-20-188.staticip.rima-tde.net. [88.20.188.168]) by smtp.gmail.com with ESMTPSA id n189sm12243603wmb.43.2020.06.13.01.21.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Jun 2020 01:21:49 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: hauke@hauke-m.de, zajec5@gmail.com, tsbogend@alpha.franken.de, robh+dt@kernel.org, f.fainelli@gmail.com, jonas.gorski@gmail.com, bcm-kernel-feedback-list@broadcom.com, linux-mips@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v4 6/9] soc: bcm: add BCM63xx power domain driver Date: Sat, 13 Jun 2020 10:21:37 +0200 Message-Id: <20200613082140.2009461-7-noltari@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200613082140.2009461-1-noltari@gmail.com> References: <20200610171630.465579-1-noltari@gmail.com> <20200613082140.2009461-1-noltari@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200613_012151_987060_DF404277 X-CRM114-Status: GOOD ( 16.15 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org QkNNNjMxOCwgQkNNNjMyOCwgQkNNNjM2MiBhbmQgQkNNNjMyNjggU29DcyBoYXZlIGEgcG93ZXIg ZG9tYWluIGNvbnRyb2xsZXIKdG8gZW5hYmxlL2Rpc2FibGUgY2VydGFpbiBjb21wb25lbnRzIGlu IG9yZGVyIHRvIHNhdmUgcG93ZXIuCgpTaWduZWQtb2ZmLWJ5OiDDgWx2YXJvIEZlcm7DoW5kZXog Um9qYXMgPG5vbHRhcmlAZ21haWwuY29tPgotLS0KIHY0OiBubyBjaGFuZ2VzLgogdjM6IFVzZSBk dC1iaW5kaW5ncyBkZWZpbml0aW9ucyBpbiBwb3dlciBkb21haW4gZHJpdmVyLgogdjI6IEludHJv ZHVjZSBiY202M3h4IGZvbGRlciBpbiBkcml2ZXJzL3NvYy9iY20gYW5kIHVwZGF0ZSBNQUlOVEFJ TkVSUy4KCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog ZHJpdmVycy9zb2MvYmNtL0tjb25maWcgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRyaXZlcnMv c29jL2JjbS9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL3NvYy9iY20v YmNtNjN4eC9LY29uZmlnICAgICAgICAgfCAgMTIgKwogZHJpdmVycy9zb2MvYmNtL2JjbTYzeHgv TWFrZWZpbGUgICAgICAgIHwgICAyICsKIGRyaXZlcnMvc29jL2JjbS9iY202M3h4L2JjbTYzeHgt cG93ZXIuYyB8IDM3OCArKysrKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwg NDA0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9iY20vYmNt NjN4eC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvYmNtL2JjbTYzeHgv TWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9iY20vYmNtNjN4eC9iY202 M3h4LXBvd2VyLmMKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4 IDU2ZDdkMjdmYzExNC4uNGViMGYyNDhkNDQwIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysg Yi9NQUlOVEFJTkVSUwpAQCAtMzQ1MCw2ICszNDUwLDcgQEAgRjoJYXJjaC9taXBzL2JtaXBzLyoK IEY6CWFyY2gvbWlwcy9ib290L2R0cy9icmNtL2JjbSouZHRzKgogRjoJYXJjaC9taXBzL2luY2x1 ZGUvYXNtL21hY2gtYm1pcHMvKgogRjoJYXJjaC9taXBzL2tlcm5lbC8qYm1pcHMqCitGOglkcml2 ZXJzL3NvYy9iY20vYmNtNjN4eAogRjoJZHJpdmVycy9pcnFjaGlwL2lycS1iY202MyoKIEY6CWRy aXZlcnMvaXJxY2hpcC9pcnEtYmNtNyoKIEY6CWRyaXZlcnMvaXJxY2hpcC9pcnEtYnJjbXN0YioK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL2JjbS9LY29uZmlnIGIvZHJpdmVycy9zb2MvYmNtL0tj b25maWcKaW5kZXggNjQ4ZTMyNjkzYjdlLi4yNGY5MmE2ZTg4MmEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvc29jL2JjbS9LY29uZmlnCisrKyBiL2RyaXZlcnMvc29jL2JjbS9LY29uZmlnCkBAIC0yMiw2 ICsyMiwxNSBAQCBjb25maWcgUkFTUEJFUlJZUElfUE9XRVIKIAkgIFRoaXMgZW5hYmxlcyBzdXBw b3J0IGZvciB0aGUgUlBpIHBvd2VyIGRvbWFpbnMgd2hpY2ggY2FuIGJlIGVuYWJsZWQKIAkgIG9y IGRpc2FibGVkIHZpYSB0aGUgUlBpIGZpcm13YXJlLgogCitjb25maWcgU09DX0JDTTYzWFgKKwli b29sICJCcm9hZGNvbSA2M3h4IFNvQyBkcml2ZXJzIgorCWRlcGVuZHMgb24gQk1JUFNfR0VORVJJ QyB8fCBDT01QSUxFX1RFU1QKKwloZWxwCisJICBFbmFibGVzIGRyaXZlcnMgZm9yIHRoZSBCcm9h ZGNvbSA2M3h4IHNlcmllcyBvZiBjaGlwcy4KKwkgIERyaXZlcnMgY2FuIGJlIGVuYWJsZWQgaW5k aXZpZHVhbGx5IHdpdGhpbiB0aGlzIG1lbnUuCisKKwkgIElmIHVuc3VyZSwgc2F5IE4uCisKIGNv bmZpZyBTT0NfQlJDTVNUQgogCWJvb2wgIkJyb2FkY29tIFNUQiBTb0MgZHJpdmVycyIKIAlkZXBl bmRzIG9uIEFSTSB8fCBBUk02NCB8fCBCTUlQU19HRU5FUklDIHx8IENPTVBJTEVfVEVTVApAQCAt MzMsNiArNDIsNyBAQCBjb25maWcgU09DX0JSQ01TVEIKIAogCSAgSWYgdW5zdXJlLCBzYXkgTi4K IAorc291cmNlICJkcml2ZXJzL3NvYy9iY20vYmNtNjN4eC9LY29uZmlnIgogc291cmNlICJkcml2 ZXJzL3NvYy9iY20vYnJjbXN0Yi9LY29uZmlnIgogCiBlbmRtZW51CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3NvYy9iY20vTWFrZWZpbGUgYi9kcml2ZXJzL3NvYy9iY20vTWFrZWZpbGUKaW5kZXggZDky MjY4YTgyOWE5Li43YmM5MGUwYmQ3NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc29jL2JjbS9NYWtl ZmlsZQorKysgYi9kcml2ZXJzL3NvYy9iY20vTWFrZWZpbGUKQEAgLTEsNCArMSw1IEBACiAjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKIG9iai0kKENPTkZJR19CQ00yODM1 X1BPV0VSKQkrPSBiY20yODM1LXBvd2VyLm8KIG9iai0kKENPTkZJR19SQVNQQkVSUllQSV9QT1dF UikJKz0gcmFzcGJlcnJ5cGktcG93ZXIubworb2JqLSQoQ09ORklHX1NPQ19CQ002M1hYKQkrPSBi Y202M3h4Lwogb2JqLSQoQ09ORklHX1NPQ19CUkNNU1RCKQkrPSBicmNtc3RiLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zb2MvYmNtL2JjbTYzeHgvS2NvbmZpZyBiL2RyaXZlcnMvc29jL2JjbS9iY202 M3h4L0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNmY2 NDhhNmM3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3NvYy9iY20vYmNtNjN4eC9LY29u ZmlnCkBAIC0wLDAgKzEsMTIgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seQoraWYgU09DX0JDTTYzWFgKKworY29uZmlnIEJDTTYzWFhfUE9XRVIKKwlib29sICJCQ002 M3h4IHBvd2VyIGRvbWFpbiBkcml2ZXIiCisJZGVwZW5kcyBvbiBCTUlQU19HRU5FUklDIHx8IChD T01QSUxFX1RFU1QgJiYgT0YpCisJc2VsZWN0IFBNX0dFTkVSSUNfRE9NQUlOUyBpZiBQTQorCWhl bHAKKwkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgQkNNNjN4eCBwb3dlciBkb21haW5z IGNvbnRyb2xsZXIgb24KKwkgIEJDTTYzMTgsIEJDTTYzMjgsIEJDTTYzNjIgYW5kIEJDTTYzMjY4 IFNvQ3MuCisKK2VuZGlmICMgU09DX0JDTTYzWFgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL2Jj bS9iY202M3h4L01ha2VmaWxlIGIvZHJpdmVycy9zb2MvYmNtL2JjbTYzeHgvTWFrZWZpbGUKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNzEwZDVlMDE4Y2MKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL3NvYy9iY20vYmNtNjN4eC9NYWtlZmlsZQpAQCAtMCwwICsx LDIgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorb2JqLSQoQ09O RklHX0JDTTYzWFhfUE9XRVIpICs9IGJjbTYzeHgtcG93ZXIubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zb2MvYmNtL2JjbTYzeHgvYmNtNjN4eC1wb3dlci5jIGIvZHJpdmVycy9zb2MvYmNtL2JjbTYz eHgvYmNtNjN4eC1wb3dlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNTE1ZmUxODJkYzM0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zb2MvYmNtL2JjbTYz eHgvYmNtNjN4eC1wb3dlci5jCkBAIC0wLDAgKzEsMzc4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoKKyAqIEJDTTYzeHggUG93ZXIgRG9tYWluIENv bnRyb2xsZXIgRHJpdmVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIMOBbHZhcm8gRmVybsOh bmRleiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+CisgKi8KKworI2luY2x1ZGUgPGR0LWJpbmRp bmdzL3NvYy9iY202MzE4LXBtLmg+CisjaW5jbHVkZSA8ZHQtYmluZGluZ3Mvc29jL2JjbTYzMjgt cG0uaD4KKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9zb2MvYmNtNjM2Mi1wbS5oPgorI2luY2x1ZGUg PGR0LWJpbmRpbmdzL3NvYy9iY202MzI2OC1wbS5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cisj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+CisjaW5jbHVkZSA8bGludXgvcG1fZG9tYWluLmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4K KyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KKworc3RydWN0IGJjbTYzeHhfcG93ZXJfZGV2 IHsKKwlzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gZ2VucGQ7CisJc3RydWN0IGJjbTYzeHhfcG93 ZXIgKnBvd2VyOworCXVpbnQzMl90IG1hc2s7Cit9OworCitzdHJ1Y3QgYmNtNjN4eF9wb3dlciB7 CisJdm9pZCBfX2lvbWVtICpiYXNlOworCXNwaW5sb2NrX3QgbG9jazsKKwlzdHJ1Y3QgYmNtNjN4 eF9wb3dlcl9kZXYgKmRldjsKKwlzdHJ1Y3QgZ2VucGRfb25lY2VsbF9kYXRhIGdlbnBkX2RhdGE7 CisJc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICoqZ2VucGQ7Cit9OworCitzdHJ1Y3QgYmNtNjN4 eF9wb3dlcl9kYXRhIHsKKwljb25zdCBjaGFyICogY29uc3QgbmFtZTsKKwl1aW50OF90IGJpdDsK Kwl1bnNpZ25lZCBpbnQgZmxhZ3M7Cit9OworCitzdGF0aWMgaW50IGJjbTYzeHhfcG93ZXJfZ2V0 X3N0YXRlKHN0cnVjdCBiY202M3h4X3Bvd2VyX2RldiAqcG1kLCBib29sICppc19vbikKK3sKKwlz dHJ1Y3QgYmNtNjN4eF9wb3dlciAqcG93ZXIgPSBwbWQtPnBvd2VyOworCisJaWYgKCFwbWQtPm1h c2spIHsKKwkJKmlzX29uID0gZmFsc2U7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCSppc19v biA9ICEoX19yYXdfcmVhZGwocG93ZXItPmJhc2UpICYgcG1kLT5tYXNrKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGJjbTYzeHhfcG93ZXJfc2V0X3N0YXRlKHN0cnVjdCBiY202M3h4 X3Bvd2VyX2RldiAqcG1kLCBib29sIG9uKQoreworCXN0cnVjdCBiY202M3h4X3Bvd2VyICpwb3dl ciA9IHBtZC0+cG93ZXI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1aW50MzJfdCB2YWw7CisK KwlpZiAoIXBtZC0+bWFzaykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmcG93ZXItPmxvY2ssIGZsYWdzKTsKKwl2YWwgPSBfX3Jhd19yZWFkbChwb3dlci0+YmFzZSk7 CisJaWYgKG9uKQorCQl2YWwgJj0gfnBtZC0+bWFzazsKKwllbHNlCisJCXZhbCB8PSBwbWQtPm1h c2s7CisJX19yYXdfd3JpdGVsKHZhbCwgcG93ZXItPmJhc2UpOworCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnBvd2VyLT5sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBiY202M3h4X3Bvd2VyX29uKHN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQpCit7CisJ c3RydWN0IGJjbTYzeHhfcG93ZXJfZGV2ICpwbWQgPSBjb250YWluZXJfb2YoZ2VucGQsCisJCXN0 cnVjdCBiY202M3h4X3Bvd2VyX2RldiwgZ2VucGQpOworCisJcmV0dXJuIGJjbTYzeHhfcG93ZXJf c2V0X3N0YXRlKHBtZCwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBpbnQgYmNtNjN4eF9wb3dlcl9vZmYo c3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5wZCkKK3sKKwlzdHJ1Y3QgYmNtNjN4eF9wb3dl cl9kZXYgKnBtZCA9IGNvbnRhaW5lcl9vZihnZW5wZCwKKwkJc3RydWN0IGJjbTYzeHhfcG93ZXJf ZGV2LCBnZW5wZCk7CisKKwlyZXR1cm4gYmNtNjN4eF9wb3dlcl9zZXRfc3RhdGUocG1kLCBmYWxz ZSk7Cit9CisKK3N0YXRpYyBpbnQgYmNtNjN4eF9wb3dlcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3Ry dWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJl czsKKwljb25zdCBzdHJ1Y3QgYmNtNjN4eF9wb3dlcl9kYXRhICplbnRyeSwgKnRhYmxlOworCXN0 cnVjdCBiY202M3h4X3Bvd2VyICpwb3dlcjsKKwl1bnNpZ25lZCBpbnQgbmRvbTsKKwl1aW50OF90 IG1heF9iaXQgPSAwOworCWludCByZXQ7CisKKwlwb3dlciA9IGRldm1fa3phbGxvYyhkZXYsIHNp emVvZigqcG93ZXIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBvd2VyKQorCQlyZXR1cm4gLUVOT01F TTsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwg MCk7CisJcG93ZXItPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVz KTsKKwlpZiAoSVNfRVJSKHBvd2VyLT5iYXNlKSkKKwkJcmV0dXJuIFBUUl9FUlIocG93ZXItPmJh c2UpOworCisJdGFibGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKKwlpZiAoIXRh YmxlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXBvd2VyLT5nZW5wZF9kYXRhLm51bV9kb21haW5z ID0gMDsKKwluZG9tID0gMDsKKwlmb3IgKGVudHJ5ID0gdGFibGU7IGVudHJ5LT5uYW1lOyBlbnRy eSsrKSB7CisJCW1heF9iaXQgPSBtYXgobWF4X2JpdCwgZW50cnktPmJpdCk7CisJCW5kb20rKzsK Kwl9CisKKwlpZiAoIW5kb20pCisJCXJldHVybiAtRU5PREVWOworCisJcG93ZXItPmdlbnBkX2Rh dGEubnVtX2RvbWFpbnMgPSBtYXhfYml0ICsgMTsKKworCXBvd2VyLT5kZXYgPSBkZXZtX2tjYWxs b2MoZGV2LCBwb3dlci0+Z2VucGRfZGF0YS5udW1fZG9tYWlucywKKwkJCQkgIHNpemVvZihzdHJ1 Y3QgYmNtNjN4eF9wb3dlcl9kZXYpLAorCQkJCSAgR0ZQX0tFUk5FTCk7CisJaWYgKCFwb3dlci0+ ZGV2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXBvd2VyLT5nZW5wZCA9IGRldm1fa2NhbGxvYyhk ZXYsIHBvd2VyLT5nZW5wZF9kYXRhLm51bV9kb21haW5zLAorCQkJCSAgICBzaXplb2Yoc3RydWN0 IGdlbmVyaWNfcG1fZG9tYWluICopLAorCQkJCSAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIXBvd2Vy LT5nZW5wZCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlwb3dlci0+Z2VucGRfZGF0YS5kb21haW5z ID0gcG93ZXItPmdlbnBkOworCisJbmRvbSA9IDA7CisJZm9yIChlbnRyeSA9IHRhYmxlOyBlbnRy eS0+bmFtZTsgZW50cnkrKykgeworCQlzdHJ1Y3QgYmNtNjN4eF9wb3dlcl9kZXYgKnBtZCA9ICZw b3dlci0+ZGV2W25kb21dOworCQlib29sIGlzX29uOworCisJCXBtZC0+cG93ZXIgPSBwb3dlcjsK KwkJcG1kLT5tYXNrID0gQklUKGVudHJ5LT5iaXQpOworCQlwbWQtPmdlbnBkLm5hbWUgPSBlbnRy eS0+bmFtZTsKKwkJcG1kLT5nZW5wZC5mbGFncyA9IGVudHJ5LT5mbGFnczsKKworCQlyZXQgPSBi Y202M3h4X3Bvd2VyX2dldF9zdGF0ZShwbWQsICZpc19vbik7CisJCWlmIChyZXQpCisJCQlkZXZf d2FybihkZXYsICJ1bmFibGUgdG8gZ2V0IGN1cnJlbnQgc3RhdGUgZm9yICVzXG4iLAorCQkJCSBw bWQtPmdlbnBkLm5hbWUpOworCisJCXBtZC0+Z2VucGQucG93ZXJfb24gPSBiY202M3h4X3Bvd2Vy X29uOworCQlwbWQtPmdlbnBkLnBvd2VyX29mZiA9IGJjbTYzeHhfcG93ZXJfb2ZmOworCisJCXBt X2dlbnBkX2luaXQoJnBtZC0+Z2VucGQsIE5VTEwsICFpc19vbik7CisJCXBvd2VyLT5nZW5wZFtl bnRyeS0+Yml0XSA9ICZwbWQtPmdlbnBkOworCisJCW5kb20rKzsKKwl9CisKKwlzcGluX2xvY2tf aW5pdCgmcG93ZXItPmxvY2spOworCisJcmV0ID0gb2ZfZ2VucGRfYWRkX3Byb3ZpZGVyX29uZWNl bGwobnAsICZwb3dlci0+Z2VucGRfZGF0YSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwg ImZhaWxlZCB0byByZWdpc3RlciBnZW5wZCBkcml2ZXI6ICVkXG4iLCByZXQpOworCQlyZXR1cm4g cmV0OworCX0KKworCWRldl9pbmZvKGRldiwgInJlZ2lzdGVyZWQgJXUgcG93ZXIgZG9tYWluc1xu IiwgbmRvbSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY202M3h4 X3Bvd2VyX2RhdGEgYmNtNjMxOF9wb3dlcl9kb21haW5zW10gPSB7CisJeworCQkubmFtZSA9ICJw Y2llIiwKKwkJLmJpdCA9IEJDTTYzMThfUE9XRVJfRE9NQUlOX1BDSUUsCisJfSwgeworCQkubmFt ZSA9ICJ1c2IiLAorCQkuYml0ID0gQkNNNjMxOF9QT1dFUl9ET01BSU5fVVNCLAorCX0sIHsKKwkJ Lm5hbWUgPSAiZXBoeTAiLAorCQkuYml0ID0gQkNNNjMxOF9QT1dFUl9ET01BSU5fRVBIWTAsCisJ fSwgeworCQkubmFtZSA9ICJlcGh5MSIsCisJCS5iaXQgPSBCQ002MzE4X1BPV0VSX0RPTUFJTl9F UEhZMSwKKwl9LCB7CisJCS5uYW1lID0gImVwaHkyIiwKKwkJLmJpdCA9IEJDTTYzMThfUE9XRVJf RE9NQUlOX0VQSFkyLAorCX0sIHsKKwkJLm5hbWUgPSAiZXBoeTMiLAorCQkuYml0ID0gQkNNNjMx OF9QT1dFUl9ET01BSU5fRVBIWTMsCisJfSwgeworCQkubmFtZSA9ICJsZG8ycDUiLAorCQkuYml0 ID0gQkNNNjMxOF9QT1dFUl9ET01BSU5fTERPMlA1LAorCQkuZmxhZ3MgPSBHRU5QRF9GTEFHX0FM V0FZU19PTiwKKwl9LCB7CisJCS5uYW1lID0gImxkbzJwOSIsCisJCS5iaXQgPSBCQ002MzE4X1BP V0VSX0RPTUFJTl9MRE8yUDksCisJCS5mbGFncyA9IEdFTlBEX0ZMQUdfQUxXQVlTX09OLAorCX0s IHsKKwkJLm5hbWUgPSAic3cxcDAiLAorCQkuYml0ID0gQkNNNjMxOF9QT1dFUl9ET01BSU5fU1cx UDAsCisJCS5mbGFncyA9IEdFTlBEX0ZMQUdfQUxXQVlTX09OLAorCX0sIHsKKwkJLm5hbWUgPSAi cGFkIiwKKwkJLmJpdCA9IEJDTTYzMThfUE9XRVJfRE9NQUlOX1BBRCwKKwkJLmZsYWdzID0gR0VO UERfRkxBR19BTFdBWVNfT04sCisJfSwgeworCQkvKiBzZW50aW5lbCAqLworCX0sCit9OworCitz dGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhfcG93ZXJfZGF0YSBiY202MzI4X3Bvd2VyX2RvbWFp bnNbXSA9IHsKKwl7CisJCS5uYW1lID0gImFkc2wyLW1pcHMiLAorCQkuYml0ID0gQkNNNjMyOF9Q T1dFUl9ET01BSU5fQURTTDJfTUlQUywKKwl9LCB7CisJCS5uYW1lID0gImFkc2wyLXBoeSIsCisJ CS5iaXQgPSBCQ002MzI4X1BPV0VSX0RPTUFJTl9BRFNMMl9QSFksCisJfSwgeworCQkubmFtZSA9 ICJhZHNsMi1hZmUiLAorCQkuYml0ID0gQkNNNjMyOF9QT1dFUl9ET01BSU5fQURTTDJfQUZFLAor CX0sIHsKKwkJLm5hbWUgPSAic2FyIiwKKwkJLmJpdCA9IEJDTTYzMjhfUE9XRVJfRE9NQUlOX1NB UiwKKwl9LCB7CisJCS5uYW1lID0gInBjbSIsCisJCS5iaXQgPSBCQ002MzI4X1BPV0VSX0RPTUFJ Tl9QQ00sCisJfSwgeworCQkubmFtZSA9ICJ1c2JkIiwKKwkJLmJpdCA9IEJDTTYzMjhfUE9XRVJf RE9NQUlOX1VTQkQsCisJfSwgeworCQkubmFtZSA9ICJ1c2JoIiwKKwkJLmJpdCA9IEJDTTYzMjhf UE9XRVJfRE9NQUlOX1VTQkgsCisJfSwgeworCQkubmFtZSA9ICJwY2llIiwKKwkJLmJpdCA9IEJD TTYzMjhfUE9XRVJfRE9NQUlOX1BDSUUsCisJfSwgeworCQkubmFtZSA9ICJyb2Jvc3ciLAorCQku Yml0ID0gQkNNNjMyOF9QT1dFUl9ET01BSU5fUk9CT1NXLAorCX0sIHsKKwkJLm5hbWUgPSAiZXBo eSIsCisJCS5iaXQgPSBCQ002MzI4X1BPV0VSX0RPTUFJTl9FUEhZLAorCX0sIHsKKwkJLyogc2Vu dGluZWwgKi8KKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY202M3h4X3Bvd2VyX2Rh dGEgYmNtNjM2Ml9wb3dlcl9kb21haW5zW10gPSB7CisJeworCQkubmFtZSA9ICJzYXIiLAorCQku Yml0ID0gQkNNNjM2Ml9QT1dFUl9ET01BSU5fU0FSLAorCX0sIHsKKwkJLm5hbWUgPSAiaXBzZWMi LAorCQkuYml0ID0gQkNNNjM2Ml9QT1dFUl9ET01BSU5fSVBTRUMsCisJfSwgeworCQkubmFtZSA9 ICJtaXBzIiwKKwkJLmJpdCA9IEJDTTYzNjJfUE9XRVJfRE9NQUlOX01JUFMsCisJCS5mbGFncyA9 IEdFTlBEX0ZMQUdfQUxXQVlTX09OLAorCX0sIHsKKwkJLm5hbWUgPSAiZGVjdCIsCisJCS5iaXQg PSBCQ002MzYyX1BPV0VSX0RPTUFJTl9ERUNULAorCX0sIHsKKwkJLm5hbWUgPSAidXNiaCIsCisJ CS5iaXQgPSBCQ002MzYyX1BPV0VSX0RPTUFJTl9VU0JILAorCX0sIHsKKwkJLm5hbWUgPSAidXNi ZCIsCisJCS5iaXQgPSBCQ002MzYyX1BPV0VSX0RPTUFJTl9VU0JELAorCX0sIHsKKwkJLm5hbWUg PSAicm9ib3N3IiwKKwkJLmJpdCA9IEJDTTYzNjJfUE9XRVJfRE9NQUlOX1JPQk9TVywKKwl9LCB7 CisJCS5uYW1lID0gInBjbSIsCisJCS5iaXQgPSBCQ002MzYyX1BPV0VSX0RPTUFJTl9QQ00sCisJ fSwgeworCQkubmFtZSA9ICJwZXJpcGgiLAorCQkuYml0ID0gQkNNNjM2Ml9QT1dFUl9ET01BSU5f UEVSSVBILAorCQkuZmxhZ3MgPSBHRU5QRF9GTEFHX0FMV0FZU19PTiwKKwl9LCB7CisJCS5uYW1l ID0gImFkc2wtcGh5IiwKKwkJLmJpdCA9IEJDTTYzNjJfUE9XRVJfRE9NQUlOX0FEU0xfUEhZLAor CX0sIHsKKwkJLm5hbWUgPSAiZ21paS1wYWRzIiwKKwkJLmJpdCA9IEJDTTYzNjJfUE9XRVJfRE9N QUlOX0dNSUlfUEFEUywKKwl9LCB7CisJCS5uYW1lID0gImZhcCIsCisJCS5iaXQgPSBCQ002MzYy X1BPV0VSX0RPTUFJTl9GQVAsCisJfSwgeworCQkubmFtZSA9ICJwY2llIiwKKwkJLmJpdCA9IEJD TTYzNjJfUE9XRVJfRE9NQUlOX1BDSUUsCisJfSwgeworCQkubmFtZSA9ICJ3bGFuLXBhZHMiLAor CQkuYml0ID0gQkNNNjM2Ml9QT1dFUl9ET01BSU5fV0xBTl9QQURTLAorCX0sIHsKKwkJLyogc2Vu dGluZWwgKi8KKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY202M3h4X3Bvd2VyX2Rh dGEgYmNtNjMyNjhfcG93ZXJfZG9tYWluc1tdID0geworCXsKKwkJLm5hbWUgPSAic2FyIiwKKwkJ LmJpdCA9IEJDTTYzMjY4X1BPV0VSX0RPTUFJTl9TQVIsCisJfSwgeworCQkubmFtZSA9ICJpcHNl YyIsCisJCS5iaXQgPSBCQ002MzI2OF9QT1dFUl9ET01BSU5fSVBTRUMsCisJfSwgeworCQkubmFt ZSA9ICJtaXBzIiwKKwkJLmJpdCA9IEJDTTYzMjY4X1BPV0VSX0RPTUFJTl9NSVBTLAorCQkuZmxh Z3MgPSBHRU5QRF9GTEFHX0FMV0FZU19PTiwKKwl9LCB7CisJCS5uYW1lID0gImRlY3QiLAorCQku Yml0ID0gQkNNNjMyNjhfUE9XRVJfRE9NQUlOX0RFQ1QsCisJfSwgeworCQkubmFtZSA9ICJ1c2Jo IiwKKwkJLmJpdCA9IEJDTTYzMjY4X1BPV0VSX0RPTUFJTl9VU0JILAorCX0sIHsKKwkJLm5hbWUg PSAidXNiZCIsCisJCS5iaXQgPSBCQ002MzI2OF9QT1dFUl9ET01BSU5fVVNCRCwKKwl9LCB7CisJ CS5uYW1lID0gInJvYm9zdyIsCisJCS5iaXQgPSBCQ002MzI2OF9QT1dFUl9ET01BSU5fUk9CT1NX LAorCX0sIHsKKwkJLm5hbWUgPSAicGNtIiwKKwkJLmJpdCA9IEJDTTYzMjY4X1BPV0VSX0RPTUFJ Tl9QQ00sCisJfSwgeworCQkubmFtZSA9ICJwZXJpcGgiLAorCQkuYml0ID0gQkNNNjMyNjhfUE9X RVJfRE9NQUlOX1BFUklQSCwKKwkJLmZsYWdzID0gR0VOUERfRkxBR19BTFdBWVNfT04sCisJfSwg eworCQkubmFtZSA9ICJ2ZHNsLXBoeSIsCisJCS5iaXQgPSBCQ002MzI2OF9QT1dFUl9ET01BSU5f VkRTTF9QSFksCisJfSwgeworCQkubmFtZSA9ICJ2ZHNsLW1pcHMiLAorCQkuYml0ID0gQkNNNjMy NjhfUE9XRVJfRE9NQUlOX1ZEU0xfTUlQUywKKwl9LCB7CisJCS5uYW1lID0gImZhcCIsCisJCS5i aXQgPSBCQ002MzI2OF9QT1dFUl9ET01BSU5fRkFQLAorCX0sIHsKKwkJLm5hbWUgPSAicGNpZSIs CisJCS5iaXQgPSBCQ002MzI2OF9QT1dFUl9ET01BSU5fUENJRSwKKwl9LCB7CisJCS5uYW1lID0g IndsYW4tcGFkcyIsCisJCS5iaXQgPSBCQ002MzI2OF9QT1dFUl9ET01BSU5fV0xBTl9QQURTLAor CX0sIHsKKwkJLyogc2VudGluZWwgKi8KKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgYmNtNjN4eF9wb3dlcl9vZl9tYXRjaFtdID0geworCXsKKwkJLmNvbXBhdGli bGUgPSAiYnJjbSxiY202MzE4LXBvd2VyLWNvbnRyb2xsZXIiLAorCQkuZGF0YSA9ICZiY202MzE4 X3Bvd2VyX2RvbWFpbnMsCisJfSwgeworCQkuY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzMjgtcG93 ZXItY29udHJvbGxlciIsCisJCS5kYXRhID0gJmJjbTYzMjhfcG93ZXJfZG9tYWlucywKKwl9LCB7 CisJCS5jb21wYXRpYmxlID0gImJyY20sYmNtNjM2Mi1wb3dlci1jb250cm9sbGVyIiwKKwkJLmRh dGEgPSAmYmNtNjM2Ml9wb3dlcl9kb21haW5zLAorCX0sIHsKKwkJLmNvbXBhdGlibGUgPSAiYnJj bSxiY202MzI2OC1wb3dlci1jb250cm9sbGVyIiwKKwkJLmRhdGEgPSAmYmNtNjMyNjhfcG93ZXJf ZG9tYWlucywKKwl9LCB7CisJCS8qIHNlbnRpbmVsICovCisJfQorfTsKKworc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgYmNtNjN4eF9wb3dlcl9kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsK KwkJLm5hbWUgPSAiYmNtNjN4eC1wb3dlci1jb250cm9sbGVyIiwKKwkJLm9mX21hdGNoX3RhYmxl ID0gYmNtNjN4eF9wb3dlcl9vZl9tYXRjaCwKKwl9LAorCS5wcm9iZSAgPSBiY202M3h4X3Bvd2Vy X3Byb2JlLAorfTsKK2J1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKGJjbTYzeHhfcG93ZXJfZHJpdmVy KTsKLS0gCjIuMjcuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK