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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,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 4A29DC2B9F4 for ; Tue, 22 Jun 2021 07:57:55 +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 1CE5261289 for ; Tue, 22 Jun 2021 07:57:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1CE5261289 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=tkos.co.il Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=MgGwUyLZd4Vl8TQQn0gCAtliw0k2NOu9SVFNP1dGqXc=; b=lJ5HuFbqgKGl5s 73Icd3rPURXs06GCi5L70c79VmBAyHVJv+Bbm3Kuf/swyUY6ulDCIjT1xwqo/nL75oMdwS+3VeKWE ffcTg6hYTQVorAlEk+gffZ3An2Wr+0Z5PbGFm7uzr/f43K/+5iUQt+vo8GErezQY9yCcrfz4AbmKG nnW4mnAp92Ht7kCMngvPQuo01cpaixv5aYw595iFopeS5Dl58VniPDrSAwpWwJzgsIUPJRPLHWpf/ sv7zZkHK13je8VIG+LNUjVuv5V97SsduUqNK243a2OCrjqT2ubxcKh7mWySFwclPqf//YG+yGvXGi IXrOnJ1ZMf9gmhUWCuxw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvbGU-0067yu-B8; Tue, 22 Jun 2021 07:56:10 +0000 Received: from guitar.tcltek.co.il ([192.115.133.116] helo=mx.tkos.co.il) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvbFm-0067iL-2T for linux-arm-kernel@lists.infradead.org; Tue, 22 Jun 2021 07:55:29 +0000 Received: from tarshish.tkos.co.il (unknown [10.0.8.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx.tkos.co.il (Postfix) with ESMTPS id 71E07440209; Tue, 22 Jun 2021 10:55:08 +0300 (IDT) From: Baruch Siach To: Thierry Reding , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Lee Jones Cc: Baruch Siach , Andy Gross , Bjorn Andersson , Balaji Prakash J , Rob Herring , Robert Marko , linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 1/3] pwm: driver for qualcomm ipq6018 pwm block Date: Tue, 22 Jun 2021 10:55:00 +0300 Message-Id: X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210622_005526_636965_291BF7DF X-CRM114-Status: GOOD ( 29.05 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RHJpdmVyIGZvciB0aGUgUFdNIGJsb2NrIGluIFF1YWxjb21tIElQUTYwMTggbGluZSBvZiBTb0Nz LiBCYXNlZCBvbgpkcml2ZXIgZnJvbSBkb3duc3RyZWFtIENvZGVhdXJvcmEga2VybmVsIHRyZWUu IFJlbW92ZWQgc3VwcG9ydCBmb3Igb2xkZXIKKFYxKSB2YXJpYW50cyBiZWNhdXNlIEkgaGF2ZSBu byBhY2Nlc3MgdG8gdGhhdCBoYXJkd2FyZS4KClRlc3RlZCBvbiBJUFE2MDEwIGJhc2VkIGhhcmR3 YXJlLgoKU2lnbmVkLW9mZi1ieTogQmFydWNoIFNpYWNoIDxiYXJ1Y2hAdGtvcy5jby5pbD4KLS0t CnYzOgoKICBzL3Fjb20scHdtLWlwcTYwMTgvcWNvbSxpcHE2MDE4LXB3bS8gKFJvYiBIZXJyaW5n KQoKICBGaXggaW50ZWdlciBvdmVyZmxvdyBvbiAzMi1iaXQgdGFyZ2V0cyAoa2VybmVsIHRlc3Qg cm9ib3QgPGxrcEBpbnRlbC5jb20+KQoKdjI6CgpBZGRyZXNzIFV3ZSBLbGVpbmUtS8O2bmlnIHJl dmlldyBjb21tZW50czoKCiAgRml4IHBlcmlvZCBjYWxjdWxhdGlvbiB3aGVuIG91dCBvZiByYW5n ZQoKICBEb24ndCBzZXQgcGVyaW9kIGxhcmdlciB0aGFuIHJlcXVlc3RlZAoKICBSZW1vdmUgUFdN IGRpc2FibGUgb24gY29uZmlndXJhdGlvbiBjaGFuZ2UKCiAgSW1wbGVtZW50IC5hcHBseSBpbnN0 ZWFkIG9mIG5vbi1hdG9taWMgLmNvbmZpZy8uZW5hYmxlLy5kaXNhYmxlCgogIERvbid0IG1vZGlm eSBQV00gb24gLnJlcXVlc3QvLmZyZWUKCiAgQ2hlY2sgcHdtX2RpdiB1bmRlcmZsb3cKCiAgRml4 IHZhcmlvdXMgY29kZSBhbmQgY29tbWVudCBmb3JtYXR0aW5nIGlzc3VlcwoKT3RoZXIgY2hhbmdl czoKCiAgVXNlIHU2NCBkaXZpc29yIHNhZmUgZGl2aXNpb24KCiAgUmVtb3ZlIG5vdyBlbXB0eSAu cmVxdWVzdC8uZnJlZQotLS0KIGRyaXZlcnMvcHdtL0tjb25maWcgICB8ICAxMiArKysKIGRyaXZl cnMvcHdtL01ha2VmaWxlICB8ICAgMSArCiBkcml2ZXJzL3B3bS9wd20taXBxLmMgfCAyMzggKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDI1MSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wd20vcHdtLWlw cS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vS2NvbmZpZyBiL2RyaXZlcnMvcHdtL0tjb25m aWcKaW5kZXggYzc2YWRlZGQ1OGM5Li4wOGFkZDg0NTU5NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv cHdtL0tjb25maWcKKysrIGIvZHJpdmVycy9wd20vS2NvbmZpZwpAQCAtMjYwLDYgKzI2MCwxOCBA QCBjb25maWcgUFdNX0lOVEVMX0xHTQogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1v ZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxsZWQgcHdtLWlu dGVsLWxnbS4KIAorY29uZmlnIFBXTV9JUFEKKwl0cmlzdGF0ZSAiSVBRIFBXTSBzdXBwb3J0Igor CWRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVAorCWRlcGVuZHMgb24gSEFWRV9D TEsgJiYgSEFTX0lPTUVNCisJaGVscAorCSAgR2VuZXJpYyBQV00gZnJhbWV3b3JrIGRyaXZlciBm b3IgSVBRIFBXTSBibG9jayB3aGljaCBzdXBwb3J0cworCSAgNCBwd20gY2hhbm5lbHMuIEVhY2gg b2YgdGhlIHRoZXNlIGNoYW5uZWxzIGNhbiBiZSBjb25maWd1cmVkCisJICBpbmRlcGVuZGVudCBv ZiBlYWNoIG90aGVyLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBj aG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlCisJICB3aWxsIGJlIGNhbGxlZCBwd20taXBxLgorCiBj b25maWcgUFdNX0lRUzYyMEEKIAl0cmlzdGF0ZSAiQXpvdGVxIElRUzYyMEEgUFdNIHN1cHBvcnQi CiAJZGVwZW5kcyBvbiBNRkRfSVFTNjJYIHx8IENPTVBJTEVfVEVTVApkaWZmIC0tZ2l0IGEvZHJp dmVycy9wd20vTWFrZWZpbGUgYi9kcml2ZXJzL3B3bS9NYWtlZmlsZQppbmRleCA3MDg4NDBiN2Zi YTguLjc0MDJmZWFlNGIzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wd20vTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9wd20vTWFrZWZpbGUKQEAgLTIyLDYgKzIyLDcgQEAgb2JqLSQoQ09ORklHX1BXTV9J TVgxKQkJKz0gcHdtLWlteDEubwogb2JqLSQoQ09ORklHX1BXTV9JTVgyNykJCSs9IHB3bS1pbXgy Ny5vCiBvYmotJChDT05GSUdfUFdNX0lNWF9UUE0pCSs9IHB3bS1pbXgtdHBtLm8KIG9iai0kKENP TkZJR19QV01fSU5URUxfTEdNKQkrPSBwd20taW50ZWwtbGdtLm8KK29iai0kKENPTkZJR19QV01f SVBRKQkJKz0gcHdtLWlwcS5vCiBvYmotJChDT05GSUdfUFdNX0lRUzYyMEEpCSs9IHB3bS1pcXM2 MjBhLm8KIG9iai0kKENPTkZJR19QV01fSlo0NzQwKQkrPSBwd20tano0NzQwLm8KIG9iai0kKENP TkZJR19QV01fS0VFTUJBWSkJKz0gcHdtLWtlZW1iYXkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9w d20vcHdtLWlwcS5jIGIvZHJpdmVycy9wd20vcHdtLWlwcS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNTJiOTNiNzgzMWYxCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9wd20vcHdtLWlwcS5jCkBAIC0wLDAgKzEsMjM4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTMtQ2xhdXNlIE9SIEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw MTYtMjAxNywgMjAyMCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcHdtLmg+CisjaW5jbHVkZSA8bGludXgvY2xr Lmg+CisjaW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9tYXRoNjQuaD4KKyNp bmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KKworI2RlZmluZSBDTEtfU1JDX0ZSRVEJCSgxMDAq MTAwMCoxMDAwKQorI2RlZmluZSBNQVhfUFdNX0RFVklDRVMJCTQKKworLyoKKyAqIEVuYWJsZSBi aXQgaXMgc2V0IHRvIGVuYWJsZSBvdXRwdXQgdG9nZ2xpbmcgaW4gcHdtIGRldmljZS4KKyAqIFVw ZGF0ZSBiaXQgaXMgc2V0IHRvIHJlZmxlY3QgdGhlIGNoYW5nZWQgZGl2aWRlciBhbmQgaGlnaCBk dXJhdGlvbgorICogdmFsdWVzIGluIHJlZ2lzdGVyLgorICovCisjZGVmaW5lIFBXTV9FTkFCTEUJ CTB4ODAwMDAwMDAKKyNkZWZpbmUgUFdNX1VQREFURQkJMHg0MDAwMDAwMAorCisvKiBUaGUgZnJl cXVlbmN5IHJhbmdlIHN1cHBvcnRlZCBpcyAxSHogdG8gMTAwTUh6ICovCisjZGVmaW5lIE1JTl9Q RVJJT0RfTlMJMTAKKyNkZWZpbmUgTUFYX1BFUklPRF9OUwkxMDAwMDAwMDAwCisKKy8qCisgKiBU aGUgbWF4IHZhbHVlIHNwZWNpZmllZCBmb3IgZWFjaCBmaWVsZCBpcyBiYXNlZCBvbiB0aGUgbnVt YmVyIG9mIGJpdHMKKyAqIGluIHRoZSBwd20gY29udHJvbCByZWdpc3RlciBmb3IgdGhhdCBmaWVs ZAorICovCisjZGVmaW5lIE1BWF9QV01fQ0ZHCQkweEZGRkYKKworI2RlZmluZSBQV01fQ1RSTF9I SV9TSElGVAkxNgorCisjZGVmaW5lIFBXTV9DRkdfUkVHMCAwIC8qUFdNX0RJViBQV01fSEkqLwor I2RlZmluZSBQV01fQ0ZHX1JFRzEgMSAvKkVOQUJMRSBVUERBVEUgUFdNX1BSRV9ESVYqLworCitz dHJ1Y3QgaXBxX3B3bV9jaGlwIHsKKwlzdHJ1Y3QgcHdtX2NoaXAgY2hpcDsKKwlzdHJ1Y3QgY2xr ICpjbGs7CisJdm9pZCBfX2lvbWVtICptZW07Cit9OworCitzdGF0aWMgc3RydWN0IGlwcV9wd21f Y2hpcCAqdG9faXBxX3B3bV9jaGlwKHN0cnVjdCBwd21fY2hpcCAqY2hpcCkKK3sKKwlyZXR1cm4g Y29udGFpbmVyX29mKGNoaXAsIHN0cnVjdCBpcHFfcHdtX2NoaXAsIGNoaXApOworfQorCitzdGF0 aWMgdW5zaWduZWQgaXBxX3B3bV9yZWdfb2Zmc2V0KHN0cnVjdCBwd21fZGV2aWNlICpwd20sIHVu c2lnbmVkIHJlZykKK3sKKwlyZXR1cm4gKChwd20tPmh3cHdtICogMikgKyByZWcpICogNDsKK30K Kworc3RhdGljIHZvaWQgY29uZmlnX2Rpdl9hbmRfZHV0eShzdHJ1Y3QgcHdtX2RldmljZSAqcHdt LCBpbnQgcHJlX2RpdiwKKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyBwd21fZGl2LCB1bnNpZ25lZCBs b25nIHBlcmlvZF9ucywKKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyBkdXR5X25zKQoreworCXVuc2ln bmVkIGxvbmcgaGlfZHVyOworCXVuc2lnbmVkIGxvbmcgbG9uZyBxdW90aWVudDsKKwl1bnNpZ25l ZCBsb25nIHZhbCA9IDA7CisJc3RydWN0IGlwcV9wd21fY2hpcCAqaXBxX2NoaXAgPSB0b19pcHFf cHdtX2NoaXAocHdtLT5jaGlwKTsKKworCS8qCisJICogaGlnaCBkdXJhdGlvbiA9IHB3bSBkdXR5 ICogKHB3bSBkaXYgKyAxKQorCSAqIHB3bSBkdXR5ID0gZHV0eV9ucyAvIHBlcmlvZF9ucworCSAq LworCXF1b3RpZW50ID0gKHB3bV9kaXYgKyAxKSAqIGR1dHlfbnM7CisJaGlfZHVyID0gZGl2NjRf dTY0KHF1b3RpZW50LCBwZXJpb2RfbnMpOworCisJdmFsIHw9ICgoaGlfZHVyICYgTUFYX1BXTV9D RkcpIDw8IFBXTV9DVFJMX0hJX1NISUZUKTsKKwl2YWwgfD0gKHB3bV9kaXYgJiBNQVhfUFdNX0NG Ryk7CisJd3JpdGVsKHZhbCwgaXBxX2NoaXAtPm1lbSArIGlwcV9wd21fcmVnX29mZnNldChwd20s IFBXTV9DRkdfUkVHMCkpOworCXZhbCA9IHByZV9kaXYgJiBNQVhfUFdNX0NGRzsKKwl3cml0ZWwo dmFsLCBpcHFfY2hpcC0+bWVtICsgaXBxX3B3bV9yZWdfb2Zmc2V0KHB3bSwgUFdNX0NGR19SRUcx KSk7Cit9CisKK3N0YXRpYyBpbnQgaXBxX3B3bV9lbmFibGUoc3RydWN0IHB3bV9kZXZpY2UgKnB3 bSkKK3sKKwlzdHJ1Y3QgaXBxX3B3bV9jaGlwICppcHFfY2hpcCA9IHRvX2lwcV9wd21fY2hpcChw d20tPmNoaXApOworCXVuc2lnbmVkIG9mZnNldCA9IGlwcV9wd21fcmVnX29mZnNldChwd20sIFBX TV9DRkdfUkVHMSk7CisJdW5zaWduZWQgbG9uZyB2YWw7CisKKwl2YWwgPSByZWFkbChpcHFfY2hp cC0+bWVtICsgb2Zmc2V0KTsKKwl2YWwgfD0gUFdNX0VOQUJMRSB8IFBXTV9VUERBVEU7CisJd3Jp dGVsKHZhbCwgaXBxX2NoaXAtPm1lbSArIG9mZnNldCk7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgaXBxX3B3bV9kaXNhYmxlKHN0cnVjdCBwd21fZGV2aWNlICpwd20pCit7CisJc3Ry dWN0IGlwcV9wd21fY2hpcCAqaXBxX2NoaXAgPSB0b19pcHFfcHdtX2NoaXAocHdtLT5jaGlwKTsK Kwl1bnNpZ25lZCBvZmZzZXQgPSBpcHFfcHdtX3JlZ19vZmZzZXQocHdtLCBQV01fQ0ZHX1JFRzEp OworCXVuc2lnbmVkIGxvbmcgdmFsOworCisJdmFsID0gcmVhZGwoaXBxX2NoaXAtPm1lbSArIG9m ZnNldCk7CisJdmFsIHw9IFBXTV9VUERBVEU7CisJdmFsICY9IH5QV01fRU5BQkxFOworCXdyaXRl bCh2YWwsIGlwcV9jaGlwLT5tZW0gKyBvZmZzZXQpOworfQorCitzdGF0aWMgaW50IGlwcV9wd21f YXBwbHkoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtLAorCQkJ IGNvbnN0IHN0cnVjdCBwd21fc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBpcHFfcHdtX2NoaXAg KmlwcV9jaGlwID0gdG9faXBxX3B3bV9jaGlwKGNoaXApOworCXVuc2lnbmVkIGxvbmcgZnJlcTsK KwlpbnQgcHJlX2RpdiwgY2xvc2VfcHJlX2RpdiwgY2xvc2VfcHdtX2RpdjsKKwlpbnQgcHdtX2Rp djsKKwlsb25nIGxvbmcgZGlmZjsKKwl1bnNpZ25lZCBsb25nIHJhdGUgPSBjbGtfZ2V0X3JhdGUo aXBxX2NoaXAtPmNsayk7CisJdW5zaWduZWQgbG9uZyBtaW5fZGlmZiA9IHJhdGU7CisJdWludDY0 X3QgZmluX3BzOworCXU2NCBwZXJpb2RfbnMsIGR1dHlfbnM7CisKKwlpZiAoc3RhdGUtPnBlcmlv ZCA8IE1JTl9QRVJJT0RfTlMpCisJCXJldHVybiAtRVJBTkdFOworCisJcGVyaW9kX25zID0gbWlu X3QodTY0LCBzdGF0ZS0+cGVyaW9kLCBNQVhfUEVSSU9EX05TKTsKKwlkdXR5X25zID0gbWluX3Qo dTY0LCBzdGF0ZS0+ZHV0eV9jeWNsZSwgcGVyaW9kX25zKTsKKworCS8qIGZyZXEgaW4gSHogZm9y IHBlcmlvZCBpbiBuYW5vIHNlY29uZCovCisJZnJlcSA9IE5TRUNfUEVSX1NFQyAvIHBlcmlvZF9u czsKKwlmaW5fcHMgPSBkaXY2NF91NjQoTlNFQ19QRVJfU0VDICogMTAwMFVMTCwgcmF0ZSk7CisJ Y2xvc2VfcHJlX2RpdiA9IE1BWF9QV01fQ0ZHOworCWNsb3NlX3B3bV9kaXYgPSBNQVhfUFdNX0NG RzsKKworCWZvciAocHJlX2RpdiA9IDA7IHByZV9kaXYgPD0gTUFYX1BXTV9DRkc7IHByZV9kaXYr KykgeworCQlwd21fZGl2ID0gRElWNjRfVTY0X1JPVU5EX0NMT1NFU1QocGVyaW9kX25zICogMTAw MCwKKwkJCQkJCSAgZmluX3BzICogKHByZV9kaXYgKyAxKSk7CisJCXB3bV9kaXYtLTsKKwkJaWYg KHB3bV9kaXYgPCAwIHx8IHB3bV9kaXYgPiBNQVhfUFdNX0NGRykKKwkJCWNvbnRpbnVlOworCisJ CWRpZmYgPSAoKHVpbnQ2NF90KWZyZXEgKiAocHJlX2RpdiArIDEpICogKHB3bV9kaXYgKyAxKSkK KwkJCS0gKHVpbnQ2NF90KXJhdGU7CisKKwkJaWYgKGRpZmYgPCAwKSAvKiBwZXJpb2QgbGFyZ2Vy IHRoYW4gcmVxdWVzdGVkICovCisJCQljb250aW51ZTsKKwkJaWYgKGRpZmYgPT0gMCkgeyAvKiBi aW5nbyAqLworCQkJY2xvc2VfcHJlX2RpdiA9IHByZV9kaXY7CisJCQljbG9zZV9wd21fZGl2ID0g cHdtX2RpdjsKKwkJCWJyZWFrOworCQl9CisJCWlmIChkaWZmIDwgbWluX2RpZmYpIHsKKwkJCW1p bl9kaWZmID0gZGlmZjsKKwkJCWNsb3NlX3ByZV9kaXYgPSBwcmVfZGl2OworCQkJY2xvc2VfcHdt X2RpdiA9IHB3bV9kaXY7CisJCX0KKwl9CisKKwkvKiBjb25maWcgZGl2aWRlciB2YWx1ZXMgZm9y IHRoZSBjbG9zZXN0IHBvc3NpYmxlIGZyZXF1ZW5jeSAqLworCWNvbmZpZ19kaXZfYW5kX2R1dHko cHdtLCBjbG9zZV9wcmVfZGl2LCBjbG9zZV9wd21fZGl2LAorCQkJICAgIHBlcmlvZF9ucywgZHV0 eV9ucyk7CisJaWYgKHN0YXRlLT5lbmFibGVkKQorCQlpcHFfcHdtX2VuYWJsZShwd20pOworCWVs c2UKKwkJaXBxX3B3bV9kaXNhYmxlKHB3bSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0 cnVjdCBwd21fb3BzIGlwcV9wd21fb3BzID0geworCS5hcHBseSA9IGlwcV9wd21fYXBwbHksCisJ Lm93bmVyID0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgaW50IGlwcV9wd21fcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgaXBxX3B3bV9jaGlwICpwd207 CisJc3RydWN0IGRldmljZSAqZGV2OworCWludCByZXQ7CisKKwlkZXYgPSAmcGRldi0+ZGV2Owor CXB3bSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHdtKSwgR0ZQX0tFUk5FTCk7CisJaWYg KCFwd20pCisJCXJldHVybiAtRU5PTUVNOworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwg cHdtKTsKKworCXB3bS0+bWVtID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYs IDApOworCWlmIChJU19FUlIocHdtLT5tZW0pKQorCQlyZXR1cm4gUFRSX0VSUihwd20tPm1lbSk7 CisKKwlwd20tPmNsayA9IGRldm1fY2xrX2dldChkZXYsICJjb3JlIik7CisJaWYgKElTX0VSUihw d20tPmNsaykpCisJCXJldHVybiBQVFJfRVJSKHB3bS0+Y2xrKTsKKworCXJldCA9IGNsa19zZXRf cmF0ZShwd20tPmNsaywgQ0xLX1NSQ19GUkVRKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShwd20tPmNsayk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCXB3bS0+Y2hpcC5kZXYgPSBkZXY7CisJcHdtLT5jaGlwLm9wcyA9ICZpcHFfcHdt X29wczsKKwlwd20tPmNoaXAubnB3bSA9IE1BWF9QV01fREVWSUNFUzsKKworCXJldCA9IHB3bWNo aXBfYWRkKCZwd20tPmNoaXApOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnJfcHJvYmUoZGV2 LCByZXQsICJwd21jaGlwX2FkZCgpIGZhaWxlZFxuIik7CisJCWNsa19kaXNhYmxlX3VucHJlcGFy ZShwd20tPmNsayk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgaXBxX3B3bV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlz dHJ1Y3QgaXBxX3B3bV9jaGlwICpwd20gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwor CXB3bWNoaXBfcmVtb3ZlKCZwd20tPmNoaXApOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHB3bV9pcHFfZHRfbWF0Y2hbXSA9IHsKKwl7IC5jb21w YXRpYmxlID0gInFjb20saXBxNjAxOC1wd20iLCB9LAorCXt9Cit9OworTU9EVUxFX0RFVklDRV9U QUJMRShvZiwgcHdtX2lwcV9kdF9tYXRjaCk7CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyIGlwcV9wd21fZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gImlwcS1wd20i LAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKKwkJLm9mX21hdGNoX3RhYmxlID0gcHdtX2lwcV9k dF9tYXRjaCwKKwl9LAorCS5wcm9iZSA9IGlwcV9wd21fcHJvYmUsCisJLnJlbW92ZSA9IGlwcV9w d21fcmVtb3ZlLAorfTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpcHFfcHdtX2RyaXZlcik7 CisKK01PRFVMRV9MSUNFTlNFKCJEdWFsIEJTRC9HUEwiKTsKLS0gCjIuMzAuMgoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK