From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Myl=C3=A8ne=20Josserand?= Subject: [PATCH v3 1/2] ASoC: codecs: Add support for PCM1789 Date: Thu, 15 Mar 2018 17:18:24 +0100 Message-ID: <20180315161825.5524-2-mylene.josserand@bootlin.com> References: <20180315161825.5524-1-mylene.josserand@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180315161825.5524-1-mylene.josserand@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: lgirdwood@gmail.com, broonie@kernel.org, robh+dt@kernel.org, mark.rutland@arm.com, perex@perex.cz, tiwai@suse.com Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org, michael@amarulasolutions.com, alexandre.belloni@bootlin.com, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, mylene.josserand@bootlin.com List-Id: devicetree@vger.kernel.org QWRkIFRleGFzIEluc3RydW1lbnRzJ3MgUENNMTc4OSBEQUMgc3VwcG9ydC4KSXQgaXMgYSBzaW1w bGUgREFDIGFuZCBkb2VzIG5vdCBoYXZlIG1hbnkgcmVnaXN0ZXJzLgoKT25lIHBhcnRpY3VsYXJp dHkgYWJvdXQgdGhpcyBEQUMgaXMgdGhhdCB0aGUgY2xvY2tzIG11c3QgYmUKYWx3YXlzIGVuYWJs ZWQuIEFsc28sIGFuIGVudGlyZSBzb2Z0d2FyZSByZXNldCBpcyBuZWNlc3NhcnkKd2hpbGUgc3Rh cnRpbmcgdG8gcGxheSBhIHNvdW5kIG90aGVyd2lzZSwgdGhlIGNsb2NrcyBhcmUgbm90CnN5bmNo cm9uaXplZCAoc28gdGhlIERBQyBpcyBub3QgYWJsZSB0byBzZW5kIGRhdGEpLgoKU2lnbmVkLW9m Zi1ieTogTXlsw6huZSBKb3NzZXJhbmQgPG15bGVuZS5qb3NzZXJhbmRAYm9vdGxpbi5jb20+Ci0t LQogc291bmQvc29jL2NvZGVjcy9LY29uZmlnICAgICAgIHwgIDEyICsrCiBzb3VuZC9zb2MvY29k ZWNzL01ha2VmaWxlICAgICAgfCAgIDQgKwogc291bmQvc29jL2NvZGVjcy9wY20xNzg5LWkyYy5j IHwgIDYyICsrKysrKysrKysKIHNvdW5kL3NvYy9jb2RlY3MvcGNtMTc4OS5jICAgICB8IDI3NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc291bmQvc29jL2NvZGVj cy9wY20xNzg5LmggICAgIHwgIDE3ICsrKwogNSBmaWxlcyBjaGFuZ2VkLCAzNjkgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9jb2RlY3MvcGNtMTc4OS1pMmMuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9jb2RlY3MvcGNtMTc4OS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc291bmQvc29jL2NvZGVjcy9wY20xNzg5LmgKCmRpZmYgLS1naXQgYS9zb3VuZC9z b2MvY29kZWNzL0tjb25maWcgYi9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcKaW5kZXggODIyZGY4 ZDNkNGY5Li4wMzE0YTlmYWFlMzYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZp ZworKysgYi9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcKQEAgLTExMiw2ICsxMTIsNyBAQCBjb25m aWcgU05EX1NPQ19BTExfQ09ERUNTCiAJc2VsZWN0IFNORF9TT0NfTkFVODgyNSBpZiBJMkMKIAlz ZWxlY3QgU05EX1NPQ19IRE1JX0NPREVDCiAJc2VsZWN0IFNORF9TT0NfUENNMTY4MSBpZiBJMkMK KwlzZWxlY3QgU05EX1NPQ19QQ00xNzg5X0kyQyBpZiBJMkMKIAlzZWxlY3QgU05EX1NPQ19QQ00x NzlYX0kyQyBpZiBJMkMKIAlzZWxlY3QgU05EX1NPQ19QQ00xNzlYX1NQSSBpZiBTUElfTUFTVEVS CiAJc2VsZWN0IFNORF9TT0NfUENNMTg2WF9JMkMgaWYgSTJDCkBAIC02NzYsNiArNjc3LDE3IEBA IGNvbmZpZyBTTkRfU09DX1BDTTE2ODEKIAl0cmlzdGF0ZSAiVGV4YXMgSW5zdHJ1bWVudHMgUENN MTY4MSBDT0RFQyIKIAlkZXBlbmRzIG9uIEkyQwogCitjb25maWcgU05EX1NPQ19QQ00xNzg5CisJ dHJpc3RhdGUKKworY29uZmlnIFNORF9TT0NfUENNMTc4OV9JMkMKKwl0cmlzdGF0ZSAiVGV4YXMg SW5zdHJ1bWVudHMgUENNMTc4OSBDT0RFQyAoSTJDKSIKKwlkZXBlbmRzIG9uIEkyQworCXNlbGVj dCBTTkRfU09DX1BDTTE3ODkKKwloZWxwCisJICBFbmFibGUgc3VwcG9ydCBmb3IgVGV4YXMgSW5z dHJ1bWVudHMgUENNMTc4OSBDT0RFQy4KKwkgIFNlbGVjdCB0aGlzIGlmIHlvdXIgUENNMTc4OSBp cyBjb25uZWN0ZWQgdmlhIGFuIEkyQyBidXMuCisKIGNvbmZpZyBTTkRfU09DX1BDTTE3OVgKIAl0 cmlzdGF0ZQogCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL01ha2VmaWxlIGIvc291bmQv c29jL2NvZGVjcy9NYWtlZmlsZQppbmRleCBiYzk0MjViNGJhMGMuLmIxNjU0OTA5NTgyZiAxMDA2 NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZQorKysgYi9zb3VuZC9zb2MvY29kZWNz L01ha2VmaWxlCkBAIC0xMDgsNiArMTA4LDggQEAgc25kLXNvYy1uYXU4ODI0LW9ianMgOj0gbmF1 ODgyNC5vCiBzbmQtc29jLW5hdTg4MjUtb2JqcyA6PSBuYXU4ODI1Lm8KIHNuZC1zb2MtaGRtaS1j b2RlYy1vYmpzIDo9IGhkbWktY29kZWMubwogc25kLXNvYy1wY20xNjgxLW9ianMgOj0gcGNtMTY4 MS5vCitzbmQtc29jLXBjbTE3ODktY29kZWMtb2JqcyA6PSBwY20xNzg5Lm8KK3NuZC1zb2MtcGNt MTc4OS1pMmMtb2JqcyA6PSBwY20xNzg5LWkyYy5vCiBzbmQtc29jLXBjbTE3OXgtY29kZWMtb2Jq cyA6PSBwY20xNzl4Lm8KIHNuZC1zb2MtcGNtMTc5eC1pMmMtb2JqcyA6PSBwY20xNzl4LWkyYy5v CiBzbmQtc29jLXBjbTE3OXgtc3BpLW9ianMgOj0gcGNtMTc5eC1zcGkubwpAQCAtMzU5LDYgKzM2 MSw4IEBAIG9iai0kKENPTkZJR19TTkRfU09DX05BVTg4MjUpICAgKz0gc25kLXNvYy1uYXU4ODI1 Lm8KIG9iai0kKENPTkZJR19TTkRfU09DX0hETUlfQ09ERUMpCSs9IHNuZC1zb2MtaGRtaS1jb2Rl Yy5vCiBvYmotJChDT05GSUdfU05EX1NPQ19QQ00xNjgxKQkrPSBzbmQtc29jLXBjbTE2ODEubwog b2JqLSQoQ09ORklHX1NORF9TT0NfUENNMTc5WCkJKz0gc25kLXNvYy1wY20xNzl4LWNvZGVjLm8K K29iai0kKENPTkZJR19TTkRfU09DX1BDTTE3ODlfSTJDKQkrPSBzbmQtc29jLXBjbTE3ODktaTJj Lm8KK29iai0kKENPTkZJR19TTkRfU09DX1BDTTE3ODkpCSs9IHNuZC1zb2MtcGNtMTc4OS1jb2Rl Yy5vCiBvYmotJChDT05GSUdfU05EX1NPQ19QQ00xNzlYX0kyQykJKz0gc25kLXNvYy1wY20xNzl4 LWkyYy5vCiBvYmotJChDT05GSUdfU05EX1NPQ19QQ00xNzlYX1NQSSkJKz0gc25kLXNvYy1wY20x Nzl4LXNwaS5vCiBvYmotJChDT05GSUdfU05EX1NPQ19QQ00xODZYKQkrPSBzbmQtc29jLXBjbTE4 NngubwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9wY20xNzg5LWkyYy5jIGIvc291bmQv c29jL2NvZGVjcy9wY20xNzg5LWkyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMzI3ZWM1ODRmMjQwCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvc29jL2NvZGVj cy9wY20xNzg5LWkyYy5jCkBAIC0wLDAgKzEsNjIgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCisvLyBBdWRpbyBkcml2ZXIgZm9yIFBDTTE3ODkgSTJDCisvLyBDb3B5cmln aHQgKEMpIDIwMTggQm9vdGxpbgorLy8gTXlsw6huZSBKb3NzZXJhbmQgPG15bGVuZS5qb3NzZXJh bmRAYm9vdGxpbi5jb20+CisKKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51 eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVs ZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisK KyNpbmNsdWRlICJwY20xNzg5LmgiCisKK3N0YXRpYyBpbnQgcGNtMTc4OV9pMmNfcHJvYmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGkyY19kZXZpY2Vf aWQgKmlkKQoreworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKKwlpbnQgcmV0OworCisJcmVnbWFw ID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmcGNtMTc4OV9yZWdtYXBfY29uZmlnKTsK KwlpZiAoSVNfRVJSKHJlZ21hcCkpIHsKKwkJcmV0ID0gUFRSX0VSUihyZWdtYXApOworCQlkZXZf ZXJyKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0byBhbGxvY2F0ZSByZWdtYXA6ICVkXG4iLCByZXQp OworCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiBwY20xNzg5X2NvbW1vbl9pbml0KCZjbGll bnQtPmRldiwgcmVnbWFwKTsKK30KKworc3RhdGljIGludCBwY20xNzg5X2kyY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlyZXR1cm4gcGNtMTc4OV9jb21tb25fZXhpdCgm Y2xpZW50LT5kZXYpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBwY20x Nzg5X29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJ0aSxwY20xNzg5IiwgfSwKKwl7 IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBwY20xNzg5X29mX21hdGNoKTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHBjbTE3ODlfaTJjX2lkc1tdID0geworCXsg InBjbTE3ODkiLCAwIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHBjbTE3 ODlfaTJjX2lkcyk7CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBwY20xNzg5X2kyY19kcml2 ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJLm5hbWUJPSAicGNtMTc4OSIsCisJCS5vZl9tYXRjaF90 YWJsZSA9IG9mX21hdGNoX3B0cihwY20xNzg5X29mX21hdGNoKSwKKwl9LAorCS5pZF90YWJsZQk9 IHBjbTE3ODlfaTJjX2lkcywKKwkucHJvYmUJCT0gcGNtMTc4OV9pMmNfcHJvYmUsCisJLnJlbW92 ZQk9IHBjbTE3ODlfaTJjX3JlbW92ZSwKK307CisKK21vZHVsZV9pMmNfZHJpdmVyKHBjbTE3ODlf aTJjX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiQVNvQyBQQ00xNzg5IEkyQyBkcml2 ZXIiKTsKK01PRFVMRV9BVVRIT1IoIk15bMOobmUgSm9zc2VyYW5kIDxteWxlbmUuam9zc2VyYW5k QGJvb3RsaW4uY29tPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvc291 bmQvc29jL2NvZGVjcy9wY20xNzg5LmMgYi9zb3VuZC9zb2MvY29kZWNzL3BjbTE3ODkuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUwN2FjOTQxMmQ2YwotLS0gL2Rl di9udWxsCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvcGNtMTc4OS5jCkBAIC0wLDAgKzEsMjc0IEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLy8gQXVkaW8gZHJpdmVyIGZv ciBQQ00xNzg5CisvLyBDb3B5cmlnaHQgKEMpIDIwMTggQm9vdGxpbgorLy8gTXlsw6huZSBKb3Nz ZXJhbmQgPG15bGVuZS5qb3NzZXJhbmRAYm9vdGxpbi5jb20+CisKKyNpbmNsdWRlIDxsaW51eC9n cGlvLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1 ZXVlLmg+CisKKyNpbmNsdWRlIDxzb3VuZC9wY21fcGFyYW1zLmg+CisjaW5jbHVkZSA8c291bmQv c29jLmg+CisjaW5jbHVkZSA8c291bmQvdGx2Lmg+CisKKyNpbmNsdWRlICJwY20xNzg5LmgiCisK KyNkZWZpbmUgUENNMTc4OV9NVVRFX0NPTlRST0wJMHgxMAorI2RlZmluZSBQQ00xNzg5X0ZNVF9D T05UUk9MCTB4MTEKKyNkZWZpbmUgUENNMTc4OV9TT0ZUX01VVEUJMHgxNAorI2RlZmluZSBQQ00x Nzg5X0RBQ19WT0xfTEVGVAkweDE4CisjZGVmaW5lIFBDTTE3ODlfREFDX1ZPTF9SSUdIVAkweDE5 CisKKyNkZWZpbmUgUENNMTc4OV9GTVRfTUFTSwkweDA3CisjZGVmaW5lIFBDTTE3ODlfTVVURV9N QVNLCTB4MDMKKyNkZWZpbmUgUENNMTc4OV9NVVRFX1NSRVQJMHgwNgorCitzdHJ1Y3QgcGNtMTc4 OV9wcml2YXRlIHsKKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7CisJdW5zaWduZWQgaW50IGZvcm1h dDsKKwl1bnNpZ25lZCBpbnQgcmF0ZTsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldDsKKwlzdHJ1 Y3Qgd29ya19zdHJ1Y3Qgd29yazsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IHJlZ19kZWZhdWx0IHBjbTE3ODlfcmVnX2RlZmF1bHRzW10gPSB7CisJeyBQ Q00xNzg5X0ZNVF9DT05UUk9MLCAweDAwIH0sCisJeyBQQ00xNzg5X1NPRlRfTVVURSwgMHgwMCB9 LAorCXsgUENNMTc4OV9EQUNfVk9MX0xFRlQsIDB4ZmYgfSwKKwl7IFBDTTE3ODlfREFDX1ZPTF9S SUdIVCwgMHhmZiB9LAorfTsKKworc3RhdGljIGJvb2wgcGNtMTc4OV9hY2Nlc3NpYmxlX3JlZyhz dHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByZWcpCit7CisJcmV0dXJuIHJlZyA+PSBQ Q00xNzg5X01VVEVfQ09OVFJPTCAmJiByZWcgPD0gUENNMTc4OV9EQUNfVk9MX1JJR0hUOworfQor CitzdGF0aWMgYm9vbCBwY20xNzg5X3dyaXRlYWJsZV9yZWcoc3RydWN0IGRldmljZSAqZGV2LCB1 bnNpZ25lZCBpbnQgcmVnKQoreworCXJldHVybiBwY20xNzg5X2FjY2Vzc2libGVfcmVnKGRldiwg cmVnKTsKK30KKworc3RhdGljIGludCBwY20xNzg5X3NldF9kYWlfZm10KHN0cnVjdCBzbmRfc29j X2RhaSAqY29kZWNfZGFpLAorCQkJICAgICAgIHVuc2lnbmVkIGludCBmb3JtYXQpCit7CisJc3Ry dWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPSBjb2RlY19kYWktPmNvbXBvbmVudDsK KwlzdHJ1Y3QgcGNtMTc4OV9wcml2YXRlICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2Ry dmRhdGEoY29tcG9uZW50KTsKKworCXByaXYtPmZvcm1hdCA9IGZvcm1hdDsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IHBjbTE3ODlfZGlnaXRhbF9tdXRlKHN0cnVjdCBzbmRfc29jX2Rh aSAqY29kZWNfZGFpLCBpbnQgbXV0ZSkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCA9IGNvZGVjX2RhaS0+Y29tcG9uZW50OworCXN0cnVjdCBwY20xNzg5X3ByaXZhdGUg KnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCisJcmV0 dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIFBDTTE3ODlfU09GVF9NVVRFLAor CQkJCSAgUENNMTc4OV9NVVRFX01BU0ssCisJCQkJICBtdXRlID8gMCA6IFBDTTE3ODlfTVVURV9N QVNLKTsKK30KKworc3RhdGljIGludCBwY20xNzg5X2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9z dWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCSAgICAgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpw YXJhbXMsCisJCQkgICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFpKQoreworCXN0cnVj dCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gY29kZWNfZGFpLT5jb21wb25lbnQ7CisJ c3RydWN0IHBjbTE3ODlfcHJpdmF0ZSAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZk YXRhKGNvbXBvbmVudCk7CisJaW50IHZhbCA9IDAsIHJldDsKKworCXByaXYtPnJhdGUgPSBwYXJh bXNfcmF0ZShwYXJhbXMpOworCisJc3dpdGNoIChwcml2LT5mb3JtYXQgJiBTTkRfU09DX0RBSUZN VF9GT1JNQVRfTUFTSykgeworCWNhc2UgU05EX1NPQ19EQUlGTVRfUklHSFRfSjoKKwkJc3dpdGNo IChwYXJhbXNfd2lkdGgocGFyYW1zKSkgeworCQljYXNlIDI0OgorCQkJdmFsID0gMjsKKwkJCWJy ZWFrOworCQljYXNlIDE2OgorCQkJdmFsID0gMzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ cmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9JMlM6 CisJCXN3aXRjaCAocGFyYW1zX3dpZHRoKHBhcmFtcykpIHsKKwkJY2FzZSAxNjoKKwkJY2FzZSAy NDoKKwkJY2FzZSAzMjoKKwkJCXZhbCA9IDA7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXJl dHVybiAtRUlOVkFMOworCQl9CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfTEVGVF9K OgorCQlzd2l0Y2ggKHBhcmFtc193aWR0aChwYXJhbXMpKSB7CisJCWNhc2UgMTY6CisJCWNhc2Ug MjQ6CisJCWNhc2UgMzI6CisJCQl2YWwgPSAxOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQly ZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlicmVhazsKKwlkZWZhdWx0OgorCQlkZXZfZXJyKGNvbXBv bmVudC0+ZGV2LCAiSW52YWxpZCBEQUkgZm9ybWF0XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgUENNMTc4OV9GTVRf Q09OVFJPTCwKKwkJCQkgUENNMTc4OV9GTVRfTUFTSywgdmFsKTsKKwlpZiAocmV0IDwgMCkKKwkJ cmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwY20xNzg5X3dvcmtf cXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBwY20xNzg5X3ByaXZh dGUgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywKKwkJCQkJCSAgICBzdHJ1Y3QgcGNtMTc4OV9w cml2YXRlLAorCQkJCQkJICAgIHdvcmspOworCisJLyogUGVyZm9ybSBhIHNvZnR3YXJlIHJlc2V0 IHRvIHJlbW92ZSBjb2RlYyBmcm9tIGRlc3luY2hyb25pemVkIHN0YXRlICovCisJaWYgKHJlZ21h cF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIFBDTTE3ODlfTVVURV9DT05UUk9MLAorCQkJICAg ICAgIDB4MyA8PCBQQ00xNzg5X01VVEVfU1JFVCwgMCkgPCAwKQorCQlkZXZfZXJyKHByaXYtPmRl diwgIkVycm9yIHdoaWxlIHNldHRpbmcgU1JFVCIpOworfQorCitzdGF0aWMgaW50IHBjbTE3ODlf dHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IGNtZCwKKwkJ CSAgIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dCAqY29tcG9uZW50ID0gZGFpLT5jb21wb25lbnQ7CisJc3RydWN0IHBjbTE3ODlfcHJpdmF0ZSAq cHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisJaW50IHJl dCA9IDA7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RBUlQ6 CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9SRVNVTUU6CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dF Ul9QQVVTRV9SRUxFQVNFOgorCQlzY2hlZHVsZV93b3JrKCZwcml2LT53b3JrKTsKKwkJYnJlYWs7 CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVE9QOgorCWNhc2UgU05EUlZfUENNX1RSSUdHRVJf U1VTUEVORDoKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1BBVVNFX1BVU0g6CisJCWJyZWFrOwor CWRlZmF1bHQ6CisJCXJldCA9IC1FSU5WQUw7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhaV9vcHMgcGNtMTc4OV9kYWlfb3BzID0geworCS5z ZXRfZm10CT0gcGNtMTc4OV9zZXRfZGFpX2ZtdCwKKwkuaHdfcGFyYW1zCT0gcGNtMTc4OV9od19w YXJhbXMsCisJLmRpZ2l0YWxfbXV0ZQk9IHBjbTE3ODlfZGlnaXRhbF9tdXRlLAorCS50cmlnZ2Vy CT0gcGNtMTc4OV90cmlnZ2VyLAorfTsKKworc3RhdGljIGNvbnN0IERFQ0xBUkVfVExWX0RCX1ND QUxFKHBjbTE3ODlfZGFjX3RsdiwgLTEyMDAwLCA1MCwgMSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgc25kX2tjb250cm9sX25ldyBwY20xNzg5X2NvbnRyb2xzW10gPSB7CisJU09DX0RPVUJMRV9S X1JBTkdFX1RMVigiREFDIFBsYXliYWNrIFZvbHVtZSIsIFBDTTE3ODlfREFDX1ZPTF9MRUZULAor CQkJICAgICAgIFBDTTE3ODlfREFDX1ZPTF9SSUdIVCwgMCwgMHhmLCAweGZmLCAwLAorCQkJICAg ICAgIHBjbTE3ODlfZGFjX3RsdiksCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2Nf ZGFwbV93aWRnZXQgcGNtMTc4OV9kYXBtX3dpZGdldHNbXSA9IHsKKwlTTkRfU09DX0RBUE1fT1VU UFVUKCJJT1VUTCsiKSwKKwlTTkRfU09DX0RBUE1fT1VUUFVUKCJJT1VUTC0iKSwKKwlTTkRfU09D X0RBUE1fT1VUUFVUKCJJT1VUUisiKSwKKwlTTkRfU09DX0RBUE1fT1VUUFVUKCJJT1VUUi0iKSwK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3JvdXRlIHBjbTE3ODlfZGFw bV9yb3V0ZXNbXSA9IHsKKwl7ICJJT1VUTCsiLCBOVUxMLCAiUGxheWJhY2siIH0sCisJeyAiSU9V VEwtIiwgTlVMTCwgIlBsYXliYWNrIiB9LAorCXsgIklPVVRSKyIsIE5VTEwsICJQbGF5YmFjayIg fSwKKwl7ICJJT1VUUi0iLCBOVUxMLCAiUGxheWJhY2siIH0sCit9OworCitzdGF0aWMgc3RydWN0 IHNuZF9zb2NfZGFpX2RyaXZlciBwY20xNzg5X2RhaSA9IHsKKwkubmFtZSA9ICJwY20xNzg5LWhp ZmkiLAorCS5wbGF5YmFjayA9IHsKKwkJLnN0cmVhbV9uYW1lID0gIlBsYXliYWNrIiwKKwkJLmNo YW5uZWxzX21pbiA9IDIsCisJCS5jaGFubmVsc19tYXggPSAyLAorCQkucmF0ZXMgPSBTTkRSVl9Q Q01fUkFURV9DT05USU5VT1VTLAorCQkucmF0ZV9taW4gPSAxMDAwMCwKKwkJLnJhdGVfbWF4ID0g MjAwMDAwLAorCQkuZm9ybWF0cyA9IFBDTTE3ODlfRk9STUFUUywKKwl9LAorCS5vcHMgPSAmcGNt MTc4OV9kYWlfb3BzLAorfTsKKworY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgcGNtMTc4OV9y ZWdtYXBfY29uZmlnID0geworCS5yZWdfYml0cwkJPSA4LAorCS52YWxfYml0cwkJPSA4LAorCS5t YXhfcmVnaXN0ZXIJCT0gUENNMTc4OV9EQUNfVk9MX1JJR0hULAorCS5yZWdfZGVmYXVsdHMJCT0g cGNtMTc4OV9yZWdfZGVmYXVsdHMsCisJLm51bV9yZWdfZGVmYXVsdHMJPSBBUlJBWV9TSVpFKHBj bTE3ODlfcmVnX2RlZmF1bHRzKSwKKwkud3JpdGVhYmxlX3JlZwkJPSBwY20xNzg5X3dyaXRlYWJs ZV9yZWcsCisJLnJlYWRhYmxlX3JlZwkJPSBwY20xNzg5X2FjY2Vzc2libGVfcmVnLAorfTsKK0VY UE9SVF9TWU1CT0xfR1BMKHBjbTE3ODlfcmVnbWFwX2NvbmZpZyk7CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgc25kX3NvY19jb21wb25lbnRfZHJpdmVyIHNvY19jb21wb25lbnRfZGV2X3BjbTE3ODkg PSB7CisJLmNvbnRyb2xzCQk9IHBjbTE3ODlfY29udHJvbHMsCisJLm51bV9jb250cm9scwkJPSBB UlJBWV9TSVpFKHBjbTE3ODlfY29udHJvbHMpLAorCS5kYXBtX3dpZGdldHMJCT0gcGNtMTc4OV9k YXBtX3dpZGdldHMsCisJLm51bV9kYXBtX3dpZGdldHMJPSBBUlJBWV9TSVpFKHBjbTE3ODlfZGFw bV93aWRnZXRzKSwKKwkuZGFwbV9yb3V0ZXMJCT0gcGNtMTc4OV9kYXBtX3JvdXRlcywKKwkubnVt X2RhcG1fcm91dGVzCT0gQVJSQVlfU0laRShwY20xNzg5X2RhcG1fcm91dGVzKSwKKwkuaWRsZV9i aWFzX29uCQk9IDEsCisJLnVzZV9wbWRvd25fdGltZQk9IDEsCisJLmVuZGlhbm5lc3MJCT0gMSwK Kwkubm9uX2xlZ2FjeV9kYWlfbmFtaW5nCT0gMSwKK307CisKK2ludCBwY20xNzg5X2NvbW1vbl9p bml0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJlZ21hcCAqcmVnbWFwKQoreworCXN0cnVj dCBwY20xNzg5X3ByaXZhdGUgKnBjbTE3ODk7CisKKwlwY20xNzg5ID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKHN0cnVjdCBwY20xNzg5X3ByaXZhdGUpLAorCQkJICAgICAgIEdGUF9LRVJORUwp OworCWlmICghcGNtMTc4OSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlwY20xNzg5LT5yZWdtYXAg PSByZWdtYXA7CisJcGNtMTc4OS0+ZGV2ID0gZGV2OworCWRldl9zZXRfZHJ2ZGF0YShkZXYsIHBj bTE3ODkpOworCisJcGNtMTc4OS0+cmVzZXQgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYs ICJyZXNldCIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKHBjbTE3ODktPnJlc2V0KSkK KwkJcmV0dXJuIFBUUl9FUlIocGNtMTc4OS0+cmVzZXQpOworCisJZ3Bpb2Rfc2V0X3ZhbHVlX2Nh bnNsZWVwKHBjbTE3ODktPnJlc2V0LCAwKTsKKwltc2xlZXAoMzAwKTsKKworCUlOSVRfV09SSygm cGNtMTc4OS0+d29yaywgcGNtMTc4OV93b3JrX3F1ZXVlKTsKKworCXJldHVybiBkZXZtX3NuZF9z b2NfcmVnaXN0ZXJfY29tcG9uZW50KGRldiwgJnNvY19jb21wb25lbnRfZGV2X3BjbTE3ODksCisJ CQkJCSAgICAgICAmcGNtMTc4OV9kYWksIDEpOworfQorRVhQT1JUX1NZTUJPTF9HUEwocGNtMTc4 OV9jb21tb25faW5pdCk7CisKK2ludCBwY20xNzg5X2NvbW1vbl9leGl0KHN0cnVjdCBkZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgcGNtMTc4OV9wcml2YXRlICpwcml2ID0gZGV2X2dldF9kcnZkYXRh KGRldik7CisKKwlpZiAoJnByaXYtPndvcmspCisJCWZsdXNoX3dvcmsoJnByaXYtPndvcmspOwor CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChwY20xNzg5X2NvbW1vbl9leGl0KTsK KworTU9EVUxFX0RFU0NSSVBUSU9OKCJBU29DIFBDTTE3ODkgZHJpdmVyIik7CitNT0RVTEVfQVVU SE9SKCJNeWzDqG5lIEpvc3NlcmFuZCA8bXlsZW5lLmpvc3NlcmFuZEBmcmVlLWVsZWN0cm9ucy5j b20+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29k ZWNzL3BjbTE3ODkuaCBiL3NvdW5kL3NvYy9jb2RlY3MvcGNtMTc4OS5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzQ0NmQ3ODllZDQ4Ci0tLSAvZGV2L251bGwKKysr IGIvc291bmQvc29jL2NvZGVjcy9wY20xNzg5LmgKQEAgLTAsMCArMSwxNyBAQAorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8vIERlZmluaXRpb25zIGZvciBQQ00xNzg5IGF1 ZGlvIGRyaXZlcgorLy8gQ29weXJpZ2h0IChDKSAyMDE4IEJvb3RsaW4KKy8vIE15bMOobmUgSm9z c2VyYW5kIDxteWxlbmUuam9zc2VyYW5kQGJvb3RsaW4uY29tPgorCisjaWZuZGVmIF9fUENNMTc4 OV9IX18KKyNkZWZpbmUgX19QQ00xNzg5X0hfXworCisjZGVmaW5lIFBDTTE3ODlfRk9STUFUUyAo U05EUlZfUENNX0ZNVEJJVF9TMzJfTEUgfCBTTkRSVl9QQ01fRk1UQklUX1MyNF9MRSB8IFwKKwkJ CSBTTkRSVl9QQ01fRk1UQklUX1MxNl9MRSkKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWdtYXBf Y29uZmlnIHBjbTE3ODlfcmVnbWFwX2NvbmZpZzsKKworaW50IHBjbTE3ODlfY29tbW9uX2luaXQo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXApOworaW50IHBjbTE3ODlf Y29tbW9uX2V4aXQoc3RydWN0IGRldmljZSAqZGV2KTsKKworI2VuZGlmCi0tIAoyLjExLjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwg bWFpbGluZyBsaXN0CkFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5h bHNhLXByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vYWxzYS1kZXZlbAo=