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=-9.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_PASS,URIBL_BLOCKED,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 9F9CBC169C4 for ; Tue, 29 Jan 2019 09:38:10 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 70F3F214DA for ; Tue, 29 Jan 2019 09:38:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="NOOo0nmM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 70F3F214DA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-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=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References: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=P7ROR8RdRe1ay1ipYCQxbY9M9k9G+03SAzuTlyuouR8=; b=NOOo0nmM9Y7qni ukzFzOPVOA0gVeOhYd4cUM7JWjI5Ak07st9g8JXII/h7dLaTXHKkHOzwuDFvT3pQMKDHYd84JljV0 G2spZaX4jTOSzVtI7ECVKMiYVhL1Pye+spxwBIeyeEWu8BteFDbqyztH8i83PpjfE/xZeDCVFIV+l GESDt+vbepePL5szYX1ixolo3+Ra0fbbsV0hXwEAgA/Qo6RXZ4r6lwXSshSVf9NXJxYLNZbR/AbIY I0dbKu1ezk5bkoJjDKA2ZNuOgFysIiuOtwgjVwI+TqoHf0kObgBiaDvjVoRdJ0Vx6tN4RAlSKIOgu 3YO1Um8TeYhXuBVi7uMw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1goPqL-0004lK-NU; Tue, 29 Jan 2019 09:38:09 +0000 Received: from mail.bootlin.com ([62.4.15.54]) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1goPp8-0003eH-1R for linux-arm-kernel@lists.infradead.org; Tue, 29 Jan 2019 09:36:58 +0000 Received: by mail.bootlin.com (Postfix, from userid 110) id C5F0920A15; Tue, 29 Jan 2019 10:36:47 +0100 (CET) Received: from localhost.localdomain (aaubervilliers-681-1-87-206.w90-88.abo.wanadoo.fr [90.88.29.206]) by mail.bootlin.com (Postfix) with ESMTPSA id 409BB206A6; Tue, 29 Jan 2019 10:36:37 +0100 (CET) From: Miquel Raynal To: Kishon Vijay Abraham I , Rob Herring , Mark Rutland , Gregory Clement , Jason Cooper , Andrew Lunn , Sebastian Hesselbarth Subject: [PATCH v5 1/6] phy: add A3700 UTMI PHY driver Date: Tue, 29 Jan 2019 10:36:30 +0100 Message-Id: <20190129093635.4321-2-miquel.raynal@bootlin.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190129093635.4321-1-miquel.raynal@bootlin.com> References: <20190129093635.4321-1-miquel.raynal@bootlin.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190129_013654_356160_EED94220 X-CRM114-Status: GOOD ( 20.66 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Antoine Tenart , Maxime Chevallier , Nadav Haklai , Igal Liberman , Thomas Petazzoni , Miquel Raynal , 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+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org TWFydmVsbCBBcm1hZGEgMzcwMCBTb0MgaGFzIHR3byBVU0IgY29udHJvbGxlcnMsIGVhY2ggb2Yg dGhlbSBiZWluZwp3aXJlZCB0byBhbiBpbnRlcm5hbCBVVE1JIFBIWS4gQWRkIGEgZHJpdmVyIHRv IGNvbnRyb2wgdGhlbS4KCklnYWwgTGliZXJtYW4gd29ya2VkIG9uIHN1cHBvcnRpbmcgdGhlIFBI WSwgSSB0b29rIHRoZSB3aGlsZSAncmVnaXN0ZXIKY29uZmlndXJhdGlvbicgZnJvbSBoaXMgd29y ayBhbmQgcmV3cm90ZSBhbG1vc3QgZW50aXJlbHkgdGhlCmRyaXZlci9iaW5kaW5ncyBhcm91bmQg aXQuCgpDby1kZXZlbG9wZWQtYnk6IElnYWwgTGliZXJtYW4gPGlnYWxsQG1hcnZlbGwuY29tPgpT aWduZWQtb2ZmLWJ5OiBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgpT aWduZWQtb2ZmLWJ5OiBJZ2FsIExpYmVybWFuIDxpZ2FsbEBtYXJ2ZWxsLmNvbT4KLS0tCiBkcml2 ZXJzL3BoeS9tYXJ2ZWxsL0tjb25maWcgICAgICAgICAgICAgICAgfCAgIDkgKwogZHJpdmVycy9w aHkvbWFydmVsbC9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvcGh5L21h cnZlbGwvcGh5LW12ZWJ1LWEzNzAwLXV0bWkuYyB8IDI3OCArKysrKysrKysrKysrKysrKysrKysK IDMgZmlsZXMgY2hhbmdlZCwgMjg4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL3BoeS9tYXJ2ZWxsL3BoeS1tdmVidS1hMzcwMC11dG1pLmMKCmRpZmYgLS1naXQgYS9k cml2ZXJzL3BoeS9tYXJ2ZWxsL0tjb25maWcgYi9kcml2ZXJzL3BoeS9tYXJ2ZWxsL0tjb25maWcK aW5kZXggOWM5MGMwNDA4ZWEzLi5iOGU5ZGQzOGFkMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5 L21hcnZlbGwvS2NvbmZpZworKysgYi9kcml2ZXJzL3BoeS9tYXJ2ZWxsL0tjb25maWcKQEAgLTMz LDYgKzMzLDE1IEBAIGNvbmZpZyBQSFlfTVZFQlVfQTM3MDBfQ09NUEhZCiAJICBzaGFyZWQgc2Vy ZGVzIFBIWXMgb24gTWFydmVsbCBBcm1hZGEgMzcwMC4gSXRzIHNlcmRlcyBsYW5lcyBjYW4gYmUK IAkgIHVzZWQgYnkgdmFyaW91cyBjb250cm9sbGVyczogRXRoZXJuZXQsIFNBVEEsIFVTQjMsIFBD SWUuCiAKK2NvbmZpZyBQSFlfTVZFQlVfQTM3MDBfVVRNSQorCXRyaXN0YXRlICJNYXJ2ZWxsIEEz NzAwIFVUTUkgZHJpdmVyIgorCWRlcGVuZHMgb24gQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QK KwlkZXBlbmRzIG9uIE9GCisJZGVmYXVsdCB5CisJc2VsZWN0IEdFTkVSSUNfUEhZCisJaGVscAor CSAgRW5hYmxlIHRoaXMgdG8gc3VwcG9ydCBNYXJ2ZWxsIEEzNzAwIFVUTUkgUEhZIGRyaXZlci4K KwogY29uZmlnIFBIWV9NVkVCVV9DUDExMF9DT01QSFkKIAl0cmlzdGF0ZSAiTWFydmVsbCBDUDEx MCBjb21waHkgZHJpdmVyIgogCWRlcGVuZHMgb24gQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L21hcnZlbGwvTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9t YXJ2ZWxsL01ha2VmaWxlCmluZGV4IGMxM2EwYzhhYjZmMC4uODJmMjkxY2Y1OWVlIDEwMDY0NAot LS0gYS9kcml2ZXJzL3BoeS9tYXJ2ZWxsL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcGh5L21hcnZl bGwvTWFrZWZpbGUKQEAgLTMsNiArMyw3IEBAIG9iai0kKENPTkZJR19BUk1BREEzNzVfVVNCQ0xV U1RFUl9QSFkpCSs9IHBoeS1hcm1hZGEzNzUtdXNiMi5vCiBvYmotJChDT05GSUdfUEhZX0JFUkxJ Tl9TQVRBKQkJKz0gcGh5LWJlcmxpbi1zYXRhLm8KIG9iai0kKENPTkZJR19QSFlfQkVSTElOX1VT QikJCSs9IHBoeS1iZXJsaW4tdXNiLm8KIG9iai0kKENPTkZJR19QSFlfTVZFQlVfQTM3MDBfQ09N UEhZKQkrPSBwaHktbXZlYnUtYTM3MDAtY29tcGh5Lm8KK29iai0kKENPTkZJR19QSFlfTVZFQlVf QTM3MDBfVVRNSSkJKz0gcGh5LW12ZWJ1LWEzNzAwLXV0bWkubwogb2JqLSQoQ09ORklHX1BIWV9N VkVCVV9DUDExMF9DT01QSFkpCSs9IHBoeS1tdmVidS1jcDExMC1jb21waHkubwogb2JqLSQoQ09O RklHX1BIWV9NVkVCVV9TQVRBKQkJKz0gcGh5LW12ZWJ1LXNhdGEubwogb2JqLSQoQ09ORklHX1BI WV9QWEFfMjhOTV9IU0lDKQkJKz0gcGh5LXB4YS0yOG5tLWhzaWMubwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9waHkvbWFydmVsbC9waHktbXZlYnUtYTM3MDAtdXRtaS5jIGIvZHJpdmVycy9waHkvbWFy dmVsbC9waHktbXZlYnUtYTM3MDAtdXRtaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uOTRhMjlkZWE1N2FmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkv bWFydmVsbC9waHktbXZlYnUtYTM3MDAtdXRtaS5jCkBAIC0wLDAgKzEsMjc4IEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBN YXJ2ZWxsCisgKgorICogQXV0aG9yczoKKyAqICAgSWdhbCBMaWJlcm1hbiA8aWdhbGxAbWFydmVs bC5jb20+CisgKiAgIE1pcXXDqGwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgor ICoKKyAqIE1hcnZlbGwgQTM3MDAgVVRNSSBQSFkgZHJpdmVyCisgKi8KKworI2luY2x1ZGUgPGxp bnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+CisjaW5jbHVkZSA8bGludXgvbWZk L3N5c2Nvbi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29m X2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KKyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKworLyogQXJtYWRh IDM3MDAgVVRNSSBQSFkgcmVnaXN0ZXJzICovCisjZGVmaW5lIFVTQjJfUEhZX1BMTF9DVFJMX1JF RzAJCQkweDAKKyNkZWZpbmUgICBQTExfUkVGX0RJVl9PRkYJCQkwCisjZGVmaW5lICAgUExMX1JF Rl9ESVZfTUFTSwkJCUdFTk1BU0soNiwgMCkKKyNkZWZpbmUgICBQTExfUkVGX0RJVl81CQkJCTUK KyNkZWZpbmUgICBQTExfRkJfRElWX09GRgkJCTE2CisjZGVmaW5lICAgUExMX0ZCX0RJVl9NQVNL CQkJR0VOTUFTSygyNCwgMTYpCisjZGVmaW5lICAgUExMX0ZCX0RJVl85NgkJCQk5NgorI2RlZmlu ZSAgIFBMTF9TRUxfTFBGUl9PRkYJCQkyOAorI2RlZmluZSAgIFBMTF9TRUxfTFBGUl9NQVNLCQkJ R0VOTUFTSygyOSwgMjgpCisjZGVmaW5lICAgUExMX1JFQURZCQkJCUJJVCgzMSkKKyNkZWZpbmUg VVNCMl9QSFlfQ0FMX0NUUkwJCQkweDgKKyNkZWZpbmUgICBQSFlfUExMQ0FMX0RPTkUJCQlCSVQo MzEpCisjZGVmaW5lICAgUEhZX0lNUENBTF9ET05FCQkJQklUKDIzKQorI2RlZmluZSBVU0IyX1JY X0NIQU5fQ1RSTDEJCQkweDE4CisjZGVmaW5lICAgVVNCMlBIWV9TUUNBTF9ET05FCQkJQklUKDMx KQorI2RlZmluZSBVU0IyX1BIWV9PVEdfQ1RSTAkJCTB4MzQKKyNkZWZpbmUgICBQSFlfUFVfT1RH CQkJCUJJVCg0KQorI2RlZmluZSBVU0IyX1BIWV9DSFJHUl9ERVRFQ1QJCQkweDM4CisjZGVmaW5l ICAgUEhZX0NEUF9FTgkJCQlCSVQoMikKKyNkZWZpbmUgICBQSFlfRENQX0VOCQkJCUJJVCgzKQor I2RlZmluZSAgIFBIWV9QRF9FTgkJCQlCSVQoNCkKKyNkZWZpbmUgICBQSFlfUFVfQ0hSR19EVEMJ CQlCSVQoNSkKKyNkZWZpbmUgICBQSFlfQ0RQX0RNX0FVVE8JCQlCSVQoNykKKyNkZWZpbmUgICBQ SFlfRU5TV0lUQ0hfRFAJCQlCSVQoMTIpCisjZGVmaW5lICAgUEhZX0VOU1dJVENIX0RNCQkJQklU KDEzKQorCisvKiBBcm1hZGEgMzcwMCBVU0IgbWlzY2VsbGFuZW91cyByZWdpc3RlcnMgKi8KKyNk ZWZpbmUgVVNCMl9QSFlfQ1RSTCh1c2IzMikJCQkodXNiMzIgPyAweDIwIDogMHg0KQorI2RlZmlu ZSAgIFJCX1VTQjJQSFlfUFUJCQkJQklUKDApCisjZGVmaW5lICAgVVNCMl9EUF9QVUxMRE5fREVW X01PREUJCUJJVCg1KQorI2RlZmluZSAgIFVTQjJfRE1fUFVMTEROX0RFVl9NT0RFCQlCSVQoNikK KyNkZWZpbmUgICBSQl9VU0IyUEhZX1NVU1BNKHVzYjMyKQkJKHVzYjMyID8gQklUKDE0KSA6IEJJ VCg3KSkKKworI2RlZmluZSBQTExfTE9DS19ERUxBWV9VUwkJCTEwMDAwCisjZGVmaW5lIFBMTF9M T0NLX1RJTUVPVVRfVVMJCQkxMDAwMDAwCisKKy8qKgorICogc3RydWN0IG12ZWJ1X2EzNzAwX3V0 bWlfY2FwcyAtIFBIWSBjYXBhYmlsaXRpZXMKKyAqCisgKiBAdXNiMzI6IEZsYWcgaW5kaWNhdGlu ZyB3aGljaCBQSFkgaXMgaW4gdXNlIChpbXBhY3RzIHRoZSByZWdpc3RlciBtYXApOgorICogICAg ICAgICAgIC0gVGhlIFVUTUkgUEhZIHdpcmVkIHRvIHRoZSBVU0IzL1VTQjIgY29udHJvbGxlciAo b3RnKQorICogICAgICAgICAgIC0gVGhlIFVUTUkgUEhZIHdpcmVkIHRvIHRoZSBVU0IyIGNvbnRy b2xsZXIgKGhvc3Qgb25seSkKKyAqIEBvcHM6IFBIWSBvcGVyYXRpb25zCisgKi8KK3N0cnVjdCBt dmVidV9hMzcwMF91dG1pX2NhcHMgeworCWludCB1c2IzMjsKKwljb25zdCBzdHJ1Y3QgcGh5X29w cyAqb3BzOworfTsKKworLyoqCisgKiBzdHJ1Y3QgbXZlYnVfYTM3MDBfdXRtaSAtIFBIWSBkcml2 ZXIgZGF0YQorICoKKyAqIEByZWdzOiBQSFkgcmVnaXN0ZXJzCisgKiBAdXNiX21pczogUmVnbWFw IHdpdGggVVNCIG1pc2NlbGxhbmVvdXMgcmVnaXN0ZXJzIGluY2x1ZGluZyBQSFkgb25lcworICog QGNhcHM6IFBIWSBjYXBhYmlsaXRpZXMKKyAqIEBwaHk6IFBIWSBoYW5kbGUKKyAqLworc3RydWN0 IG12ZWJ1X2EzNzAwX3V0bWkgeworCXZvaWQgX19pb21lbSAqcmVnczsKKwlzdHJ1Y3QgcmVnbWFw ICp1c2JfbWlzYzsKKwljb25zdCBzdHJ1Y3QgbXZlYnVfYTM3MDBfdXRtaV9jYXBzICpjYXBzOwor CXN0cnVjdCBwaHkgKnBoeTsKK307CisKK3N0YXRpYyBpbnQgbXZlYnVfYTM3MDBfdXRtaV9waHlf cG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBtdmVidV9hMzcwMF91dG1pICp1 dG1pID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBoeS0+ ZGV2OworCWludCB1c2IzMiA9IHV0bWktPmNhcHMtPnVzYjMyOworCWludCByZXQgPSAwOworCXUz MiByZWc7CisKKwkvKgorCSAqIFNldHVwIFBMTC4gNDBNSHogY2xvY2sgdXNlZCB0byBiZSB0aGUg ZGVmYXVsdCwgYmVpbmcgMjVNSHogbm93LgorCSAqIFNlZSAiUExMIFNldHRpbmdzIGZvciBUeXBp Y2FsIFJFRkNMSyIgdGFibGUuCisJICovCisJcmVnID0gcmVhZGwodXRtaS0+cmVncyArIFVTQjJf UEhZX1BMTF9DVFJMX1JFRzApOworCXJlZyAmPSB+KFBMTF9SRUZfRElWX01BU0sgfCBQTExfRkJf RElWX01BU0sgfCBQTExfU0VMX0xQRlJfTUFTSyk7CisJcmVnIHw9IChQTExfUkVGX0RJVl81IDw8 IFBMTF9SRUZfRElWX09GRikgfAorCSAgICAgICAoUExMX0ZCX0RJVl85NiA8PCBQTExfRkJfRElW X09GRik7CisJd3JpdGVsKHJlZywgdXRtaS0+cmVncyArIFVTQjJfUEhZX1BMTF9DVFJMX1JFRzAp OworCisJLyogRW5hYmxlIFBIWSBwdWxsIHVwIGFuZCBkaXNhYmxlIFVTQjIgc3VzcGVuZCAqLwor CXJlZ21hcF91cGRhdGVfYml0cyh1dG1pLT51c2JfbWlzYywgVVNCMl9QSFlfQ1RSTCh1c2IzMiks CisJCQkgICBSQl9VU0IyUEhZX1NVU1BNKHVzYjMyKSB8IFJCX1VTQjJQSFlfUFUsCisJCQkgICBS Ql9VU0IyUEhZX1NVU1BNKHVzYjMyKSB8IFJCX1VTQjJQSFlfUFUpOworCisJaWYgKHVzYjMyKSB7 CisJCS8qIFBvd2VyIHVwIE9URyBtb2R1bGUgKi8KKwkJcmVnID0gcmVhZGwodXRtaS0+cmVncyAr IFVTQjJfUEhZX09UR19DVFJMKTsKKwkJcmVnIHw9IFBIWV9QVV9PVEc7CisJCXdyaXRlbChyZWcs IHV0bWktPnJlZ3MgKyBVU0IyX1BIWV9PVEdfQ1RSTCk7CisKKwkJLyogRGlzYWJsZSBQSFkgY2hh cmdlciBkZXRlY3Rpb24gKi8KKwkJcmVnID0gcmVhZGwodXRtaS0+cmVncyArIFVTQjJfUEhZX0NI UkdSX0RFVEVDVCk7CisJCXJlZyAmPSB+KFBIWV9DRFBfRU4gfCBQSFlfRENQX0VOIHwgUEhZX1BE X0VOIHwgUEhZX1BVX0NIUkdfRFRDIHwKKwkJCSBQSFlfQ0RQX0RNX0FVVE8gfCBQSFlfRU5TV0lU Q0hfRFAgfCBQSFlfRU5TV0lUQ0hfRE0pOworCQl3cml0ZWwocmVnLCB1dG1pLT5yZWdzICsgVVNC Ml9QSFlfQ0hSR1JfREVURUNUKTsKKworCQkvKiBEaXNhYmxlIFBIWSBEUC9ETSBwdWxsLWRvd24g KHVzZWQgZm9yIGRldmljZSBtb2RlKSAqLworCQlyZWdtYXBfdXBkYXRlX2JpdHModXRtaS0+dXNi X21pc2MsIFVTQjJfUEhZX0NUUkwodXNiMzIpLAorCQkJCSAgIFVTQjJfRFBfUFVMTEROX0RFVl9N T0RFIHwKKwkJCQkgICBVU0IyX0RNX1BVTExETl9ERVZfTU9ERSwgMCk7CisJfQorCisJLyogV2Fp dCBmb3IgUExMIGNhbGlicmF0aW9uICovCisJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KHV0bWkt PnJlZ3MgKyBVU0IyX1BIWV9DQUxfQ1RSTCwgcmVnLAorCQkJCSByZWcgJiBQSFlfUExMQ0FMX0RP TkUsCisJCQkJIFBMTF9MT0NLX0RFTEFZX1VTLCBQTExfTE9DS19USU1FT1VUX1VTKTsKKwlpZiAo cmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGVuZCBVU0IyIFBMTCBjYWxpYnJhdGlv blxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogV2FpdCBmb3IgaW1wZWRhbmNlIGNhbGli cmF0aW9uICovCisJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KHV0bWktPnJlZ3MgKyBVU0IyX1BI WV9DQUxfQ1RSTCwgcmVnLAorCQkJCSByZWcgJiBQSFlfSU1QQ0FMX0RPTkUsCisJCQkJIFBMTF9M T0NLX0RFTEFZX1VTLCBQTExfTE9DS19USU1FT1VUX1VTKTsKKwlpZiAocmV0KSB7CisJCWRldl9l cnIoZGV2LCAiRmFpbGVkIHRvIGVuZCBVU0IyIGltcGVkYW5jZSBjYWxpYnJhdGlvblxuIik7CisJ CXJldHVybiByZXQ7CisJfQorCisJLyogV2FpdCBmb3Igc3F1ZWxjaCBjYWxpYnJhdGlvbiAqLwor CXJldCA9IHJlYWRsX3BvbGxfdGltZW91dCh1dG1pLT5yZWdzICsgVVNCMl9SWF9DSEFOX0NUUkwx LCByZWcsCisJCQkJIHJlZyAmIFVTQjJQSFlfU1FDQUxfRE9ORSwKKwkJCQkgUExMX0xPQ0tfREVM QVlfVVMsIFBMTF9MT0NLX1RJTUVPVVRfVVMpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYs ICJGYWlsZWQgdG8gZW5kIFVTQjIgdW5rbm93biBjYWxpYnJhdGlvblxuIik7CisJCXJldHVybiBy ZXQ7CisJfQorCisJLyogV2FpdCBmb3IgUExMIHRvIGJlIGxvY2tlZCAqLworCXJldCA9IHJlYWRs X3BvbGxfdGltZW91dCh1dG1pLT5yZWdzICsgVVNCMl9QSFlfUExMX0NUUkxfUkVHMCwgcmVnLAor CQkJCSByZWcgJiBQTExfUkVBRFksCisJCQkJIFBMTF9MT0NLX0RFTEFZX1VTLCBQTExfTE9DS19U SU1FT1VUX1VTKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBsb2NrIFVT QjIgUExMXG4iKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgbXZlYnVfYTM3MDBf dXRtaV9waHlfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgbXZlYnVfYTM3 MDBfdXRtaSAqdXRtaSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCWludCB1c2IzMiA9IHV0bWkt PmNhcHMtPnVzYjMyOworCXUzMiByZWc7CisKKwkvKiBEaXNhYmxlIFBIWSBwdWxsLXVwIGFuZCBl bmFibGUgVVNCMiBzdXNwZW5kICovCisJcmVnID0gcmVhZGwodXRtaS0+cmVncyArIFVTQjJfUEhZ X0NUUkwodXNiMzIpKTsKKwlyZWcgJj0gfihSQl9VU0IyUEhZX1BVIHwgUkJfVVNCMlBIWV9TVVNQ TSh1c2IzMikpOworCXdyaXRlbChyZWcsIHV0bWktPnJlZ3MgKyBVU0IyX1BIWV9DVFJMKHVzYjMy KSk7CisKKwkvKiBQb3dlciBkb3duIE9URyBtb2R1bGUgKi8KKwlpZiAodXNiMzIpIHsKKwkJcmVn ID0gcmVhZGwodXRtaS0+cmVncyArIFVTQjJfUEhZX09UR19DVFJMKTsKKwkJcmVnICY9IH5QSFlf UFVfT1RHOworCQl3cml0ZWwocmVnLCB1dG1pLT5yZWdzICsgVVNCMl9QSFlfT1RHX0NUUkwpOwor CX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgbXZlYnVf YTM3MDBfdXRtaV9waHlfb3BzID0geworCS5wb3dlcl9vbiA9IG12ZWJ1X2EzNzAwX3V0bWlfcGh5 X3Bvd2VyX29uLAorCS5wb3dlcl9vZmYgPSBtdmVidV9hMzcwMF91dG1pX3BoeV9wb3dlcl9vZmYs CisJLm93bmVyID0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG12ZWJ1 X2EzNzAwX3V0bWlfY2FwcyBtdmVidV9hMzcwMF91dG1pX290Z19waHlfY2FwcyA9IHsKKwkudXNi MzIgPSB0cnVlLAorCS5vcHMgPSAmbXZlYnVfYTM3MDBfdXRtaV9waHlfb3BzLAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBtdmVidV9hMzcwMF91dG1pX2NhcHMgbXZlYnVfYTM3MDBfdXRtaV9o b3N0X3BoeV9jYXBzID0geworCS51c2IzMiA9IGZhbHNlLAorCS5vcHMgPSAmbXZlYnVfYTM3MDBf dXRtaV9waHlfb3BzLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXZl YnVfYTM3MDBfdXRtaV9vZl9tYXRjaFtdID0geworCXsKKwkJLmNvbXBhdGlibGUgPSAibWFydmVs bCxhMzcwMC11dG1pLW90Zy1waHkiLAorCQkuZGF0YSA9ICZtdmVidV9hMzcwMF91dG1pX290Z19w aHlfY2FwcywKKwl9LAorCXsKKwkJLmNvbXBhdGlibGUgPSAibWFydmVsbCxhMzcwMC11dG1pLWhv c3QtcGh5IiwKKwkJLmRhdGEgPSAmbXZlYnVfYTM3MDBfdXRtaV9ob3N0X3BoeV9jYXBzLAorCX0s CisJe30sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXZlYnVfYTM3MDBfdXRtaV9vZl9t YXRjaCk7CisKK3N0YXRpYyBpbnQgbXZlYnVfYTM3MDBfdXRtaV9waHlfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2 OworCXN0cnVjdCBtdmVidV9hMzcwMF91dG1pICp1dG1pOworCXN0cnVjdCBwaHlfcHJvdmlkZXIg KnByb3ZpZGVyOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOworCisJdXRtaSA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqdXRtaSksIEdGUF9LRVJORUwpOworCWlmICghdXRtaSkKKwkJcmV0dXJu IC1FTk9NRU07CisKKwkvKiBHZXQgVVRNSSBtZW1vcnkgcmVnaW9uICovCisJcmVzID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlpZiAoIXJlcykgewor CQlkZXZfZXJyKGRldiwgIk1pc3NpbmcgVVRNSSBQSFkgbWVtb3J5IHJlc291cmNlXG4iKTsKKwkJ cmV0dXJuIC1FTk9ERVY7CisJfQorCisJdXRtaS0+cmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJj ZShkZXYsIHJlcyk7CisJaWYgKElTX0VSUih1dG1pLT5yZWdzKSkKKwkJcmV0dXJuIFBUUl9FUlIo dXRtaS0+cmVncyk7CisKKwkvKiBHZXQgbWlzY2VsbGFuZW91cyBIb3N0L1BIWSByZWdpb24gKi8K Kwl1dG1pLT51c2JfbWlzYyA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGUoZGV2LT5v Zl9ub2RlLAorCQkJCQkJCSAibWFydmVsbCx1c2ItbWlzYy1yZWciKTsKKwlpZiAoSVNfRVJSKHV0 bWktPnVzYl9taXNjKSkgeworCQlkZXZfZXJyKGRldiwKKwkJCSJNaXNzaW5nIFVTQiBtaXNjIHB1 cnBvc2Ugc3lzdGVtIGNvbnRyb2xsZXJcbiIpOworCQlyZXR1cm4gUFRSX0VSUih1dG1pLT51c2Jf bWlzYyk7CisJfQorCisJLyogUmV0cmlldmUgUEhZIGNhcGFiaWxpdGllcyAqLworCXV0bWktPmNh cHMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKKworCS8qIEluc3RhbnRpYXRlIHRo ZSBQSFkgKi8KKwl1dG1pLT5waHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCB1dG1pLT5j YXBzLT5vcHMpOworCWlmIChJU19FUlIodXRtaS0+cGh5KSkgeworCQlkZXZfZXJyKGRldiwgIkZh aWxlZCB0byBjcmVhdGUgdGhlIFVUTUkgUEhZXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIodXRtaS0+ cGh5KTsKKwl9CisKKwlwaHlfc2V0X2RydmRhdGEodXRtaS0+cGh5LCB1dG1pKTsKKworCS8qIEVu c3VyZSB0aGUgUEhZIGlzIHBvd2VyZWQgb2ZmICovCisJdXRtaS0+Y2Fwcy0+b3BzLT5wb3dlcl9v ZmYodXRtaS0+cGh5KTsKKworCXByb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0 ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTsKKworCXJldHVybiBQVFJfRVJSX09SX1pFUk8o cHJvdmlkZXIpOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdmVidV9hMzcw MF91dG1pX2RyaXZlciA9IHsKKwkucHJvYmUJPSBtdmVidV9hMzcwMF91dG1pX3BoeV9wcm9iZSwK KwkuZHJpdmVyCT0geworCQkubmFtZQkJPSAibXZlYnUtYTM3MDAtdXRtaS1waHkiLAorCQkub3du ZXIJCT0gVEhJU19NT0RVTEUsCisJCS5vZl9tYXRjaF90YWJsZQk9IG12ZWJ1X2EzNzAwX3V0bWlf b2ZfbWF0Y2gsCisJIH0sCit9OworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdmVidV9hMzcwMF91 dG1pX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1IoIklnYWwgTGliZXJtYW4gPGlnYWxsQG1hcnZl bGwuY29tPiIpOworTU9EVUxFX0FVVEhPUigiTWlxdWVsIFJheW5hbCA8bWlxdWVsLnJheW5hbEBi b290bGluLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiTWFydmVsbCBFQlUgQTM3MDAgVVRN SSBQSFkgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Ci0tIAoyLjE5LjEKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==