From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Subject: [PATCH V3 2/2] pinctrl: bcm: add Northstar driver Date: Wed, 26 Sep 2018 21:31:03 +0200 Message-ID: <20180926193103.21241-2-zajec5@gmail.com> References: <20180926193103.21241-1-zajec5@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180926193103.21241-1-zajec5@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Linus Walleij , linux-gpio@vger.kernel.org, Rob Herring , devicetree@vger.kernel.org Cc: Mark Rutland , Florian Fainelli , Scott Branden , Ray Jui , bcm-kernel-feedback-list@broadcom.com, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org RnJvbTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgoKVGhpcyBkcml2ZXIgcHJv dmlkZXMgc3VwcG9ydCBmb3IgTm9ydGhzdGFyIG11eCBjb250cm9sbGVyLiBJdCBkaWZmZXJzCmZy b20gTm9ydGhzdGFyIFBsdXMgb25lIHNvIGEgbmV3IGJpbmRpbmcgYW5kIGRyaXZlciB3ZXJlIG5l ZWRlZC4KClNpZ25lZC1vZmYtYnk6IFJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4K LS0tClYyOiBEZWZpbmUgbW9yZSBwaW5zLCBncm91cHMsIGZ1bmN0aW9ucwogICAgU2ltcGxpZnkg bnNfcGluY3RybF9zZXRfbXV4KCkgYXMgTm9ydGhzdGFyIHVzZXMgMToxIG1hcHBpbmcKVjM6IFN1 cHBvcnQgMyBkaWZmZXJlbnQgYmluZGluZ3MgYW5kIGRpZmZlcmVudCBzZXRzIG9mIHBpbnMsIGdy b3VwcwogICAgYW5kIGZ1bmN0aW9ucy4gVGhpcyByZXF1aXJlcyBidWlsZGluZyBhcnJheXMgZHlu YW1pY2FsbHkgb24gaW5pdC4KLS0tCiBkcml2ZXJzL3BpbmN0cmwvYmNtL0tjb25maWcgICAgICB8 ICAxMyArKwogZHJpdmVycy9waW5jdHJsL2JjbS9NYWtlZmlsZSAgICAgfCAgIDEgKwogZHJpdmVy cy9waW5jdHJsL2JjbS9waW5jdHJsLW5zLmMgfCAzNzIgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDM4NiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9waW5jdHJsL2JjbS9waW5jdHJsLW5zLmMKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3BpbmN0cmwvYmNtL0tjb25maWcgYi9kcml2ZXJzL3BpbmN0cmwvYmNtL0tj b25maWcKaW5kZXggMGYzOGQ1MWY0N2M2Li5jODU3NTM5OWQ2ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvcGluY3RybC9iY20vS2NvbmZpZworKysgYi9kcml2ZXJzL3BpbmN0cmwvYmNtL0tjb25maWcK QEAgLTczLDYgKzczLDE5IEBAIGNvbmZpZyBQSU5DVFJMX0NZR05VU19NVVgKIAkgIGNvbmZpZ3Vy YXRpb24sIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGNlcnRhaW4gaW5kaXZpZHVhbCBwaW5zCiAJ ICBjYW4gYmUgb3ZlcnJpZGRlbiB0byBHUElPIGZ1bmN0aW9uCiAKK2NvbmZpZyBQSU5DVFJMX05T CisJYm9vbCAiQnJvYWRjb20gTm9ydGhzdGFyIHBpbnMgZHJpdmVyIgorCWRlcGVuZHMgb24gT0Yg JiYgKEFSQ0hfQkNNXzUzMDFYIHx8IENPTVBJTEVfVEVTVCkKKwlzZWxlY3QgUElOTVVYCisJc2Vs ZWN0IEdFTkVSSUNfUElOQ09ORgorCWRlZmF1bHQgQVJDSF9CQ01fNTMwMVgKKwloZWxwCisJICBT YXkgeWVzIGhlcmUgdG8gZW5hYmxlIHRoZSBCcm9hZGNvbSBOUyBTb0MgcGlucyBkcml2ZXIuCisK KwkgIFRoZSBCcm9hZGNvbSBOb3J0aHN0YXIgcGlucyBkcml2ZXIgc3VwcG9ydHMgbXV4aW5nIG11 bHRpLXB1cnBvc2UgcGlucworCSAgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdmFyaW91cyBmdW5jdGlv bnMgKGUuZy4gU1BJLCBJMkMsIFVBUlQpIGFzIHdlbGwKKwkgIGFzIEdQSU9zLgorCiBjb25maWcg UElOQ1RSTF9OU1BfR1BJTwogCWJvb2wgIkJyb2FkY29tIE5TUCBHUElPICh3aXRoIFBJTkNPTkYp IGRyaXZlciIKIAlkZXBlbmRzIG9uIE9GX0dQSU8gJiYgKEFSQ0hfQkNNX05TUCB8fCBDT01QSUxF X1RFU1QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BpbmN0cmwvYmNtL01ha2VmaWxlIGIvZHJpdmVy cy9waW5jdHJsL2JjbS9NYWtlZmlsZQppbmRleCA4MGNlYjlkYWU5NDQuLjc5ZDVlNDlmZGQ5YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9waW5jdHJsL2JjbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3Bp bmN0cmwvYmNtL01ha2VmaWxlCkBAIC01LDYgKzUsNyBAQCBvYmotJChDT05GSUdfUElOQ1RSTF9C Q00yODFYWCkJCSs9IHBpbmN0cmwtYmNtMjgxeHgubwogb2JqLSQoQ09ORklHX1BJTkNUUkxfQkNN MjgzNSkJCSs9IHBpbmN0cmwtYmNtMjgzNS5vCiBvYmotJChDT05GSUdfUElOQ1RSTF9JUFJPQ19H UElPKQkrPSBwaW5jdHJsLWlwcm9jLWdwaW8ubwogb2JqLSQoQ09ORklHX1BJTkNUUkxfQ1lHTlVT X01VWCkJKz0gcGluY3RybC1jeWdudXMtbXV4Lm8KK29iai0kKENPTkZJR19QSU5DVFJMX05TKQkJ Kz0gcGluY3RybC1ucy5vCiBvYmotJChDT05GSUdfUElOQ1RSTF9OU1BfR1BJTykJCSs9IHBpbmN0 cmwtbnNwLWdwaW8ubwogb2JqLSQoQ09ORklHX1BJTkNUUkxfTlMyX01VWCkJCSs9IHBpbmN0cmwt bnMyLW11eC5vCiBvYmotJChDT05GSUdfUElOQ1RSTF9OU1BfTVVYKQkJKz0gcGluY3RybC1uc3At bXV4Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGluY3RybC9iY20vcGluY3RybC1ucy5jIGIvZHJp dmVycy9waW5jdHJsL2JjbS9waW5jdHJsLW5zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5hZWRiYjI4MTNjNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3Bp bmN0cmwvYmNtL3BpbmN0cmwtbnMuYwpAQCAtMCwwICsxLDM3MiBAQAorLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggUmFmYcWCIE1p xYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgorICovCisKKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4K KyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1 ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVkZSA8 bGludXgvcGluY3RybC9waW5jb25mLWdlbmVyaWMuaD4KKyNpbmNsdWRlIDxsaW51eC9waW5jdHJs L3BpbmN0cmwuaD4KKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL3Bpbm11eC5oPgorI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2Rl ZmluZSBGTEFHX0JDTTQ3MDgJCUJJVCgxKQorI2RlZmluZSBGTEFHX0JDTTQ3MDkJCUJJVCgyKQor I2RlZmluZSBGTEFHX0JDTTUzMDEyCQlCSVQoMykKKworc3RydWN0IG5zX3BpbmN0cmwgeworCXN0 cnVjdCBkZXZpY2UgKmRldjsKKwl1bnNpZ25lZCBpbnQgY2hpcHNldF9mbGFnOworCXN0cnVjdCBw aW5jdHJsX2RldiAqcGN0bGRldjsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisKKwlzdHJ1Y3QgcGlu Y3RybF9kZXNjIHBjdGxkZXNjOworCXN0cnVjdCBuc19waW5jdHJsX2dyb3VwICpncm91cHM7CisJ dW5zaWduZWQgaW50IG51bV9ncm91cHM7CisJc3RydWN0IG5zX3BpbmN0cmxfZnVuY3Rpb24gKmZ1 bmN0aW9uczsKKwl1bnNpZ25lZCBpbnQgbnVtX2Z1bmN0aW9uczsKK307CisKKy8qCisgKiBQaW5z CisgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBwaW5jdHJsX3Bpbl9kZXNjIG5zX3BpbmN0cmxf cGluc1tdID0geworCXsgMCwgInNwaV9jbGsiLCAodm9pZCAqKShGTEFHX0JDTTQ3MDggfCBGTEFH X0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEyKSB9LAorCXsgMSwgInNwaV9zcyIsICh2b2lkICopKEZM QUdfQkNNNDcwOCB8IEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNNNTMwMTIpIH0sCisJeyAyLCAic3Bp X21vc2kiLCAodm9pZCAqKShGTEFHX0JDTTQ3MDggfCBGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUz MDEyKSB9LAorCXsgMywgInNwaV9taXNvIiwgKHZvaWQgKikoRkxBR19CQ000NzA4IHwgRkxBR19C Q000NzA5IHwgRkxBR19CQ001MzAxMikgfSwKKwl7IDQsICJpMmNfc2NsIiwgKHZvaWQgKikoRkxB R19CQ000NzA4IHwgRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMikgfSwKKwl7IDUsICJpMmNf c2RhIiwgKHZvaWQgKikoRkxBR19CQ000NzA4IHwgRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAx MikgfSwKKwl7IDYsICJtZGMiLCAodm9pZCAqKShGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEy KSB9LAorCXsgNywgIm1kaW8iLCAodm9pZCAqKShGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEy KSB9LAorCXsgOCwgInB3bTAiLCAodm9pZCAqKShGTEFHX0JDTTQ3MDggfCBGTEFHX0JDTTQ3MDkg fCBGTEFHX0JDTTUzMDEyKSB9LAorCXsgOSwgInB3bTEiLCAodm9pZCAqKShGTEFHX0JDTTQ3MDgg fCBGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEyKSB9LAorCXsgMTAsICJwd20yIiwgKHZvaWQg KikoRkxBR19CQ000NzA4IHwgRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMikgfSwKKwl7IDEx LCAicHdtMyIsICh2b2lkICopKEZMQUdfQkNNNDcwOCB8IEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNN NTMwMTIpIH0sCisJeyAxMiwgInVhcnQxX3J4IiwgKHZvaWQgKikoRkxBR19CQ000NzA4IHwgRkxB R19CQ000NzA5IHwgRkxBR19CQ001MzAxMikgfSwKKwl7IDEzLCAidWFydDFfdHgiLCAodm9pZCAq KShGTEFHX0JDTTQ3MDggfCBGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEyKSB9LAorCXsgMTQs ICJ1YXJ0MV9jdHMiLCAodm9pZCAqKShGTEFHX0JDTTQ3MDggfCBGTEFHX0JDTTQ3MDkgfCBGTEFH X0JDTTUzMDEyKSB9LAorCXsgMTUsICJ1YXJ0MV9ydHMiLCAodm9pZCAqKShGTEFHX0JDTTQ3MDgg fCBGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEyKSB9LAorCXsgMTYsICJ1YXJ0Ml9yeCIsICh2 b2lkICopKEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNNNTMwMTIpIH0sCisJeyAxNywgInVhcnQyX3R4 IiwgKHZvaWQgKikoRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMikgfSwKKy8qIFRPRE8geyA/ PywgInh0YWxfb3V0IiwgKHZvaWQgKikoRkxBR19CQ000NzA5KSB9LCAqLworCXsgMjIsICJzZGlv X3B3ciIsICh2b2lkICopKEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNNNTMwMTIpIH0sCisJeyAyMywg InNkaW9fZW5fMXA4diIsICh2b2lkICopKEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNNNTMwMTIpIH0s Cit9OworCisvKgorICogR3JvdXBzCisgKi8KKworc3RydWN0IG5zX3BpbmN0cmxfZ3JvdXAgewor CWNvbnN0IGNoYXIgKm5hbWU7CisJY29uc3QgdW5zaWduZWQgaW50ICpwaW5zOworCWNvbnN0IHVu c2lnbmVkIGludCBudW1fcGluczsKKwl1bnNpZ25lZCBpbnQgY2hpcHNldHM7Cit9OworCitzdGF0 aWMgY29uc3QgdW5zaWduZWQgaW50IHNwaV9waW5zW10gPSB7IDAsIDEsIDIsIDMgfTsKK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBpbnQgaTJjX3BpbnNbXSA9IHsgNCwgNSB9Oworc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGludCBtZGlvX3BpbnNbXSA9IHsgNiwgNyB9Oworc3RhdGljIGNvbnN0IHVuc2ln bmVkIGludCBwd20wX3BpbnNbXSA9IHsgOCB9Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBw d20xX3BpbnNbXSA9IHsgOSB9Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBwd20yX3BpbnNb XSA9IHsgMTAgfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcHdtM19waW5zW10gPSB7IDEx IH07CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHVhcnQxX3BpbnNbXSA9IHsgMTIsIDEzLCAx NCwgMTUgfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdWFydDJfcGluc1tdID0geyAxNiwg MTcgfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2Rpb19wd3JfcGluc1tdID0geyAyMiB9 Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzZGlvXzFwOHZfcGluc1tdID0geyAyMyB9Owor CisjZGVmaW5lIE5TX0dST1VQKF9uYW1lLCBfcGlucywgX2NoaXBzZXRzKQkJXAorewkJCQkJCQlc CisJLm5hbWUgPSBfbmFtZSwJCQkJCVwKKwkucGlucyA9IF9waW5zLAkJCQkJXAorCS5udW1fcGlu cyA9IEFSUkFZX1NJWkUoX3BpbnMpLAkJCVwKKwkuY2hpcHNldHMgPSBfY2hpcHNldHMsCQkJCVwK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBuc19waW5jdHJsX2dyb3VwIG5zX3BpbmN0cmxfZ3Jv dXBzW10gPSB7CisJTlNfR1JPVVAoInNwaV9ncnAiLCBzcGlfcGlucywgRkxBR19CQ000NzA4IHwg RkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMiksCisJTlNfR1JPVVAoImkyY19ncnAiLCBpMmNf cGlucywgRkxBR19CQ000NzA4IHwgRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMiksCisJTlNf R1JPVVAoIm1kaW9fZ3JwIiwgbWRpb19waW5zLCBGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEy KSwKKwlOU19HUk9VUCgicHdtMF9ncnAiLCBwd20wX3BpbnMsIEZMQUdfQkNNNDcwOCB8IEZMQUdf QkNNNDcwOSB8IEZMQUdfQkNNNTMwMTIpLAorCU5TX0dST1VQKCJwd20xX2dycCIsIHB3bTFfcGlu cywgRkxBR19CQ000NzA4IHwgRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMiksCisJTlNfR1JP VVAoInB3bTJfZ3JwIiwgcHdtMl9waW5zLCBGTEFHX0JDTTQ3MDggfCBGTEFHX0JDTTQ3MDkgfCBG TEFHX0JDTTUzMDEyKSwKKwlOU19HUk9VUCgicHdtM19ncnAiLCBwd20zX3BpbnMsIEZMQUdfQkNN NDcwOCB8IEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNNNTMwMTIpLAorCU5TX0dST1VQKCJ1YXJ0MV9n cnAiLCB1YXJ0MV9waW5zLCBGTEFHX0JDTTQ3MDggfCBGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUz MDEyKSwKKwlOU19HUk9VUCgidWFydDJfZ3JwIiwgdWFydDJfcGlucywgRkxBR19CQ000NzA5IHwg RkxBR19CQ001MzAxMiksCisJTlNfR1JPVVAoInNkaW9fcHdyX2dycCIsIHNkaW9fcHdyX3BpbnMs IEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNNNTMwMTIpLAorCU5TX0dST1VQKCJzZGlvXzFwOHZfZ3Jw Iiwgc2Rpb18xcDh2X3BpbnMsIEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNNNTMwMTIpLAorfTsKKwor LyoKKyAqIEZ1bmN0aW9ucworICovCisKK3N0cnVjdCBuc19waW5jdHJsX2Z1bmN0aW9uIHsKKwlj b25zdCBjaGFyICpuYW1lOworCWNvbnN0IGNoYXIgKiBjb25zdCAqZ3JvdXBzOworCWNvbnN0IHVu c2lnbmVkIGludCBudW1fZ3JvdXBzOworCXVuc2lnbmVkIGludCBjaGlwc2V0czsKK307CisKK3N0 YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3BpX2dyb3Vwc1tdID0geyAic3BpX2dycCIgfTsKK3N0 YXRpYyBjb25zdCBjaGFyICogY29uc3QgaTJjX2dyb3Vwc1tdID0geyAiaTJjX2dycCIgfTsKK3N0 YXRpYyBjb25zdCBjaGFyICogY29uc3QgbWRpb19ncm91cHNbXSA9IHsgIm1kaW9fZ3JwIiB9Owor c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwd21fZ3JvdXBzW10gPSB7ICJwd20wX2dycCIsICJw d20xX2dycCIsICJwd20yX2dycCIsCisJCQkJCSAgICJwd20zX2dycCIgfTsKK3N0YXRpYyBjb25z dCBjaGFyICogY29uc3QgdWFydDFfZ3JvdXBzW10gPSB7ICJ1YXJ0MV9ncnAiIH07CitzdGF0aWMg Y29uc3QgY2hhciAqIGNvbnN0IHVhcnQyX2dyb3Vwc1tdID0geyAidWFydDJfZ3JwIiB9Oworc3Rh dGljIGNvbnN0IGNoYXIgKiBjb25zdCBzZGlvX2dyb3Vwc1tdID0geyAic2Rpb19wd3JfZ3JwIiwg InNkaW9fMXA4dl9ncnAiIH07CisKKyNkZWZpbmUgTlNfRlVOQ1RJT04oX25hbWUsIF9ncm91cHMs IF9jaGlwc2V0cykJCVwKK3sJCQkJCQkJXAorCS5uYW1lID0gX25hbWUsCQkJCQlcCisJLmdyb3Vw cyA9IF9ncm91cHMsCQkJCVwKKwkubnVtX2dyb3VwcyA9IEFSUkFZX1NJWkUoX2dyb3VwcyksCQlc CisJLmNoaXBzZXRzID0gX2NoaXBzZXRzLAkJCQlcCit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg bnNfcGluY3RybF9mdW5jdGlvbiBuc19waW5jdHJsX2Z1bmN0aW9uc1tdID0geworCU5TX0ZVTkNU SU9OKCJzcGkiLCBzcGlfZ3JvdXBzLCBGTEFHX0JDTTQ3MDggfCBGTEFHX0JDTTQ3MDkgfCBGTEFH X0JDTTUzMDEyKSwKKwlOU19GVU5DVElPTigiaTJjIiwgaTJjX2dyb3VwcywgRkxBR19CQ000NzA4 IHwgRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMiksCisJTlNfRlVOQ1RJT04oIm1kaW8iLCBt ZGlvX2dyb3VwcywgRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMiksCisJTlNfRlVOQ1RJT04o InB3bSIsIHB3bV9ncm91cHMsIEZMQUdfQkNNNDcwOCB8IEZMQUdfQkNNNDcwOSB8IEZMQUdfQkNN NTMwMTIpLAorCU5TX0ZVTkNUSU9OKCJ1YXJ0MSIsIHVhcnQxX2dyb3VwcywgRkxBR19CQ000NzA4 IHwgRkxBR19CQ000NzA5IHwgRkxBR19CQ001MzAxMiksCisJTlNfRlVOQ1RJT04oInVhcnQyIiwg dWFydDJfZ3JvdXBzLCBGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEyKSwKKwlOU19GVU5DVElP Tigic2RpbyIsIHNkaW9fZ3JvdXBzLCBGTEFHX0JDTTQ3MDkgfCBGTEFHX0JDTTUzMDEyKSwKK307 CisKKy8qCisgKiBHcm91cHMgY29kZQorICovCisKK3N0YXRpYyBpbnQgbnNfcGluY3RybF9nZXRf Z3JvdXBzX2NvdW50KHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0cmxfZGV2KQoreworCXN0cnVjdCBu c19waW5jdHJsICpuc19waW5jdHJsID0gcGluY3RybF9kZXZfZ2V0X2RydmRhdGEocGN0cmxfZGV2 KTsKKworCXJldHVybiBuc19waW5jdHJsLT5udW1fZ3JvdXBzOworfQorCitzdGF0aWMgY29uc3Qg Y2hhciAqbnNfcGluY3RybF9nZXRfZ3JvdXBfbmFtZShzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdHJs X2RldiwKKwkJCQkJICAgICB1bnNpZ25lZCBpbnQgc2VsZWN0b3IpCit7CisJc3RydWN0IG5zX3Bp bmN0cmwgKm5zX3BpbmN0cmwgPSBwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShwY3RybF9kZXYpOwor CisJcmV0dXJuIG5zX3BpbmN0cmwtPmdyb3Vwc1tzZWxlY3Rvcl0ubmFtZTsKK30KKworc3RhdGlj IGludCBuc19waW5jdHJsX2dldF9ncm91cF9waW5zKHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0cmxf ZGV2LAorCQkJCSAgICAgdW5zaWduZWQgaW50IHNlbGVjdG9yLAorCQkJCSAgICAgY29uc3QgdW5z aWduZWQgaW50ICoqcGlucywKKwkJCQkgICAgIHVuc2lnbmVkIGludCAqbnVtX3BpbnMpCit7CisJ c3RydWN0IG5zX3BpbmN0cmwgKm5zX3BpbmN0cmwgPSBwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShw Y3RybF9kZXYpOworCisJKnBpbnMgPSBuc19waW5jdHJsLT5ncm91cHNbc2VsZWN0b3JdLnBpbnM7 CisJKm51bV9waW5zID0gbnNfcGluY3RybC0+Z3JvdXBzW3NlbGVjdG9yXS5udW1fcGluczsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHBpbmN0cmxfb3BzIG5zX3BpbmN0 cmxfb3BzID0geworCS5nZXRfZ3JvdXBzX2NvdW50ID0gbnNfcGluY3RybF9nZXRfZ3JvdXBzX2Nv dW50LAorCS5nZXRfZ3JvdXBfbmFtZSA9IG5zX3BpbmN0cmxfZ2V0X2dyb3VwX25hbWUsCisJLmdl dF9ncm91cF9waW5zID0gbnNfcGluY3RybF9nZXRfZ3JvdXBfcGlucywKKwkuZHRfbm9kZV90b19t YXAgPSBwaW5jb25mX2dlbmVyaWNfZHRfbm9kZV90b19tYXBfZ3JvdXAsCisJLmR0X2ZyZWVfbWFw ID0gcGluY29uZl9nZW5lcmljX2R0X2ZyZWVfbWFwLAorfTsKKworLyoKKyAqIEZ1bmN0aW9ucyBj b2RlCisgKi8KKworc3RhdGljIGludCBuc19waW5jdHJsX2dldF9mdW5jdGlvbnNfY291bnQoc3Ry dWN0IHBpbmN0cmxfZGV2ICpwY3RybF9kZXYpCit7CisJc3RydWN0IG5zX3BpbmN0cmwgKm5zX3Bp bmN0cmwgPSBwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShwY3RybF9kZXYpOworCisJcmV0dXJuIG5z X3BpbmN0cmwtPm51bV9mdW5jdGlvbnM7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpuc19waW5j dHJsX2dldF9mdW5jdGlvbl9uYW1lKHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0cmxfZGV2LAorCQkJ CQkJdW5zaWduZWQgaW50IHNlbGVjdG9yKQoreworCXN0cnVjdCBuc19waW5jdHJsICpuc19waW5j dHJsID0gcGluY3RybF9kZXZfZ2V0X2RydmRhdGEocGN0cmxfZGV2KTsKKworCXJldHVybiBuc19w aW5jdHJsLT5mdW5jdGlvbnNbc2VsZWN0b3JdLm5hbWU7Cit9CisKK3N0YXRpYyBpbnQgbnNfcGlu Y3RybF9nZXRfZnVuY3Rpb25fZ3JvdXBzKHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0cmxfZGV2LAor CQkJCQkgIHVuc2lnbmVkIGludCBzZWxlY3RvciwKKwkJCQkJICBjb25zdCBjaGFyICogY29uc3Qg Kipncm91cHMsCisJCQkJCSAgdW5zaWduZWQgKiBjb25zdCBudW1fZ3JvdXBzKQoreworCXN0cnVj dCBuc19waW5jdHJsICpuc19waW5jdHJsID0gcGluY3RybF9kZXZfZ2V0X2RydmRhdGEocGN0cmxf ZGV2KTsKKworCSpncm91cHMgPSBuc19waW5jdHJsLT5mdW5jdGlvbnNbc2VsZWN0b3JdLmdyb3Vw czsKKwkqbnVtX2dyb3VwcyA9IG5zX3BpbmN0cmwtPmZ1bmN0aW9uc1tzZWxlY3Rvcl0ubnVtX2dy b3VwczsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG5zX3BpbmN0cmxfc2V0X211eChz dHJ1Y3QgcGluY3RybF9kZXYgKnBjdHJsX2RldiwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBmdW5j X3NlbGVjdCwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBncnBfc2VsZWN0KQoreworCXN0cnVjdCBu c19waW5jdHJsICpuc19waW5jdHJsID0gcGluY3RybF9kZXZfZ2V0X2RydmRhdGEocGN0cmxfZGV2 KTsKKwl1MzIgdW5zZXQgPSAwOworCXUzMiB0bXA7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBp IDwgbnNfcGluY3RybC0+Z3JvdXBzW2dycF9zZWxlY3RdLm51bV9waW5zOyBpKyspIHsKKwkJaW50 IHBpbl9udW1iZXIgPSBuc19waW5jdHJsLT5ncm91cHNbZ3JwX3NlbGVjdF0ucGluc1tpXTsKKwor CQl1bnNldCB8PSBCSVQocGluX251bWJlcik7CisJfQorCisJdG1wID0gcmVhZGwobnNfcGluY3Ry bC0+YmFzZSk7CisJdG1wICY9IH51bnNldDsKKwl3cml0ZWwodG1wLCBuc19waW5jdHJsLT5iYXNl KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHBpbm11eF9vcHMgbnNf cGluY3RybF9wbXhvcHMgPSB7CisJLmdldF9mdW5jdGlvbnNfY291bnQgPSBuc19waW5jdHJsX2dl dF9mdW5jdGlvbnNfY291bnQsCisJLmdldF9mdW5jdGlvbl9uYW1lID0gbnNfcGluY3RybF9nZXRf ZnVuY3Rpb25fbmFtZSwKKwkuZ2V0X2Z1bmN0aW9uX2dyb3VwcyA9IG5zX3BpbmN0cmxfZ2V0X2Z1 bmN0aW9uX2dyb3VwcywKKwkuc2V0X211eCA9IG5zX3BpbmN0cmxfc2V0X211eCwKK307CisKKy8q CisgKiBDb250cm9sbGVyIGNvZGUKKyAqLworCitzdGF0aWMgc3RydWN0IHBpbmN0cmxfZGVzYyBu c19waW5jdHJsX2Rlc2MgPSB7CisJLm5hbWUgPSAicGluY3RybC1ucyIsCisJLnBjdGxvcHMgPSAm bnNfcGluY3RybF9vcHMsCisJLnBteG9wcyA9ICZuc19waW5jdHJsX3BteG9wcywKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG5zX3BpbmN0cmxfb2ZfbWF0Y2hfdGFibGVb XSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImJyY20sYmNtNDcwOC1waW5tdXgiLCAuZGF0YSA9ICh2 b2lkICopRkxBR19CQ000NzA4LCB9LAorCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxiY200NzA5LXBp bm11eCIsIC5kYXRhID0gKHZvaWQgKilGTEFHX0JDTTQ3MDksIH0sCisJeyAuY29tcGF0aWJsZSA9 ICJicmNtLGJjbTUzMDEyLXBpbm11eCIsIC5kYXRhID0gKHZvaWQgKilGTEFHX0JDTTUzMDEyLCB9 LAorCXsgfQorfTsKKworc3RhdGljIGludCBuc19waW5jdHJsX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9pZDsKKwlzdHJ1Y3QgbnNfcGluY3RybCAqbnNf cGluY3RybDsKKwlzdHJ1Y3QgcGluY3RybF9kZXNjICpwY3RsZGVzYzsKKwlzdHJ1Y3QgcGluY3Ry bF9waW5fZGVzYyAqcGluOworCXN0cnVjdCBuc19waW5jdHJsX2dyb3VwICpncm91cDsKKwlzdHJ1 Y3QgbnNfcGluY3RybF9mdW5jdGlvbiAqZnVuY3Rpb247CisJc3RydWN0IHJlc291cmNlICpyZXM7 CisJaW50IGk7CisKKwluc19waW5jdHJsID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpuc19w aW5jdHJsKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFuc19waW5jdHJsKQorCQlyZXR1cm4gLUVOT01F TTsKKwlwY3RsZGVzYyA9ICZuc19waW5jdHJsLT5wY3RsZGVzYzsKKwlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShwZGV2LCBuc19waW5jdHJsKTsKKworCS8qIFNldCBiYXNpYyBwcm9wZXJ0aWVzICovCisK Kwluc19waW5jdHJsLT5kZXYgPSBkZXY7CisKKwlvZl9pZCA9IG9mX21hdGNoX2RldmljZShuc19w aW5jdHJsX29mX21hdGNoX3RhYmxlLCBkZXYpOworCWlmICghb2ZfaWQpCisJCXJldHVybiAtRUlO VkFMOworCW5zX3BpbmN0cmwtPmNoaXBzZXRfZmxhZyA9ICh1bnNpZ25lZCBpbnQpb2ZfaWQtPmRh dGE7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VS Q0VfTUVNLAorCQkJCQkgICAiY3J1X2dwaW9fY29udHJvbCIpOworCW5zX3BpbmN0cmwtPmJhc2Ug PSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOworCWlmIChJU19FUlIobnNfcGluY3Ry bC0+YmFzZSkpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gbWFwIHBpbmN0cmwgcmVnc1xu Iik7CisJCXJldHVybiBQVFJfRVJSKG5zX3BpbmN0cmwtPmJhc2UpOworCX0KKworCW1lbWNweShw Y3RsZGVzYywgJm5zX3BpbmN0cmxfZGVzYywgc2l6ZW9mKCpwY3RsZGVzYykpOworCisJLyogU2V0 IHBpbmN0cmwgcHJvcGVydGllcyAqLworCisJcGN0bGRlc2MtPnBpbnMgPSBkZXZtX2tjYWxsb2Mo ZGV2LCBBUlJBWV9TSVpFKG5zX3BpbmN0cmxfcGlucyksCisJCQkJICAgICAgc2l6ZW9mKHN0cnVj dCBwaW5jdHJsX3Bpbl9kZXNjKSwKKwkJCQkgICAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIXBjdGxk ZXNjLT5waW5zKQorCQlyZXR1cm4gLUVOT01FTTsKKwlmb3IgKGkgPSAwLCBwaW4gPSAoc3RydWN0 IHBpbmN0cmxfcGluX2Rlc2MgKikmcGN0bGRlc2MtPnBpbnNbMF07CisJICAgICBpIDwgQVJSQVlf U0laRShuc19waW5jdHJsX3BpbnMpOyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IHBpbmN0cmxfcGlu X2Rlc2MgKnNyYyA9ICZuc19waW5jdHJsX3BpbnNbaV07CisJCXVuc2lnbmVkIGludCBjaGlwc2V0 cyA9ICh1bnNpZ25lZCBpbnQpc3JjLT5kcnZfZGF0YTsKKworCQlpZiAoY2hpcHNldHMgJiBuc19w aW5jdHJsLT5jaGlwc2V0X2ZsYWcpIHsKKwkJCW1lbWNweShwaW4rKywgc3JjLCBzaXplb2YoKnNy YykpOworCQkJcGN0bGRlc2MtPm5waW5zKys7CisJCX0KKwl9CisKKwluc19waW5jdHJsLT5ncm91 cHMgPSBkZXZtX2tjYWxsb2MoZGV2LCBBUlJBWV9TSVpFKG5zX3BpbmN0cmxfZ3JvdXBzKSwKKwkJ CQkJICBzaXplb2Yoc3RydWN0IG5zX3BpbmN0cmxfZ3JvdXApLAorCQkJCQkgIEdGUF9LRVJORUwp OworCWlmICghbnNfcGluY3RybC0+Z3JvdXBzKQorCQlyZXR1cm4gLUVOT01FTTsKKwlmb3IgKGkg PSAwLCBncm91cCA9ICZuc19waW5jdHJsLT5ncm91cHNbMF07CisJICAgICBpIDwgQVJSQVlfU0la RShuc19waW5jdHJsX2dyb3Vwcyk7IGkrKykgeworCQljb25zdCBzdHJ1Y3QgbnNfcGluY3RybF9n cm91cCAqc3JjID0gJm5zX3BpbmN0cmxfZ3JvdXBzW2ldOworCisJCWlmIChzcmMtPmNoaXBzZXRz ICYgbnNfcGluY3RybC0+Y2hpcHNldF9mbGFnKSB7CisJCQltZW1jcHkoZ3JvdXArKywgc3JjLCBz aXplb2YoKnNyYykpOworCQkJbnNfcGluY3RybC0+bnVtX2dyb3VwcysrOworCQl9CisJfQorCisJ bnNfcGluY3RybC0+ZnVuY3Rpb25zID0gZGV2bV9rY2FsbG9jKGRldiwKKwkJCQkJICAgICBBUlJB WV9TSVpFKG5zX3BpbmN0cmxfZnVuY3Rpb25zKSwKKwkJCQkJICAgICBzaXplb2Yoc3RydWN0IG5z X3BpbmN0cmxfZnVuY3Rpb24pLAorCQkJCQkgICAgIEdGUF9LRVJORUwpOworCWlmICghbnNfcGlu Y3RybC0+ZnVuY3Rpb25zKQorCQlyZXR1cm4gLUVOT01FTTsKKwlmb3IgKGkgPSAwLCBmdW5jdGlv biA9ICZuc19waW5jdHJsLT5mdW5jdGlvbnNbMF07CisJICAgICBpIDwgQVJSQVlfU0laRShuc19w aW5jdHJsX2Z1bmN0aW9ucyk7IGkrKykgeworCQljb25zdCBzdHJ1Y3QgbnNfcGluY3RybF9mdW5j dGlvbiAqc3JjID0gJm5zX3BpbmN0cmxfZnVuY3Rpb25zW2ldOworCisJCWlmIChzcmMtPmNoaXBz ZXRzICYgbnNfcGluY3RybC0+Y2hpcHNldF9mbGFnKSB7CisJCQltZW1jcHkoZnVuY3Rpb24rKywg c3JjLCBzaXplb2YoKnNyYykpOworCQkJbnNfcGluY3RybC0+bnVtX2Z1bmN0aW9ucysrOworCQl9 CisJfQorCisJLyogUmVnaXN0ZXIgKi8KKworCW5zX3BpbmN0cmwtPnBjdGxkZXYgPSBkZXZtX3Bp bmN0cmxfcmVnaXN0ZXIoZGV2LCBwY3RsZGVzYywgbnNfcGluY3RybCk7CisJaWYgKElTX0VSUihu c19waW5jdHJsLT5wY3RsZGV2KSkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWdpc3Rl ciBwaW5jdHJsXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIobnNfcGluY3RybC0+cGN0bGRldik7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG5zX3Bp bmN0cmxfZHJpdmVyID0geworCS5wcm9iZSA9IG5zX3BpbmN0cmxfcHJvYmUsCisJLmRyaXZlciA9 IHsKKwkJLm5hbWUgPSAibnMtcGlubXV4IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gbnNfcGluY3Ry bF9vZl9tYXRjaF90YWJsZSwKKwl9LAorfTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihuc19w aW5jdHJsX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1IoIlJhZmHFgiBNacWCZWNraSIpOworTU9E VUxFX0xJQ0VOU0UoIkdQTCB2MiIpOworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbnNfcGluY3Ry bF9vZl9tYXRjaF90YWJsZSk7Ci0tIAoyLjEzLjcKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==