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 6A30FCCFA05 for ; Sat, 1 Nov 2025 08:54:02 +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=KAfqwqow8N0umgeuR9Kf82bejSkWjEhoIpv0bJY0q7Y=; b=ClJaNdmA3bXkhD dc7X4vKL+MijzFQU59CG85qwqPKarPe1UCUB/b+B4MgOaXM5LfSEly4QiHtFMbY5SRgQcjQI4aFAo kiHetl8/vfJ4LL7Ib4jhKxg8eKYomIw11S0ONNRZQt+vZgx31cIoGq4Gp953zwsDiLk7AbVMTeSwu /IWRxp4R63LrRHrGWhMs8gl6cFuyi9wsJPac/61RLaxtm+KgHszb/vVZkESrYPNswSYOISTedlEKz WEb2hFbUe2z++IpHCsuw+feetFQY9m3SOwZ9E/EPd7SDC2hg/34uEtxaLC9OZh4vZRft80x6YqMGG sAEtNnNKxOZTqaeTrVWQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vF7N4-00000007CfO-0i0b; Sat, 01 Nov 2025 08:54:02 +0000 Received: from smtpout-03.galae.net ([185.246.85.4]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vF7Mz-00000007CdL-1nmo for linux-phy@lists.infradead.org; Sat, 01 Nov 2025 08:54:00 +0000 Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id 6F3454E41460; Sat, 1 Nov 2025 08:53:54 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 42A416070B; Sat, 1 Nov 2025 08:53:54 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 483D311819FCF; Sat, 1 Nov 2025 09:53:51 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1761987233; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=jdfLL60RP7i0TVWp7rIzRBN4NqNUHywy1K7LchY5OmQ=; b=S4mC253j4Ha6vKQAz0rj5+tCmF5XhPSKg98wATu51dtVbq02DwD3BWOjfNxTyLJJrVMEj/ aeyAAS4/GK6/94SSyDHnd5cjKiGTKSTAAhyWe5NptdfDbWNYDNRUm/QwGwSDgsSMjpscN9 X99cznpJ2P15tVAM0wV1afh7G75Vi/8PXcwhL/OUVdnLjD46Ohpu/u5qnzUVTIZzmgRDM3 0JLxa/FtyXCJI93evn22wbaCvMzUpHyPVqWIzsB+WtpYjJMaE5GrxQKFW65TJRuodCz1Rw VIN60+7rzJmQm1Dm8aLrXtmU4NjSQkYXgATxqdWJlOC3yx71IoLfRklJ7KsQeg== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Sat, 01 Nov 2025 09:53:30 +0100 Subject: [PATCH v2 2/7] phy: Add driver for EyeQ5 Ethernet PHY wrapper MIME-Version: 1.0 Message-Id: <20251101-macb-phy-v2-2-c1519eef16d3@bootlin.com> References: <20251101-macb-phy-v2-0-c1519eef16d3@bootlin.com> In-Reply-To: <20251101-macb-phy-v2-0-c1519eef16d3@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-20251101_015357_744657_6F5150B9 X-CRM114-Status: GOOD ( 18.05 ) 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 ZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMWFiN2U4NzQ2Mjk5Li45 ZTc0ODk1NTA2MWIgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBA IC0xNzM5NCw2ICsxNzM5NCw3IEBAIEY6CWFyY2gvbWlwcy9ib290L2R0cy9tb2JpbGV5ZS8KIEY6 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 YnJ1bkBib290bGluLmNvbT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKCi0tIAoyLjUxLjEK CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK