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 CB13FD2FEC2 for ; Tue, 27 Jan 2026 17:09:48 +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=qZcTcEBZAQCJzksKIf6J8geztU/r4edoXF/Zl+phUX8=; b=O9VKk/1tYuSui4 gXKaI58VfU7Tj85spvt6F3ULC4rDBP4822bxW4a2LFg907lU9dvfO7HqIFVfgbldUugwQu+xQG3fK yiCgO4okS/Jt2f/fHeF4jEEefqMtdjfl8TVxXsjzyN62H+MWPlHY04YAWBWlLpj0SmYM0AQAo67RK r+y+p890LcqyhlFMjDACOBmi02XJiTv7XJKbtYX6HCikcwizoYE4xNK9jCtkODFeLuLBsC4wn2s/t u35gl7edUsUqSrL/EF1GZyE+kI360qIhsL3k6Cuy+8kc6/BBOt1TpGigFT8B2Ib1ls+nK8xot7JOc D+eqrvYzpJPhtoYwvnNA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vkmZY-0000000Ei1m-23EZ; Tue, 27 Jan 2026 17:09:48 +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 1vkmZU-0000000Ehyq-2Z8a for linux-phy@lists.infradead.org; Tue, 27 Jan 2026 17:09:46 +0000 Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 3E0ED1A2A9A; Tue, 27 Jan 2026 17:09:43 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 13BD0606F5; Tue, 27 Jan 2026 17:09:43 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 6C9D0119A869A; Tue, 27 Jan 2026 18:09:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1769533782; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=8/dj6WVrA/K0Ux2DBBmMXk7vM2U3gPEq7++0O2XBC9A=; b=eCGh3nha6A7xAuuUU1kcJsGhPx1UHJ7BRXd1wfV66IDmNfQrKDPHVxWWk0zEEJm7UA4JSt +YOdBgF0vkrvvauV1hyLD2K/W34uzlwbG5Ugr4JYaL9fyGwmDRb6NuZAR/kEPx4l8JzR/X P68nQr1EAsxcStWqkUVtfQC8bSr1KZ58s9rHEKnHO6hGD3UIyKXgfZAiqXOcmjhv9wV/RG Tk19H9VSXPQB/Q7mSKFvZ2xhf4vHTYKbeOz3Xo/2ww/TllIDmhU4bkjR7NxDzFt3meySO+ Ge7e8PtZGQYTMswLJTaqB41ZeUVGoI9b5yMbwHK/qX6nBWoguGiwXY9Tbh3l3A== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Tue, 27 Jan 2026 18:09:31 +0100 Subject: [PATCH v6 3/8] phy: Add driver for EyeQ5 Ethernet PHY wrapper MIME-Version: 1.0 Message-Id: <20260127-macb-phy-v6-3-cdd840588188@bootlin.com> References: <20260127-macb-phy-v6-0-cdd840588188@bootlin.com> In-Reply-To: <20260127-macb-phy-v6-0-cdd840588188@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 , Neil Armstrong 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?= , Tawfik Bayouk , Thomas Petazzoni , Luca Ceresoli , =?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-20260127_090944_955058_EA238D72 X-CRM114-Status: GOOD ( 19.10 ) 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 dCgpIC8gcGh5X3NldF9tb2RlKCkgLyBwaHlfcG93ZXJfb24oKSBvcGVyYXRpb25zLgoKUmV2aWV3 ZWQtYnk6IEx1Y2EgQ2VyZXNvbGkgPGx1Y2EuY2VyZXNvbGlAYm9vdGxpbi5jb20+ClNpZ25lZC1v ZmYtYnk6IFRow6lvIExlYnJ1biA8dGhlby5sZWJydW5AYm9vdGxpbi5jb20+Ci0tLQogTUFJTlRB SU5FUlMgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvcGh5L0tjb25maWcgICAgICAg ICB8ICAxMyArKysKIGRyaXZlcnMvcGh5L01ha2VmaWxlICAgICAgICB8ICAgMSArCiBkcml2ZXJz L3BoeS9waHktZXllcTUtZXRoLmMgfCAyNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjY0IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDY3ZGI4OGIwNDUzNy4uMmY3 N2RjMzUwNzA2IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAt MTc2MjEsNiArMTc2MjEsNyBAQCBGOglhcmNoL21pcHMvYm9vdC9kdHMvbW9iaWxleWUvCiBGOglh cmNoL21pcHMvY29uZmlncy9leWVxNV9kZWZjb25maWcKIEY6CWFyY2gvbWlwcy9tb2JpbGV5ZS9i b2FyZC1lcG01Lml0cy5TCiBGOglkcml2ZXJzL2Nsay9jbGstZXllcS5jCitGOglkcml2ZXJzL3Bo eS9waHktZXllcTUtZXRoLmMKIEY6CWRyaXZlcnMvcGluY3RybC9waW5jdHJsLWV5ZXE1LmMKIEY6 CWRyaXZlcnMvcmVzZXQvcmVzZXQtZXllcS5jCiBGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2Nr L21vYmlsZXllLGV5ZXE1LWNsay5oCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9LY29uZmlnIGIv ZHJpdmVycy9waHkvS2NvbmZpZwppbmRleCA0ZjFiMWQ3ZjVkMjAuLmIzYzExY2QwMjA5YSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9waHkvS2NvbmZpZworKysgYi9kcml2ZXJzL3BoeS9LY29uZmlnCkBA IC00NSw2ICs0NSwxOSBAQCBjb25maWcgUEhZX0NBTl9UUkFOU0NFSVZFUgogCSAgZnVuY3Rpb25h bCBtb2RlcyB1c2luZyBncGlvcyBhbmQgc2V0cyB0aGUgYXR0cmlidXRlIG1heCBsaW5rCiAJICBy YXRlLCBmb3IgQ0FOIGRyaXZlcnMuCiAKK2NvbmZpZyBQSFlfRVlFUTVfRVRICisJdHJpc3RhdGUg IkV0aGVybmV0IFBIWSBEcml2ZXIgb24gRXllUTUiCisJZGVwZW5kcyBvbiBPRgorCWRlcGVuZHMg b24gTUFDSF9FWUVRNSB8fCBDT01QSUxFX1RFU1QKKwlzZWxlY3QgQVVYSUxJQVJZX0JVUworCXNl bGVjdCBHRU5FUklDX1BIWQorCWRlZmF1bHQgTUFDSF9FWUVRNQorCWhlbHAKKwkgIEVuYWJsZSB0 aGlzIHRvIHN1cHBvcnQgdGhlIEV0aGVybmV0IFBIWSBpbnRlZ3JhdGVkIG9uIEV5ZVE1LgorCSAg SXQgc3VwcG9ydHMgYm90aCBSR01JSSBhbmQgU0dNSUkuIFJlZ2lzdGVycyBhcmUgbG9jYXRlZCBp biBhCisJICBzaGFyZWQgcmVnaXN0ZXIgcmVnaW9uIGNhbGxlZCBPTEIuIElmIE0gaXMgc2VsZWN0 ZWQsIHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHBoeS1leWVxNS1ldGguCisKIGNvbmZp ZyBQSFlfTFBDMThYWF9VU0JfT1RHCiAJdHJpc3RhdGUgIk5YUCBMUEMxOHh4LzQzeHggU29DIFVT QiBPVEcgUEhZIGRyaXZlciIKIAlkZXBlbmRzIG9uIE9GICYmIChBUkNIX0xQQzE4WFggfHwgQ09N UElMRV9URVNUKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL3Bo eS9NYWtlZmlsZQppbmRleCA5OTQzZDc0MjU3MWQuLmM4MWFjNzkyNmU2YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9waHkvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9waHkvTWFrZWZpbGUKQEAgLTcsNiAr Nyw3IEBAIG9iai0kKENPTkZJR19HRU5FUklDX1BIWSkJCSs9IHBoeS1jb3JlLm8KIG9iai0kKENP TkZJR19HRU5FUklDX1BIWV9NSVBJX0RQSFkpCSs9IHBoeS1jb3JlLW1pcGktZHBoeS5vCiBvYmot JChDT05GSUdfUEhZX0FJUk9IQV9QQ0lFKQkJKz0gcGh5LWFpcm9oYS1wY2llLm8KIG9iai0kKENP TkZJR19QSFlfQ0FOX1RSQU5TQ0VJVkVSKQkrPSBwaHktY2FuLXRyYW5zY2VpdmVyLm8KK29iai0k KENPTkZJR19QSFlfRVlFUTVfRVRIKQkJKz0gcGh5LWV5ZXE1LWV0aC5vCiBvYmotJChDT05GSUdf UEhZX0xQQzE4WFhfVVNCX09URykJKz0gcGh5LWxwYzE4eHgtdXNiLW90Zy5vCiBvYmotJChDT05G SUdfUEhZX05YUF9QVE4zMjIyKQkJKz0gcGh5LW54cC1wdG4zMjIyLm8KIG9iai0kKENPTkZJR19Q SFlfUElTVEFDSElPX1VTQikJCSs9IHBoeS1waXN0YWNoaW8tdXNiLm8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcGh5L3BoeS1leWVxNS1ldGguYyBiL2RyaXZlcnMvcGh5L3BoeS1leWVxNS1ldGguYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBjNDYzNTlkYWQ5NgotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvcGh5L3BoeS1leWVxNS1ldGguYwpAQCAtMCwwICsxLDI0 OSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorCisjaW5jbHVk ZSA8bGludXgvYXV4aWxpYXJ5X2J1cy5oPgorI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+Cisj aW5jbHVkZSA8bGludXgvYml0cy5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVk ZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGlu dXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9nZnBfdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51 eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwu aD4KKyNpbmNsdWRlIDxsaW51eC9tb2RfZGV2aWNldGFibGUuaD4KKyNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L3BoeS5oPgor I2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KKworI2RlZmluZSBFUTVfUEhZX0NPVU5UCTIKKworI2RlZmlu ZSBFUTVfUEhZMF9HUAkweDEyOAorI2RlZmluZSBFUTVfUEhZMV9HUAkweDEyYworI2RlZmluZSBF UTVfUEhZMF9TR01JSQkweDEzNAorI2RlZmluZSBFUTVfUEhZMV9TR01JSQkweDEzOAorCisjZGVm aW5lIEVRNV9HUF9UWF9TV1JTVF9ESVMJQklUKDApCQkvLyBUeCBTVyByZXNldAorI2RlZmluZSBF UTVfR1BfVFhfTV9DTEtFCUJJVCgxKQkJLy8gVHggTSBjbG9jayBlbmFibGUKKyNkZWZpbmUgRVE1 X0dQX1NZU19TV1JTVF9ESVMJQklUKDIpCQkvLyBTeXMgU1cgcmVzZXQKKyNkZWZpbmUgRVE1X0dQ X1NZU19NX0NMS0UJQklUKDMpCQkvLyBTeXMgY2xvY2sgZW5hYmxlCisjZGVmaW5lIEVRNV9HUF9T R01JSV9NT0RFCUJJVCg0KQkJLy8gU0dNSUkgbW9kZQorI2RlZmluZSBFUTVfR1BfUkdNSUlfRFJW CUdFTk1BU0soOCwgNSkJLy8gUkdNSUkgZHJpdmUgc3RyZW5ndGgKKworI2RlZmluZSBFUTVfU0dN SUlfUFdSX0VOCUJJVCgwKQorI2RlZmluZSBFUTVfU0dNSUlfUlNUX0RJUwlCSVQoMSkKKyNkZWZp bmUgRVE1X1NHTUlJX1BMTF9FTglCSVQoMikKKyNkZWZpbmUgRVE1X1NHTUlJX1NJR19ERVRfU1cJ QklUKDMpCisjZGVmaW5lIEVRNV9TR01JSV9QV1JfU1RBVEUJQklUKDQpCisjZGVmaW5lIEVRNV9T R01JSV9QTExfQUNLCUJJVCgxOCkKKyNkZWZpbmUgRVE1X1NHTUlJX1BXUl9TVEFURV9BQ0sJR0VO TUFTSygyNCwgMjApCisKK3N0cnVjdCBlcTVfcGh5X2luc3QgeworCXN0cnVjdCBlcTVfcGh5X3By aXZhdGUJKnByaXY7CisJc3RydWN0IHBoeQkJKnBoeTsKKwl2b2lkIF9faW9tZW0JCSpncCwgKnNn bWlpOworCXBoeV9pbnRlcmZhY2VfdAkJcGh5X2ludGVyZmFjZTsKK307CisKK3N0cnVjdCBlcTVf cGh5X3ByaXZhdGUgeworCXN0cnVjdCBkZXZpY2UJCSpkZXY7CisJc3RydWN0IGVxNV9waHlfaW5z dAlwaHlzW0VRNV9QSFlfQ09VTlRdOworfTsKKworc3RhdGljIGludCBlcTVfcGh5X2luaXQoc3Ry dWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBlcTVfcGh5X2luc3QgKmluc3QgPSBwaHlfZ2V0X2Ry dmRhdGEocGh5KTsKKwlzdHJ1Y3QgZXE1X3BoeV9wcml2YXRlICpwcml2ID0gaW5zdC0+cHJpdjsK KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LT5kZXY7CisJdTMyIHJlZzsKKworCWRldl9kYmco ZGV2LCAicGh5X2luaXQoaW5zdD0ldGQpXG4iLCBpbnN0IC0gcHJpdi0+cGh5cyk7CisKKwl3cml0 ZWwoMCwgaW5zdC0+Z3ApOworCXdyaXRlbCgwLCBpbnN0LT5zZ21paSk7CisKKwl1ZGVsYXkoNSk7 CisKKwlyZWcgPSByZWFkbChpbnN0LT5ncCkgfCBFUTVfR1BfVFhfU1dSU1RfRElTIHwgRVE1X0dQ X1RYX01fQ0xLRSB8CisJICAgICAgRVE1X0dQX1NZU19TV1JTVF9ESVMgfCBFUTVfR1BfU1lTX01f Q0xLRSB8CisJICAgICAgRklFTERfUFJFUChFUTVfR1BfUkdNSUlfRFJWLCAweDkpOworCXdyaXRl bChyZWcsIGluc3QtPmdwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVxNV9waHlf ZXhpdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGVxNV9waHlfaW5zdCAqaW5zdCA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOworCXN0cnVjdCBlcTVfcGh5X3ByaXZhdGUgKnByaXYgPSBpbnN0 LT5wcml2OworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtPmRldjsKKworCWRldl9kYmcoZGV2 LCAicGh5X2V4aXQoaW5zdD0ldGQpXG4iLCBpbnN0IC0gcHJpdi0+cGh5cyk7CisKKwl3cml0ZWwo MCwgaW5zdC0+Z3ApOworCXdyaXRlbCgwLCBpbnN0LT5zZ21paSk7CisJdWRlbGF5KDUpOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXE1X3BoeV9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpw aHksIGVudW0gcGh5X21vZGUgbW9kZSwgaW50IHN1Ym1vZGUpCit7CisJc3RydWN0IGVxNV9waHlf aW5zdCAqaW5zdCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCXN0cnVjdCBlcTVfcGh5X3ByaXZh dGUgKnByaXYgPSBpbnN0LT5wcml2OworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtPmRldjsK KworCWRldl9kYmcoZGV2LCAicGh5X3NldF9tb2RlKGluc3Q9JXRkLCBtb2RlPSVkLCBzdWJtb2Rl PSVkKVxuIiwKKwkJaW5zdCAtIHByaXYtPnBoeXMsIG1vZGUsIHN1Ym1vZGUpOworCisJaWYgKG1v ZGUgIT0gUEhZX01PREVfRVRIRVJORVQpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKworCWlmICgh cGh5X2ludGVyZmFjZV9tb2RlX2lzX3JnbWlpKHN1Ym1vZGUpICYmCisJICAgIHN1Ym1vZGUgIT0g UEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisKKwlpbnN0 LT5waHlfaW50ZXJmYWNlID0gc3VibW9kZTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBl cTVfcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgZXE1X3BoeV9pbnN0 ICppbnN0ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3RydWN0IGVxNV9waHlfcHJpdmF0ZSAq cHJpdiA9IGluc3QtPnByaXY7CisJc3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi0+ZGV2OworCXUz MiByZWc7CisKKwlkZXZfZGJnKGRldiwgInBoeV9wb3dlcl9vbihpbnN0PSV0ZClcbiIsIGluc3Qg LSBwcml2LT5waHlzKTsKKworCWlmIChpbnN0LT5waHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZB Q0VfTU9ERV9TR01JSSkgeworCQl3cml0ZWwocmVhZGwoaW5zdC0+Z3ApIHwgRVE1X0dQX1NHTUlJ X01PREUsIGluc3QtPmdwKTsKKworCQlyZWcgPSBFUTVfU0dNSUlfUFdSX0VOIHwgRVE1X1NHTUlJ X1JTVF9ESVMgfCBFUTVfU0dNSUlfUExMX0VOOworCQl3cml0ZWwocmVnLCBpbnN0LT5zZ21paSk7 CisKKwkJaWYgKHJlYWRsX3BvbGxfdGltZW91dChpbnN0LT5zZ21paSwgcmVnLAorCQkJCSAgICAg ICByZWcgJiBFUTVfU0dNSUlfUExMX0FDSywgMSwgMTAwKSkgeworCQkJZGV2X2VycihkZXYsICJQ TEwgdGltZW91dFxuIik7CisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwkJfQorCisJCXJlZyA9IHJl YWRsKGluc3QtPnNnbWlpKTsKKwkJcmVnIHw9IEVRNV9TR01JSV9QV1JfU1RBVEUgfCBFUTVfU0dN SUlfU0lHX0RFVF9TVzsKKwkJd3JpdGVsKHJlZywgaW5zdC0+c2dtaWkpOworCX0gZWxzZSB7CisJ CXdyaXRlbChyZWFkbChpbnN0LT5ncCkgJiB+RVE1X0dQX1NHTUlJX01PREUsIGluc3QtPmdwKTsK KwkJd3JpdGVsKDAsIGluc3QtPnNnbWlpKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBlcTVfcGh5X3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGVxNV9w aHlfaW5zdCAqaW5zdCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCXN0cnVjdCBlcTVfcGh5X3By aXZhdGUgKnByaXYgPSBpbnN0LT5wcml2OworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtPmRl djsKKworCWRldl9kYmcoZGV2LCAicGh5X3Bvd2VyX29mZihpbnN0PSV0ZClcbiIsIGluc3QgLSBw cml2LT5waHlzKTsKKworCXdyaXRlbChyZWFkbChpbnN0LT5ncCkgJiB+RVE1X0dQX1NHTUlJX01P REUsIGluc3QtPmdwKTsKKwl3cml0ZWwoMCwgaW5zdC0+c2dtaWkpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBlcTVfcGh5X29wcyA9IHsKKwkuaW5pdAkJ PSBlcTVfcGh5X2luaXQsCisJLmV4aXQJCT0gZXE1X3BoeV9leGl0LAorCS5zZXRfbW9kZQk9IGVx NV9waHlfc2V0X21vZGUsCisJLnBvd2VyX29uCT0gZXE1X3BoeV9wb3dlcl9vbiwKKwkucG93ZXJf b2ZmCT0gZXE1X3BoeV9wb3dlcl9vZmYsCit9OworCitzdGF0aWMgc3RydWN0IHBoeSAqZXE1X3Bo eV94bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJIGNvbnN0IHN0cnVjdCBvZl9waGFuZGxl X2FyZ3MgKmFyZ3MpCit7CisJc3RydWN0IGVxNV9waHlfcHJpdmF0ZSAqcHJpdiA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOworCisJaWYgKGFyZ3MtPmFyZ3NfY291bnQgIT0gMSB8fCBhcmdzLT5hcmdz WzBdID49IEVRNV9QSFlfQ09VTlQpCisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCisJcmV0 dXJuIHByaXYtPnBoeXNbYXJncy0+YXJnc1swXV0ucGh5OworfQorCitzdGF0aWMgaW50IGVxNV9w aHlfcHJvYmVfcGh5KHN0cnVjdCBlcTVfcGh5X3ByaXZhdGUgKnByaXYsIHVuc2lnbmVkIGludCBp bmRleCwKKwkJCSAgICAgdm9pZCBfX2lvbWVtICpiYXNlLCB1bnNpZ25lZCBpbnQgZ3AsCisJCQkg ICAgIHVuc2lnbmVkIGludCBzZ21paSkKK3sKKwlzdHJ1Y3QgZXE1X3BoeV9pbnN0ICppbnN0ID0g JnByaXYtPnBoeXNbaW5kZXhdOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtPmRldjsKKwlz dHJ1Y3QgcGh5ICpwaHk7CisKKwlwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBkZXYtPm9mX25v ZGUsICZlcTVfcGh5X29wcyk7CisJaWYgKElTX0VSUihwaHkpKQorCQlyZXR1cm4gZGV2X2Vycl9w cm9iZShkZXYsIFBUUl9FUlIocGh5KSwKKwkJCQkgICAgICJmYWlsZWQgdG8gY3JlYXRlIFBIWSAl dVxuIiwgaW5kZXgpOworCisJaW5zdC0+cHJpdiA9IHByaXY7CisJaW5zdC0+cGh5ID0gcGh5Owor CWluc3QtPmdwID0gYmFzZSArIGdwOworCWluc3QtPnNnbWlpID0gYmFzZSArIHNnbWlpOworCWlu c3QtPnBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfTkE7CisJcGh5X3NldF9kcnZk YXRhKHBoeSwgaW5zdCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlcTVfcGh5X3By b2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LAorCQkJIGNvbnN0IHN0cnVjdCBhdXhp bGlhcnlfZGV2aWNlX2lkICppZCkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYWRldi0+ZGV2 OworCXN0cnVjdCBwaHlfcHJvdmlkZXIgKnByb3ZpZGVyOworCXN0cnVjdCBlcTVfcGh5X3ByaXZh dGUgKnByaXY7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCWludCByZXQ7CisKKwlwcml2ID0gZGV2 bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcml2KQor CQlyZXR1cm4gLUVOT01FTTsKKworCXByaXYtPmRldiA9IGRldjsKKwlkZXZfc2V0X2RydmRhdGEo ZGV2LCBwcml2KTsKKworCWJhc2UgPSBkZXZfZ2V0X3BsYXRkYXRhKGRldik7CisKKwlyZXQgPSBl cTVfcGh5X3Byb2JlX3BoeShwcml2LCAwLCBiYXNlLCBFUTVfUEhZMF9HUCwgRVE1X1BIWTBfU0dN SUkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBlcTVfcGh5X3Byb2JlX3Bo eShwcml2LCAxLCBiYXNlLCBFUTVfUEhZMV9HUCwgRVE1X1BIWTFfU0dNSUkpOworCWlmIChyZXQp CisJCXJldHVybiByZXQ7CisKKwlwcm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lz dGVyKGRldiwgZXE1X3BoeV94bGF0ZSk7CisJaWYgKElTX0VSUihwcm92aWRlcikpCisJCXJldHVy biBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcm92aWRlciksCisJCQkJICAgICAicmVnaXN0 ZXJpbmcgcHJvdmlkZXIgZmFpbGVkXG4iKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGF1eGlsaWFyeV9kZXZpY2VfaWQgZXE1X3BoeV9pZF90YWJsZVtdID0geworCXsg Lm5hbWUgPSAiY2xrX2V5ZXEucGh5IiB9LAorCXt9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShh dXhpbGlhcnksIGVxNV9waHlfaWRfdGFibGUpOworCitzdGF0aWMgc3RydWN0IGF1eGlsaWFyeV9k cml2ZXIgZXE1X3BoeV9kcml2ZXIgPSB7CisJLnByb2JlID0gZXE1X3BoeV9wcm9iZSwKKwkuaWRf dGFibGUgPSBlcTVfcGh5X2lkX3RhYmxlLAorfTsKK21vZHVsZV9hdXhpbGlhcnlfZHJpdmVyKGVx NV9waHlfZHJpdmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJFeWVRNSBFdGhlcm5ldCBQSFkg ZHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJUaMOpbyBMZWJydW4gPHRoZW8ubGVicnVuQGJvb3Rs aW4uY29tPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwoKLS0gCjIuNTIuMAoKCi0tIApsaW51 eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHBzOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBoeQo=