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=-6.7 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,UNWANTED_LANGUAGE_BODY,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 4B930C433E0 for ; Tue, 16 Jun 2020 08:34:58 +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 0EAC720656 for ; Tue, 16 Jun 2020 08:34:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="pmldD3ft"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DOkek0Nq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0EAC720656 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=tvjzD+YNWudA0kAwH15xwliy/igO7Ozi6FUQDaLM9fQ=; b=pmldD3ft2AaRZ2 w5xhHhGO0w61NqsX5pc2q13aqRQikyfzreCbergSChmv7ZT0UvEoytAzb41puWlh/WgOdFQJMKRMj BIo38pHaEUyAVM0Er4OlTQxsy4wnwfZmO682wcnb9Gv4uoVeTQSahMbQ4R12/BqQxrtEZg5FmiXJf 53CnzJZ9OVPXzE4QmLZZ7Fm/JzKRh44KEJQED0VZBPxJCwQCWRI6xF+6m4k2r6AzsUge5ZHLhPIoJ TVpooGfvRLjJx/LRaeoCYi3GbghDRs9ogetB0XxoRTinP38y3ye6HtLuBltBtmNOXHYAZvsrLrYWH 6S4ZlztvkbBE2pyg4AwQ==; 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 1jl73O-0001bH-9V; Tue, 16 Jun 2020 08:34:46 +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 1jl72s-00016k-H5 for linux-arm-kernel@lists.infradead.org; Tue, 16 Jun 2020 08:34:16 +0000 Received: by mail-wm1-x341.google.com with SMTP id u26so1728871wmn.1 for ; Tue, 16 Jun 2020 01:34:14 -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=NWEWii5A/ForyHYzJCLc7QgHdTewwCIEp3fki2MA/mM=; b=DOkek0NqWM6VltIoDiDyh+Xab7AaMYLM8FRHYBhEm+B7591OcAl7OimaikICAK5UhM pjLWvlAMd1whkFHn/f+TpzFwvmMLF6anI3yjoPbTznKnGQx6BdsP7ds1sZvB8Hm60OvS q3YCQZwJAuEIddNyczF8UBzvAGFFQWjB4JC3yTlPaYiYhthgpwPbFUrZDBapLsfNwRdw HArkDDUcreMLm62PRVABVNjK8A84JJ+NNVxpU/DoC6dpFAW4VOgf3c7/MhsoyU76Q7+x lUvHs7Jc+mkBNjl6ZQRXOIU/V6cw5eUfmUs5ao0CPlg40yDX3Mr/hUSM8X+7vd1RZe9K pLfg== 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=NWEWii5A/ForyHYzJCLc7QgHdTewwCIEp3fki2MA/mM=; b=q/8HMF71XNxUX7ohtwCZJXcclStKLBTFlxpd1mCBgkwZgLONi1H7/nzTsTr0hUhyzr 93Dh2vj66xcrkSfffCYESc9piVasdNUnbdlT75WIMUGp8F24IpaCNGdYRCgtJcJ502tn Rw2y7+ktXVtVR/5GNXSmgH6IgfF2ukh730V3/pKtsBZq24zOZb/IOfrBTWSA4opuCcJP 1Nb3hWAI2neTOxeAgRCQzvG0ZPrpV9CikRfsubhpQ28FtoHCq+Yx+MR9A5n/WLX8c5Gf zHaOeQTVfLQz4IfAlTCfnXR5BsQfrNh5oWzNz5MoYYJtXsDC3ReARAWen6/qA1MEi/3P ABOw== X-Gm-Message-State: AOAM531ZQqqtHO0m9s2CY3AFdgb4WAuGov67XY2S60m2PqbumC6+mulL zoArcorDJy64nckShbXQbhI= X-Google-Smtp-Source: ABdhPJzEAEaZQEOLhGe4DBAoRkZNVx96abEGAy2HvY8HdPf7lrykEGLXAM5RPpEGwTuE+kQX1bZ+Lg== X-Received: by 2002:a1c:e914:: with SMTP id q20mr1908010wmc.145.1592296452551; Tue, 16 Jun 2020 01:34:12 -0700 (PDT) Received: from skynet.lan (90.red-88-20-62.staticip.rima-tde.net. [88.20.62.90]) by smtp.gmail.com with ESMTPSA id s18sm34318981wra.85.2020.06.16.01.34.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2020 01:34:12 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: simon@fire.lp0.eu, jonas.gorski@gmail.com, kishon@ti.com, vkoul@kernel.org, robh+dt@kernel.org, f.fainelli@gmail.com, bcm-kernel-feedback-list@broadcom.com, p.zabel@pengutronix.de, krzk@kernel.org, gregkh@linuxfoundation.org, alcooperx@gmail.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 2/2] phy: bcm63xx-usbh: Add BCM63xx USBH driver Date: Tue, 16 Jun 2020 10:34:08 +0200 Message-Id: <20200616083408.3426435-3-noltari@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200616083408.3426435-1-noltari@gmail.com> References: <20200616083408.3426435-1-noltari@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200616_013414_566422_D698D9A0 X-CRM114-Status: GOOD ( 18.25 ) 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 QWRkIEJDTTYzeHggVVNCSCBQSFkgZHJpdmVyIGZvciBCTUlQUy4KClNpZ25lZC1vZmYtYnk6IMOB bHZhcm8gRmVybsOhbmRleiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9w aHkvYnJvYWRjb20vS2NvbmZpZyAgICAgICAgICAgIHwgIDEwICsKIGRyaXZlcnMvcGh5L2Jyb2Fk Y29tL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL3BoeS9icm9hZGNvbS9waHkt YmNtNjN4eC11c2JoLmMgfCA0NjMgKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo YW5nZWQsIDQ3NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9waHkv YnJvYWRjb20vcGh5LWJjbTYzeHgtdXNiaC5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvYnJv YWRjb20vS2NvbmZpZyBiL2RyaXZlcnMvcGh5L2Jyb2FkY29tL0tjb25maWcKaW5kZXggYjI5ZjEx YzE5MTU1Li44OTY1MDZjN2IxZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L2Jyb2FkY29tL0tj b25maWcKKysrIGIvZHJpdmVycy9waHkvYnJvYWRjb20vS2NvbmZpZwpAQCAtMiw2ICsyLDE2IEBA CiAjCiAjIFBoeSBkcml2ZXJzIGZvciBCcm9hZGNvbSBwbGF0Zm9ybXMKICMKK2NvbmZpZyBQSFlf QkNNNjNYWF9VU0JICisJdHJpc3RhdGUgIkJDTTYzeHggVVNCSCBQSFkgZHJpdmVyIgorCWRlcGVu ZHMgb24gQk1JUFNfR0VORVJJQyB8fCBDT01QSUxFX1RFU1QKKwlkZXBlbmRzIG9uIE9GCisJc2Vs ZWN0IEdFTkVSSUNfUEhZCisJZGVmYXVsdCBCTUlQU19HRU5FUklDCisJaGVscAorCSAgRW5hYmxl IHRoaXMgdG8gc3VwcG9ydCB0aGUgQkNNNjN4eCBVU0JIIFBIWSBkcml2ZXIuCisJICBJZiB1bnN1 cmUsIHNheSBOLgorCiBjb25maWcgUEhZX0NZR05VU19QQ0lFCiAJdHJpc3RhdGUgIkJyb2FkY29t IEN5Z251cyBQQ0llIFBIWSBkcml2ZXIiCiAJZGVwZW5kcyBvbiBPRiAmJiAoQVJDSF9CQ01fQ1lH TlVTIHx8IENPTVBJTEVfVEVTVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2Jyb2FkY29tL01h a2VmaWxlIGIvZHJpdmVycy9waHkvYnJvYWRjb20vTWFrZWZpbGUKaW5kZXggYzc4ZGU1NDYxMzVj Li43MDI0MTI3Zjg2YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L2Jyb2FkY29tL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvcGh5L2Jyb2FkY29tL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAogIyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorb2JqLSQoQ09ORklHX1BIWV9CQ002M1hY X1VTQkgpCQkrPSBwaHktYmNtNjN4eC11c2JoLm8KIG9iai0kKENPTkZJR19QSFlfQ1lHTlVTX1BD SUUpCQkrPSBwaHktYmNtLWN5Z251cy1wY2llLm8KIG9iai0kKENPTkZJR19CQ01fS09OQV9VU0Iy X1BIWSkJCSs9IHBoeS1iY20ta29uYS11c2IyLm8KIG9iai0kKENPTkZJR19QSFlfQkNNX05TX1VT QjIpCQkrPSBwaHktYmNtLW5zLXVzYjIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvYnJvYWRj b20vcGh5LWJjbTYzeHgtdXNiaC5jIGIvZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJjbTYzeHgt dXNiaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzcyMjVkYzk5 YzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJjbTYzeHgt dXNiaC5jCkBAIC0wLDAgKzEsNDYzIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vci1sYXRlcgorLyoKKyAqIEJDTTYzMjggVVNCSCBQSFkgQ29udHJvbGxlciBEcml2ZXIK KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgw4FsdmFybyBGZXJuw6FuZGV6IFJvamFzIDxub2x0 YXJpQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBTaW1vbiBBcmxvdHQgPHNpbW9u QGZpcmUubHAwLmV1PgorICoKKyAqIERlcml2ZWQgZnJvbSBiY205NjN4eF80LjEyTC4wNkJfY29u c3VtZXIva2VybmVsL2xpbnV4L2FyY2gvbWlwcy9iY205NjN4eC9zZXR1cC5jOgorICogQ29weXJp Z2h0IChDKSAyMDAyIEJyb2FkY29tIENvcnBvcmF0aW9uCisgKgorICogRGVyaXZlZCBmcm9tIE9w ZW5XcnQgcGF0Y2hlczoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBKb25hcyBHb3Jza2kgPGpvbmFz LmdvcnNraUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgRmxvcmlhbiBGYWluZWxs aSA8Zi5mYWluZWxsaUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF4aW1lIEJp em9uIDxtYml6b25AZnJlZWJveC5mcj4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY2xrLmg+Cisj aW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRl IDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorI2luY2x1ZGUgPGxp bnV4L3BoeS9waHkuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNs dWRlIDxsaW51eC9yZXNldC5oPgorCisvKiBVU0JIIGNvbnRyb2wgcmVnaXN0ZXIgb2Zmc2V0cyAq LworZW51bSB1c2JoX3JlZ3MgeworCVVTQkhfQlJUX0NPTlRST0wxID0gMCwKKwlVU0JIX0JSVF9D T05UUk9MMiwKKwlVU0JIX0JSVF9TVEFUVVMxLAorCVVTQkhfQlJUX1NUQVRVUzIsCisJVVNCSF9V VE1JX0NPTlRST0wxLAorCVVTQkhfVEVTVF9QT1JUX0NPTlRST0wsCisJVVNCSF9QTExfQ09OVFJP TDEsCisjZGVmaW5lICAgVVNCSF9QTExDX1JFRkNMS1NFTF9TSElGVAkwCisjZGVmaW5lICAgVVNC SF9QTExDX1JFRkNMS1NFTF9NQVNLCSgweDMgPDwgVVNCSF9QTExDX1JFRkNMS1NFTF9TSElGVCkK KyNkZWZpbmUgICBVU0JIX1BMTENfQ0xLU0VMX1NISUZUCTIKKyNkZWZpbmUgICBVU0JIX1BMTENf Q0xLU0VMX01BU0sJCSgweDMgPDwgVVNCSF9QTExDX0NMS1NFTF9NQVNLKQorI2RlZmluZSAgIFVT QkhfUExMQ19YVEFMX1BXUkRXTkIJQklUKDQpCisjZGVmaW5lICAgVVNCSF9QTExDX1BMTF9QV1JE V05CCQlCSVQoNSkKKyNkZWZpbmUgICBVU0JIX1BMTENfUExMX0NBTEVOCQlCSVQoNikKKyNkZWZp bmUgICBVU0JIX1BMTENfUEhZUExMX0JZUAkJQklUKDcpCisjZGVmaW5lICAgVVNCSF9QTExDX1BM TF9SRVNFVAkJQklUKDgpCisjZGVmaW5lICAgVVNCSF9QTExDX1BMTF9JRERRX1BXUkROCUJJVCg5 KQorI2RlZmluZSAgIFVTQkhfUExMQ19QTExfUFdSRE5fREVMQVkJQklUKDEwKQorI2RlZmluZSAg IFVTQkhfNjMxOF9QTExDX1BMTF9TVVNQRU5EX0VOCUJJVCgyNykKKyNkZWZpbmUgICBVU0JIXzYz MThfUExMQ19QSFlQTExfQllQCUJJVCgyOSkKKyNkZWZpbmUgICBVU0JIXzYzMThfUExMQ19QTExf UkVTRVQJQklUKDMwKQorI2RlZmluZSAgIFVTQkhfNjMxOF9QTExDX1BMTF9JRERRX1BXUkROCUJJ VCgzMSkKKwlVU0JIX1NXQVBfQ09OVFJPTCwKKyNkZWZpbmUgICBVU0JIX1NDX09IQ0lfREFUQV9T V0FQCUJJVCgwKQorI2RlZmluZSAgIFVTQkhfU0NfT0hDSV9FTkRJQU5fU1dBUAlCSVQoMSkKKyNk ZWZpbmUgICBVU0JIX1NDX09IQ0lfTE9HSUNBTF9BRERSX0VOCUJJVCgyKQorI2RlZmluZSAgIFVT QkhfU0NfRUhDSV9EQVRBX1NXQVAJQklUKDMpCisjZGVmaW5lICAgVVNCSF9TQ19FSENJX0VORElB Tl9TV0FQCUJJVCg0KQorI2RlZmluZSAgIFVTQkhfU0NfRUhDSV9MT0dJQ0FMX0FERFJfRU4JQklU KDUpCisjZGVmaW5lICAgVVNCSF9TQ19VU0JfREVWSUNFX1NFTAlCSVQoNikKKwlVU0JIX0dFTkVS SUNfQ09OVFJPTCwKKyNkZWZpbmUgICBVU0JIX0dDX1BMTF9TVVNQRU5EX0VOCUJJVCgxKQorCVVT QkhfRlJBTUVfQURKVVNUX1ZBTFVFLAorCVVTQkhfU0VUVVAsCisjZGVmaW5lICAgVVNCSF9TX0lP QwkJCUJJVCg0KQorI2RlZmluZSAgIFVTQkhfU19JUFAJCQlCSVQoNSkKKwlVU0JIX01ESU8sCisJ VVNCSF9NRElPMzIsCisJVVNCSF9VU0JfU0lNX0NPTlRST0wsCisjZGVmaW5lICAgVVNCSF9VU0Nf TEFERFJfU0VMCQlCSVQoNSkKKworCV9fVVNCSF9FTlVNX1NJWkUKK307CisKK3N0cnVjdCBiY202 M3h4X3VzYmhfcGh5X3ZhcmlhbnQgeworCS8qIFVTQiBTaW0gQ29udHJvbCBiaXRzIHRvIHNldCAq LworCXUzMiB1c2Nfc2V0OworCisJLyogVGVzdCBQb3J0IENvbnRyb2wgdmFsdWUgdG8gc2V0IGlm IG5vbi16ZXJvICovCisJdTMyIHRwY192YWw7CisKKwkvKiBTZXR1cCBiaXRzIHRvIHNldC9jbGVh ciBmb3IgcG93ZXIgb24gKi8KKwl1MzIgc2V0dXBfc2V0OworCXUzMiBzZXR1cF9jbHI7CisKKwkv KiBQTExDIGJpdHMgdG8gc2V0L2NsZWFyIGZvciBwb3dlciBvbiAqLworCXUzMiBwb3dlcl9wbGxj X3NldDsKKwl1MzIgcG93ZXJfcGxsY19jbHI7CisKKwkvKiBVU0IgY2xvY2tzICovCisJYm9vbCBo YXNfdXNiX2NsazsKKwlib29sIGhhc191c2JfcmVmX2NsazsKKworCS8qIFJlZ2lzdGVycyAqLwor CWxvbmcgcmVnc1tfX1VTQkhfRU5VTV9TSVpFXTsKK307CisKK3N0cnVjdCBiY202M3h4X3VzYmhf cGh5IHsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisJc3RydWN0IGNsayAqdXNiaF9jbGs7CisJc3Ry dWN0IGNsayAqdXNiX3JlZl9jbGs7CisJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnJlc2V0OworCXN0 cnVjdCBiY202M3h4X3VzYmhfcGh5X3ZhcmlhbnQgdmFyaWFudDsKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50IHVzYmhfYmNtNjMxOCBfX2luaXRjb25z dCA9IHsKKwkucmVncyA9IHsKKwkJW1VTQkhfQlJUX0NPTlRST0wxXSA9IC0xLAorCQlbVVNCSF9C UlRfQ09OVFJPTDJdID0gLTEsCisJCVtVU0JIX0JSVF9TVEFUVVMxXSA9IC0xLAorCQlbVVNCSF9C UlRfU1RBVFVTMl0gPSAtMSwKKwkJW1VTQkhfVVRNSV9DT05UUk9MMV0gPSAweDJjLAorCQlbVVNC SF9URVNUX1BPUlRfQ09OVFJPTF0gPSAweDFjLAorCQlbVVNCSF9QTExfQ09OVFJPTDFdID0gMHgw NCwKKwkJW1VTQkhfU1dBUF9DT05UUk9MXSA9IDB4MGMsCisJCVtVU0JIX0dFTkVSSUNfQ09OVFJP TF0gPSAtMSwKKwkJW1VTQkhfRlJBTUVfQURKVVNUX1ZBTFVFXSA9IDB4MDgsCisJCVtVU0JIX1NF VFVQXSA9IDB4MDAsCisJCVtVU0JIX01ESU9dID0gMHgxNCwKKwkJW1VTQkhfTURJTzMyXSA9IDB4 MTgsCisJCVtVU0JIX1VTQl9TSU1fQ09OVFJPTF0gPSAweDIwLAorCX0sCisJLnNldHVwX3NldCA9 IFVTQkhfU19JT0MsCisJLnNldHVwX2NsciA9IDAsCisJLnVzY19zZXQgPSBVU0JIX1VTQ19MQURE Ul9TRUwsCisJLnRwY192YWwgPSAwLAorCS5wb3dlcl9wbGxjX3NldCA9IFVTQkhfNjMxOF9QTExD X1BMTF9TVVNQRU5EX0VOLAorCS5wb3dlcl9wbGxjX2NsciA9IFVTQkhfNjMxOF9QTExDX1BMTF9J RERRX1BXUkROLAorCS5oYXNfdXNiX2NsayA9IDEsCisJLmhhc191c2JfcmVmX2NsayA9IDEsCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhfdXNiaF9waHlfdmFyaWFudCB1c2JoX2Jj bTYzMjggX19pbml0Y29uc3QgPSB7CisJLnJlZ3MgPSB7CisJCVtVU0JIX0JSVF9DT05UUk9MMV0g PSAweDAwLAorCQlbVVNCSF9CUlRfQ09OVFJPTDJdID0gMHgwNCwKKwkJW1VTQkhfQlJUX1NUQVRV UzFdID0gMHgwOCwKKwkJW1VTQkhfQlJUX1NUQVRVUzJdID0gMHgwYywKKwkJW1VTQkhfVVRNSV9D T05UUk9MMV0gPSAweDEwLAorCQlbVVNCSF9URVNUX1BPUlRfQ09OVFJPTF0gPSAweDE0LAorCQlb VVNCSF9QTExfQ09OVFJPTDFdID0gMHgxOCwKKwkJW1VTQkhfU1dBUF9DT05UUk9MXSA9IDB4MWMs CisJCVtVU0JIX0dFTkVSSUNfQ09OVFJPTF0gPSAweDIwLAorCQlbVVNCSF9GUkFNRV9BREpVU1Rf VkFMVUVdID0gMHgyNCwKKwkJW1VTQkhfU0VUVVBdID0gMHgyOCwKKwkJW1VTQkhfTURJT10gPSAw eDJjLAorCQlbVVNCSF9NRElPMzJdID0gMHgzMCwKKwkJW1VTQkhfVVNCX1NJTV9DT05UUk9MXSA9 IDB4MzQsCisJfSwKKwkuc2V0dXBfc2V0ID0gVVNCSF9TX0lPQywKKwkuc2V0dXBfY2xyID0gMCwK KwkudXNjX3NldCA9IDAsCisJLnRwY192YWwgPSAwLAorCS5wb3dlcl9wbGxjX3NldCA9IDAsCisJ LnBvd2VyX3BsbGNfY2xyID0gMCwKKwkuaGFzX3VzYl9jbGsgPSAxLAorCS5oYXNfdXNiX3JlZl9j bGsgPSAwLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmhfcGh5X3Zhcmlh bnQgdXNiaF9iY202MzU4IF9faW5pdGNvbnN0ID0geworCS5yZWdzID0geworCQlbVVNCSF9CUlRf Q09OVFJPTDFdID0gLTEsCisJCVtVU0JIX0JSVF9DT05UUk9MMl0gPSAtMSwKKwkJW1VTQkhfQlJU X1NUQVRVUzFdID0gLTEsCisJCVtVU0JIX0JSVF9TVEFUVVMyXSA9IC0xLAorCQlbVVNCSF9VVE1J X0NPTlRST0wxXSA9IC0xLAorCQlbVVNCSF9URVNUX1BPUlRfQ09OVFJPTF0gPSAweDI0LAorCQlb VVNCSF9QTExfQ09OVFJPTDFdID0gLTEsCisJCVtVU0JIX1NXQVBfQ09OVFJPTF0gPSAweDAwLAor CQlbVVNCSF9HRU5FUklDX0NPTlRST0xdID0gLTEsCisJCVtVU0JIX0ZSQU1FX0FESlVTVF9WQUxV RV0gPSAtMSwKKwkJW1VTQkhfU0VUVVBdID0gLTEsCisJCVtVU0JIX01ESU9dID0gLTEsCisJCVtV U0JIX01ESU8zMl0gPSAtMSwKKwkJW1VTQkhfVVNCX1NJTV9DT05UUk9MXSA9IC0xLAorCX0sCisJ LyoKKwkgKiBUaGUgbWFnaWMgdmFsdWUgY29tZXMgZm9yIHRoZSBvcmlnaW5hbCB2ZW5kb3IgQlNQ CisJICogYW5kIGlzIG5lZWRlZCBmb3IgVVNCIHRvIHdvcmsuIERhdGFzaGVldCBkb2VzIG5vdAor CSAqIGhlbHAsIHNvIHRoZSBtYWdpYyB2YWx1ZSBpcyB1c2VkIGFzLWlzLgorCSAqLworCS50cGNf dmFsID0gMHgxYzAwMjAsCisJLmhhc191c2JfY2xrID0gMCwKKwkuaGFzX3VzYl9yZWZfY2xrID0g MCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50IHVz YmhfYmNtNjM2OCBfX2luaXRjb25zdCA9IHsKKwkucmVncyA9IHsKKwkJW1VTQkhfQlJUX0NPTlRS T0wxXSA9IDB4MDAsCisJCVtVU0JIX0JSVF9DT05UUk9MMl0gPSAweDA0LAorCQlbVVNCSF9CUlRf U1RBVFVTMV0gPSAweDA4LAorCQlbVVNCSF9CUlRfU1RBVFVTMl0gPSAweDBjLAorCQlbVVNCSF9V VE1JX0NPTlRST0wxXSA9IDB4MTAsCisJCVtVU0JIX1RFU1RfUE9SVF9DT05UUk9MXSA9IDB4MTQs CisJCVtVU0JIX1BMTF9DT05UUk9MMV0gPSAweDE4LAorCQlbVVNCSF9TV0FQX0NPTlRST0xdID0g MHgxYywKKwkJW1VTQkhfR0VORVJJQ19DT05UUk9MXSA9IC0xLAorCQlbVVNCSF9GUkFNRV9BREpV U1RfVkFMVUVdID0gMHgyNCwKKwkJW1VTQkhfU0VUVVBdID0gMHgyOCwKKwkJW1VTQkhfTURJT10g PSAweDJjLAorCQlbVVNCSF9NRElPMzJdID0gMHgzMCwKKwkJW1VTQkhfVVNCX1NJTV9DT05UUk9M XSA9IDB4MzQsCisJfSwKKwkuc2V0dXBfc2V0ID0gVVNCSF9TX0lPQywKKwkuc2V0dXBfY2xyID0g MCwKKwkudXNjX3NldCA9IDAsCisJLnRwY192YWwgPSAwLAorCS5wb3dlcl9wbGxjX3NldCA9IDAs CisJLnBvd2VyX3BsbGNfY2xyID0gVVNCSF9QTExDX1BMTF9JRERRX1BXUkROIHwgVVNCSF9QTExD X1BMTF9QV1JETl9ERUxBWSwKKwkuaGFzX3VzYl9jbGsgPSAxLAorCS5oYXNfdXNiX3JlZl9jbGsg PSAwLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmhfcGh5X3ZhcmlhbnQg dXNiaF9iY202MzI2OCBfX2luaXRjb25zdCA9IHsKKwkucmVncyA9IHsKKwkJW1VTQkhfQlJUX0NP TlRST0wxXSA9IDB4MDAsCisJCVtVU0JIX0JSVF9DT05UUk9MMl0gPSAweDA0LAorCQlbVVNCSF9C UlRfU1RBVFVTMV0gPSAweDA4LAorCQlbVVNCSF9CUlRfU1RBVFVTMl0gPSAweDBjLAorCQlbVVNC SF9VVE1JX0NPTlRST0wxXSA9IDB4MTAsCisJCVtVU0JIX1RFU1RfUE9SVF9DT05UUk9MXSA9IDB4 MTQsCisJCVtVU0JIX1BMTF9DT05UUk9MMV0gPSAweDE4LAorCQlbVVNCSF9TV0FQX0NPTlRST0xd ID0gMHgxYywKKwkJW1VTQkhfR0VORVJJQ19DT05UUk9MXSA9IDB4MjAsCisJCVtVU0JIX0ZSQU1F X0FESlVTVF9WQUxVRV0gPSAweDI0LAorCQlbVVNCSF9TRVRVUF0gPSAweDI4LAorCQlbVVNCSF9N RElPXSA9IDB4MmMsCisJCVtVU0JIX01ESU8zMl0gPSAweDMwLAorCQlbVVNCSF9VU0JfU0lNX0NP TlRST0xdID0gMHgzNCwKKwl9LAorCS5zZXR1cF9zZXQgPSBVU0JIX1NfSU9DLAorCS5zZXR1cF9j bHIgPSBVU0JIX1NfSVBQLAorCS51c2Nfc2V0ID0gMCwKKwkudHBjX3ZhbCA9IDAsCisJLnBvd2Vy X3BsbGNfc2V0ID0gMCwKKwkucG93ZXJfcGxsY19jbHIgPSBVU0JIX1BMTENfUExMX0lERFFfUFdS RE4gfCBVU0JIX1BMTENfUExMX1BXUkROX0RFTEFZLAorCS5oYXNfdXNiX2NsayA9IDEsCisJLmhh c191c2JfcmVmX2NsayA9IDEsCit9OworCitzdGF0aWMgaW5saW5lIGJvb2wgdXNiaF9oYXNfcmVn KHN0cnVjdCBiY202M3h4X3VzYmhfcGh5ICp1c2JoLCBpbnQgcmVnKQoreworCXJldHVybiAodXNi aC0+dmFyaWFudC5yZWdzW3JlZ10gPj0gMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIHVzYmhf cmVhZGwoc3RydWN0IGJjbTYzeHhfdXNiaF9waHkgKnVzYmgsIGludCByZWcpCit7CisJcmV0dXJu IF9fcmF3X3JlYWRsKHVzYmgtPmJhc2UgKyB1c2JoLT52YXJpYW50LnJlZ3NbcmVnXSk7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCB1c2JoX3dyaXRlbChzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeSAq dXNiaCwgaW50IHJlZywKKwkJCSAgICAgICB1MzIgdmFsdWUpCit7CisJX19yYXdfd3JpdGVsKHZh bHVlLCB1c2JoLT5iYXNlICsgdXNiaC0+dmFyaWFudC5yZWdzW3JlZ10pOworfQorCitzdGF0aWMg aW50IGJjbTYzeHhfdXNiaF9waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGJj bTYzeHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwlpbnQgcmV0Owor CisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHVzYmgtPnVzYmhfY2xrKTsKKwlpZiAocmV0KSB7 CisJCWRldl9lcnIoJnBoeS0+ZGV2LCAidW5hYmxlIHRvIGVuYWJsZSB1c2JoIGNsb2NrOiAlZFxu IiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUo dXNiaC0+dXNiX3JlZl9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGh5LT5kZXYsICJ1 bmFibGUgdG8gZW5hYmxlIHVzYl9yZWYgY2xvY2s6ICVkXG4iLCByZXQpOworCQljbGtfZGlzYWJs ZV91bnByZXBhcmUodXNiaC0+dXNiaF9jbGspOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9 IHJlc2V0X2NvbnRyb2xfcmVzZXQodXNiaC0+cmVzZXQpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vy cigmcGh5LT5kZXYsICJ1bmFibGUgdG8gcmVzZXQgZGV2aWNlOiAlZFxuIiwgcmV0KTsKKwkJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKHVzYmgtPnVzYl9yZWZfY2xrKTsKKwkJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKHVzYmgtPnVzYmhfY2xrKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBDb25maWd1 cmUgdG8gd29yayBpbiBuYXRpdmUgQ1BVIGVuZGlhbiAqLworCWlmICh1c2JoX2hhc19yZWcodXNi aCwgVVNCSF9TV0FQX0NPTlRST0wpKSB7CisJCXUzMiB2YWwgPSB1c2JoX3JlYWRsKHVzYmgsIFVT QkhfU1dBUF9DT05UUk9MKTsKKworCQl2YWwgfD0gVVNCSF9TQ19FSENJX0RBVEFfU1dBUDsKKwkJ dmFsICY9IH5VU0JIX1NDX0VIQ0lfRU5ESUFOX1NXQVA7CisKKwkJdmFsIHw9IFVTQkhfU0NfT0hD SV9EQVRBX1NXQVA7CisJCXZhbCAmPSB+VVNCSF9TQ19PSENJX0VORElBTl9TV0FQOworCisJCXVz Ymhfd3JpdGVsKHVzYmgsIFVTQkhfU1dBUF9DT05UUk9MLCB2YWwpOworCX0KKworCWlmICh1c2Jo X2hhc19yZWcodXNiaCwgVVNCSF9TRVRVUCkpIHsKKwkJdTMyIHZhbCA9IHVzYmhfcmVhZGwodXNi aCwgVVNCSF9TRVRVUCk7CisKKwkJdmFsIHw9IHVzYmgtPnZhcmlhbnQuc2V0dXBfc2V0OworCQl2 YWwgJj0gfnVzYmgtPnZhcmlhbnQuc2V0dXBfY2xyOworCisJCXVzYmhfd3JpdGVsKHVzYmgsIFVT QkhfU0VUVVAsIHZhbCk7CisJfQorCisJaWYgKHVzYmhfaGFzX3JlZyh1c2JoLCBVU0JIX1VTQl9T SU1fQ09OVFJPTCkpIHsKKwkJdTMyIHZhbCA9IHVzYmhfcmVhZGwodXNiaCwgVVNCSF9VU0JfU0lN X0NPTlRST0wpOworCisJCXZhbCB8PSB1c2JoLT52YXJpYW50LnVzY19zZXQ7CisKKwkJdXNiaF93 cml0ZWwodXNiaCwgVVNCSF9VU0JfU0lNX0NPTlRST0wsIHZhbCk7CisJfQorCisJaWYgKHVzYmgt PnZhcmlhbnQudHBjX3ZhbCAmJgorCSAgICB1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9URVNUX1BP UlRfQ09OVFJPTCkpCisJCXVzYmhfd3JpdGVsKHVzYmgsIFVTQkhfVEVTVF9QT1JUX0NPTlRST0ws CisJCQkgICAgdXNiaC0+dmFyaWFudC50cGNfdmFsKTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGJjbTYzeHhfdXNiaF9waHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQoreworCXN0 cnVjdCBiY202M3h4X3VzYmhfcGh5ICp1c2JoID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisKKwlp ZiAodXNiaF9oYXNfcmVnKHVzYmgsIFVTQkhfUExMX0NPTlRST0wxKSkgeworCQl1MzIgdmFsID0g dXNiaF9yZWFkbCh1c2JoLCBVU0JIX1BMTF9DT05UUk9MMSk7CisKKwkJdmFsIHw9IHVzYmgtPnZh cmlhbnQucG93ZXJfcGxsY19zZXQ7CisJCXZhbCAmPSB+dXNiaC0+dmFyaWFudC5wb3dlcl9wbGxj X2NscjsKKworCQl1c2JoX3dyaXRlbCh1c2JoLCBVU0JIX1BMTF9DT05UUk9MMSwgdmFsKTsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBiY202M3h4X3VzYmhfcGh5X3Bvd2VyX29m ZihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGJjbTYzeHhfdXNiaF9waHkgKnVzYmggPSBw aHlfZ2V0X2RydmRhdGEocGh5KTsKKworCWlmICh1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9QTExf Q09OVFJPTDEpKSB7CisJCXUzMiB2YWwgPSB1c2JoX3JlYWRsKHVzYmgsIFVTQkhfUExMX0NPTlRS T0wxKTsKKworCQl2YWwgJj0gfnVzYmgtPnZhcmlhbnQucG93ZXJfcGxsY19zZXQ7CisJCXZhbCB8 PSB1c2JoLT52YXJpYW50LnBvd2VyX3BsbGNfY2xyOworCisJCXVzYmhfd3JpdGVsKHVzYmgsIFVT QkhfUExMX0NPTlRST0wxLCB2YWwpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGJjbTYzeHhfdXNiaF9waHlfZXhpdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGJjbTYz eHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCWNsa19kaXNhYmxl X3VucHJlcGFyZSh1c2JoLT51c2JoX2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVzYmgt PnVzYl9yZWZfY2xrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHBo eV9vcHMgYmNtNjN4eF91c2JoX3BoeV9vcHMgPSB7CisJLmV4aXQgPSBiY202M3h4X3VzYmhfcGh5 X2V4aXQsCisJLmluaXQgPSBiY202M3h4X3VzYmhfcGh5X2luaXQsCisJLnBvd2VyX29mZiA9IGJj bTYzeHhfdXNiaF9waHlfcG93ZXJfb2ZmLAorCS5wb3dlcl9vbiA9IGJjbTYzeHhfdXNiaF9waHlf cG93ZXJfb24sCisJLm93bmVyID0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgaW50IF9faW5p dCBiY202M3h4X3VzYmhfcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7 CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgYmNtNjN4eF91c2Jo X3BoeQkqdXNiaDsKKwljb25zdCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50ICp2YXJp YW50OworCXN0cnVjdCByZXNvdXJjZSAqcmVzOworCXN0cnVjdCBwaHkgKnBoeTsKKwlzdHJ1Y3Qg cGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7CisKKwl1c2JoID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCp1c2JoKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF1c2JoKQorCQlyZXR1cm4gLUVOT01F TTsKKworCXZhcmlhbnQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKKwlpZiAoIXZh cmlhbnQpCisJCXJldHVybiAtRUlOVkFMOworCW1lbWNweSgmdXNiaC0+dmFyaWFudCwgdmFyaWFu dCwgc2l6ZW9mKCp2YXJpYW50KSk7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRl diwgSU9SRVNPVVJDRV9NRU0sIDApOworCXVzYmgtPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3Vy Y2UoZGV2LCByZXMpOworCWlmIChJU19FUlIodXNiaC0+YmFzZSkpCisJCXJldHVybiBQVFJfRVJS KHVzYmgtPmJhc2UpOworCisJdXNiaC0+cmVzZXQgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KGRl diwgTlVMTCk7CisJaWYgKElTX0VSUih1c2JoLT5yZXNldCkpIHsKKwkJaWYgKFBUUl9FUlIodXNi aC0+cmVzZXQpICE9IC1FUFJPQkVfREVGRVIpCisJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBn ZXQgcmVzZXRcbiIpOworCQlyZXR1cm4gUFRSX0VSUih1c2JoLT5yZXNldCk7CisJfQorCisJaWYg KHZhcmlhbnQtPmhhc191c2JfY2xrKSB7CisJCXVzYmgtPnVzYmhfY2xrID0gZGV2bV9jbGtfZ2V0 KGRldiwgInVzYmgiKTsKKwkJaWYgKElTX0VSUih1c2JoLT51c2JoX2NsaykpIHsKKwkJCWlmIChQ VFJfRVJSKHVzYmgtPnVzYmhfY2xrKSAhPSAtRVBST0JFX0RFRkVSKQorCQkJCWRldl9lcnIoZGV2 LCAiZmFpbGVkIHRvIGdldCB1c2JoIGNsb2NrXG4iKTsKKwkJCXJldHVybiBQVFJfRVJSKHVzYmgt PnVzYmhfY2xrKTsKKwkJfQorCX0gZWxzZSB7CisJCXVzYmgtPnVzYmhfY2xrID0gTlVMTDsKKwl9 CisKKwlpZiAodmFyaWFudC0+aGFzX3VzYl9yZWZfY2xrKSB7CisJCXVzYmgtPnVzYl9yZWZfY2xr ID0gZGV2bV9jbGtfZ2V0KGRldiwgInVzYl9yZWYiKTsKKwkJaWYgKElTX0VSUih1c2JoLT51c2Jf cmVmX2NsaykpIHsKKwkJCWlmIChQVFJfRVJSKHVzYmgtPnVzYl9yZWZfY2xrKSAhPSAtRVBST0JF X0RFRkVSKQorCQkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCB1c2JfcmVmIGNsb2NrXG4i KTsKKwkJCXJldHVybiBQVFJfRVJSKHVzYmgtPnVzYl9yZWZfY2xrKTsKKwkJfQorCX0gZWxzZSB7 CisJCXVzYmgtPnVzYl9yZWZfY2xrID0gTlVMTDsKKwl9CisKKwlwaHkgPSBkZXZtX3BoeV9jcmVh dGUoZGV2LCBOVUxMLCAmYmNtNjN4eF91c2JoX3BoeV9vcHMpOworCWlmIChJU19FUlIocGh5KSkg eworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBjcmVhdGUgUEhZXG4iKTsKKwkJcmV0dXJuIFBU Ul9FUlIocGh5KTsKKwl9CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB1c2JoKTsKKwlw aHlfc2V0X2RydmRhdGEocGh5LCB1c2JoKTsKKworCXBoeV9wcm92aWRlciA9IGRldm1fb2ZfcGh5 X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgb2ZfcGh5X3NpbXBsZV94bGF0ZSk7CisJaWYgKElTX0VS UihwaHlfcHJvdmlkZXIpKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIFBI WSBwcm92aWRlclxuIik7CisJCXJldHVybiBQVFJfRVJSKHBoeV9wcm92aWRlcik7CisJfQorCisJ ZGV2X2luZm8oZGV2LCAiUmVnaXN0ZXJlZCBCQ002M3h4IFVTQiBQSFkgZHJpdmVyXG4iKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBiY202M3h4 X3VzYmhfcGh5X2lkc1tdIF9faW5pdGNvbnN0ID0geworCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxi Y202MzE4LXVzYmgtcGh5IiwgLmRhdGEgPSAmdXNiaF9iY202MzE4IH0sCisJeyAuY29tcGF0aWJs ZSA9ICJicmNtLGJjbTYzMjgtdXNiaC1waHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzMjggfSwKKwl7 IC5jb21wYXRpYmxlID0gImJyY20sYmNtNjM1OC11c2JoLXBoeSIsIC5kYXRhID0gJnVzYmhfYmNt NjM1OCB9LAorCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxiY202MzYyLXVzYmgtcGh5IiwgLmRhdGEg PSAmdXNiaF9iY202MzY4IH0sCisJeyAuY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzNjgtdXNiaC1w aHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzNjggfSwKKwl7IC5jb21wYXRpYmxlID0gImJyY20sYmNt NjMyNjgtdXNiaC1waHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzMjY4IH0sCisJeyAvKiBzZW50aW5l bCAqLyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmNtNjN4eF91c2JoX3BoeV9pZHMp OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY202M3h4X3VzYmhfcGh5X2RyaXZl ciBfX3JlZmRhdGEgPSB7CisJLmRyaXZlcgk9IHsKKwkJLm5hbWUgPSAiYmNtNjN4eC11c2JoLXBo eSIsCisJCS5vZl9tYXRjaF90YWJsZSA9IGJjbTYzeHhfdXNiaF9waHlfaWRzLAorCX0sCisJLnBy b2JlCT0gYmNtNjN4eF91c2JoX3BoeV9wcm9iZSwKK307Cittb2R1bGVfcGxhdGZvcm1fZHJpdmVy KGJjbTYzeHhfdXNiaF9waHlfZHJpdmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJCQ002M3h4 IFVTQkggUEhZIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiw4FsdmFybyBGZXJuw6FuZGV6IFJv amFzIDxub2x0YXJpQGdtYWlsLmNvbT4iKTsKK01PRFVMRV9BVVRIT1IoIlNpbW9uIEFybG90dCA8 c2ltb25AZmlyZS5scDAuZXU+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0tIAoyLjI3LjAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==