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 22077C433E0 for ; Wed, 10 Jun 2020 16:33:53 +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 B53662070B for ; Wed, 10 Jun 2020 16:33:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="DUXDqsHE"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EbHwwmxY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B53662070B 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=y3IaZx9ctie9oNq+7hKPjXcXIGLrxlTddWa2c9AnwFU=; b=DUXDqsHEjtKd1X CQWT7b73Ac2qLOy7b72J5F+5KVTWH7YlIbaVesvaIhsP7d7wIh5jD6nha/gII+wM9nA+57hcOOiis XqPYFyygohMaYy3ddQE10mQKafP80aKpN1zqPPJh8Q2pACxfmhEQcq/ZYma8skWi8A87s3I1MYdMw wfb/b5+f4rSP0Sv4j2FnAFU5J4ZnarZ0owOTt7DxT7AEvKvElcopRKTSp1plH7fAGaOubfhbtUDZt coBNylsH4Kbv0OLx9ECMEuO37ojZIjm9iATvle5r2ZtnMjEvNruYEFN327dVkj3uVN/W32KgmikRP zaM8SHkX0nX61qhwo7Tw==; 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 1jj3fd-0000oc-2n; Wed, 10 Jun 2020 16:33:45 +0000 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jj3f0-0000GE-Tn for linux-arm-kernel@lists.infradead.org; Wed, 10 Jun 2020 16:33:08 +0000 Received: by mail-wr1-x441.google.com with SMTP id l11so3027725wru.0 for ; Wed, 10 Jun 2020 09:33:06 -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=8yi/gY3pbWHmPAVksg2if5LxnnJAebye20EywiAtIn4=; b=EbHwwmxYTdSvBxXziI9tZ1YN9CF/Y4OmEo6ZFjjLIR0iCFTaYh0hpx0vWL/3uoBjL6 Ej2K7IcFPyMfkBf2mbUs5hExdq6QewYnxhG08Y9km6OP8kOf8Sgy5R9MfQP8vbkffW3s A9hoJpIzWVyZ0UyD4dUjEEgQ1wMuCMg8ntQzo35hkmdzuM+1hWKxud1OfDaBT8PlozPA PNj5jclrDQjLwfnBv8e9pBhMpPO47lBNxFNo6qxGi37S77Svr8FV349tm/SN3ELHCFk2 S5C/Br4m2jTyL7D4YaiZQIZSSFcmJGLinNH8kuv3C7s8yi94e9lBOSF7KDiBWxwlJxdH JjwQ== 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=8yi/gY3pbWHmPAVksg2if5LxnnJAebye20EywiAtIn4=; b=EchJ2sXOP5Tvrg3QzBMggo18ujcp1ELJqAr6VxkhNIp/5gxCYa77xxgYfscFAzEp6B 5zoRVOzzwXrwJ5IAMLDDOWfSi9AhitsU/bXDe+cjhN6py8EiDHZ+4Fd+8DFcvm3b2BBH H5Tj7Pc2lAgukWGswejcsrptqhFzyjb64cVSvyBpDau8lRkoMSaSZWHZtF0ijzjIZFiw vGo5aUjWk5UnJaDxOz/4Ts7xYV/JgLu0luG5VycwbCIDAtUr5EIgjnUqjwVBUUoWFCvo /uTttNBH/n/1Pu504ItXVPagaQUync0by/Q5xFdSqcQ8AwqG+GeAg/7cWdZnvER27W+o IrjQ== X-Gm-Message-State: AOAM531QTqMaAZ7fYDmUNrCfB+HmGdGo1UQdsL5EuJB6POCrOFJDkeuI IP7mjArbWFPzS4Jp6wsE9rI= X-Google-Smtp-Source: ABdhPJz5AZUR01ZQEVImzJkJeKSOySv1Gl8Y7BtaiGK0ph9StAiy5CqqsyTlh5eCjzvmIBtTGIuBBQ== X-Received: by 2002:adf:dd06:: with SMTP id a6mr4801776wrm.142.1591806785567; Wed, 10 Jun 2020 09:33:05 -0700 (PDT) Received: from skynet.lan (28.red-83-49-61.dynamicip.rima-tde.net. [83.49.61.28]) by smtp.gmail.com with ESMTPSA id t7sm414430wrq.41.2020.06.10.09.33.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2020 09:33:05 -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 v2 2/6] soc: bcm: add BCM63xx power domain driver Date: Wed, 10 Jun 2020 18:32:57 +0200 Message-Id: <20200610163301.461160-3-noltari@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200610163301.461160-1-noltari@gmail.com> References: <20200609105244.4014823-1-noltari@gmail.com> <20200610163301.461160-1-noltari@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200610_093306_989923_AF034C3A X-CRM114-Status: GOOD ( 16.88 ) 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 Um9qYXMgPG5vbHRhcmlAZ21haWwuY29tPgotLS0KIHYyOiBJbnRyb2R1Y2UgYmNtNjN4eCBmb2xk ZXIgaW4gZHJpdmVycy9zb2MvYmNtIGFuZCB1cGRhdGUgTUFJTlRBSU5FUlMuCgogTUFJTlRBSU5F UlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvc29jL2JjbS9L Y29uZmlnICAgICAgICAgICAgICAgICB8ICAxMCArCiBkcml2ZXJzL3NvYy9iY20vTWFrZWZpbGUg ICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9zb2MvYmNtL2JjbTYzeHgvS2NvbmZpZyAg ICAgICAgIHwgIDEyICsKIGRyaXZlcnMvc29jL2JjbS9iY202M3h4L01ha2VmaWxlICAgICAgICB8 ICAgMiArCiBkcml2ZXJzL3NvYy9iY20vYmNtNjN4eC9iY202M3h4LXBvd2VyLmMgfCAzNzQgKysr KysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDQwMCBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvYmNtL2JjbTYzeHgvS2NvbmZpZwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc29jL2JjbS9iY202M3h4L01ha2VmaWxlCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvYmNtL2JjbTYzeHgvYmNtNjN4eC1wb3dlci5jCgpkaWZm IC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA3N2EzZmE1ZTNlZGQuLmU5 YmE3Yjk1NWQ1ZiAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAg LTM0NDIsNiArMzQ0Miw3IEBAIEY6CWFyY2gvbWlwcy9ibWlwcy8qCiBGOglhcmNoL21pcHMvYm9v dC9kdHMvYnJjbS9iY20qLmR0cyoKIEY6CWFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJtaXBz LyoKIEY6CWFyY2gvbWlwcy9rZXJuZWwvKmJtaXBzKgorRjoJZHJpdmVycy9zb2MvYmNtL2JjbTYz eHgKIEY6CWRyaXZlcnMvaXJxY2hpcC9pcnEtYmNtNjMqCiBGOglkcml2ZXJzL2lycWNoaXAvaXJx LWJjbTcqCiBGOglkcml2ZXJzL2lycWNoaXAvaXJxLWJyY21zdGIqCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3NvYy9iY20vS2NvbmZpZyBiL2RyaXZlcnMvc29jL2JjbS9LY29uZmlnCmluZGV4IDY0OGUz MjY5M2I3ZS4uMjRmOTJhNmU4ODJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NvYy9iY20vS2NvbmZp ZworKysgYi9kcml2ZXJzL3NvYy9iY20vS2NvbmZpZwpAQCAtMjIsNiArMjIsMTUgQEAgY29uZmln IFJBU1BCRVJSWVBJX1BPV0VSCiAJICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFJQaSBw b3dlciBkb21haW5zIHdoaWNoIGNhbiBiZSBlbmFibGVkCiAJICBvciBkaXNhYmxlZCB2aWEgdGhl IFJQaSBmaXJtd2FyZS4KIAorY29uZmlnIFNPQ19CQ002M1hYCisJYm9vbCAiQnJvYWRjb20gNjN4 eCBTb0MgZHJpdmVycyIKKwlkZXBlbmRzIG9uIEJNSVBTX0dFTkVSSUMgfHwgQ09NUElMRV9URVNU CisJaGVscAorCSAgRW5hYmxlcyBkcml2ZXJzIGZvciB0aGUgQnJvYWRjb20gNjN4eCBzZXJpZXMg b2YgY2hpcHMuCisJICBEcml2ZXJzIGNhbiBiZSBlbmFibGVkIGluZGl2aWR1YWxseSB3aXRoaW4g dGhpcyBtZW51LgorCisJICBJZiB1bnN1cmUsIHNheSBOLgorCiBjb25maWcgU09DX0JSQ01TVEIK IAlib29sICJCcm9hZGNvbSBTVEIgU29DIGRyaXZlcnMiCiAJZGVwZW5kcyBvbiBBUk0gfHwgQVJN NjQgfHwgQk1JUFNfR0VORVJJQyB8fCBDT01QSUxFX1RFU1QKQEAgLTMzLDYgKzQyLDcgQEAgY29u ZmlnIFNPQ19CUkNNU1RCCiAKIAkgIElmIHVuc3VyZSwgc2F5IE4uCiAKK3NvdXJjZSAiZHJpdmVy cy9zb2MvYmNtL2JjbTYzeHgvS2NvbmZpZyIKIHNvdXJjZSAiZHJpdmVycy9zb2MvYmNtL2JyY21z dGIvS2NvbmZpZyIKIAogZW5kbWVudQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvYmNtL01ha2Vm aWxlIGIvZHJpdmVycy9zb2MvYmNtL01ha2VmaWxlCmluZGV4IGQ5MjI2OGE4MjlhOS4uN2JjOTBl MGJkNzczIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NvYy9iY20vTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9zb2MvYmNtL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5CiBvYmotJChDT05GSUdfQkNNMjgzNV9QT1dFUikJKz0gYmNtMjgz NS1wb3dlci5vCiBvYmotJChDT05GSUdfUkFTUEJFUlJZUElfUE9XRVIpCSs9IHJhc3BiZXJyeXBp LXBvd2VyLm8KK29iai0kKENPTkZJR19TT0NfQkNNNjNYWCkJKz0gYmNtNjN4eC8KIG9iai0kKENP TkZJR19TT0NfQlJDTVNUQikJKz0gYnJjbXN0Yi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL2Jj bS9iY202M3h4L0tjb25maWcgYi9kcml2ZXJzL3NvYy9iY20vYmNtNjN4eC9LY29uZmlnCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTZmNjQ4YTZjNzBhCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9zb2MvYmNtL2JjbTYzeHgvS2NvbmZpZwpAQCAtMCwwICsxLDEy IEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKK2lmIFNPQ19CQ002 M1hYCisKK2NvbmZpZyBCQ002M1hYX1BPV0VSCisJYm9vbCAiQkNNNjN4eCBwb3dlciBkb21haW4g ZHJpdmVyIgorCWRlcGVuZHMgb24gQk1JUFNfR0VORVJJQyB8fCAoQ09NUElMRV9URVNUICYmIE9G KQorCXNlbGVjdCBQTV9HRU5FUklDX0RPTUFJTlMgaWYgUE0KKwloZWxwCisJICBUaGlzIGVuYWJs ZXMgc3VwcG9ydCBmb3IgdGhlIEJDTTYzeHggcG93ZXIgZG9tYWlucyBjb250cm9sbGVyIG9uCisJ ICBCQ002MzE4LCBCQ002MzI4LCBCQ002MzYyIGFuZCBCQ002MzI2OCBTb0NzLgorCitlbmRpZiAj IFNPQ19CQ002M1hYCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9iY20vYmNtNjN4eC9NYWtlZmls ZSBiL2RyaXZlcnMvc29jL2JjbS9iY202M3h4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMDcxMGQ1ZTAxOGNjCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9zb2MvYmNtL2JjbTYzeHgvTWFrZWZpbGUKQEAgLTAsMCArMSwyIEBACisjIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKK29iai0kKENPTkZJR19CQ002M1hYX1BPV0VS KSArPSBiY202M3h4LXBvd2VyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL2JjbS9iY202M3h4 L2JjbTYzeHgtcG93ZXIuYyBiL2RyaXZlcnMvc29jL2JjbS9iY202M3h4L2JjbTYzeHgtcG93ZXIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI2ZTUxYjcyMWYwOQot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc29jL2JjbS9iY202M3h4L2JjbTYzeHgtcG93ZXIu YwpAQCAtMCwwICsxLDM3NCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b3ItbGF0ZXIKKy8qCisgKiBCQ002M3h4IFBvd2VyIERvbWFpbiBDb250cm9sbGVyIERyaXZlcgor ICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCDDgWx2YXJvIEZlcm7DoW5kZXogUm9qYXMgPG5vbHRh cmlAZ21haWwuY29tPgorICovCisKKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1 ZGUgPGxpbnV4L3BtX2RvbWFpbi5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8 bGludXgvb2ZfZGV2aWNlLmg+CisKK3N0cnVjdCBiY202M3h4X3Bvd2VyX2RldiB7CisJc3RydWN0 IGdlbmVyaWNfcG1fZG9tYWluIGdlbnBkOworCXN0cnVjdCBiY202M3h4X3Bvd2VyICpwb3dlcjsK Kwl1aW50MzJfdCBtYXNrOworfTsKKworc3RydWN0IGJjbTYzeHhfcG93ZXIgeworCXZvaWQgX19p b21lbSAqYmFzZTsKKwlzcGlubG9ja190IGxvY2s7CisJc3RydWN0IGJjbTYzeHhfcG93ZXJfZGV2 ICpkZXY7CisJc3RydWN0IGdlbnBkX29uZWNlbGxfZGF0YSBnZW5wZF9kYXRhOworCXN0cnVjdCBn ZW5lcmljX3BtX2RvbWFpbiAqKmdlbnBkOworfTsKKworc3RydWN0IGJjbTYzeHhfcG93ZXJfZGF0 YSB7CisJY29uc3QgY2hhciAqIGNvbnN0IG5hbWU7CisJdWludDhfdCBiaXQ7CisJdW5zaWduZWQg aW50IGZsYWdzOworfTsKKworc3RhdGljIGludCBiY202M3h4X3Bvd2VyX2dldF9zdGF0ZShzdHJ1 Y3QgYmNtNjN4eF9wb3dlcl9kZXYgKnBtZCwgYm9vbCAqaXNfb24pCit7CisJc3RydWN0IGJjbTYz eHhfcG93ZXIgKnBvd2VyID0gcG1kLT5wb3dlcjsKKworCWlmICghcG1kLT5tYXNrKSB7CisJCSpp c19vbiA9IGZhbHNlOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkqaXNfb24gPSAhKF9fcmF3 X3JlYWRsKHBvd2VyLT5iYXNlKSAmIHBtZC0+bWFzayk7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBiY202M3h4X3Bvd2VyX3NldF9zdGF0ZShzdHJ1Y3QgYmNtNjN4eF9wb3dlcl9kZXYg KnBtZCwgYm9vbCBvbikKK3sKKwlzdHJ1Y3QgYmNtNjN4eF9wb3dlciAqcG93ZXIgPSBwbWQtPnBv d2VyOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdWludDMyX3QgdmFsOworCisJaWYgKCFwbWQt Pm1hc2spCisJCXJldHVybiAtRUlOVkFMOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBvd2VyLT5s b2NrLCBmbGFncyk7CisJdmFsID0gX19yYXdfcmVhZGwocG93ZXItPmJhc2UpOworCWlmIChvbikK KwkJdmFsICY9IH5wbWQtPm1hc2s7CisJZWxzZQorCQl2YWwgfD0gcG1kLT5tYXNrOworCV9fcmF3 X3dyaXRlbCh2YWwsIHBvd2VyLT5iYXNlKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwb3dl ci0+bG9jaywgZmxhZ3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmNtNjN4eF9w b3dlcl9vbihzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkKQoreworCXN0cnVjdCBiY202 M3h4X3Bvd2VyX2RldiAqcG1kID0gY29udGFpbmVyX29mKGdlbnBkLAorCQlzdHJ1Y3QgYmNtNjN4 eF9wb3dlcl9kZXYsIGdlbnBkKTsKKworCXJldHVybiBiY202M3h4X3Bvd2VyX3NldF9zdGF0ZShw bWQsIHRydWUpOworfQorCitzdGF0aWMgaW50IGJjbTYzeHhfcG93ZXJfb2ZmKHN0cnVjdCBnZW5l cmljX3BtX2RvbWFpbiAqZ2VucGQpCit7CisJc3RydWN0IGJjbTYzeHhfcG93ZXJfZGV2ICpwbWQg PSBjb250YWluZXJfb2YoZ2VucGQsCisJCXN0cnVjdCBiY202M3h4X3Bvd2VyX2RldiwgZ2VucGQp OworCisJcmV0dXJuIGJjbTYzeHhfcG93ZXJfc2V0X3N0YXRlKHBtZCwgZmFsc2UpOworfQorCitz dGF0aWMgaW50IGJjbTYzeHhfcG93ZXJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2Vf bm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisJY29uc3Qg c3RydWN0IGJjbTYzeHhfcG93ZXJfZGF0YSAqZW50cnksICp0YWJsZTsKKwlzdHJ1Y3QgYmNtNjN4 eF9wb3dlciAqcG93ZXI7CisJdW5zaWduZWQgaW50IG5kb207CisJdWludDhfdCBtYXhfYml0ID0g MDsKKwlpbnQgcmV0OworCisJcG93ZXIgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBvd2Vy KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwb3dlcikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlyZXMg PSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCXBvd2Vy LT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7CisJaWYgKElT X0VSUihwb3dlci0+YmFzZSkpCisJCXJldHVybiBQVFJfRVJSKHBvd2VyLT5iYXNlKTsKKworCXRh YmxlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7CisJaWYgKCF0YWJsZSkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlwb3dlci0+Z2VucGRfZGF0YS5udW1fZG9tYWlucyA9IDA7CisJbmRv bSA9IDA7CisJZm9yIChlbnRyeSA9IHRhYmxlOyBlbnRyeS0+bmFtZTsgZW50cnkrKykgeworCQlt YXhfYml0ID0gbWF4KG1heF9iaXQsIGVudHJ5LT5iaXQpOworCQluZG9tKys7CisJfQorCisJaWYg KCFuZG9tKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXBvd2VyLT5nZW5wZF9kYXRhLm51bV9kb21h aW5zID0gbWF4X2JpdCArIDE7CisKKwlwb3dlci0+ZGV2ID0gZGV2bV9rY2FsbG9jKGRldiwgcG93 ZXItPmdlbnBkX2RhdGEubnVtX2RvbWFpbnMsCisJCQkJICBzaXplb2Yoc3RydWN0IGJjbTYzeHhf cG93ZXJfZGV2KSwKKwkJCQkgIEdGUF9LRVJORUwpOworCWlmICghcG93ZXItPmRldikKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlwb3dlci0+Z2VucGQgPSBkZXZtX2tjYWxsb2MoZGV2LCBwb3dlci0+ Z2VucGRfZGF0YS5udW1fZG9tYWlucywKKwkJCQkgICAgc2l6ZW9mKHN0cnVjdCBnZW5lcmljX3Bt X2RvbWFpbiAqKSwKKwkJCQkgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCFwb3dlci0+Z2VucGQpCisJ CXJldHVybiAtRU5PTUVNOworCisJcG93ZXItPmdlbnBkX2RhdGEuZG9tYWlucyA9IHBvd2VyLT5n ZW5wZDsKKworCW5kb20gPSAwOworCWZvciAoZW50cnkgPSB0YWJsZTsgZW50cnktPm5hbWU7IGVu dHJ5KyspIHsKKwkJc3RydWN0IGJjbTYzeHhfcG93ZXJfZGV2ICpwbWQgPSAmcG93ZXItPmRldltu ZG9tXTsKKwkJYm9vbCBpc19vbjsKKworCQlwbWQtPnBvd2VyID0gcG93ZXI7CisJCXBtZC0+bWFz ayA9IEJJVChlbnRyeS0+Yml0KTsKKwkJcG1kLT5nZW5wZC5uYW1lID0gZW50cnktPm5hbWU7CisJ CXBtZC0+Z2VucGQuZmxhZ3MgPSBlbnRyeS0+ZmxhZ3M7CisKKwkJcmV0ID0gYmNtNjN4eF9wb3dl cl9nZXRfc3RhdGUocG1kLCAmaXNfb24pOworCQlpZiAocmV0KQorCQkJZGV2X3dhcm4oZGV2LCAi dW5hYmxlIHRvIGdldCBjdXJyZW50IHN0YXRlIGZvciAlc1xuIiwKKwkJCQkgcG1kLT5nZW5wZC5u YW1lKTsKKworCQlwbWQtPmdlbnBkLnBvd2VyX29uID0gYmNtNjN4eF9wb3dlcl9vbjsKKwkJcG1k LT5nZW5wZC5wb3dlcl9vZmYgPSBiY202M3h4X3Bvd2VyX29mZjsKKworCQlwbV9nZW5wZF9pbml0 KCZwbWQtPmdlbnBkLCBOVUxMLCAhaXNfb24pOworCQlwb3dlci0+Z2VucGRbZW50cnktPmJpdF0g PSAmcG1kLT5nZW5wZDsKKworCQluZG9tKys7CisJfQorCisJc3Bpbl9sb2NrX2luaXQoJnBvd2Vy LT5sb2NrKTsKKworCXJldCA9IG9mX2dlbnBkX2FkZF9wcm92aWRlcl9vbmVjZWxsKG5wLCAmcG93 ZXItPmdlbnBkX2RhdGEpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8g cmVnaXN0ZXIgZ2VucGQgZHJpdmVyOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisK KwlkZXZfaW5mbyhkZXYsICJyZWdpc3RlcmVkICV1IHBvd2VyIGRvbWFpbnNcbiIsIG5kb20pOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNjN4eF9wb3dlcl9kYXRh IGJjbTYzMThfcG93ZXJfZG9tYWluc1tdID0geworCXsKKwkJLm5hbWUgPSAicGNpZSIsCisJCS5i aXQgPSAwLAorCX0sIHsKKwkJLm5hbWUgPSAidXNiIiwKKwkJLmJpdCA9IDEsCisJfSwgeworCQku bmFtZSA9ICJlcGh5MCIsCisJCS5iaXQgPSAyLAorCX0sIHsKKwkJLm5hbWUgPSAiZXBoeTEiLAor CQkuYml0ID0gMywKKwl9LCB7CisJCS5uYW1lID0gImVwaHkyIiwKKwkJLmJpdCA9IDQsCisJfSwg eworCQkubmFtZSA9ICJlcGh5MyIsCisJCS5iaXQgPSA1LAorCX0sIHsKKwkJLm5hbWUgPSAibGRv MnA1IiwKKwkJLmJpdCA9IDYsCisJCS5mbGFncyA9IEdFTlBEX0ZMQUdfQUxXQVlTX09OLAorCX0s IHsKKwkJLm5hbWUgPSAibGRvMnA5IiwKKwkJLmJpdCA9IDcsCisJCS5mbGFncyA9IEdFTlBEX0ZM QUdfQUxXQVlTX09OLAorCX0sIHsKKwkJLm5hbWUgPSAic3cxcDAiLAorCQkuYml0ID0gOCwKKwkJ LmZsYWdzID0gR0VOUERfRkxBR19BTFdBWVNfT04sCisJfSwgeworCQkubmFtZSA9ICJwYWQiLAor CQkuYml0ID0gOSwKKwkJLmZsYWdzID0gR0VOUERfRkxBR19BTFdBWVNfT04sCisJfSwgeworCQkv KiBzZW50aW5lbCAqLworCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhfcG93 ZXJfZGF0YSBiY202MzI4X3Bvd2VyX2RvbWFpbnNbXSA9IHsKKwl7CisJCS5uYW1lID0gImFkc2wy LW1pcHMiLAorCQkuYml0ID0gMCwKKwl9LCB7CisJCS5uYW1lID0gImFkc2wyLXBoeSIsCisJCS5i aXQgPSAxLAorCX0sIHsKKwkJLm5hbWUgPSAiYWRzbDItYWZlIiwKKwkJLmJpdCA9IDIsCisJfSwg eworCQkubmFtZSA9ICJzYXIiLAorCQkuYml0ID0gMywKKwl9LCB7CisJCS5uYW1lID0gInBjbSIs CisJCS5iaXQgPSA0LAorCX0sIHsKKwkJLm5hbWUgPSAidXNiZCIsCisJCS5iaXQgPSA1LAorCX0s IHsKKwkJLm5hbWUgPSAidXNiaCIsCisJCS5iaXQgPSA2LAorCX0sIHsKKwkJLm5hbWUgPSAicGNp ZSIsCisJCS5iaXQgPSA3LAorCX0sIHsKKwkJLm5hbWUgPSAicm9ib3N3IiwKKwkJLmJpdCA9IDgs CisJfSwgeworCQkubmFtZSA9ICJlcGh5IiwKKwkJLmJpdCA9IDksCisJfSwgeworCQkvKiBzZW50 aW5lbCAqLworCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhfcG93ZXJfZGF0 YSBiY202MzYyX3Bvd2VyX2RvbWFpbnNbXSA9IHsKKwl7CisJCS5uYW1lID0gInNhciIsCisJCS5i aXQgPSAwLAorCX0sIHsKKwkJLm5hbWUgPSAiaXBzZWMiLAorCQkuYml0ID0gMSwKKwl9LCB7CisJ CS5uYW1lID0gIm1pcHMiLAorCQkuYml0ID0gMiwKKwkJLmZsYWdzID0gR0VOUERfRkxBR19BTFdB WVNfT04sCisJfSwgeworCQkubmFtZSA9ICJkZWN0IiwKKwkJLmJpdCA9IDMsCisJfSwgeworCQku bmFtZSA9ICJ1c2JoIiwKKwkJLmJpdCA9IDQsCisJfSwgeworCQkubmFtZSA9ICJ1c2JkIiwKKwkJ LmJpdCA9IDUsCisJfSwgeworCQkubmFtZSA9ICJyb2Jvc3ciLAorCQkuYml0ID0gNiwKKwl9LCB7 CisJCS5uYW1lID0gInBjbSIsCisJCS5iaXQgPSA3LAorCX0sIHsKKwkJLm5hbWUgPSAicGVyaXBo IiwKKwkJLmJpdCA9IDgsCisJCS5mbGFncyA9IEdFTlBEX0ZMQUdfQUxXQVlTX09OLAorCX0sIHsK KwkJLm5hbWUgPSAiYWRzbC1waHkiLAorCQkuYml0ID0gOSwKKwl9LCB7CisJCS5uYW1lID0gImdt aWktcGFkcyIsCisJCS5iaXQgPSAxMCwKKwl9LCB7CisJCS5uYW1lID0gImZhcCIsCisJCS5iaXQg PSAxMSwKKwl9LCB7CisJCS5uYW1lID0gInBjaWUiLAorCQkuYml0ID0gMTIsCisJfSwgeworCQku bmFtZSA9ICJ3bGFuLXBhZHMiLAorCQkuYml0ID0gMTMsCisJfSwgeworCQkvKiBzZW50aW5lbCAq LworCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhfcG93ZXJfZGF0YSBiY202 MzI2OF9wb3dlcl9kb21haW5zW10gPSB7CisJeworCQkubmFtZSA9ICJzYXIiLAorCQkuYml0ID0g MCwKKwl9LCB7CisJCS5uYW1lID0gImlwc2VjIiwKKwkJLmJpdCA9IDEsCisJfSwgeworCQkubmFt ZSA9ICJtaXBzIiwKKwkJLmJpdCA9IDIsCisJCS5mbGFncyA9IEdFTlBEX0ZMQUdfQUxXQVlTX09O LAorCX0sIHsKKwkJLm5hbWUgPSAiZGVjdCIsCisJCS5iaXQgPSAzLAorCX0sIHsKKwkJLm5hbWUg PSAidXNiaCIsCisJCS5iaXQgPSA0LAorCX0sIHsKKwkJLm5hbWUgPSAidXNiZCIsCisJCS5iaXQg PSA1LAorCX0sIHsKKwkJLm5hbWUgPSAicm9ib3N3IiwKKwkJLmJpdCA9IDYsCisJfSwgeworCQku bmFtZSA9ICJwY20iLAorCQkuYml0ID0gNywKKwl9LCB7CisJCS5uYW1lID0gInBlcmlwaCIsCisJ CS5iaXQgPSA4LAorCQkuZmxhZ3MgPSBHRU5QRF9GTEFHX0FMV0FZU19PTiwKKwl9LCB7CisJCS5u YW1lID0gInZkc2wtcGh5IiwKKwkJLmJpdCA9IDksCisJfSwgeworCQkubmFtZSA9ICJ2ZHNsLW1p cHMiLAorCQkuYml0ID0gMTAsCisJfSwgeworCQkubmFtZSA9ICJmYXAiLAorCQkuYml0ID0gMTEs CisJfSwgeworCQkubmFtZSA9ICJwY2llIiwKKwkJLmJpdCA9IDEyLAorCX0sIHsKKwkJLm5hbWUg PSAid2xhbi1wYWRzIiwKKwkJLmJpdCA9IDEzLAorCX0sIHsKKwkJLyogc2VudGluZWwgKi8KKwl9 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmNtNjN4eF9wb3dlcl9v Zl9tYXRjaFtdID0geworCXsKKwkJLmNvbXBhdGlibGUgPSAiYnJjbSxiY202MzE4LXBvd2VyLWNv bnRyb2xsZXIiLAorCQkuZGF0YSA9ICZiY202MzE4X3Bvd2VyX2RvbWFpbnMsCisJfSwgeworCQku Y29tcGF0aWJsZSA9ICJicmNtLGJjbTYzMjgtcG93ZXItY29udHJvbGxlciIsCisJCS5kYXRhID0g JmJjbTYzMjhfcG93ZXJfZG9tYWlucywKKwl9LCB7CisJCS5jb21wYXRpYmxlID0gImJyY20sYmNt NjM2Mi1wb3dlci1jb250cm9sbGVyIiwKKwkJLmRhdGEgPSAmYmNtNjM2Ml9wb3dlcl9kb21haW5z LAorCX0sIHsKKwkJLmNvbXBhdGlibGUgPSAiYnJjbSxiY202MzI2OC1wb3dlci1jb250cm9sbGVy IiwKKwkJLmRhdGEgPSAmYmNtNjMyNjhfcG93ZXJfZG9tYWlucywKKwl9LCB7CisJCS8qIHNlbnRp bmVsICovCisJfQorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNtNjN4eF9w b3dlcl9kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAiYmNtNjN4eC1wb3dlci1j b250cm9sbGVyIiwKKwkJLm9mX21hdGNoX3RhYmxlID0gYmNtNjN4eF9wb3dlcl9vZl9tYXRjaCwK Kwl9LAorCS5wcm9iZSAgPSBiY202M3h4X3Bvd2VyX3Byb2JlLAorfTsKK2J1aWx0aW5fcGxhdGZv cm1fZHJpdmVyKGJjbTYzeHhfcG93ZXJfZHJpdmVyKTsKLS0gCjIuMjYuMgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK