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 D926ECF3943 for ; Wed, 19 Nov 2025 15:51:26 +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=t8y001Nj51SCbK13gDdgqe/4AmAAqJmFpUzn9XJwisc=; b=SkLYwje7/7S4UG 01Xu5C4M0dALZbFtysOyfzPNkqtyGhppWXax3vmSZ+Ia5f2mLHP+A7ZAJxP2yfSuHfoPKg/JS3oL3 ScRy6AQz3NNaPqjX2YDxR7Dv2qf3amfCIvm3QXrvY8gP70Q23VRhXEy+vxNiSUMObnafFbbWHJq6E 1TpIWqes0oy+9cSxEnYg+p970UNZbPWT+x7xGpzsf+hyixnQdWcmeh3vdHyJ76vHz1gWQ2182oXX3 /UY9aumr3ALmeheLwxYzc2w18WQx3tTa6ZjIjieePD7JM0Q7CD6rEMy6UT8wJcVnM+R2nz6wEZHbg G+TuImt9Zyxe4ASe5utQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vLkSs-00000003ajB-2fd7; Wed, 19 Nov 2025 15:51:26 +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 1vLkSq-00000003agm-0tdl for linux-phy@lists.infradead.org; Wed, 19 Nov 2025 15:51:25 +0000 Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 84D571A1BE8; Wed, 19 Nov 2025 15:51:21 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 5335A60699; Wed, 19 Nov 2025 15:51:21 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id C5F1210371A75; Wed, 19 Nov 2025 16:51:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1763567480; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=/eLWDd5hWvYbPca/EklNrX1O6zckyQobOuG2mMOxQ0U=; b=ScKdkdOIpvpIFnjPt99/MDoXY2bppPwPz2Nfuap7hL9X5okWSKHpg9GTUShQA4arzNpf5z 4jSbLrdSOjvvC5Pu4yXM/1ppVB60cwEuGEX3L6HNTdykcO5oV+MiLC3JnkVGW2S1gl+1+1 dXrT/PpP3QoFcPD5Nqs40RVOGyFSNLzjhJVjg35LQ25QDKcVF7dlmVjoUprJY926DAVhV1 8ABMoqHakKyZ2nT7Q7AMVwRZBaH6id0vPlGCYGy1KUhebMH3qVydlq3L6c1eFoV1ifp23e Wa/NlFEwKgZ9xZdPW+HkcR0cmDmPzUYcYyvERgktu8376mNuo3btk8XMJ90UMA== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Wed, 19 Nov 2025 16:51:10 +0100 Subject: [PATCH v3 2/7] phy: Add driver for EyeQ5 Ethernet PHY wrapper MIME-Version: 1.0 Message-Id: <20251119-macb-phy-v3-2-e9a7be186a33@bootlin.com> References: <20251119-macb-phy-v3-0-e9a7be186a33@bootlin.com> In-Reply-To: <20251119-macb-phy-v3-0-e9a7be186a33@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-20251119_075124_401607_6B74EE1E X-CRM114-Status: GOOD ( 19.13 ) 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 ZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggYjAyMjNjZmIyNTgzLi4y OGMwYjEyZGQxMjUgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBA IC0xNzQwMyw2ICsxNzQwMyw3IEBAIEY6CWFyY2gvbWlwcy9ib290L2R0cy9tb2JpbGV5ZS8KIEY6 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 b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM5MDFkMWNjZTBjOAotLS0gL2Rldi9udWxs 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 dTMyIHJlZzsKKworCWRldl9kYmcoZGV2LCAicGh5X2luaXQoaW5zdD0ldGQpXG4iLCBpbnN0IC0g cHJpdi0+cGh5cyk7CisKKwl3cml0ZWwoMCwgaW5zdC0+Z3ApOworCXdyaXRlbCgwLCBpbnN0LT5z Z21paSk7CisKKwl1ZGVsYXkoNSk7CisKKwlyZWcgPSByZWFkbChpbnN0LT5ncCkgfCBFUTVfR1Bf VFhfU1dSU1RfRElTIHwgRVE1X0dQX1RYX01fQ0xLRSB8CisJICAgICAgRVE1X0dQX1NZU19TV1JT VF9ESVMgfCBFUTVfR1BfU1lTX01fQ0xLRSB8CisJICAgICAgRklFTERfUFJFUChFUTVfR1BfUkdN SUlfRFJWLCAweDkpOworCXdyaXRlbChyZWcsIGluc3QtPmdwKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGVxNV9waHlfZXhpdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGVx NV9waHlfaW5zdCAqaW5zdCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCXN0cnVjdCBlcTVfcGh5 X3ByaXZhdGUgKnByaXYgPSBpbnN0LT5wcml2OworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYt PmRldjsKKworCWRldl9kYmcoZGV2LCAicGh5X2V4aXQoaW5zdD0ldGQpXG4iLCBpbnN0IC0gcHJp di0+cGh5cyk7CisKKwl3cml0ZWwoMCwgaW5zdC0+Z3ApOworCXdyaXRlbCgwLCBpbnN0LT5zZ21p aSk7CisJdWRlbGF5KDUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXE1X3BoeV9z ZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSwgaW50IHN1Ym1vZGUp Cit7CisJc3RydWN0IGVxNV9waHlfaW5zdCAqaW5zdCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwor CXN0cnVjdCBlcTVfcGh5X3ByaXZhdGUgKnByaXYgPSBpbnN0LT5wcml2OworCXN0cnVjdCBkZXZp Y2UgKmRldiA9IHByaXYtPmRldjsKKworCWRldl9kYmcoZGV2LCAicGh5X3NldF9tb2RlKGluc3Q9 JXRkLCBtb2RlPSVkLCBzdWJtb2RlPSVkKVxuIiwKKwkJaW5zdCAtIHByaXYtPnBoeXMsIG1vZGUs IHN1Ym1vZGUpOworCisJaWYgKG1vZGUgIT0gUEhZX01PREVfRVRIRVJORVQpCisJCXJldHVybiAt RU9QTk9UU1VQUDsKKworCWlmICghcGh5X2ludGVyZmFjZV9tb2RlX2lzX3JnbWlpKHN1Ym1vZGUp ICYmCisJICAgIHN1Ym1vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKQorCQlyZXR1cm4g LUVPUE5PVFNVUFA7CisKKwlpbnN0LT5waHlfaW50ZXJmYWNlID0gc3VibW9kZTsKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBlcTVfcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKK3sK KwlzdHJ1Y3QgZXE1X3BoeV9pbnN0ICppbnN0ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3Ry dWN0IGVxNV9waHlfcHJpdmF0ZSAqcHJpdiA9IGluc3QtPnByaXY7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gcHJpdi0+ZGV2OworCXUzMiByZWc7CisKKwlkZXZfZGJnKGRldiwgInBoeV9wb3dlcl9v bihpbnN0PSV0ZClcbiIsIGluc3QgLSBwcml2LT5waHlzKTsKKworCWlmIChpbnN0LT5waHlfaW50 ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkgeworCQl3cml0ZWwocmVhZGwoaW5z dC0+Z3ApIHwgRVE1X0dQX1NHTUlJX01PREUsIGluc3QtPmdwKTsKKworCQlyZWcgPSBFUTVfU0dN SUlfUFdSX0VOIHwgRVE1X1NHTUlJX1JTVF9ESVMgfCBFUTVfU0dNSUlfUExMX0VOOworCQl3cml0 ZWwocmVnLCBpbnN0LT5zZ21paSk7CisKKwkJaWYgKHJlYWRsX3BvbGxfdGltZW91dChpbnN0LT5z Z21paSwgcmVnLAorCQkJCSAgICAgICByZWcgJiBFUTVfU0dNSUlfUExMX0FDSywgMSwgMTAwKSkg eworCQkJZGV2X2VycihkZXYsICJQTEwgdGltZW91dFxuIik7CisJCQlyZXR1cm4gLUVUSU1FRE9V VDsKKwkJfQorCisJCXJlZyA9IHJlYWRsKGluc3QtPnNnbWlpKTsKKwkJcmVnIHw9IEVRNV9TR01J SV9QV1JfU1RBVEUgfCBFUTVfU0dNSUlfU0lHX0RFVF9TVzsKKwkJd3JpdGVsKHJlZywgaW5zdC0+ c2dtaWkpOworCX0gZWxzZSB7CisJCXdyaXRlbChyZWFkbChpbnN0LT5ncCkgJiB+RVE1X0dQX1NH TUlJX01PREUsIGluc3QtPmdwKTsKKwkJd3JpdGVsKDAsIGluc3QtPnNnbWlpKTsKKwl9CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlcTVfcGh5X3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpw aHkpCit7CisJc3RydWN0IGVxNV9waHlfaW5zdCAqaW5zdCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkp OworCXN0cnVjdCBlcTVfcGh5X3ByaXZhdGUgKnByaXYgPSBpbnN0LT5wcml2OworCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHByaXYtPmRldjsKKworCWRldl9kYmcoZGV2LCAicGh5X3Bvd2VyX29mZihp bnN0PSV0ZClcbiIsIGluc3QgLSBwcml2LT5waHlzKTsKKworCXdyaXRlbChyZWFkbChpbnN0LT5n 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 YnJ1bkBib290bGluLmNvbT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKCi0tIAoyLjUxLjIK CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK