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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 1F87FCCD1BB for ; Wed, 22 Oct 2025 15:39:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=I6cYeKP/m0Is5b0XfqTloxfj29NRbWYNDoB7HdL3vBU=; b=Q6Y1ozTAoEHDH7 S/nHK54Z/9vwqt1inKy9g8hU1aYmQGTwly1jJMDwrrIWyw2qIBX3vFvfStNFhavcBSB/dpbibf7TD /9MQLGBFAvGIcmdMN0MYYIn7EwKbZpEw5caKwApd+QZN8QpyqtkqZviBV0aCnmieOqSMUowWeUuAV 6cYVLS5s3Q5pJH4vBrW+I+R9Ctao5HtZpdRXEObiTYiUyIkvwJCo0tH/FQohVx37C6SNrx768uVCn 7cEAYEVwv+ILRgS+EtesvdU98T8738tsKAZTBLAGNSZ+CkmybOMqem3Ei6qBE21G+1QEqHmG8aRc2 lhMQhIrSuFR5KQV5BoIA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vBaw1-00000003QxR-3XYl; Wed, 22 Oct 2025 15:39:33 +0000 Received: from smtpout-02.galae.net ([185.246.84.56]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vBavw-00000003QuW-2oJO for linux-phy@lists.infradead.org; Wed, 22 Oct 2025 15:39:30 +0000 Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 45F861A15DE; Wed, 22 Oct 2025 15:39:27 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 1D94A606DC; Wed, 22 Oct 2025 15:39:27 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 4246F102F2447; Wed, 22 Oct 2025 17:39:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1761147565; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=1EVZmtviKz+xA6/+/KUTL7IRJKARU4qRE/a4FAdVLXs=; b=EDbC2KTJRwVghA4NE2xv+5QYCp2pISqVHAQ94NZlGaiI/k3erUYgcuI7O6Jf51GkaF+g+J BESx/R019n/CeHCWVmBdAEJ8+XSeDgqnaJjAVTPxwfGsnIbY9R70Ya41x7ZTOpvdiraVDe qdLkVVDnUfy4GmiKmYIk27X72IN8CPBCfTwlCqXP52n8EJ7l8HZ4kud7ovfqPryPTgzbqS Rii+U1Fl83usUJRSRLhri29JqlszlAb4SV3uFx6LkNSwrqd3ewo9km+o4aRNp5u4dhoSEV aBAtVUXUQvg9/0ZETEQcNkAPniUOer74Gj1QxN7yn7+CJQvAmlyUSq+jHIhzKg== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Wed, 22 Oct 2025 17:39:04 +0200 Subject: [PATCH 2/7] phy: Add driver for EyeQ5 Ethernet PHY wrapper MIME-Version: 1.0 Message-Id: <20251022-macb-phy-v1-2-f29f28fae721@bootlin.com> References: <20251022-macb-phy-v1-0-f29f28fae721@bootlin.com> In-Reply-To: <20251022-macb-phy-v1-0-f29f28fae721@bootlin.com> To: Vladimir Kondratiev , =?utf-8?q?Gr=C3=A9gory_Clement?= , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Kishon Vijay Abraham I , Michael Turquette , Stephen Boyd , Philipp Zabel , Thomas Bogendoerfer Cc: linux-mips@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-clk@vger.kernel.org, =?utf-8?q?Beno=C3=AEt_Monin?= , Maxime Chevallier , Tawfik Bayouk , Thomas Petazzoni , =?utf-8?q?Th=C3=A9o_Lebrun?= X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251022_083928_892915_430310EC X-CRM114-Status: GOOD ( 17.38 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org RXllUTUgZW1iZWRzIGEgc3lzdGVtLWNvbnRyb2xsZXIgY2FsbGVkIE9MQi4gSXQgZmVhdHVyZXMg bWFueSB1bnJlbGF0ZWQKcmVnaXN0ZXJzLCBhbmQgc29tZSBvZiB0aG9zZSBhcmUgcmVnaXN0ZXJz IHVzZWQgdG8gY29uZmlndXJlIHRoZQppbnRlZ3JhdGlvbiBvZiB0aGUgUkdNSUkvU0dNSUkgQ2Fk ZW5jZSBQSFkgdXNlZCBieSBNQUNCL0dFTSBpbnN0YW5jZXMuCgpXcmFwIGluIGEgbmVhdCBnZW5l cmljIFBIWSBwcm92aWRlciwgZXhwb3NpbmcgdHdvIFBIWXMgd2l0aCBzdGFuZGFyZApwaHlfaW5p dCgpIC8gcGh5X3NldF9tb2RlKCkgLyBwaHlfcG93ZXJfb24oKSBvcGVyYXRpb25zLgoKU2lnbmVk LW9mZi1ieTogVGjDqW8gTGVicnVuIDx0aGVvLmxlYnJ1bkBib290bGluLmNvbT4KLS0tCiBNQUlO VEFJTkVSUyAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9waHkvS2NvbmZpZyAgICAg ICAgIHwgIDEzICsrKwogZHJpdmVycy9waHkvTWFrZWZpbGUgICAgICAgIHwgICAxICsKIGRyaXZl cnMvcGh5L3BoeS1leWVxNS1ldGguYyB8IDI1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyNjkgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggZWE3MmIzYmQyMjQ4Li4z MjU0NzE3ZTU5YzYgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBA IC0xNzM4Miw2ICsxNzM4Miw3IEBAIEY6CWFyY2gvbWlwcy9ib290L2R0cy9tb2JpbGV5ZS8KIEY6 CWFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZwogRjoJYXJjaC9taXBzL21vYmlsZXll L2JvYXJkLWVwbTUuaXRzLlMKIEY6CWRyaXZlcnMvY2xrL2Nsay1leWVxLmMKK0Y6CWRyaXZlcnMv cGh5L3BoeS1leWVxNS1ldGguYwogRjoJZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtZXllcTUuYwog RjoJZHJpdmVycy9yZXNldC9yZXNldC1leWVxLmMKIEY6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xv Y2svbW9iaWxleWUsZXllcTUtY2xrLmgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L0tjb25maWcg Yi9kcml2ZXJzL3BoeS9LY29uZmlnCmluZGV4IDY3OGRkMDQ1MmYwYS4uMWFhNmVmZjEyZGJjIDEw MDY0NAotLS0gYS9kcml2ZXJzL3BoeS9LY29uZmlnCisrKyBiL2RyaXZlcnMvcGh5L0tjb25maWcK QEAgLTEwMSw2ICsxMDEsMTkgQEAgY29uZmlnIFBIWV9OWFBfUFROMzIyMgogCSAgc2NoZW1lcy4g SXQgc3VwcG9ydHMgYWxsIHRocmVlIFVTQiAyLjAgZGF0YSByYXRlczogTG93IFNwZWVkLCBGdWxs CiAJICBTcGVlZCBhbmQgSGlnaCBTcGVlZC4KIAorY29uZmlnIFBIWV9FWUVRNV9FVEgKKwl0cmlz dGF0ZSAiRXRoZXJuZXQgUEhZIERyaXZlciBvbiBFeWVRNSIKKwlkZXBlbmRzIG9uIE9GCisJZGVw ZW5kcyBvbiBNQUNIX0VZRVE1IHx8IENPTVBJTEVfVEVTVAorCXNlbGVjdCBBVVhJTElBUllfQlVT CisJc2VsZWN0IEdFTkVSSUNfUEhZCisJZGVmYXVsdCBNQUNIX0VZRVE1CisJaGVscAorCSAgRW5h YmxlIHRoaXMgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgUEhZIGludGVncmF0ZWQgb24gRXllUTUu CisJICBJdCBzdXBwb3J0cyBib3RoIFJHTUlJIGFuZCBTR01JSS4gUmVnaXN0ZXJzIGFyZSBsb2Nh dGVkIGluIGEKKwkgIHNoYXJlZCByZWdpc3RlciByZWdpb24gY2FsbGVkIE9MQi4gSWYgTSBpcyBz ZWxlY3RlZCwgdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcGh5LWV5ZXE1LWV0aC4KKwog c291cmNlICJkcml2ZXJzL3BoeS9hbGx3aW5uZXIvS2NvbmZpZyIKIHNvdXJjZSAiZHJpdmVycy9w aHkvYW1sb2dpYy9LY29uZmlnIgogc291cmNlICJkcml2ZXJzL3BoeS9icm9hZGNvbS9LY29uZmln IgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9NYWtlZmls ZQppbmRleCBiZmIyN2ZiNWE0OTQuLjgyODk0OTdlY2U1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9w aHkvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9waHkvTWFrZWZpbGUKQEAgLTEzLDYgKzEzLDcgQEAg b2JqLSQoQ09ORklHX1BIWV9TTlBTX0VVU0IyKQkJKz0gcGh5LXNucHMtZXVzYjIubwogb2JqLSQo Q09ORklHX1VTQl9MR01fUEhZKQkJKz0gcGh5LWxnbS11c2Iubwogb2JqLSQoQ09ORklHX1BIWV9B SVJPSEFfUENJRSkJCSs9IHBoeS1haXJvaGEtcGNpZS5vCiBvYmotJChDT05GSUdfUEhZX05YUF9Q VE4zMjIyKQkJKz0gcGh5LW54cC1wdG4zMjIyLm8KK29iai0kKENPTkZJR19QSFlfRVlFUTVfRVRI KQkJKz0gcGh5LWV5ZXE1LWV0aC5vCiBvYmoteQkJCQkJKz0gYWxsd2lubmVyLwlcCiAJCQkJCSAg IGFtbG9naWMvCVwKIAkJCQkJICAgYnJvYWRjb20vCVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5 L3BoeS1leWVxNS1ldGguYyBiL2RyaXZlcnMvcGh5L3BoeS1leWVxNS1ldGguYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI2NWMzZDczM2Y2YwotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvcGh5L3BoeS1leWVxNS1ldGguYwpAQCAtMCwwICsxLDI1NCBAQAorLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorCisjaW5jbHVkZSA8bGludXgv YXJyYXlfc2l6ZS5oPgorI2luY2x1ZGUgPGxpbnV4L2F1eGlsaWFyeV9idXMuaD4KKyNpbmNsdWRl IDxsaW51eC9iaXRmaWVsZC5oPgorI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KKyNpbmNsdWRlIDxs aW51eC9idWcuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGVhbnVwLmg+CisjaW5jbHVkZSA8bGludXgv Y29udGFpbmVyX29mLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0 Lmg+CisjaW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KKyNp bmNsdWRlIDxsaW51eC9sb2NrZGVwLmg+CisjaW5jbHVkZSA8bGludXgvbW9kX2RldmljZXRhYmxl Lmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2lu Y2x1ZGUgPGxpbnV4L3BoeS5oPgorI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KKyNpbmNsdWRl IDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2RlZmluZSBFUTVf UEhZX0NPVU5UCTIKKworI2RlZmluZSBFUTVfUEhZMF9HUAkweDEyOAorI2RlZmluZSBFUTVfUEhZ MV9HUAkweDEyYworI2RlZmluZSBFUTVfUEhZMF9TR01JSQkweDEzNAorI2RlZmluZSBFUTVfUEhZ MV9TR01JSQkweDEzOAorCisjZGVmaW5lIEVRNV9HUF9UWF9TV1JTVF9ESVMJQklUKDApCQkvLyBU eCBTVyByZXNldAorI2RlZmluZSBFUTVfR1BfVFhfTV9DTEtFCUJJVCgxKQkJLy8gVHggTSBjbG9j ayBlbmFibGUKKyNkZWZpbmUgRVE1X0dQX1NZU19TV1JTVF9ESVMJQklUKDIpCQkvLyBTeXMgU1cg cmVzZXQKKyNkZWZpbmUgRVE1X0dQX1NZU19NX0NMS0UJQklUKDMpCQkvLyBTeXMgY2xvY2sgZW5h YmxlCisjZGVmaW5lIEVRNV9HUF9TR01JSV9NT0RFCUJJVCg0KQkJLy8gU0dNSUkgbW9kZQorI2Rl ZmluZSBFUTVfR1BfUkdNSUlfRFJWCUdFTk1BU0soOCwgNSkJLy8gUkdNSUkgZHJpdmUgc3RyZW5n dGgKKworI2RlZmluZSBFUTVfU0dNSUlfUFdSX0VOCUJJVCgwKQorI2RlZmluZSBFUTVfU0dNSUlf UlNUX0RJUwlCSVQoMSkKKyNkZWZpbmUgRVE1X1NHTUlJX1BMTF9FTglCSVQoMikKKyNkZWZpbmUg RVE1X1NHTUlJX1NJR19ERVRfU1cJQklUKDMpCisjZGVmaW5lIEVRNV9TR01JSV9QV1JfU1RBVEUJ QklUKDQpCisjZGVmaW5lIEVRNV9TR01JSV9QTExfQUNLCUJJVCgxOCkKKyNkZWZpbmUgRVE1X1NH TUlJX1BXUl9TVEFURV9BQ0sJR0VOTUFTSygyNCwgMjApCisKK3N0cnVjdCBlcTVfcGh5X2luc3Qg eworCXN0cnVjdCBlcTVfcGh5X3ByaXZhdGUJKnByaXY7CisJc3RydWN0IHBoeQkJKnBoeTsKKwl2 b2lkIF9faW9tZW0JCSpncCwgKnNnbWlpOworCXBoeV9pbnRlcmZhY2VfdAkJcGh5X2ludGVyZmFj ZTsKK307CisKK3N0cnVjdCBlcTVfcGh5X3ByaXZhdGUgeworCXN0cnVjdCBkZXZpY2UJCSpkZXY7 CisJc3RydWN0IGVxNV9waHlfaW5zdAlwaHlzW0VRNV9QSFlfQ09VTlRdOworfTsKKworc3RhdGlj IGludCBlcTVfcGh5X2luaXQoc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBlcTVfcGh5X2lu c3QgKmluc3QgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwlzdHJ1Y3QgZXE1X3BoeV9wcml2YXRl ICpwcml2ID0gaW5zdC0+cHJpdjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LT5kZXY7CisJ dTMyIHJlZzsKKworCWRldl9kYmcoZGV2LCAicGh5X2luaXQoaW5zdD0lbGQpXG4iLCBpbnN0IC0g cHJpdi0+cGh5cyk7CisKKwl3cml0ZWwoMCwgaW5zdC0+Z3ApOworCXdyaXRlbCgwLCBpbnN0LT5z Z21paSk7CisKKwl1ZGVsYXkoNSk7CisKKwlyZWcgPSByZWFkbChpbnN0LT5ncCkgfCBFUTVfR1Bf VFhfU1dSU1RfRElTIHwgRVE1X0dQX1RYX01fQ0xLRSB8CisJICAgICAgRVE1X0dQX1NZU19TV1JT VF9ESVMgfCBFUTVfR1BfU1lTX01fQ0xLRSB8CisJICAgICAgRklFTERfUFJFUChFUTVfR1BfUkdN SUlfRFJWLCAweDkpOworCXdyaXRlbChyZWcsIGluc3QtPmdwKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGVxNV9waHlfZXhpdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGVx NV9waHlfaW5zdCAqaW5zdCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCXN0cnVjdCBlcTVfcGh5 X3ByaXZhdGUgKnByaXYgPSBpbnN0LT5wcml2OworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYt PmRldjsKKworCWRldl9kYmcoZGV2LCAicGh5X2V4aXQoaW5zdD0lbGQpXG4iLCBpbnN0IC0gcHJp di0+cGh5cyk7CisKKwl3cml0ZWwoMCwgaW5zdC0+Z3ApOworCXdyaXRlbCgwLCBpbnN0LT5zZ21p aSk7CisJdWRlbGF5KDUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXE1X3BoeV9z ZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSwgaW50IHN1Ym1vZGUp Cit7CisJc3RydWN0IGVxNV9waHlfaW5zdCAqaW5zdCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwor CXN0cnVjdCBlcTVfcGh5X3ByaXZhdGUgKnByaXYgPSBpbnN0LT5wcml2OworCXN0cnVjdCBkZXZp Y2UgKmRldiA9IHByaXYtPmRldjsKKworCWRldl9kYmcoZGV2LCAicGh5X3NldF9tb2RlKGluc3Q9 JWxkLCBtb2RlPSVkLCBzdWJtb2RlPSVkKVxuIiwKKwkJaW5zdCAtIHByaXYtPnBoeXMsIG1vZGUs IHN1Ym1vZGUpOworCisJaWYgKG1vZGUgIT0gUEhZX01PREVfRVRIRVJORVQpCisJCXJldHVybiAt RU9QTk9UU1VQUDsKKworCWlmICghcGh5X2ludGVyZmFjZV9tb2RlX2lzX3JnbWlpKHN1Ym1vZGUp ICYmCisJICAgIHN1Ym1vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKQorCQlyZXR1cm4g LUVPUE5PVFNVUFA7CisKKwlpbnN0LT5waHlfaW50ZXJmYWNlID0gc3VibW9kZTsKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBlcTVfcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKK3sK KwlzdHJ1Y3QgZXE1X3BoeV9pbnN0ICppbnN0ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3Ry dWN0IGVxNV9waHlfcHJpdmF0ZSAqcHJpdiA9IGluc3QtPnByaXY7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gcHJpdi0+ZGV2OworCXUzMiByZWc7CisKKwlkZXZfZGJnKGRldiwgInBoeV9wb3dlcl9v bihpbnN0PSVsZClcbiIsIGluc3QgLSBwcml2LT5waHlzKTsKKworCWlmIChpbnN0LT5waHlfaW50 ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkgeworCQl3cml0ZWwocmVhZGwoaW5z dC0+Z3ApIHwgRVE1X0dQX1NHTUlJX01PREUsIGluc3QtPmdwKTsKKworCQlyZWcgPSBFUTVfU0dN SUlfUFdSX0VOIHwgRVE1X1NHTUlJX1JTVF9ESVMgfCBFUTVfU0dNSUlfUExMX0VOOworCQl3cml0 ZWwocmVnLCBpbnN0LT5zZ21paSk7CisKKwkJaWYgKHJlYWRsX3BvbGxfdGltZW91dChpbnN0LT5z Z21paSwgcmVnLAorCQkJCSAgICAgICByZWcgJiBFUTVfU0dNSUlfUExMX0FDSywgMSwgMTAwKSkg eworCQkJZGV2X2VycihkZXYsICJQTEwgdGltZW91dFxuIik7CisJCQlyZXR1cm4gLUVUSU1FRE9V VDsKKwkJfQorCisJCXJlZyA9IHJlYWRsKGluc3QtPnNnbWlpKTsKKwkJcmVnIHw9IEVRNV9TR01J SV9QV1JfU1RBVEUgfCBFUTVfU0dNSUlfU0lHX0RFVF9TVzsKKwkJd3JpdGVsKHJlZywgaW5zdC0+ c2dtaWkpOworCX0gZWxzZSB7CisJCXdyaXRlbChyZWFkbChpbnN0LT5ncCkgJiB+RVE1X0dQX1NH TUlJX01PREUsIGluc3QtPmdwKTsKKwkJd3JpdGVsKDAsIGluc3QtPnNnbWlpKTsKKwl9CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlcTVfcGh5X3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpw aHkpCit7CisJc3RydWN0IGVxNV9waHlfaW5zdCAqaW5zdCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkp OworCXN0cnVjdCBlcTVfcGh5X3ByaXZhdGUgKnByaXYgPSBpbnN0LT5wcml2OworCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHByaXYtPmRldjsKKworCWRldl9kYmcoZGV2LCAicGh5X3Bvd2VyX29mZihp bnN0PSVsZClcbiIsIGluc3QgLSBwcml2LT5waHlzKTsKKworCXdyaXRlbChyZWFkbChpbnN0LT5n cCkgJiB+RVE1X0dQX1NHTUlJX01PREUsIGluc3QtPmdwKTsKKwl3cml0ZWwoMCwgaW5zdC0+c2dt aWkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBlcTVf cGh5X29wcyA9IHsKKwkuaW5pdAkJPSBlcTVfcGh5X2luaXQsCisJLmV4aXQJCT0gZXE1X3BoeV9l eGl0LAorCS5zZXRfbW9kZQk9IGVxNV9waHlfc2V0X21vZGUsCisJLnBvd2VyX29uCT0gZXE1X3Bo eV9wb3dlcl9vbiwKKwkucG93ZXJfb2ZmCT0gZXE1X3BoeV9wb3dlcl9vZmYsCit9OworCitzdGF0 aWMgc3RydWN0IHBoeSAqZXE1X3BoeV94bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJIGNv bnN0IHN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgKmFyZ3MpCit7CisJc3RydWN0IGVxNV9waHlfcHJp dmF0ZSAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJaWYgKGFyZ3MtPmFyZ3NfY291 bnQgIT0gMSB8fCBhcmdzLT5hcmdzWzBdID4gMSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7 CisKKwlyZXR1cm4gcHJpdi0+cGh5c1thcmdzLT5hcmdzWzBdXS5waHk7Cit9CisKK3N0YXRpYyBp bnQgZXE1X3BoeV9wcm9iZV9waHkoc3RydWN0IGVxNV9waHlfcHJpdmF0ZSAqcHJpdiwgdW5zaWdu ZWQgaW50IGluZGV4LAorCQkJICAgICB2b2lkIF9faW9tZW0gKmJhc2UsIHVuc2lnbmVkIGludCBn cCwKKwkJCSAgICAgdW5zaWduZWQgaW50IHNnbWlpKQoreworCXN0cnVjdCBlcTVfcGh5X2luc3Qg Kmluc3QgPSAmcHJpdi0+cGh5c1tpbmRleF07CisJc3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi0+ ZGV2OworCXN0cnVjdCBwaHkgKnBoeTsKKworCXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIGRl di0+b2Zfbm9kZSwgJmVxNV9waHlfb3BzKTsKKwlpZiAoSVNfRVJSKHBoeSkpIHsKKwkJZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gY3JlYXRlIFBIWSAldVxuIiwgaW5kZXgpOworCQlyZXR1cm4gUFRS X0VSUihwaHkpOworCX0KKworCWluc3QtPnByaXYgPSBwcml2OworCWluc3QtPnBoeSA9IHBoeTsK KwlpbnN0LT5ncCA9IGJhc2UgKyBncDsKKwlpbnN0LT5zZ21paSA9IGJhc2UgKyBzZ21paTsKKwlp bnN0LT5waHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX05BOworCXBoeV9zZXRfZHJ2 ZGF0YShwaHksIGluc3QpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXE1X3BoeV9w cm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldiwKKwkJCSBjb25zdCBzdHJ1Y3QgYXV4 aWxpYXJ5X2RldmljZV9pZCAqaWQpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJmFkZXYtPmRl djsKKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwcm92aWRlcjsKKwlzdHJ1Y3QgZXE1X3BoeV9wcml2 YXRlICpwcml2OworCXZvaWQgX19pb21lbSAqYmFzZTsKKwlpbnQgcmV0OworCisJcHJpdiA9IGRl dm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOworCWlmICghcHJpdikK KwkJcmV0dXJuIC1FTk9NRU07CisKKwlwcml2LT5kZXYgPSBkZXY7CisJZGV2X3NldF9kcnZkYXRh KGRldiwgcHJpdik7CisKKwliYXNlID0gKHZvaWQgX19pb21lbSAqKWRldl9nZXRfcGxhdGRhdGEo ZGV2KTsKKworCXJldCA9IGVxNV9waHlfcHJvYmVfcGh5KHByaXYsIDAsIGJhc2UsIEVRNV9QSFkw X0dQLCBFUTVfUEhZMF9TR01JSSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9 IGVxNV9waHlfcHJvYmVfcGh5KHByaXYsIDEsIGJhc2UsIEVRNV9QSFkxX0dQLCBFUTVfUEhZMV9T R01JSSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXByb3ZpZGVyID0gZGV2bV9vZl9w aHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBlcTVfcGh5X3hsYXRlKTsKKwlpZiAoSVNfRVJSKHBy b3ZpZGVyKSkgeworCQlkZXZfZXJyKGRldiwgInJlZ2lzdGVyaW5nIHByb3ZpZGVyIGZhaWxlZFxu Iik7CisJCXJldHVybiBQVFJfRVJSKHByb3ZpZGVyKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkIGVxNV9waHlfaWRfdGFibGVb XSA9IHsKKwl7IC5uYW1lID0gImNsa19leWVxLnBoeSIgfSwKKwl7fQorfTsKK01PRFVMRV9ERVZJ Q0VfVEFCTEUoYXV4aWxpYXJ5LCBlcTVfcGh5X2lkX3RhYmxlKTsKKworc3RhdGljIHN0cnVjdCBh dXhpbGlhcnlfZHJpdmVyIGVxNV9waHlfZHJpdmVyID0geworCS5wcm9iZSA9IGVxNV9waHlfcHJv YmUsCisJLmlkX3RhYmxlID0gZXE1X3BoeV9pZF90YWJsZSwKK307Cittb2R1bGVfYXV4aWxpYXJ5 X2RyaXZlcihlcTVfcGh5X2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiRXllUTUgRXRo ZXJuZXQgUEhZIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiVGjDqW8gTGVicnVuIDx0aGVvLmxl YnJ1bkBib290bGluLmNvbT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKCi0tIAoyLjUxLjEK CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK