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=-10.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,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 A3AB5C433DF for ; Fri, 3 Jul 2020 17:33:42 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 6733A206DD for ; Fri, 3 Jul 2020 17:33:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="1LYxjUcF"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="FYZfLWMH" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6733A206DD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:References:MIME-Version: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=k6nT5esjVrO0AZ/H1RwcdWplurmdzSVzsmcP6MHKJz4=; b=1LYxjUcFRxdZ8OxG94YjROlDv v72MTK4DE1g75he5pMgD5VHios1xYsFwC7uhV+g/gt2jQSl0wv2kSyEYQFl46U6wMa4gyZaZvwPG7 ZTbXXh2A+PnZa1yqv/W0Ml+Tvcq3xxLU3pulQcbfzbuheqazgL5wjlw8af+eQwsPlZq027SlBrlu6 6sQSO4BoFfCHWE3A1dyQvCwup217nkqhmSJeqP8QQXEfIGSW0ZLEzQqNpYn6ohB/Vv4edASEHg/7x sohwTQomx9xBg34Vh1/GYY7WsJ6fYQJlHr8IIH246kWvrtcXYuH8b2XzETDpXdYUj+EtISx5UmvmM ebYBYL+eA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jrPXX-0000Di-NN; Fri, 03 Jul 2020 17:31:55 +0000 Received: from mailout4.samsung.com ([203.254.224.34]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jrPXR-0000Bz-M7 for linux-arm-kernel@lists.infradead.org; Fri, 03 Jul 2020 17:31:51 +0000 Received: from epcas5p4.samsung.com (unknown [182.195.41.42]) by mailout4.samsung.com (KnoxPortal) with ESMTP id 20200703173145epoutp04f9beb22d4e8762822c0c57ea1a1e177c~eTmMp5RuS0189701897epoutp04h for ; Fri, 3 Jul 2020 17:31:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout4.samsung.com 20200703173145epoutp04f9beb22d4e8762822c0c57ea1a1e177c~eTmMp5RuS0189701897epoutp04h DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1593797505; bh=S2u9yylBVR64Iso+dYg6xnSR6bHA+MhB5qm4FIvIVk8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FYZfLWMHh36P8WszuCM/8kVvYY3rFugqrhYALLAjSe5STZlkty0E2k/XvXY5PV5kP TR9xMlnG2TU6O15WkTkgZDjgO176k1kiG0pbfwUC3mMGfmXXUINFj0Q8GqhznTk6TY UAikv9txNL9X73Saw03/iUt2qnU/0ZVQ2hvoxW/A= Received: from epsmges5p2new.samsung.com (unknown [182.195.42.74]) by epcas5p1.samsung.com (KnoxPortal) with ESMTP id 20200703173145epcas5p1bd870d514d081bb8a8e69565cadfbfae~eTmME6G422766927669epcas5p1h; Fri, 3 Jul 2020 17:31:45 +0000 (GMT) Received: from epcas5p2.samsung.com ( [182.195.41.40]) by epsmges5p2new.samsung.com (Symantec Messaging Gateway) with SMTP id D6.0D.09703.18B6FFE5; Sat, 4 Jul 2020 02:31:45 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas5p1.samsung.com (KnoxPortal) with ESMTPA id 20200703173144epcas5p1daa9f5c594e7f299638cc75b7425b7c8~eTmLflY7E2767427674epcas5p1e; Fri, 3 Jul 2020 17:31:44 +0000 (GMT) Received: from epsmgms1p1new.samsung.com (unknown [182.195.42.41]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200703173144epsmtrp10e3190327cc892f526fd482fff6fa387~eTmLeyCFe1311513115epsmtrp1N; Fri, 3 Jul 2020 17:31:44 +0000 (GMT) X-AuditID: b6c32a4a-4b5ff700000025e7-9a-5eff6b817710 Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgms1p1new.samsung.com (Symantec Messaging Gateway) with SMTP id FE.15.08382.08B6FFE5; Sat, 4 Jul 2020 02:31:44 +0900 (KST) Received: from Jaguar.sa.corp.samsungelectronics.net (unknown [107.108.73.139]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200703173142epsmtip2398e0657d0989981beb78fb767f58549~eTmJyvjPn1235612356epsmtip22; Fri, 3 Jul 2020 17:31:42 +0000 (GMT) From: Alim Akhtar To: vkoul@kernel.org Subject: [PATCH v12 2/2] phy: samsung-ufs: add UFS PHY driver for samsung SoC Date: Fri, 3 Jul 2020 22:41:35 +0530 Message-Id: <20200703171135.77389-2-alim.akhtar@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200703171135.77389-1-alim.akhtar@samsung.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprBKsWRmVeSWpSXmKPExsWy7bCmhm5j9v84g/NNXBYP5m1js5h/5Byr xYWnPWwW589vYLe4ueUoi8Wmx9dYLS7vmsNmMeP8PiaL1r1H2C123jnB7MDlsWlVJ5vH5iX1 Hn1bVjF6HL+xncnj8ya5ANYoLpuU1JzMstQifbsEroyTi06wFWyew1jx9+1MpgbGd02MXYyc HBICJhIvZ99h7mLk4hAS2M0oMWXSRkYI5xOjxNM9/8CqhAS+MUpsX28F03H8xzkmiKK9jBKT 7rxhg3BamCQ+zbnPClLFJqAtcXf6FiYQW0RARGL1ynlgY5kF/jJKbLv+EaxIWMBfYs7WZWAr WARUJb6eO8MGYvMK2Ejc6fzFDrFOXmL1hgPMIDangK3Em/P7GCFqBCVOznzCAmIzA9U0b50N 9oSEQC+HxMPfn1ghml0ktjduZYawhSVeHd8CNVRK4mV/G5DNAWRnS/TsMoYI10gsnXeMBcK2 lzhwZQ4LSAmzgKbE+l36EKv4JHp/P2GC6OSV6GgTgqhWlWh+dxWqU1piYnc31AEeEte7f0JD dAKjxNtnq1knMMrPQvLBLCQfzELYtoCReRWjZGpBcW56arFpgVFearlecWJucWleul5yfu4m RnDi0fLawfjwwQe9Q4xMHIyHGCU4mJVEeBNU/8UJ8aYkVlalFuXHF5XmpBYfYpTmYFES51X6 cSZOSCA9sSQ1OzW1ILUIJsvEwSnVwDT31v5zi1dO0H2SeMQ7/VhXbcpnc3+HIk6rgxpvnp2X 2rvu7rLGFVPULyVlT5JkdjCSqZz7pm32w8mOByafM1iZ8+76gYCOyZ+vvwmJt199RuGg7evT /0W99VdIBV6/MmHDhZMXjI2C1Z8JsRYvfr5o4j6Omu6405UVeVuZI97umKPEJL3nm8+66zsP O5l0tD9vSzO4cPtzhHtF95Htma/Pnrg1U91s+e+LwZfYdvgu+Mul4Kvl8Fq95fJkW0/VKW5q 8oacXPtZmVbOC2Wul3LIsEvlF/29bFoJ4wzlq4cPOy+c/r/FIPvapKfvOl9zZ3LsbrJ6/Xf6 BLFH6RU9eeIbolljN1obVizmzmQvOHVKiaU4I9FQi7moOBEAedmaHasDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrLLMWRmVeSWpSXmKPExsWy7bCSvG5D9v84g3//lCwezNvGZjH/yDlW iwtPe9gszp/fwG5xc8tRFotNj6+xWlzeNYfNYsb5fUwWrXuPsFvsvHOC2YHLY9OqTjaPzUvq Pfq2rGL0OH5jO5PH501yAaxRXDYpqTmZZalF+nYJXBknF51gK9g8h7Hi79uZTA2M75oYuxg5 OSQETCSO/zjHBGILCexmlLi+SQYiLi1xfeMEdghbWGLlv+dANhdQTROTxKplM1lAEmwC2hJ3 p28BaxYREJFYvXIeI0gRs0A7k8T17wfAEsICvhK7W7aDTWIRUJX4eu4MG4jNK2AjcafzF9QG eYnVGw4wg9icArYSb87vY4S4yEbi2Zeb7BD1ghInZz4BWswBtEBdYv08IZAwM1Br89bZzBMY BWchqZqFUDULSdUCRuZVjJKpBcW56bnFhgWGeanlesWJucWleel6yfm5mxjBMaKluYNx+6oP eocYmTgYDzFKcDArifAmqP6LE+JNSaysSi3Kjy8qzUktPsQozcGiJM57o3BhnJBAemJJanZq akFqEUyWiYNTqoHJz7owyzpXOajUXFy7RUXCKm3mPY7E2n//rLP3mZwVqWz0nPbDsFuyX1i+ 6rKG2f7jIvrtMrMltdJuHZh6jnvJNvNTe6+x7828FNkicG0an2pLQ+optd2elcce2DBdKmvV +Jq4MSOF9bajS7EPf61kkDNvQG2ghmlw0pf0qBTFFt/KpV7N72JcP300drTs6o0WUTxybvUZ h7eTWhc9qTj9ds06P/eo6Q+Vzi1j/JNfsbXzrIBM7OQnyf8Mm4/JPNVeKpopdsib89WymOvs 9imBr/yql/Xddar+wVOr7b8gmnvNeXnVsrXdq78szj0ZUyv19hqzGueB0ss2Xjc8bmQdOXtv Q+RNjn9F7xPmK7EUZyQaajEXFScCAEYgMSwAAwAA X-CMS-MailID: 20200703173144epcas5p1daa9f5c594e7f299638cc75b7425b7c8 X-Msg-Generator: CA CMS-TYPE: 105P X-CMS-RootMailID: 20200703173144epcas5p1daa9f5c594e7f299638cc75b7425b7c8 References: <20200703171135.77389-1-alim.akhtar@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200703_133150_381990_C95489DD X-CRM114-Status: GOOD ( 28.78 ) 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: devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, krzk@kernel.org, kwmad.kim@samsung.com, robh+dt@kernel.org, Alim Akhtar , kishon@ti.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFNhbXN1bmcgVUZTIFBIWSBkcml2ZXIuIFRoaXMgZHJpdmVy CnN1cHBvcnRzIHRvIGRlYWwgd2l0aCBwaHkgY2FsaWJyYXRpb24gYW5kIHBvd2VyIGNvbnRyb2wK YWNjb3JkaW5nIHRvIFVGUyBob3N0IGRyaXZlcidzIGJlaGF2aW9yLgoKW1JvYm90OiAtV21pc3Np bmctcHJvdG90eXBlcyBhbmQgLVdzb21ldGltZXMtdW5pbml0aWFsaXplZF0KUmVwb3J0ZWQtYnk6 IGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogS2l3b29uZyBL aW0gPGt3bWFkLmtpbUBzYW1zdW5nLmNvbT4KU2lnbmVkLW9mZi1ieTogU2V1bmd3b24gSmVvbiA8 ZXNzdXVqQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxpbSBBa2h0YXIgPGFsaW0uYWtodGFy QHNhbXN1bmcuY29tPgpDYzogS2lzaG9uIFZpamF5IEFicmFoYW0gSSA8a2lzaG9uQHRpLmNvbT4K Q2M6IFZpbm9kIEtvdWwgPHZrb3VsQGtlcm5lbC5vcmc+ClRlc3RlZC1ieTogUGF3ZcWCIENobWll bCA8cGF3ZWwubWlrb2xhai5jaG1pZWxAZ21haWwuY29tPgotLS0KIC0gQ2hhbmdlcyBWMTEgLT4g VjEyCiAqIEZpeGVkIGtlcm5lbCB0ZXN0IHJvYm90IHdhcm5pbmdzCgogLSBDaGFuZ2VzIFYxMCAt PiBWMTEKICogQWRkcmVzc2VkIHJldmlldyBjb21tZW50cyBmcm9tIFZpbm9kCgogZHJpdmVycy9w aHkvc2Ftc3VuZy9LY29uZmlnICAgICAgICAgICB8ICAgOSArCiBkcml2ZXJzL3BoeS9zYW1zdW5n L01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvcGh5L3NhbXN1bmcvcGh5LWV4eW5v czctdWZzLmggfCAgODYgKysrKysrCiBkcml2ZXJzL3BoeS9zYW1zdW5nL3BoeS1zYW1zdW5nLXVm cy5jIHwgMzU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3BoeS9zYW1zdW5n L3BoeS1zYW1zdW5nLXVmcy5oIHwgMTM5ICsrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNTk0 IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BoeS9zYW1zdW5nL3Bo eS1leHlub3M3LXVmcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9waHkvc2Ftc3VuZy9w aHktc2Ftc3VuZy11ZnMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L3NhbXN1bmcv cGh5LXNhbXN1bmctdWZzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9zYW1zdW5nL0tjb25m aWcgYi9kcml2ZXJzL3BoeS9zYW1zdW5nL0tjb25maWcKaW5kZXggMTlmMmUzMTE5MzQzLi5lMjBk MmZjYzlmZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L3NhbXN1bmcvS2NvbmZpZworKysgYi9k cml2ZXJzL3BoeS9zYW1zdW5nL0tjb25maWcKQEAgLTI5LDYgKzI5LDE1IEBAIGNvbmZpZyBQSFlf RVhZTk9TX1BDSUUKIAkgIEVuYWJsZSBQQ0llIFBIWSBzdXBwb3J0IGZvciBFeHlub3MgU29DIHNl cmllcy4KIAkgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIFBIWSBpbnRlcmZhY2UgZm9yIEV4eW5vcyBQ Q0llIGNvbnRyb2xsZXIuCiAKK2NvbmZpZyBQSFlfU0FNU1VOR19VRlMKKwl0cmlzdGF0ZSAiU0FN U1VORyBTb0Mgc2VyaWVzIFVGUyBQSFkgZHJpdmVyIgorCWRlcGVuZHMgb24gT0YgJiYgKEFSQ0hf RVhZTk9TIHx8IENPTVBJTEVfVEVTVCkKKwlzZWxlY3QgR0VORVJJQ19QSFkKKwloZWxwCisJICBF bmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBTYW1zdW5nIFVGUyBQSFkgZHJpdmVyIGZvcgorCSAg U2Ftc3VuZyBTb0NzLiBUaGlzIGRyaXZlciBwcm92aWRlcyB0aGUgaW50ZXJmYWNlIGZvciBVRlMK KwkgIGhvc3QgY29udHJvbGxlciB0byBkbyBQSFkgcmVsYXRlZCBwcm9ncmFtbWluZy4KKwogY29u ZmlnIFBIWV9TQU1TVU5HX1VTQjIKIAl0cmlzdGF0ZSAiU2Ftc3VuZyBVU0IgMi4wIFBIWSBkcml2 ZXIiCiAJZGVwZW5kcyBvbiBIQVNfSU9NRU0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3NhbXN1 bmcvTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9zYW1zdW5nL01ha2VmaWxlCmluZGV4IGRiOWIxYWEw ZGU2ZS4uMzk1OTEwMGZlOGEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9zYW1zdW5nL01ha2Vm aWxlCisrKyBiL2RyaXZlcnMvcGh5L3NhbXN1bmcvTWFrZWZpbGUKQEAgLTIsNiArMiw3IEBACiBv YmotJChDT05GSUdfUEhZX0VYWU5PU19EUF9WSURFTykJKz0gcGh5LWV4eW5vcy1kcC12aWRlby5v CiBvYmotJChDT05GSUdfUEhZX0VYWU5PU19NSVBJX1ZJREVPKQkrPSBwaHktZXh5bm9zLW1pcGkt dmlkZW8ubwogb2JqLSQoQ09ORklHX1BIWV9FWFlOT1NfUENJRSkJCSs9IHBoeS1leHlub3MtcGNp ZS5vCitvYmotJChDT05GSUdfUEhZX1NBTVNVTkdfVUZTKQkJKz0gcGh5LXNhbXN1bmctdWZzLm8K IG9iai0kKENPTkZJR19QSFlfU0FNU1VOR19VU0IyKQkJKz0gcGh5LWV4eW5vcy11c2IyLm8KIHBo eS1leHlub3MtdXNiMi15CQkJKz0gcGh5LXNhbXN1bmctdXNiMi5vCiBwaHktZXh5bm9zLXVzYjIt JChDT05GSUdfUEhZX0VYWU5PUzQyMTBfVVNCMikJKz0gcGh5LWV4eW5vczQyMTAtdXNiMi5vCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9zYW1zdW5nL3BoeS1leHlub3M3LXVmcy5oIGIvZHJpdmVy cy9waHkvc2Ftc3VuZy9waHktZXh5bm9zNy11ZnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmM0YWFiNzkyZDMwZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv cGh5L3NhbXN1bmcvcGh5LWV4eW5vczctdWZzLmgKQEAgLTAsMCArMSw4NiBAQAorLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLworLyoKKyAqIFVGUyBQSFkgZHJpdmVy IGRhdGEgZm9yIFNhbXN1bmcgRVhZTk9TNyBTb0MKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg U2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KKyAqLworI2lmbmRlZiBfUEhZX0VYWU5PUzdf VUZTX0hfCisjZGVmaW5lIF9QSFlfRVhZTk9TN19VRlNfSF8KKworI2luY2x1ZGUgInBoeS1zYW1z dW5nLXVmcy5oIgorCisjZGVmaW5lIEVYWU5PUzdfRU1CRURERURfQ09NQk9fUEhZX0NUUkwJMHg3 MjAKKyNkZWZpbmUgRVhZTk9TN19FTUJFRERFRF9DT01CT19QSFlfQ1RSTF9NQVNLCTB4MQorI2Rl ZmluZSBFWFlOT1M3X0VNQkVEREVEX0NPTUJPX1BIWV9DVFJMX0VOCUJJVCgwKQorCisvKiBDYWxp YnJhdGlvbiBmb3IgcGh5IGluaXRpYWxpemF0aW9uICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHNh bXN1bmdfdWZzX3BoeV9jZmcgZXh5bm9zN19wcmVfaW5pdF9jZmdbXSA9IHsKKwlQSFlfQ09NTl9S RUdfQ0ZHKDB4MDBmLCAweGZhLCBQV1JfTU9ERV9BTlkpLAorCVBIWV9DT01OX1JFR19DRkcoMHgw MTAsIDB4ODIsIFBXUl9NT0RFX0FOWSksCisJUEhZX0NPTU5fUkVHX0NGRygweDAxMSwgMHgxZSwg UFdSX01PREVfQU5ZKSwKKwlQSFlfQ09NTl9SRUdfQ0ZHKDB4MDE3LCAweDg0LCBQV1JfTU9ERV9B TlkpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwMzUsIDB4NTgsIFBXUl9NT0RFX0FOWSksCisJUEhZ X1RSU1ZfUkVHX0NGRygweDAzNiwgMHgzMiwgUFdSX01PREVfQU5ZKSwKKwlQSFlfVFJTVl9SRUdf Q0ZHKDB4MDM3LCAweDQwLCBQV1JfTU9ERV9BTlkpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwM2Is IDB4ODMsIFBXUl9NT0RFX0FOWSksCisJUEhZX1RSU1ZfUkVHX0NGRygweDA0MiwgMHg4OCwgUFdS X01PREVfQU5ZKSwKKwlQSFlfVFJTVl9SRUdfQ0ZHKDB4MDQzLCAweGE2LCBQV1JfTU9ERV9BTlkp LAorCVBIWV9UUlNWX1JFR19DRkcoMHgwNDgsIDB4NzQsIFBXUl9NT0RFX0FOWSksCisJUEhZX1RS U1ZfUkVHX0NGRygweDA0YywgMHg1YiwgUFdSX01PREVfQU5ZKSwKKwlQSFlfVFJTVl9SRUdfQ0ZH KDB4MDRkLCAweDgzLCBQV1JfTU9ERV9BTlkpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwNWMsIDB4 MTQsIFBXUl9NT0RFX0FOWSksCisJRU5EX1VGU19QSFlfQ0ZHCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IHNhbXN1bmdfdWZzX3BoeV9jZmcgZXh5bm9zN19wb3N0X2luaXRfY2ZnW10gPSB7CisJ RU5EX1VGU19QSFlfQ0ZHCit9OworCisvKiBDYWxpYnJhdGlvbiBmb3IgSFMgbW9kZSBzZXJpZXMg QS9CICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9jZmcgZXh5bm9zN19w cmVfcHdyX2hzX2NmZ1tdID0geworCVBIWV9DT01OX1JFR19DRkcoMHgwMGYsIDB4ZmEsIFBXUl9N T0RFX0hTX0FOWSksCisJUEhZX0NPTU5fUkVHX0NGRygweDAxMCwgMHg4MiwgUFdSX01PREVfSFNf QU5ZKSwKKwlQSFlfQ09NTl9SRUdfQ0ZHKDB4MDExLCAweDFlLCBQV1JfTU9ERV9IU19BTlkpLAor CS8qIFNldHRpbmcgb3JkZXI6IDFzdCgweDE2LCAybmQoMHgxNSkgKi8KKwlQSFlfQ09NTl9SRUdf Q0ZHKDB4MDE2LCAweGZmLCBQV1JfTU9ERV9IU19BTlkpLAorCVBIWV9DT01OX1JFR19DRkcoMHgw MTUsIDB4ODAsIFBXUl9NT0RFX0hTX0FOWSksCisJUEhZX0NPTU5fUkVHX0NGRygweDAxNywgMHg5 NCwgUFdSX01PREVfSFNfQU5ZKSwKKwlQSFlfVFJTVl9SRUdfQ0ZHKDB4MDM2LCAweDMyLCBQV1Jf TU9ERV9IU19BTlkpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwMzcsIDB4NDMsIFBXUl9NT0RFX0hT X0FOWSksCisJUEhZX1RSU1ZfUkVHX0NGRygweDAzOCwgMHgzZiwgUFdSX01PREVfSFNfQU5ZKSwK KwlQSFlfVFJTVl9SRUdfQ0ZHKDB4MDQyLCAweDg4LCBQV1JfTU9ERV9IU19HMl9TRVJfQSksCisJ UEhZX1RSU1ZfUkVHX0NGRygweDA0MiwgMHhiYiwgUFdSX01PREVfSFNfRzJfU0VSX0IpLAorCVBI WV9UUlNWX1JFR19DRkcoMHgwNDMsIDB4YTYsIFBXUl9NT0RFX0hTX0FOWSksCisJUEhZX1RSU1Zf UkVHX0NGRygweDA0OCwgMHg3NCwgUFdSX01PREVfSFNfQU5ZKSwKKwlQSFlfVFJTVl9SRUdfQ0ZH KDB4MDM0LCAweDM1LCBQV1JfTU9ERV9IU19HMl9TRVJfQSksCisJUEhZX1RSU1ZfUkVHX0NGRygw eDAzNCwgMHgzNiwgUFdSX01PREVfSFNfRzJfU0VSX0IpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgw MzUsIDB4NWIsIFBXUl9NT0RFX0hTX0cyX1NFUl9BKSwKKwlQSFlfVFJTVl9SRUdfQ0ZHKDB4MDM1 LCAweDVjLCBQV1JfTU9ERV9IU19HMl9TRVJfQiksCisJRU5EX1VGU19QSFlfQ0ZHCit9OworCisv KiBDYWxpYnJhdGlvbiBmb3IgSFMgbW9kZSBzZXJpZXMgQS9CIGF0ZmVyIFBNQyAqLworc3RhdGlj IGNvbnN0IHN0cnVjdCBzYW1zdW5nX3Vmc19waHlfY2ZnIGV4eW5vczdfcG9zdF9wd3JfaHNfY2Zn W10gPSB7CisJUEhZX0NPTU5fUkVHX0NGRygweDAxNSwgMHgwMCwgUFdSX01PREVfSFNfQU5ZKSwK KwlQSFlfVFJTVl9SRUdfQ0ZHKDB4MDRkLCAweDgzLCBQV1JfTU9ERV9IU19BTlkpLAorCUVORF9V RlNfUEhZX0NGRworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzYW1zdW5nX3Vmc19waHlfY2Zn ICpleHlub3M3X3Vmc19waHlfY2Znc1tDRkdfVEFHX01BWF0gPSB7CisJW0NGR19QUkVfSU5JVF0J CT0gZXh5bm9zN19wcmVfaW5pdF9jZmcsCisJW0NGR19QT1NUX0lOSVRdCQk9IGV4eW5vczdfcG9z dF9pbml0X2NmZywKKwlbQ0ZHX1BSRV9QV1JfSFNdCT0gZXh5bm9zN19wcmVfcHdyX2hzX2NmZywK KwlbQ0ZHX1BPU1RfUFdSX0hTXQk9IGV4eW5vczdfcG9zdF9wd3JfaHNfY2ZnLAorfTsKKworc3Rh dGljIHN0cnVjdCBzYW1zdW5nX3Vmc19waHlfZHJ2ZGF0YSBleHlub3M3X3Vmc19waHkgPSB7CisJ LmNmZyA9IGV4eW5vczdfdWZzX3BoeV9jZmdzLAorCS5pc29sID0geworCQkub2Zmc2V0ID0gRVhZ Tk9TN19FTUJFRERFRF9DT01CT19QSFlfQ1RSTCwKKwkJLm1hc2sgPSBFWFlOT1M3X0VNQkVEREVE X0NPTUJPX1BIWV9DVFJMX01BU0ssCisJCS5lbiA9IEVYWU5PUzdfRU1CRURERURfQ09NQk9fUEhZ X0NUUkxfRU4sCisJfSwKKwkuaGFzX3N5bWJvbF9jbGsgPSAxLAorfTsKKworI2VuZGlmIC8qIF9Q SFlfRVhZTk9TN19VRlNfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3NhbXN1bmcvcGh5 LXNhbXN1bmctdWZzLmMgYi9kcml2ZXJzL3BoeS9zYW1zdW5nL3BoeS1zYW1zdW5nLXVmcy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzA3N2YzOTAxNzM3Ci0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkvc2Ftc3VuZy9waHktc2Ftc3VuZy11ZnMuYwpAQCAt MCwwICsxLDM1OSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQor LyoKKyAqIFVGUyBQSFkgZHJpdmVyIGZvciBTYW1zdW5nIFNvQworICoKKyAqIENvcHlyaWdodCAo QykgMjAyMCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgorICogQXV0aG9yOiBTZXVuZ3dv biBKZW9uIDxlc3N1dWpAZ21haWwuY29tPgorICogQXV0aG9yOiBBbGltIEFraHRhciA8YWxpbS5h a2h0YXJAc2Ftc3VuZy5jb20+CisgKgorICovCisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxs aW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb2xs Lmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVs ZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKworI2luY2x1ZGUgInBoeS1z YW1zdW5nLXVmcy5oIgorCisjZGVmaW5lIGZvcl9lYWNoX3BoeV9sYW5lKHBoeSwgaSkgXAorCWZv ciAoaSA9IDA7IGkgPCAocGh5KS0+bGFuZV9jbnQ7IGkrKykKKyNkZWZpbmUgZm9yX2VhY2hfcGh5 X2NmZyhjZmcpIFwKKwlmb3IgKDsgKGNmZyktPmlkOyAoY2ZnKSsrKQorCisjZGVmaW5lIFBIWV9E RUZfTEFORV9DTlQJMQorCitzdGF0aWMgdm9pZCBzYW1zdW5nX3Vmc19waHlfY29uZmlnKHN0cnVj dCBzYW1zdW5nX3Vmc19waHkgKnBoeSwKKwkJCQkgICBjb25zdCBzdHJ1Y3Qgc2Ftc3VuZ191ZnNf cGh5X2NmZyAqY2ZnLAorCQkJCSAgIHU4IGxhbmUpCit7CisJZW51bSB7TEFORV8wLCBMQU5FXzF9 OyAvKiBsYW5lIGluZGV4ICovCisKKwlzd2l0Y2ggKGxhbmUpIHsKKwljYXNlIExBTkVfMDoKKwkJ d3JpdGVsKGNmZy0+dmFsLCAocGh5KS0+cmVnX3BtYSArIGNmZy0+b2ZmXzApOworCQlicmVhazsK KwljYXNlIExBTkVfMToKKwkJaWYgKGNmZy0+aWQgPT0gUEhZX1RSU1ZfQkxLKQorCQkJd3JpdGVs KGNmZy0+dmFsLCAocGh5KS0+cmVnX3BtYSArIGNmZy0+b2ZmXzEpOworCQlicmVhazsKKwl9Cit9 CisKK3N0YXRpYyBpbnQgc2Ftc3VuZ191ZnNfcGh5X3dhaXRfZm9yX2xvY2tfYWNxKHN0cnVjdCBw aHkgKnBoeSkKK3sKKwlzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5ICp1ZnNfcGh5ID0gZ2V0X3NhbXN1 bmdfdWZzX3BoeShwaHkpOworCWNvbnN0IHVuc2lnbmVkIGludCB0aW1lb3V0X3VzID0gMTAwMDAw OworCWNvbnN0IHVuc2lnbmVkIGludCBzbGVlcF91cyA9IDEwOworCXUzMiB2YWw7CisJaW50IGVy cjsKKworCWVyciA9IHJlYWRsX3BvbGxfdGltZW91dCgKKwkJCXVmc19waHktPnJlZ19wbWEgKyBQ SFlfQVBCX0FERFIoUEhZX1BMTF9MT0NLX1NUQVRVUyksCisJCQl2YWwsICh2YWwgJiBQSFlfUExM X0xPQ0tfQklUKSwgc2xlZXBfdXMsIHRpbWVvdXRfdXMpOworCWlmIChlcnIpIHsKKwkJZGV2X2Vy cih1ZnNfcGh5LT5kZXYsCisJCQkiZmFpbGVkIHRvIGdldCBwaHkgcGxsIGxvY2sgYWNxdWlzaXRp b24gJWRcbiIsIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IHJlYWRsX3BvbGxfdGlt ZW91dCgKKwkJCXVmc19waHktPnJlZ19wbWEgKyBQSFlfQVBCX0FERFIoUEhZX0NEUl9MT0NLX1NU QVRVUyksCisJCQl2YWwsICh2YWwgJiBQSFlfQ0RSX0xPQ0tfQklUKSwgc2xlZXBfdXMsIHRpbWVv dXRfdXMpOworCWlmIChlcnIpCisJCWRldl9lcnIodWZzX3BoeS0+ZGV2LAorCQkJImZhaWxlZCB0 byBnZXQgcGh5IGNkciBsb2NrIGFjcXVpc2l0aW9uICVkXG4iLCBlcnIpOworb3V0OgorCXJldHVy biBlcnI7Cit9CisKK3N0YXRpYyBpbnQgc2Ftc3VuZ191ZnNfcGh5X2NhbGlicmF0ZShzdHJ1Y3Qg cGh5ICpwaHkpCit7CisJc3RydWN0IHNhbXN1bmdfdWZzX3BoeSAqdWZzX3BoeSA9IGdldF9zYW1z dW5nX3Vmc19waHkocGh5KTsKKwlzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5X2NmZyAqKmNmZ3MgPSB1 ZnNfcGh5LT5jZmc7CisJY29uc3Qgc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9jZmcgKmNmZzsKKwlp bnQgZXJyID0gMDsKKwlpbnQgaTsKKworCWlmICh1bmxpa2VseSh1ZnNfcGh5LT51ZnNfcGh5X3N0 YXRlIDwgQ0ZHX1BSRV9JTklUIHx8CisJCSAgICAgdWZzX3BoeS0+dWZzX3BoeV9zdGF0ZSA+PSBD RkdfVEFHX01BWCkpIHsKKwkJZGV2X2Vycih1ZnNfcGh5LT5kZXYsICJpbnZhbGlkIHBoeSBjb25m aWcgaW5kZXggJWRcbiIsIHVmc19waHktPnVmc19waHlfc3RhdGUpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwljZmcgPSBjZmdzW3Vmc19waHktPnVmc19waHlfc3RhdGVdOworCWlmICghY2Zn KQorCQlnb3RvIG91dDsKKworCWZvcl9lYWNoX3BoeV9jZmcoY2ZnKSB7CisJCWZvcl9lYWNoX3Bo eV9sYW5lKHVmc19waHksIGkpIHsKKwkJCXNhbXN1bmdfdWZzX3BoeV9jb25maWcodWZzX3BoeSwg Y2ZnLCBpKTsKKwkJfQorCX0KKworCWlmICh1ZnNfcGh5LT51ZnNfcGh5X3N0YXRlID09IENGR19Q T1NUX1BXUl9IUykKKwkJZXJyID0gc2Ftc3VuZ191ZnNfcGh5X3dhaXRfZm9yX2xvY2tfYWNxKHBo eSk7CisKKwkvKioKKwkgKiBJbiBTYW1zdW5nIHVmc2hjaSwgUEhZIG5lZWQgdG8gYmUgY2FsaWJy YXRlZCBhdCBkaWZmZXJlbnQKKwkgKiBzdGFnZXMgLyBzdGF0ZSBtYWlubHkgYmVmb3JlIExpbmtz dGFydHVwLCBhZnRlciBMaW5rc3RhcnR1cCwKKwkgKiBiZWZvcmUgcG93ZXIgbW9kZSBjaGFuZ2Ug YW5kIGFmdGVyIHBvd2VyIG1vZGUgY2hhbmdlLgorCSAqIEJlbG93IHN0YXRlIG1hY2hpbmUgdG8g bWFrZSBzdXJlIHRvIGNhbGlicmF0ZSBQSFkgaW4gZWFjaAorCSAqIHN0YXRlLiBIZXJlIGFmdGVy IGNvbmZpZ3VyaW5nIFBIWSBpbiBhIGdpdmVuIHN0YXRlLCB3aWxsCisJICogY2hhbmdlIHRoZSBz dGF0ZSB0byBuZXh0IHN0YXRlIHNvIHRoYXQgbmV4dCBzdGF0ZSBwaHkKKwkgKiBjYWxpYnJhdGlv biB2YWx1ZSBjYW4gYmUgcHJvZ3JhbWVkCisJICovCisJc3dpdGNoICh1ZnNfcGh5LT51ZnNfcGh5 X3N0YXRlKSB7CisJY2FzZSBDRkdfUFJFX0lOSVQ6CisJCXVmc19waHktPnVmc19waHlfc3RhdGUg PSBDRkdfUE9TVF9JTklUOworCQlicmVhazsKKwljYXNlIENGR19QT1NUX0lOSVQ6CisJCXVmc19w aHktPnVmc19waHlfc3RhdGUgPSBDRkdfUFJFX1BXUl9IUzsKKwkJYnJlYWs7CisJY2FzZSBDRkdf UFJFX1BXUl9IUzoKKwkJdWZzX3BoeS0+dWZzX3BoeV9zdGF0ZSA9IENGR19QT1NUX1BXUl9IUzsK KwkJYnJlYWs7CisJY2FzZSBDRkdfUE9TVF9QV1JfSFM6CisJCS8qIENoYW5nZSBiYWNrIHRvIElO SVQgc3RhdGUgKi8KKwkJdWZzX3BoeS0+dWZzX3BoeV9zdGF0ZSA9IENGR19QUkVfSU5JVDsKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJZGV2X2Vycih1ZnNfcGh5LT5kZXYsICJ3cm9uZyBzdGF0ZSBm b3IgcGh5IGNhbGlicmF0aW9uXG4iKTsKKwl9CisKK291dDoKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgaW50IHNhbXN1bmdfdWZzX3BoeV9zeW1ib2xfY2xrX2luaXQoc3RydWN0IHNhbXN1bmdf dWZzX3BoeSAqcGh5KQoreworCWludCByZXQgPSAwOworCisJcGh5LT50eDBfc3ltYm9sX2NsayA9 IGRldm1fY2xrX2dldChwaHktPmRldiwgInR4MF9zeW1ib2xfY2xrIik7CisJaWYgKElTX0VSUihw aHktPnR4MF9zeW1ib2xfY2xrKSkgeworCQlkZXZfZXJyKHBoeS0+ZGV2LCAiZmFpbGVkIHRvIGdl dCB0eDBfc3ltYm9sX2NsayBjbG9ja1xuIik7CisJCWdvdG8gb3V0OworCX0KKworCXBoeS0+cngw X3N5bWJvbF9jbGsgPSBkZXZtX2Nsa19nZXQocGh5LT5kZXYsICJyeDBfc3ltYm9sX2NsayIpOwor CWlmIChJU19FUlIocGh5LT5yeDBfc3ltYm9sX2NsaykpIHsKKwkJZGV2X2VycihwaHktPmRldiwg ImZhaWxlZCB0byBnZXQgcngwX3N5bWJvbF9jbGsgY2xvY2tcbiIpOworCQlnb3RvIG91dDsKKwl9 CisKKwlwaHktPnJ4MV9zeW1ib2xfY2xrID0gZGV2bV9jbGtfZ2V0KHBoeS0+ZGV2LCAicngxX3N5 bWJvbF9jbGsiKTsKKwlpZiAoSVNfRVJSKHBoeS0+cngwX3N5bWJvbF9jbGspKSB7CisJCWRldl9l cnIocGh5LT5kZXYsICJmYWlsZWQgdG8gZ2V0IHJ4MV9zeW1ib2xfY2xrIGNsb2NrXG4iKTsKKwkJ Z290byBvdXQ7CisJfQorCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHBoeS0+dHgwX3N5bWJv bF9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihwaHktPmRldiwgIiVzOiB0eDBfc3ltYm9s X2NsayBlbmFibGUgZmFpbGVkICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwkJZ290byBvdXQ7CisJ fQorCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHBoeS0+cngwX3N5bWJvbF9jbGspOworCWlm IChyZXQpIHsKKwkJZGV2X2VycihwaHktPmRldiwgIiVzOiByeDBfc3ltYm9sX2NsayBlbmFibGUg ZmFpbGVkICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHBo eS0+dHgwX3N5bWJvbF9jbGspOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFy ZV9lbmFibGUocGh5LT5yeDFfc3ltYm9sX2Nsayk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKHBo eS0+ZGV2LCAiJXM6IHJ4MV9zeW1ib2xfY2xrIGVuYWJsZSBmYWlsZWQgJWRcbiIsIF9fZnVuY19f LCByZXQpOworCQljbGtfZGlzYWJsZV91bnByZXBhcmUocGh5LT50eDBfc3ltYm9sX2Nsayk7CisJ CWNsa19kaXNhYmxlX3VucHJlcGFyZShwaHktPnJ4MF9zeW1ib2xfY2xrKTsKKwl9CitvdXQ6CisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBzYW1zdW5nX3Vmc19waHlfY2xrc19pbml0KHN0 cnVjdCBzYW1zdW5nX3Vmc19waHkgKnBoeSkKK3sKKwlpbnQgcmV0OworCisJcGh5LT5yZWZfY2xr ID0gZGV2bV9jbGtfZ2V0KHBoeS0+ZGV2LCAicmVmX2NsayIpOworCWlmIChJU19FUlIocGh5LT5y ZWZfY2xrKSkKKwkJZGV2X2VycihwaHktPmRldiwgImZhaWxlZCB0byBnZXQgcmVmX2NsayBjbG9j a1xuIik7CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocGh5LT5yZWZfY2xrKTsKKwlpZiAo cmV0KSB7CisJCWRldl9lcnIocGh5LT5kZXYsICIlczogcmVmX2NsayBlbmFibGUgZmFpbGVkICVk XG4iLCBfX2Z1bmNfXywgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkZXZfaW5mbyhwaHkt PmRldiwgIlVGUyBNUEhZIHJlZl9jbGtfcmF0ZSA9ICVsZFxuIiwgY2xrX2dldF9yYXRlKHBoeS0+ cmVmX2NsaykpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2Ftc3VuZ191ZnNfcGh5 X2luaXQoc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBzYW1zdW5nX3Vmc19waHkgKl9waHkg PSBnZXRfc2Ftc3VuZ191ZnNfcGh5KHBoeSk7CisJaW50IHJldDsKKworCV9waHktPmxhbmVfY250 ID0gcGh5LT5hdHRycy5idXNfd2lkdGg7CisJX3BoeS0+dWZzX3BoeV9zdGF0ZSA9IENGR19QUkVf SU5JVDsKKworCWlmIChfcGh5LT5kcnZkYXRhLT5oYXNfc3ltYm9sX2NsaykgeworCQlyZXQgPSBz YW1zdW5nX3Vmc19waHlfc3ltYm9sX2Nsa19pbml0KF9waHkpOworCQlpZiAocmV0KQorCQkJZGV2 X2VycihfcGh5LT5kZXYsICJmYWlsZWQgdG8gc2V0IHVmcyBwaHkgc3ltYm9sIGNsb2Nrc1xuIik7 CisJfQorCisJcmV0ID0gc2Ftc3VuZ191ZnNfcGh5X2Nsa3NfaW5pdChfcGh5KTsKKwlpZiAocmV0 KQorCQlkZXZfZXJyKF9waHktPmRldiwgImZhaWxlZCB0byBzZXQgdWZzIHBoeSAgY2xvY2tzXG4i KTsKKworCXNhbXN1bmdfdWZzX3BoeV9jYWxpYnJhdGUocGh5KTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IHNhbXN1bmdfdWZzX3BoeV9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkpCit7 CisJc3RydWN0IHNhbXN1bmdfdWZzX3BoeSAqX3BoeSA9IGdldF9zYW1zdW5nX3Vmc19waHkocGh5 KTsKKworCXNhbXN1bmdfdWZzX3BoeV9jdHJsX2lzb2woX3BoeSwgZmFsc2UpOworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IHNhbXN1bmdfdWZzX3BoeV9wb3dlcl9vZmYoc3RydWN0IHBoeSAq cGh5KQoreworCXN0cnVjdCBzYW1zdW5nX3Vmc19waHkgKl9waHkgPSBnZXRfc2Ftc3VuZ191ZnNf cGh5KHBoeSk7CisKKwlzYW1zdW5nX3Vmc19waHlfY3RybF9pc29sKF9waHksIHRydWUpOworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50IHNhbXN1bmdfdWZzX3BoeV9zZXRfbW9kZShzdHJ1Y3Qg cGh5ICpnZW5lcmljX3BoeSwKKwkJCQkgICAgZW51bSBwaHlfbW9kZSBtb2RlLCBpbnQgc3VibW9k ZSkKK3sKKwlzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5ICpfcGh5ID0gZ2V0X3NhbXN1bmdfdWZzX3Bo eShnZW5lcmljX3BoeSk7CisKKwlfcGh5LT5tb2RlID0gUEhZX01PREVfSU5WQUxJRDsKKworCWlm IChtb2RlID4gMCkKKwkJX3BoeS0+bW9kZSA9IG1vZGU7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBzYW1zdW5nX3Vmc19waHlfZXhpdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0 IHNhbXN1bmdfdWZzX3BoeSAqX3BoeSA9IGdldF9zYW1zdW5nX3Vmc19waHkocGh5KTsKKworCWNs a19kaXNhYmxlX3VucHJlcGFyZShfcGh5LT5yZWZfY2xrKTsKKworCWlmIChfcGh5LT5kcnZkYXRh LT5oYXNfc3ltYm9sX2NsaykgeworCQljbGtfZGlzYWJsZV91bnByZXBhcmUoX3BoeS0+dHgwX3N5 bWJvbF9jbGspOworCQljbGtfZGlzYWJsZV91bnByZXBhcmUoX3BoeS0+cngwX3N5bWJvbF9jbGsp OworCQljbGtfZGlzYWJsZV91bnByZXBhcmUoX3BoeS0+cngxX3N5bWJvbF9jbGspOworCX0KKwor CXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBoeV9vcHMgc2Ftc3VuZ191ZnNfcGh5X29w cyA9IHsKKwkuaW5pdAkJPSBzYW1zdW5nX3Vmc19waHlfaW5pdCwKKwkuZXhpdAkJPSBzYW1zdW5n X3Vmc19waHlfZXhpdCwKKwkucG93ZXJfb24JPSBzYW1zdW5nX3Vmc19waHlfcG93ZXJfb24sCisJ LnBvd2VyX29mZgk9IHNhbXN1bmdfdWZzX3BoeV9wb3dlcl9vZmYsCisJLmNhbGlicmF0ZQk9IHNh bXN1bmdfdWZzX3BoeV9jYWxpYnJhdGUsCisJLnNldF9tb2RlCT0gc2Ftc3VuZ191ZnNfcGh5X3Nl dF9tb2RlLAorCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLAorfTsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc2Ftc3VuZ191ZnNfcGh5X21hdGNoW107CisKK3N0YXRp YyBpbnQgc2Ftc3VuZ191ZnNfcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwljb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkICptYXRjaDsKKwlzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5ICpwaHk7CisJc3RydWN0 IHBoeSAqZ2VuX3BoeTsKKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7CisJY29u c3Qgc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9kcnZkYXRhICpkcnZkYXRhOworCWludCBlcnIgPSAw OworCisJbWF0Y2ggPSBvZl9tYXRjaF9ub2RlKHNhbXN1bmdfdWZzX3BoeV9tYXRjaCwgZGV2LT5v Zl9ub2RlKTsKKwlpZiAoIW1hdGNoKSB7CisJCWVyciA9IC1FSU5WQUw7CisJCWRldl9lcnIoZGV2 LCAiZmFpbGVkIHRvIGdldCBtYXRjaF9ub2RlXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJcGh5 ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwaHkpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBo eSkgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisKKwlwaHktPnJlZ19wbWEg PSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsICJwaHktcG1hIik7 CisJaWYgKElTX0VSUihwaHktPnJlZ19wbWEpKSB7CisJCWVyciA9IFBUUl9FUlIocGh5LT5yZWdf cG1hKTsKKwkJZ290byBvdXQ7CisJfQorCisJcGh5LT5yZWdfcG11ID0gc3lzY29uX3JlZ21hcF9s b29rdXBfYnlfcGhhbmRsZSgKKwkJCQlkZXYtPm9mX25vZGUsICJzYW1zdW5nLHBtdS1zeXNjb24i KTsKKwlpZiAoSVNfRVJSKHBoeS0+cmVnX3BtdSkpIHsKKwkJZXJyID0gUFRSX0VSUihwaHktPnJl Z19wbXUpOworCQlkZXZfZXJyKGRldiwgImZhaWxlZCBzeXNjb24gcmVtYXAgZm9yIHBtdVxuIik7 CisJCWdvdG8gb3V0OworCX0KKworCWdlbl9waHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxM LCAmc2Ftc3VuZ191ZnNfcGh5X29wcyk7CisJaWYgKElTX0VSUihnZW5fcGh5KSkgeworCQllcnIg PSBQVFJfRVJSKGdlbl9waHkpOworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBjcmVhdGUgUEhZ IGZvciB1ZnMtcGh5XG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJZHJ2ZGF0YSA9IG1hdGNoLT5k YXRhOworCXBoeS0+ZGV2ID0gZGV2OworCXBoeS0+ZHJ2ZGF0YSA9IGRydmRhdGE7CisJcGh5LT5j ZmcgPSAoc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9jZmcgKiopZHJ2ZGF0YS0+Y2ZnOworCXBoeS0+ aXNvbCA9ICZkcnZkYXRhLT5pc29sOworCXBoeS0+bGFuZV9jbnQgPSBQSFlfREVGX0xBTkVfQ05U OworCisJcGh5X3NldF9kcnZkYXRhKGdlbl9waHksIHBoeSk7CisKKwlwaHlfcHJvdmlkZXIgPSBk ZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsIG9mX3BoeV9zaW1wbGVfeGxhdGUpOwor CWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkgeworCQllcnIgPSBQVFJfRVJSKHBoeV9wcm92aWRl cik7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHBoeS1wcm92aWRlclxuIik7 CisJCWdvdG8gb3V0OworCX0KK291dDoKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCBzYW1zdW5nX3Vmc19waHlfbWF0Y2hbXSA9IHsKKwl7CisJCS5j b21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNy11ZnMtcGh5IiwKKwkJLmRhdGEgPSAmZXh5bm9z N191ZnNfcGh5LAorCX0sCisJe30sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc2Ftc3Vu Z191ZnNfcGh5X21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc2Ftc3Vu Z191ZnNfcGh5X2RyaXZlciA9IHsKKwkucHJvYmUgID0gc2Ftc3VuZ191ZnNfcGh5X3Byb2JlLAor CS5kcml2ZXIgPSB7CisJCS5uYW1lID0gInNhbXN1bmctdWZzLXBoeSIsCisJCS5vZl9tYXRjaF90 YWJsZSA9IHNhbXN1bmdfdWZzX3BoeV9tYXRjaCwKKwl9LAorfTsKK21vZHVsZV9wbGF0Zm9ybV9k cml2ZXIoc2Ftc3VuZ191ZnNfcGh5X2RyaXZlcik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlNhbXN1 bmcgU29DIFVGUyBQSFkgRHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJTZXVuZ3dvbiBKZW9uIDxl c3N1dWpAZ21haWwuY29tPiIpOworTU9EVUxFX0FVVEhPUigiQWxpbSBBa2h0YXIgPGFsaW0uYWto dGFyQHNhbXN1bmcuY29tPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9waHkvc2Ftc3VuZy9waHktc2Ftc3VuZy11ZnMuaCBiL2RyaXZlcnMvcGh5L3Nh bXN1bmcvcGh5LXNhbXN1bmctdWZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi41ZGU3ODcxMDUyNGMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3BoeS9zYW1z dW5nL3BoeS1zYW1zdW5nLXVmcy5oCkBAIC0wLDAgKzEsMTM5IEBACisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogVUZTIFBIWSBkcml2ZXIgZm9yIFNh bXN1bmcgRVhZTk9TIFNvQworICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTYW1zdW5nIEVsZWN0 cm9uaWNzIENvLiwgTHRkLgorICogQXV0aG9yOiBTZXVuZ3dvbiBKZW9uIDxlc3N1dWpAZ21haWwu Y29tPgorICogQXV0aG9yOiBBbGltIEFraHRhciA8YWxpbS5ha2h0YXJAc2Ftc3VuZy5jb20+Cisg KgorICovCisjaWZuZGVmIF9QSFlfU0FNU1VOR19VRlNfCisjZGVmaW5lIF9QSFlfU0FNU1VOR19V RlNfCisKKyNkZWZpbmUgUEhZX0NPTU5fQkxLCTEKKyNkZWZpbmUgUEhZX1RSU1ZfQkxLCTIKKyNk ZWZpbmUgRU5EX1VGU19QSFlfQ0ZHIHsgMCB9CisjZGVmaW5lIFBIWV9UUlNWX0NIX09GRlNFVAkw eDMwCisjZGVmaW5lIFBIWV9BUEJfQUREUihvZmYpCSgob2ZmKSA8PCAyKQorCisjZGVmaW5lIFBI WV9DT01OX1JFR19DRkcobywgdiwgZCkgewlcCisJLm9mZl8wID0gUEhZX0FQQl9BRERSKChvKSks CVwKKwkub2ZmXzEgPSAwLAkJXAorCS52YWwgPSAodiksCQlcCisJLmRlc2MgPSAoZCksCQlcCisJ LmlkID0gUEhZX0NPTU5fQkxLLAlcCit9CisKKyNkZWZpbmUgUEhZX1RSU1ZfUkVHX0NGRyhvLCB2 LCBkKSB7CVwKKwkub2ZmXzAgPSBQSFlfQVBCX0FERFIoKG8pKSwJXAorCS5vZmZfMSA9IFBIWV9B UEJfQUREUigobykgKyBQSFlfVFJTVl9DSF9PRkZTRVQpLAlcCisJLnZhbCA9ICh2KSwJCVwKKwku ZGVzYyA9IChkKSwJCVwKKwkuaWQgPSBQSFlfVFJTVl9CTEssCVwKK30KKworLyogVUZTIFBIWSBy ZWdpc3RlcnMgKi8KKyNkZWZpbmUgUEhZX1BMTF9MT0NLX1NUQVRVUwkweDFlCisjZGVmaW5lIFBI WV9DRFJfTE9DS19TVEFUVVMJMHg1ZQorCisjZGVmaW5lIFBIWV9QTExfTE9DS19CSVQJQklUKDUp CisjZGVmaW5lIFBIWV9DRFJfTE9DS19CSVQJQklUKDQpCisKKy8qIGRlc2NyaXB0aW9uIGZvciBQ SFkgY2FsaWJyYXRpb24gKi8KK2VudW0geworCS8qIGFwcGxpY2FibGUgdG8gYW55ICovCisJUFdS X0RFU0NfQU5ZCT0gMCwKKwkvKiBtb2RlICovCisJUFdSX0RFU0NfUFdNCT0gMSwKKwlQV1JfREVT Q19IUwk9IDIsCisJLyogc2VyaWVzICovCisJUFdSX0RFU0NfU0VSX0EJPSAxLAorCVBXUl9ERVND X1NFUl9CCT0gMiwKKwkvKiBnZWFyICovCisJUFdSX0RFU0NfRzEJPSAxLAorCVBXUl9ERVNDX0cy CT0gMiwKKwlQV1JfREVTQ19HMwk9IDMsCisJLyogZmllbGQgbWFzayAqLworCU1EX01BU0sJCT0g MHgzLAorCVNSX01BU0sJCT0gMHgzLAorCUdSX01BU0sJCT0gMHg3LAorfTsKKworI2RlZmluZSBQ V1JfTU9ERV9IU19HMV9BTlkJUFdSX01PREVfSFMoUFdSX0RFU0NfRzEsIFBXUl9ERVNDX0FOWSkK KyNkZWZpbmUgUFdSX01PREVfSFNfRzFfU0VSX0EJUFdSX01PREVfSFMoUFdSX0RFU0NfRzEsIFBX Ul9ERVNDX1NFUl9BKQorI2RlZmluZSBQV1JfTU9ERV9IU19HMV9TRVJfQglQV1JfTU9ERV9IUyhQ V1JfREVTQ19HMSwgUFdSX0RFU0NfU0VSX0IpCisjZGVmaW5lIFBXUl9NT0RFX0hTX0cyX0FOWQlQ V1JfTU9ERV9IUyhQV1JfREVTQ19HMiwgUFdSX0RFU0NfQU5ZKQorI2RlZmluZSBQV1JfTU9ERV9I U19HMl9TRVJfQQlQV1JfTU9ERV9IUyhQV1JfREVTQ19HMiwgUFdSX0RFU0NfU0VSX0EpCisjZGVm aW5lIFBXUl9NT0RFX0hTX0cyX1NFUl9CCVBXUl9NT0RFX0hTKFBXUl9ERVNDX0cyLCBQV1JfREVT Q19TRVJfQikKKyNkZWZpbmUgUFdSX01PREVfSFNfRzNfQU5ZCVBXUl9NT0RFX0hTKFBXUl9ERVND X0czLCBQV1JfREVTQ19BTlkpCisjZGVmaW5lIFBXUl9NT0RFX0hTX0czX1NFUl9BCVBXUl9NT0RF X0hTKFBXUl9ERVNDX0czLCBQV1JfREVTQ19TRVJfQSkKKyNkZWZpbmUgUFdSX01PREVfSFNfRzNf U0VSX0IJUFdSX01PREVfSFMoUFdSX0RFU0NfRzMsIFBXUl9ERVNDX1NFUl9CKQorI2RlZmluZSBQ V1JfTU9ERShnLCBzLCBtKQkoKCgoZykgJiBHUl9NQVNLKSA8PCA0KSB8XAorCQkJCSAoKChzKSAm IFNSX01BU0spIDw8IDIpIHwgKChtKSAmIE1EX01BU0spKQorI2RlZmluZSBQV1JfTU9ERV9QV01f QU5ZCVBXUl9NT0RFKFBXUl9ERVNDX0FOWSxcCisJCQkJCSBQV1JfREVTQ19BTlksIFBXUl9ERVND X1BXTSkKKyNkZWZpbmUgUFdSX01PREVfSFMoZywgcykJKCgoKGcpICYgR1JfTUFTSykgPDwgNCkg fFwKKwkJCQkgKCgocykgJiBTUl9NQVNLKSA8PCAyKSB8IFBXUl9ERVNDX0hTKQorI2RlZmluZSBQ V1JfTU9ERV9IU19BTlkJCVBXUl9NT0RFKFBXUl9ERVNDX0FOWSxcCisJCQkJCSBQV1JfREVTQ19B TlksIFBXUl9ERVNDX0hTKQorI2RlZmluZSBQV1JfTU9ERV9BTlkJCVBXUl9NT0RFKFBXUl9ERVND X0FOWSxcCisJCQkJCSBQV1JfREVTQ19BTlksIFBXUl9ERVNDX0FOWSkKKy8qIFBIWSBjYWxpYnJh dGlvbiBwb2ludC9zdGF0ZSAqLworZW51bSB7CisJQ0ZHX1BSRV9JTklULAorCUNGR19QT1NUX0lO SVQsCisJQ0ZHX1BSRV9QV1JfSFMsCisJQ0ZHX1BPU1RfUFdSX0hTLAorCUNGR19UQUdfTUFYLAor fTsKKworc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9jZmcgeworCXUzMiBvZmZfMDsKKwl1MzIgb2Zm XzE7CisJdTMyIHZhbDsKKwl1OCBkZXNjOworCXU4IGlkOworfTsKKworc3RydWN0IHNhbXN1bmdf dWZzX3BoeV9kcnZkYXRhIHsKKwljb25zdCBzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5X2NmZyAqKmNm ZzsKKwlzdHJ1Y3QgcG11X2lzb2wgeworCQl1MzIgb2Zmc2V0OworCQl1MzIgbWFzazsKKwkJdTMy IGVuOworCX0gaXNvbDsKKwlib29sIGhhc19zeW1ib2xfY2xrOworfTsKKworc3RydWN0IHNhbXN1 bmdfdWZzX3BoeSB7CisJc3RydWN0IGRldmljZSAqZGV2OworCXZvaWQgX19pb21lbSAqcmVnX3Bt YTsKKwlzdHJ1Y3QgcmVnbWFwICpyZWdfcG11OworCXN0cnVjdCBjbGsgKnJlZl9jbGs7CisJc3Ry dWN0IGNsayAqcmVmX2Nsa19wYXJlbnQ7CisJc3RydWN0IGNsayAqdHgwX3N5bWJvbF9jbGs7CisJ c3RydWN0IGNsayAqcngwX3N5bWJvbF9jbGs7CisJc3RydWN0IGNsayAqcngxX3N5bWJvbF9jbGs7 CisJY29uc3Qgc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9kcnZkYXRhICpkcnZkYXRhOworCXN0cnVj dCBzYW1zdW5nX3Vmc19waHlfY2ZnICoqY2ZnOworCWNvbnN0IHN0cnVjdCBwbXVfaXNvbCAqaXNv bDsKKwl1OCBsYW5lX2NudDsKKwlpbnQgdWZzX3BoeV9zdGF0ZTsKKwllbnVtIHBoeV9tb2RlIG1v ZGU7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBzYW1zdW5nX3Vmc19waHkgKmdldF9zYW1z dW5nX3Vmc19waHkoc3RydWN0IHBoeSAqcGh5KQoreworCXJldHVybiAoc3RydWN0IHNhbXN1bmdf dWZzX3BoeSAqKXBoeV9nZXRfZHJ2ZGF0YShwaHkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg c2Ftc3VuZ191ZnNfcGh5X2N0cmxfaXNvbCgKKwkJc3RydWN0IHNhbXN1bmdfdWZzX3BoeSAqcGh5 LCB1MzIgaXNvbCkKK3sKKwlyZWdtYXBfdXBkYXRlX2JpdHMocGh5LT5yZWdfcG11LCBwaHktPmlz b2wtPm9mZnNldCwKKwkJCSAgIHBoeS0+aXNvbC0+bWFzaywgaXNvbCA/IDAgOiBwaHktPmlzb2wt PmVuKTsKK30KKworI2luY2x1ZGUgInBoeS1leHlub3M3LXVmcy5oIgorCisjZW5kaWYgLyogX1BI WV9TQU1TVU5HX1VGU18gKi8KLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK