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 829C9C7EE23 for ; Thu, 8 Jun 2023 02:53:09 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=OyEqYsqWZfxPB5p06GGEbWoauaRF3AcYLHjozivzVoc=; b=K7jRKdK3Wx8adN Q8tz4HVDa49VOZumnMgADeLUxrAEY4fv4SdPnn7v2Q8ftUmMe2DiPbvOQmy0VLemBFxuhGVwTlhbM NMULipMh337k/iAaQOb5erfMvQPzgGTUJPq7KMvfo0SGSga6CTFDgOY7HSgwxc4uSnFTr8O8oJoas 07ec2zoap+9Uw2pdIzv0zxJt52MWNWuGB0MwYj3B2b7fFZ9M6J6OVUl2KDKOrx2sXDQifxMwEOtm/ A+TNEe1RFiu+AdyCaH1frl2ayDkkWc7wgUb5mAGRtaGmcu+8T1OKHj3/NJNAV0GiAVEqjxbzCmPIW pp6W4RDbV3kwNLeXowtg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q75lW-007r7j-28; Thu, 08 Jun 2023 02:52:46 +0000 Received: from mail.aspeedtech.com ([211.20.114.72]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q75lQ-007r3A-1K for linux-arm-kernel@lists.infradead.org; Thu, 08 Jun 2023 02:52:42 +0000 Received: from BillyTsai-pc.aspeed.com (192.168.1.221) by TWMBX02.aspeed.com (192.168.0.24) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 8 Jun 2023 10:16:22 +0800 From: Billy Tsai To: , , , , , , , , , , , , , , , , , , Subject: [v6 3/4] pwm: Add Aspeed ast2600 PWM support Date: Thu, 8 Jun 2023 10:18:38 +0800 Message-ID: <20230608021839.12769-4-billy_tsai@aspeedtech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230608021839.12769-1-billy_tsai@aspeedtech.com> References: <20230608021839.12769-1-billy_tsai@aspeedtech.com> MIME-Version: 1.0 X-Originating-IP: [192.168.1.221] X-ClientProxiedBy: TWMBX02.aspeed.com (192.168.0.24) To TWMBX02.aspeed.com (192.168.0.24) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230607_195240_451457_A85BF77B X-CRM114-Status: GOOD ( 33.77 ) 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 QWRkIHRoZSBzdXBwb3J0IG9mIFBXTSBjb250cm9sbGVyIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0 aGUgQXNwZWVkIEFTVDI2MDAKU29DLiBUaGlzIHBhcnRpY3VsYXIgU29DIGZlYXR1cmVzIDE2IFBX TSBjb250cm9sbGVycywgd2l0aCBlYWNoIGNvbnRyb2xsZXIKY2FwYWJsZSBvZiBzdXBwb3J0aW5n IHVwIHRvIDEgUFdNIG91dHB1dC4KClNpZ25lZC1vZmYtYnk6IEJpbGx5IFRzYWkgPGJpbGx5X3Rz YWlAYXNwZWVkdGVjaC5jb20+ClJldmlld2VkLWJ5OiBVd2UgS2xlaW5lLUvDtm5pZyA8dS5rbGVp bmUta29lbmlnQHBlbmd1dHJvbml4LmRlPgotLS0KIGRyaXZlcnMvcHdtL0tjb25maWcgICAgICAg ICAgICAgIHwgIDEwICsKIGRyaXZlcnMvcHdtL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvcHdtL3B3bS1hc3BlZWQtYXN0MjYwMC5jIHwgMzA5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMzIwIGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3B3bS9wd20tYXNwZWVkLWFzdDI2MDAuYwoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvcHdtL0tjb25maWcgYi9kcml2ZXJzL3B3bS9LY29uZmlnCmluZGV4IDYwZDEz YTk0OWJjNS4uNTQ5MTUxODVkOTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3B3bS9LY29uZmlnCisr KyBiL2RyaXZlcnMvcHdtL0tjb25maWcKQEAgLTUxLDYgKzUxLDE2IEBAIGNvbmZpZyBQV01fQUI4 NTAwCiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJl OiB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBwd20tYWI4NTAwLgogCitjb25maWcgUFdN X0FTUEVFRF9BU1QyNjAwCisJdHJpc3RhdGUgIkFzcGVlZCBhc3QyNjAwIFBXTSBzdXBwb3J0Igor CWRlcGVuZHMgb24gQVJDSF9BU1BFRUQgfHwgQ09NUElMRV9URVNUCisJZGVwZW5kcyBvbiBIQVZF X0NMSyAmJiBIQVNfSU9NRU0KKwloZWxwCisJICBUaGlzIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0 IGZvciBBc3BlZWQgYXN0MjYwMCBQV00gY29udHJvbGxlcnMuCisKKwkgIFRvIGNvbXBpbGUgdGhp cyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKKwkgIHdpbGwg YmUgY2FsbGVkIHB3bS1hc3BlZWQtYXN0MjYwMC4KKwogY29uZmlnIFBXTV9BVE1FTAogCXRyaXN0 YXRlICJBdG1lbCBQV00gc3VwcG9ydCIKIAlkZXBlbmRzIG9uIEFSQ0hfQVQ5MSB8fCBDT01QSUxF X1RFU1QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL01ha2VmaWxlIGIvZHJpdmVycy9wd20vTWFr ZWZpbGUKaW5kZXggN2JmMWEyOWYwMmI4Li41MTY5YzM0MDU2ZTYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvcHdtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcHdtL01ha2VmaWxlCkBAIC0yLDYgKzIsNyBA QAogb2JqLSQoQ09ORklHX1BXTSkJCSs9IGNvcmUubwogb2JqLSQoQ09ORklHX1BXTV9TWVNGUykJ CSs9IHN5c2ZzLm8KIG9iai0kKENPTkZJR19QV01fQUI4NTAwKQkrPSBwd20tYWI4NTAwLm8KK29i ai0kKENPTkZJR19QV01fQVNQRUVEX0FTVDI2MDApCSs9IHB3bS1hc3BlZWQtYXN0MjYwMC5vCiBv YmotJChDT05GSUdfUFdNX0FUTUVMKQkJKz0gcHdtLWF0bWVsLm8KIG9iai0kKENPTkZJR19QV01f QVRNRUxfSExDRENfUFdNKQkrPSBwd20tYXRtZWwtaGxjZGMubwogb2JqLSQoQ09ORklHX1BXTV9B VE1FTF9UQ0IpCSs9IHB3bS1hdG1lbC10Y2IubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vcHdt LWFzcGVlZC1hc3QyNjAwLmMgYi9kcml2ZXJzL3B3bS9wd20tYXNwZWVkLWFzdDI2MDAuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlNmViMTk3ZTQ3MwotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvcHdtL3B3bS1hc3BlZWQtYXN0MjYwMC5jCkBAIC0wLDAgKzEs MzA5IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoK KyAqIENvcHlyaWdodCAoQykgMjAyMSBBc3BlZWQgVGVjaG5vbG9neSBJbmMuCisgKgorICogUFdN IGNvbnRyb2xsZXIgZHJpdmVyIGZvciBBc3BlZWQgYXN0MjYwMCBTb0NzLgorICogVGhpcyBkcml2 ZXJzIGRvZXNuJ3Qgc3VwcG9ydCBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIElQLgorICoKKyAqIFRo ZSBoYXJkd2FyZSBvcGVyYXRlcyBpbiB0aW1lIHF1YW50aXRpZXMgb2YgbGVuZ3RoCisgKiBRIDo9 IChESVZfTCArIDEpIDw8IERJVl9IIC8gaW5wdXQtY2xrCisgKiBUaGUgbGVuZ3RoIG9mIGEgUFdN IHBlcmlvZCBpcyAoRFVUWV9DWUNMRV9QRVJJT0QgKyAxKSAqIFEuCisgKiBUaGUgbWF4aW1hbCB2 YWx1ZSBmb3IgRFVUWV9DWUNMRV9QRVJJT0QgaXMgdXNlZCBoZXJlIHRvIHByb3ZpZGUKKyAqIGEg ZmluZSBncmFpbmVkIHNlbGVjdGlvbiBmb3IgdGhlIGR1dHkgY3ljbGUuCisgKgorICogVGhpcyBk cml2ZXIgdXNlcyBEVVRZX0NZQ0xFX1JJU0lOR19QT0lOVCA9IDAsIHNvIGZyb20gdGhlIHN0YXJ0 IG9mIGEKKyAqIHBlcmlvZCB0aGUgb3V0cHV0IGlzIGFjdGl2ZSB1bnRpbCBEVVRZX0NZQ0xFX0ZB TExJTkdfUE9JTlQgKiBRLiBOb3RlCisgKiB0aGF0IGlmIERVVFlfQ1lDTEVfUklTSU5HX1BPSU5U ID0gRFVUWV9DWUNMRV9GQUxMSU5HX1BPSU5UIHRoZSBvdXRwdXQgaXMKKyAqIGFsd2F5cyBhY3Rp dmUuCisgKgorICogUmVnaXN0ZXIgdXNhZ2U6CisgKiBQSU5fRU5BQkxFOiBXaGVuIGl0IGlzIHVu c2V0IHRoZSBwd20gY29udHJvbGxlciB3aWxsIGVtaXQgaW5hY3RpdmUgbGV2ZWwgdG8gdGhlIGV4 dGVybmFsLgorICogVXNlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBQV00gY2hhbm5lbCBpcyBl bmFibGVkIG9yIGRpc2FibGVkCisgKiBDTEtfRU5BQkxFOiBXaGVuIGl0IGlzIHVuc2V0IHRoZSBw d20gY29udHJvbGxlciB3aWxsIGFzc2VydCB0aGUgZHV0eSBjb3VudGVyIHJlc2V0IGFuZAorICog ZW1pdCBpbmFjdGl2ZSBsZXZlbCB0byB0aGUgUElOX0VOQUJMRSBtdXggYWZ0ZXIgdGhhdCB0aGUg ZHJpdmVyIGNhbiBzdGlsbCBjaGFuZ2UgdGhlIHB3bSBwZXJpb2QKKyAqIGFuZCBkdXR5IGFuZCB0 aGUgdmFsdWUgd2lsbCBhcHBseSB3aGVuIENMS19FTkFCTEUgYmUgc2V0IGFnYWluLgorICogVXNl IHRvIGRldGVybWluZSB3aGV0aGVyIGR1dHlfY3ljbGUgYmlnZ2VyIHRoYW4gMC4KKyAqIFBXTV9B U1BFRURfQ1RSTF9JTlZFUlNFOiBXaGVuIGl0IGlzIHRvZ2dsZWQgdGhlIG91dHB1dCB2YWx1ZSB3 aWxsIGludmVyc2UgaW1tZWRpYXRlbHkuCisgKiBQV01fQVNQRUVEX0RVVFlfQ1lDTEVfRkFMTElO R19QT0lOVC9QV01fQVNQRUVEX0RVVFlfQ1lDTEVfUklTSU5HX1BPSU5UOiBXaGVuIHRoZXNlIHR3 bworICogdmFsdWVzIGFyZSBlcXVhbCBpdCBtZWFucyB0aGUgZHV0eSBjeWNsZSA9IDEwMCUuCisg KgorICogVGhlIGdsaXRjaCBtYXkgZ2VuZXJhdGUgYXQ6CisgKiAtIEVuYWJsZWQgY2hhbmdpbmcg d2hlbiB0aGUgZHV0eV9jeWNsZSBiaWdnZXIgdGhhbiAwJSBhbmQgbGVzcyB0aGFuIDEwMCUuCisg KiAtIFBvbGFyaXR5IGNoYW5naW5nIHdoZW4gdGhlIGR1dHlfY3ljbGUgYmlnZ2VyIHRoYW4gMCUg YW5kIGxlc3MgdGhhbiAxMDAlLgorICoKKyAqIExpbWl0YXRpb25zOgorICogLSBXaGVuIGNoYW5n aW5nIGJvdGggZHV0eSBjeWNsZSBhbmQgcGVyaW9kLCB3ZSBjYW5ub3QgcHJldmVudCBpbgorICog ICBzb2Z0d2FyZSB0aGF0IHRoZSBvdXRwdXQgbWlnaHQgcHJvZHVjZSBhIHBlcmlvZCB3aXRoIG1p eGVkCisgKiAgIHNldHRpbmdzLgorICogLSBEaXNhYmxpbmcgdGhlIFBXTSBkb2Vzbid0IGNvbXBs ZXRlIHRoZSBjdXJyZW50IHBlcmlvZC4KKyAqCisgKiBJbXByb3ZlbWVudHM6CisgKiAtIFdoZW4g b25seSBjaGFuZ2luZyBvbmUgb2YgZHV0eSBjeWNsZSBvciBwZXJpb2QsIG91ciBwd20gY29udHJv bGxlciB3aWxsIG5vdAorICogICBnZW5lcmF0ZSB0aGUgZ2xpdGNoLCB0aGUgY29uZmlndXJlIHdp bGwgY2hhbmdlIGF0IG5leHQgY3ljbGUgb2YgcHdtLgorICogICBUaGlzIGltcHJvdmVtZW50IGNh biBkaXNhYmxlL2VuYWJsZSB0aHJvdWdoIFBXTV9BU1BFRURfQ1RSTF9EVVRZX1NZTkNfRElTQUJM RS4KKyAqLworCisjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4KKyNpbmNsdWRlIDxsaW51eC9j bGsuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cisj aW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbWF0aDY0Lmg+CisjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CisjaW5j bHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZp Y2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wd20uaD4KKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgor I2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+CisKKy8qIFBXTSBDb250cm9sIFJlZ2lzdGVyICovCisj ZGVmaW5lIFBXTV9BU1BFRURfQ1RSTAkJCQkoMHgwMCkKKyNkZWZpbmUgUFdNX0FTUEVFRF9DVFJM X0xPQURfU0VMX1JJU0lOR19BU19XRFQJQklUKDE5KQorI2RlZmluZSBQV01fQVNQRUVEX0NUUkxf RFVUWV9MT0FEX0FTX1dEVF9FTkFCTEUJQklUKDE4KQorI2RlZmluZSBQV01fQVNQRUVEX0NUUkxf RFVUWV9TWU5DX0RJU0FCTEUJQklUKDE3KQorI2RlZmluZSBQV01fQVNQRUVEX0NUUkxfQ0xLX0VO QUJMRQkJQklUKDE2KQorI2RlZmluZSBQV01fQVNQRUVEX0NUUkxfTEVWRUxfT1VUUFVUCQlCSVQo MTUpCisjZGVmaW5lIFBXTV9BU1BFRURfQ1RSTF9JTlZFUlNFCQkJQklUKDE0KQorI2RlZmluZSBQ V01fQVNQRUVEX0NUUkxfT1BFTl9EUkFJTl9FTkFCTEUJQklUKDEzKQorI2RlZmluZSBQV01fQVNQ RUVEX0NUUkxfUElOX0VOQUJMRQkJQklUKDEyKQorI2RlZmluZSBQV01fQVNQRUVEX0NUUkxfQ0xL X0RJVl9ICQlHRU5NQVNLKDExLCA4KQorI2RlZmluZSBQV01fQVNQRUVEX0NUUkxfQ0xLX0RJVl9M CQlHRU5NQVNLKDcsIDApCisKKy8qIFBXTSBEdXR5IEN5Y2xlIFJlZ2lzdGVyICovCisjZGVmaW5l IFBXTV9BU1BFRURfRFVUWV9DWUNMRQkJCSgweDA0KQorI2RlZmluZSBQV01fQVNQRUVEX0RVVFlf Q1lDTEVfUEVSSU9ECQlHRU5NQVNLKDMxLCAyNCkKKyNkZWZpbmUgUFdNX0FTUEVFRF9EVVRZX0NZ Q0xFX1BPSU5UX0FTX1dEVAlHRU5NQVNLKDIzLCAxNikKKyNkZWZpbmUgUFdNX0FTUEVFRF9EVVRZ X0NZQ0xFX0ZBTExJTkdfUE9JTlQJR0VOTUFTSygxNSwgOCkKKyNkZWZpbmUgUFdNX0FTUEVFRF9E VVRZX0NZQ0xFX1JJU0lOR19QT0lOVAlHRU5NQVNLKDcsIDApCisKKy8qIFBXTSBmaXhlZCB2YWx1 ZSAqLworI2RlZmluZSBQV01fQVNQRUVEX0ZJWEVEX1BFUklPRAkJCUZJRUxEX01BWChQV01fQVNQ RUVEX0RVVFlfQ1lDTEVfUEVSSU9EKQorCitzdHJ1Y3QgYXNwZWVkX3B3bV9kYXRhIHsKKwlzdHJ1 Y3QgcHdtX2NoaXAgY2hpcDsKKwlzdHJ1Y3QgY2xrICpjbGs7CisJdm9pZCBfX2lvbWVtICpiYXNl OworCXN0cnVjdCByZXNldF9jb250cm9sICpyZXNldDsKKwl1bnNpZ25lZCBsb25nIGNsa19zb3Vy Y2U7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBhc3BlZWRfcHdtX2RhdGEgKgorYXNwZWVk X3B3bV9jaGlwX3RvX2RhdGEoc3RydWN0IHB3bV9jaGlwICpjaGlwKQoreworCXJldHVybiBjb250 YWluZXJfb2YoY2hpcCwgc3RydWN0IGFzcGVlZF9wd21fZGF0YSwgY2hpcCk7Cit9CisKK3N0YXRp YyBpbnQgYXNwZWVkX3B3bV9nZXRfc3RhdGUoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3Qg cHdtX2RldmljZSAqcHdtLAorCQkJCXN0cnVjdCBwd21fc3RhdGUgKnN0YXRlKQoreworCXN0cnVj dCBkZXZpY2UgKmRldiA9IGNoaXAtPmRldjsKKwlzdHJ1Y3QgYXNwZWVkX3B3bV9kYXRhICpwcml2 ID0gYXNwZWVkX3B3bV9jaGlwX3RvX2RhdGEoY2hpcCk7CisJYm9vbCBwb2xhcml0eSwJcGluX2Vu LCBjbGtfZW47CisJdTMyIGR1dHlfcHQsIHZhbDsKKwl1NjQgZGl2X2gsIGRpdl9sLCBkdXR5X2N5 Y2xlX3BlcmlvZCwgZGl2aWRlbmQ7CisKKwl2YWwgPSByZWFkbChwcml2LT5iYXNlICsgUFdNX0FT UEVFRF9DVFJMKTsKKwlwb2xhcml0eSA9IEZJRUxEX0dFVChQV01fQVNQRUVEX0NUUkxfSU5WRVJT RSwgdmFsKTsKKwlwaW5fZW4gPSBGSUVMRF9HRVQoUFdNX0FTUEVFRF9DVFJMX1BJTl9FTkFCTEUs IHZhbCk7CisJY2xrX2VuID0gRklFTERfR0VUKFBXTV9BU1BFRURfQ1RSTF9DTEtfRU5BQkxFLCB2 YWwpOworCWRpdl9oID0gRklFTERfR0VUKFBXTV9BU1BFRURfQ1RSTF9DTEtfRElWX0gsIHZhbCk7 CisJZGl2X2wgPSBGSUVMRF9HRVQoUFdNX0FTUEVFRF9DVFJMX0NMS19ESVZfTCwgdmFsKTsKKwl2 YWwgPSByZWFkbChwcml2LT5iYXNlICsgUFdNX0FTUEVFRF9EVVRZX0NZQ0xFKTsKKwlkdXR5X3B0 ID0gRklFTERfR0VUKFBXTV9BU1BFRURfRFVUWV9DWUNMRV9GQUxMSU5HX1BPSU5ULCB2YWwpOwor CWR1dHlfY3ljbGVfcGVyaW9kID0gRklFTERfR0VUKFBXTV9BU1BFRURfRFVUWV9DWUNMRV9QRVJJ T0QsIHZhbCk7CisKKwkvKgorCSAqIFRoaXMgbXVsdGlwbGljYXRpb24gZG9lc24ndCBvdmVyZmxv dywgdGhlIHVwcGVyIGJvdW5kIGlzCisJICogMTAwMDAwMDAwMCAqIDI1NiAqIDI1NiA8PCAxNSA9 IDB4MWRjZDY1MDAwMDAwMDAwMAorCSAqLworCWRpdmlkZW5kID0gKHU2NClOU0VDX1BFUl9TRUMg KiAoZGl2X2wgKyAxKSAqIChkdXR5X2N5Y2xlX3BlcmlvZCArIDEpCisJCSAgICAgICA8PCBkaXZf aDsKKwlzdGF0ZS0+cGVyaW9kID0gRElWX1JPVU5EX1VQX1VMTChkaXZpZGVuZCwgcHJpdi0+Y2xr X3NvdXJjZSk7CisKKwlpZiAoY2xrX2VuICYmIGR1dHlfcHQpIHsKKwkJZGl2aWRlbmQgPSAodTY0 KU5TRUNfUEVSX1NFQyAqIChkaXZfbCArIDEpICogZHV0eV9wdAorCQkJCSA8PCBkaXZfaDsKKwkJ c3RhdGUtPmR1dHlfY3ljbGUgPQorCQkJRElWX1JPVU5EX1VQX1VMTChkaXZpZGVuZCwgcHJpdi0+ Y2xrX3NvdXJjZSk7CisJfSBlbHNlIHsKKwkJc3RhdGUtPmR1dHlfY3ljbGUgPSBjbGtfZW4gPyBz dGF0ZS0+cGVyaW9kIDogMDsKKwl9CisJc3RhdGUtPnBvbGFyaXR5ID0gcG9sYXJpdHkgPyBQV01f UE9MQVJJVFlfSU5WRVJTRUQgOiBQV01fUE9MQVJJVFlfTk9STUFMOworCXN0YXRlLT5lbmFibGVk ID0gcGluX2VuOworCWRldl9kYmcoZGV2LCAiZ2V0IHBlcmlvZDogJWxsZG5zLCBkdXR5X2N5Y2xl OiAlbGxkbnMiLCBzdGF0ZS0+cGVyaW9kLAorCQlzdGF0ZS0+ZHV0eV9jeWNsZSk7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgYXNwZWVkX3B3bV9hcHBseShzdHJ1Y3QgcHdtX2NoaXAgKmNo aXAsIHN0cnVjdCBwd21fZGV2aWNlICpwd20sCisJCQkgICAgY29uc3Qgc3RydWN0IHB3bV9zdGF0 ZSAqc3RhdGUpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY2hpcC0+ZGV2OworCXN0cnVjdCBh c3BlZWRfcHdtX2RhdGEgKnByaXYgPSBhc3BlZWRfcHdtX2NoaXBfdG9fZGF0YShjaGlwKTsKKwl1 MzIgZHV0eV9wdDsKKwl1NjQgZGl2X2gsIGRpdl9sLCBkaXZpc29yLCBleHBlY3RfcGVyaW9kOwor CWJvb2wgY2xrX2VuOworCisJZXhwZWN0X3BlcmlvZCA9IG1pbihkaXY2NF91NjQoVUxMT05HX01B WCwgKHU2NClwcml2LT5jbGtfc291cmNlKSwKKwkJCSAgICBzdGF0ZS0+cGVyaW9kKTsKKwlkZXZf ZGJnKGRldiwgImV4cGVjdCBwZXJpb2Q6ICVsbGRucywgZHV0eV9jeWNsZTogJWxsZG5zIiwgZXhw ZWN0X3BlcmlvZCwKKwkJc3RhdGUtPmR1dHlfY3ljbGUpOworCS8qCisJICogUGljayB0aGUgc21h bGxlc3QgdmFsdWUgZm9yIGRpdl9oIHNvIHRoYXQgZGl2X2wgY2FuIGJlIHRoZSBiaWdnZXN0CisJ ICogd2hpY2ggcmVzdWx0cyBpbiBhIGZpbmVyIHJlc29sdXRpb24gbmVhciB0aGUgdGFyZ2V0IHBl cmlvZCB2YWx1ZS4KKwkgKi8KKwlkaXZpc29yID0gKHU2NClOU0VDX1BFUl9TRUMgKiAoUFdNX0FT UEVFRF9GSVhFRF9QRVJJT0QgKyAxKSAqCisJCSAgKEZJRUxEX01BWChQV01fQVNQRUVEX0NUUkxf Q0xLX0RJVl9MKSArIDEpOworCWRpdl9oID0gb3JkZXJfYmFzZV8yKERJVjY0X1U2NF9ST1VORF9V UChwcml2LT5jbGtfc291cmNlICogZXhwZWN0X3BlcmlvZCwgZGl2aXNvcikpOworCWlmIChkaXZf aCA+IDB4ZikKKwkJZGl2X2ggPSAweGY7CisKKwlkaXZpc29yID0gKCh1NjQpTlNFQ19QRVJfU0VD ICogKFBXTV9BU1BFRURfRklYRURfUEVSSU9EICsgMSkpIDw8IGRpdl9oOworCWRpdl9sID0gZGl2 NjRfdTY0KHByaXYtPmNsa19zb3VyY2UgKiBleHBlY3RfcGVyaW9kLCBkaXZpc29yKTsKKworCWlm IChkaXZfbCA9PSAwKQorCQlyZXR1cm4gLUVSQU5HRTsKKworCWRpdl9sIC09IDE7CisKKwlpZiAo ZGl2X2wgPiAyNTUpCisJCWRpdl9sID0gMjU1OworCisJZGV2X2RiZyhkZXYsICJjbGsgc291cmNl OiAlbGQgZGl2X2ggJWxsZCwgZGl2X2wgOiAlbGxkXG4iLAorCQlwcml2LT5jbGtfc291cmNlLCBk aXZfaCwgZGl2X2wpOworCS8qIGR1dHlfcHQgPSBkdXR5X2N5Y2xlICogKFBFUklPRCArIDEpIC8g cGVyaW9kICovCisJZHV0eV9wdCA9IGRpdjY0X3U2NChzdGF0ZS0+ZHV0eV9jeWNsZSAqIHByaXYt PmNsa19zb3VyY2UsCisJCQkgICAgKHU2NClOU0VDX1BFUl9TRUMgKiAoZGl2X2wgKyAxKSA8PCBk aXZfaCk7CisJZGV2X2RiZyhkZXYsICJkdXR5X2N5Y2xlID0gJWxsZCwgZHV0eV9wdCA9ICVkXG4i LCBzdGF0ZS0+ZHV0eV9jeWNsZSwKKwkJZHV0eV9wdCk7CisKKwkvKgorCSAqIEZpeGVkIERVVFlf Q1lDTEVfUEVSSU9EIHRvIGl0cyBtYXggdmFsdWUgdG8gZ2V0IGEKKwkgKiBmaW5lLWdyYWluZWQg cmVzb2x1dGlvbiBmb3IgZHV0eV9jeWNsZSBhdCB0aGUgZXhwZW5zZSBvZiBhCisJICogY29hcnNl ciBwZXJpb2QgcmVzb2x1dGlvbi4KKwkgKi8KKwl3cml0ZWwoKHJlYWRsKHByaXYtPmJhc2UgKyBQ V01fQVNQRUVEX0RVVFlfQ1lDTEUpICYKKwkJfihQV01fQVNQRUVEX0RVVFlfQ1lDTEVfUEVSSU9E KSkgfAorCQkgICAgICAgRklFTERfUFJFUChQV01fQVNQRUVEX0RVVFlfQ1lDTEVfUEVSSU9ELAor CQkJCSAgUFdNX0FTUEVFRF9GSVhFRF9QRVJJT0QpLAorCSAgICAgICBwcml2LT5iYXNlICsgUFdN X0FTUEVFRF9EVVRZX0NZQ0xFKTsKKworCWlmIChkdXR5X3B0ID09IDApIHsKKwkJLyogZW1pdCBp bmFjdGl2ZSBsZXZlbCBhbmQgYXNzZXJ0IHRoZSBkdXR5IGNvdW50ZXIgcmVzZXQgKi8KKwkJY2xr X2VuID0gMDsKKwl9IGVsc2UgeworCQljbGtfZW4gPSAxOworCQlpZiAoZHV0eV9wdCA+PSAoUFdN X0FTUEVFRF9GSVhFRF9QRVJJT0QgKyAxKSkKKwkJCWR1dHlfcHQgPSAwOworCQl3cml0ZWwoKHJl YWRsKHByaXYtPmJhc2UgKyBQV01fQVNQRUVEX0RVVFlfQ1lDTEUpICYKKwkJCX4oUFdNX0FTUEVF RF9EVVRZX0NZQ0xFX1JJU0lOR19QT0lOVCB8CisJCQkgIFBXTV9BU1BFRURfRFVUWV9DWUNMRV9G QUxMSU5HX1BPSU5UKSkgfAorCQkJICAgICAgIEZJRUxEX1BSRVAoUFdNX0FTUEVFRF9EVVRZX0NZ Q0xFX0ZBTExJTkdfUE9JTlQsCisJCQkJCSAgZHV0eV9wdCksCisJCSAgICAgICBwcml2LT5iYXNl ICsgUFdNX0FTUEVFRF9EVVRZX0NZQ0xFKTsKKwl9CisKKwl3cml0ZWwoKHJlYWRsKHByaXYtPmJh c2UgKyBQV01fQVNQRUVEX0NUUkwpICYKKwkJfihQV01fQVNQRUVEX0NUUkxfQ0xLX0RJVl9IIHwg UFdNX0FTUEVFRF9DVFJMX0NMS19ESVZfTCB8CisJCSAgUFdNX0FTUEVFRF9DVFJMX1BJTl9FTkFC TEUgfCBQV01fQVNQRUVEX0NUUkxfQ0xLX0VOQUJMRSB8CisJCSAgUFdNX0FTUEVFRF9DVFJMX0lO VkVSU0UpKSB8CisJCSAgICAgICBGSUVMRF9QUkVQKFBXTV9BU1BFRURfQ1RSTF9DTEtfRElWX0gs IGRpdl9oKSB8CisJCSAgICAgICBGSUVMRF9QUkVQKFBXTV9BU1BFRURfQ1RSTF9DTEtfRElWX0ws IGRpdl9sKSB8CisJCSAgICAgICBGSUVMRF9QUkVQKFBXTV9BU1BFRURfQ1RSTF9QSU5fRU5BQkxF LCBzdGF0ZS0+ZW5hYmxlZCkgfAorCQkgICAgICAgRklFTERfUFJFUChQV01fQVNQRUVEX0NUUkxf Q0xLX0VOQUJMRSwgY2xrX2VuKSB8CisJCSAgICAgICBGSUVMRF9QUkVQKFBXTV9BU1BFRURfQ1RS TF9JTlZFUlNFLCBzdGF0ZS0+cG9sYXJpdHkpLAorCSAgICAgICBwcml2LT5iYXNlICsgUFdNX0FT UEVFRF9DVFJMKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHB3bV9v cHMgYXNwZWVkX3B3bV9vcHMgPSB7CisJLmFwcGx5ID0gYXNwZWVkX3B3bV9hcHBseSwKKwkuZ2V0 X3N0YXRlID0gYXNwZWVkX3B3bV9nZXRfc3RhdGUsCisJLm93bmVyID0gVEhJU19NT0RVTEUsCit9 OworCitzdGF0aWMgdm9pZCBhc3BlZWRfcHdtX3Jlc2V0X2Fzc2VydCh2b2lkICpkYXRhKQorewor CXN0cnVjdCByZXNldF9jb250cm9sICpyc3QgPSBkYXRhOworCisJcmVzZXRfY29udHJvbF9hc3Nl cnQocnN0KTsKK30KKworc3RhdGljIHZvaWQgYXNwZWVkX3B3bV9jaGlwX3JlbW92ZSh2b2lkICpk YXRhKQoreworCXN0cnVjdCBwd21fY2hpcCAqY2hpcCA9IGRhdGE7CisKKwlwd21jaGlwX3JlbW92 ZShjaGlwKTsKK30KKworc3RhdGljIGludCBhc3BlZWRfcHdtX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlp bnQgcmV0OworCXN0cnVjdCBhc3BlZWRfcHdtX2RhdGEgKnByaXY7CisKKwlwcml2ID0gZGV2bV9r emFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcml2KQorCQly ZXR1cm4gLUVOT01FTTsKKworCXByaXYtPmJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVz b3VyY2UocGRldiwgMCk7CisJaWYgKElTX0VSUihwcml2LT5iYXNlKSkKKwkJcmV0dXJuIFBUUl9F UlIocHJpdi0+YmFzZSk7CisKKwlwcml2LT5jbGsgPSBkZXZtX2Nsa19nZXRfZW5hYmxlZChkZXYs IE5VTEwpOworCWlmIChJU19FUlIocHJpdi0+Y2xrKSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUo ZGV2LCBQVFJfRVJSKHByaXYtPmNsayksCisJCQkJICAgICAiQ291bGRuJ3QgZ2V0IGNsb2NrXG4i KTsKKwlwcml2LT5jbGtfc291cmNlID0gY2xrX2dldF9yYXRlKHByaXYtPmNsayk7CisJcHJpdi0+ cmVzZXQgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X3NoYXJlZChkZXYsIE5VTEwpOworCWlmIChJ U19FUlIocHJpdi0+cmVzZXQpKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIo cHJpdi0+cmVzZXQpLAorCQkJCSAgICAgIkNvdWxkbid0IGdldCByZXNldCBjb250cm9sXG4iKTsK KworCXJldCA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocHJpdi0+cmVzZXQpOworCWlmIChyZXQp CisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LAorCQkJCSAgICAgIkNvdWxkbid0IGRl YXNzZXJ0IHJlc2V0IGNvbnRyb2xcbiIpOworCisJcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jl c2V0KGRldiwgYXNwZWVkX3B3bV9yZXNldF9hc3NlcnQsCisJCQkJICAgICAgIHByaXYtPnJlc2V0 KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcHJpdi0+Y2hpcC5kZXYgPSBkZXY7CisJ cHJpdi0+Y2hpcC5vcHMgPSAmYXNwZWVkX3B3bV9vcHM7CisJcHJpdi0+Y2hpcC5ucHdtID0gMTsK KworCXJldCA9IHB3bWNoaXBfYWRkKCZwcml2LT5jaGlwKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0 dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJGYWlsZWQgdG8gYWRkIFBXTSBjaGlwXG4iKTsK KwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBhc3BlZWRfcHdtX2NoaXBfcmVt b3ZlLAorCQkJCSAgICAgICAmcHJpdi0+Y2hpcCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2ZfcHdt X21hdGNoX3RhYmxlW10gPSB7CisJeworCQkuY29tcGF0aWJsZSA9ICJhc3BlZWQsYXN0MjYwMC1w d20iLAorCX0sCisJe30sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfcHdtX21hdGNo X3RhYmxlKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXNwZWVkX3B3bV9kcml2 ZXIgPSB7CisJLnByb2JlID0gYXNwZWVkX3B3bV9wcm9iZSwKKwkuZHJpdmVyCT0geworCQkubmFt ZSA9ICJhc3BlZWQtcHdtIiwKKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfcHdtX21hdGNoX3RhYmxl LAorCX0sCit9OworCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFzcGVlZF9wd21fZHJpdmVyKTsK KworTU9EVUxFX0FVVEhPUigiQmlsbHkgVHNhaSA8YmlsbHlfdHNhaUBhc3BlZWR0ZWNoLmNvbT4i KTsKK01PRFVMRV9ERVNDUklQVElPTigiQXNwZWVkIGFzdDI2MDAgUFdNIGRldmljZSBkcml2ZXIi KTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLS0gCjIuMjUuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK