From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/tegra: sor: Support for audio over HDMI Date: Mon, 03 Dec 2018 18:05:07 +0200 Message-ID: <875zwa8uks.fsf@intel.com> References: <20181203153642.13562-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181203153642.13562-1-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Thierry Reding Cc: linux-tegra@vger.kernel.org, Sameer Pujar , dri-devel@lists.freedesktop.org, Jon Hunter List-Id: linux-tegra@vger.kernel.org T24gTW9uLCAwMyBEZWMgMjAxOCwgVGhpZXJyeSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWls LmNvbT4gd3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4K Pgo+IFRoaXMgY29kZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGF1ZGlvIG92ZXIgSERNSSBzdXBw b3J0IG9uIG9sZGVyIGNoaXBzLgo+IEludGVyb3BlcmF0aW9uIHdpdGggdGhlIGF1ZGlvIGNvZGVj IGlzIGRvbmUgdmlhIGEgcGFpciBvZiBjb2RlYyBzY3JhdGNoCj4gcmVnaXN0ZXJzIGFuZCBhbiBp bnRlcnJ1cHQgdGhhdCBpcyByYWlzZWQgYXQgdGhlIFNPUiB3aGVuIHRoZSBjb2RlYyBoYXMKPiB3 cml0dGVuIHRob3NlIHJlZ2lzdGVycy4KPgo+IFNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5n IDx0cmVkaW5nQG52aWRpYS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3Iu YyB8IDIyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9n cHUvZHJtL3RlZ3JhL3Nvci5oIHwgIDY4ICsrKysrKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwg Mjk3IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEv c29yLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMKPiBpbmRleCBiMTI5ZGEyZTVhZmQu LjIyYTU0NDM0YTc1NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMKPiBAQCAtMTksNiArMTksOCBAQAo+ ICAKPiAgI2luY2x1ZGUgPHNvYy90ZWdyYS9wbWMuaD4KPiAgCj4gKyNpbmNsdWRlIDxzb3VuZC9o ZGFfdmVyYnMuaD4KPiArCj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiAg I2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3BhbmVs Lmg+Cj4gQEAgLTQwNyw2ICs0MDksNyBAQCBzdHJ1Y3QgdGVncmFfc29yIHsKPiAgCWNvbnN0IHN0 cnVjdCB0ZWdyYV9zb3Jfc29jICpzb2M7Cj4gIAl2b2lkIF9faW9tZW0gKnJlZ3M7Cj4gIAl1bnNp Z25lZCBpbnQgaW5kZXg7Cj4gKwl1bnNpZ25lZCBpbnQgaXJxOwo+ICAKPiAgCXN0cnVjdCByZXNl dF9jb250cm9sICpyc3Q7Cj4gIAlzdHJ1Y3QgY2xrICpjbGtfcGFyZW50Owo+IEBAIC00MzMsNiAr NDM2LDExIEBAIHN0cnVjdCB0ZWdyYV9zb3Igewo+ICAKPiAgCXN0cnVjdCBkZWxheWVkX3dvcmsg c2NkYzsKPiAgCWJvb2wgc2NkY19lbmFibGVkOwo+ICsKPiArCXN0cnVjdCB7Cj4gKwkJdW5zaWdu ZWQgaW50IHNhbXBsZV9yYXRlOwo+ICsJCXVuc2lnbmVkIGludCBjaGFubmVsczsKPiArCX0gYXVk aW87Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgdGVncmFfc29yX3N0YXRlIHsKPiBAQCAtMjEzOSw2ICsy MTQ3LDE0NCBAQCB0ZWdyYV9zb3JfaGRtaV9zZXR1cF9hdmlfaW5mb2ZyYW1lKHN0cnVjdCB0ZWdy YV9zb3IgKnNvciwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCB0ZWdyYV9z b3Jfd3JpdGVfZWxkKHN0cnVjdCB0ZWdyYV9zb3IgKnNvcikKPiArewo+ICsJc2l6ZV90IGxlbmd0 aCA9IGRybV9lbGRfc2l6ZShzb3ItPm91dHB1dC5jb25uZWN0b3IuZWxkKSwgaTsKClRoaXMgY2F1 Z2h0IG15IGV5ZSwgY2FuJ3QgYmUgcmlnaHQ/CgpCUiwKSmFuaS4KCgo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCBsZW5ndGg7IGkrKykKPiArCQl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgaSA8PCA4IHwg c29yLT5vdXRwdXQuY29ubmVjdG9yLmVsZFtpXSwKPiArCQkJCSBTT1JfQVVESU9fSERBX0VMRF9C VUZXUik7Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBIREEgY29kZWMgd2lsbCBhbHdheXMgcmVwb3J0 IGFuIEVMRCBidWZmZXIgc2l6ZSBvZiA5NiBieXRlcyBhbmQKPiArCSAqIHRoZSBIREEgY29kZWMg ZHJpdmVyIHdpbGwgY2hlY2sgdGhhdCBlYWNoIGJ5dGUgcmVhZCBmcm9tIHRoZSBidWZmZXIKPiAr CSAqIGlzIHZhbGlkLiBUaGVyZWZvcmUgZXZlcnkgYnl0ZSBtdXN0IGJlIHdyaXR0ZW4sIGV2ZW4g aWYgbm8gOTYgYnl0ZXMKPiArCSAqIHdlcmUgcGFyc2VkIGZyb20gRURJRC4KPiArCSAqLwo+ICsJ Zm9yIChpID0gbGVuZ3RoOyBpIDwgOTY7IGkrKykKPiArCQl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwg aSA8PCA4IHwgMCwgU09SX0FVRElPX0hEQV9FTERfQlVGV1IpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCB0ZWdyYV9zb3JfYXVkaW9fcHJlcGFyZShzdHJ1Y3QgdGVncmFfc29yICpzb3IpCj4gK3sK PiArCXUzMiB2YWx1ZTsKPiArCj4gKwl0ZWdyYV9zb3Jfd3JpdGVfZWxkKHNvcik7Cj4gKwo+ICsJ dmFsdWUgPSBTT1JfQVVESU9fSERBX1BSRVNFTlNFX0VMRFYgfCBTT1JfQVVESU9fSERBX1BSRVNF TlNFX1BEOwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfQVVESU9fSERBX1BS RVNFTlNFKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdGVncmFfc29yX2F1ZGlvX3VucHJlcGFy ZShzdHJ1Y3QgdGVncmFfc29yICpzb3IpCj4gK3sKPiArCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCAw LCBTT1JfQVVESU9fSERBX1BSRVNFTlNFKTsKPiArfQo+ICsKPiArc3RhdGljIGludCB0ZWdyYV9z b3JfaGRtaV9lbmFibGVfYXVkaW9faW5mb2ZyYW1lKHN0cnVjdCB0ZWdyYV9zb3IgKnNvcikKPiAr ewo+ICsJdTggYnVmZmVyW0hETUlfSU5GT0ZSQU1FX1NJWkUoQVVESU8pXTsKPiArCXN0cnVjdCBo ZG1pX2F1ZGlvX2luZm9mcmFtZSBmcmFtZTsKPiArCXUzMiB2YWx1ZTsKPiArCWludCBlcnI7Cj4g Kwo+ICsJZXJyID0gaGRtaV9hdWRpb19pbmZvZnJhbWVfaW5pdCgmZnJhbWUpOwo+ICsJaWYgKGVy ciA8IDApIHsKPiArCQlkZXZfZXJyKHNvci0+ZGV2LCAiZmFpbGVkIHRvIHNldHVwIGF1ZGlvIGlu Zm9mcmFtZTogJWRcbiIsIGVycik7Cj4gKwkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwlmcmFt ZS5jaGFubmVscyA9IHNvci0+YXVkaW8uY2hhbm5lbHM7Cj4gKwo+ICsJZXJyID0gaGRtaV9hdWRp b19pbmZvZnJhbWVfcGFjaygmZnJhbWUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwo+ICsJaWYg KGVyciA8IDApIHsKPiArCQlkZXZfZXJyKHNvci0+ZGV2LCAiZmFpbGVkIHRvIHBhY2sgYXVkaW8g aW5mb2ZyYW1lOiAlZFxuIiwgZXJyKTsKPiArCQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiArCXRl Z3JhX3Nvcl9oZG1pX3dyaXRlX2luZm9wYWNrKHNvciwgYnVmZmVyLCBlcnIpOwo+ICsKPiArCXZh bHVlID0gdGVncmFfc29yX3JlYWRsKHNvciwgU09SX0hETUlfQVVESU9fSU5GT0ZSQU1FX0NUUkwp Owo+ICsJdmFsdWUgfD0gSU5GT0ZSQU1FX0NUUkxfQ0hFQ0tTVU1fRU5BQkxFOwo+ICsJdmFsdWUg fD0gSU5GT0ZSQU1FX0NUUkxfRU5BQkxFOwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVl LCBTT1JfSERNSV9BVURJT19JTkZPRlJBTUVfQ1RSTCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIHRlZ3JhX3Nvcl9oZG1pX2F1ZGlvX2VuYWJsZShzdHJ1Y3QgdGVn cmFfc29yICpzb3IpCj4gK3sKPiArCXUzMiB2YWx1ZTsKPiArCj4gKwl2YWx1ZSA9IHRlZ3JhX3Nv cl9yZWFkbChzb3IsIFNPUl9BVURJT19DTlRSTCk7Cj4gKwo+ICsJLyogc2VsZWN0IEhEQSBhdWRp byBpbnB1dCAqLwo+ICsJdmFsdWUgJj0gflNPUl9BVURJT19DTlRSTF9TT1VSQ0VfU0VMRUNUKFNP VVJDRV9TRUxFQ1RfTUFTSyk7Cj4gKwl2YWx1ZSB8PSBTT1JfQVVESU9fQ05UUkxfU09VUkNFX1NF TEVDVChTT1VSQ0VfU0VMRUNUX0hEQSk7Cj4gKwo+ICsJLyogaW5qZWN0IG51bGwgc2FtcGxlcyAq Lwo+ICsJaWYgKHNvci0+YXVkaW8uY2hhbm5lbHMgIT0gMikKPiArCQl2YWx1ZSAmPSB+U09SX0FV RElPX0NOVFJMX0lOSkVDVF9OVUxMU01QTDsKPiArCWVsc2UKPiArCQl2YWx1ZSB8PSBTT1JfQVVE SU9fQ05UUkxfSU5KRUNUX05VTExTTVBMOwo+ICsKPiArCXZhbHVlIHw9IFNPUl9BVURJT19DTlRS TF9BRklGT19GTFVTSDsKPiArCj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9B VURJT19DTlRSTCk7Cj4gKwo+ICsJLyogZW5hYmxlIGFkdmVydGlzaW5nIEhCUiBjYXBhYmlsaXR5 ICovCj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgU09SX0FVRElPX1NQQVJFX0hCUl9FTkFCTEUs IFNPUl9BVURJT19TUEFSRSk7Cj4gKwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3IsIDAsIFNPUl9I RE1JX0FDUl9DVFJMKTsKPiArCj4gKwl2YWx1ZSA9IFNPUl9IRE1JX1NQQVJFX0FDUl9QUklPUklU WV9ISUdIIHwKPiArCQlTT1JfSERNSV9TUEFSRV9DVFNfUkVTRVQoMSkgfAo+ICsJCVNPUl9IRE1J X1NQQVJFX0hXX0NUU19FTkFCTEU7Cj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNP Ul9IRE1JX1NQQVJFKTsKPiArCj4gKwkvKiBlbmFibGUgSFcgQ1RTICovCj4gKwl2YWx1ZSA9IFNP Ul9IRE1JX0FDUl9TVUJQQUNLX0xPV19TQjEoMCk7Cj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwg dmFsdWUsIFNPUl9IRE1JX0FDUl8wNDQxX1NVQlBBQ0tfTE9XKTsKPiArCj4gKwkvKiBhbGxvdyBw YWNrZXQgdG8gYmUgc2VudCAqLwo+ICsJdmFsdWUgPSBTT1JfSERNSV9BQ1JfU1VCUEFDS19ISUdI X0VOQUJMRTsKPiArCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwgU09SX0hETUlfQUNSXzA0 NDFfU1VCUEFDS19ISUdIKTsKPiArCj4gKwkvKiByZXNldCBOIGNvdW50ZXIgYW5kIGVuYWJsZSBs b29rdXAgKi8KPiArCXZhbHVlID0gU09SX0hETUlfQVVESU9fTl9SRVNFVCB8IFNPUl9IRE1JX0FV RElPX05fTE9PS1VQOwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfSERNSV9B VURJT19OKTsKPiArCj4gKwl2YWx1ZSA9ICgyNDAwMCAqIDQwOTYpIC8gKDEyOCAqIHNvci0+YXVk aW8uc2FtcGxlX3JhdGUgLyAxMDAwKTsKPiArCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwg U09SX0FVRElPX0FWQUxfMDMyMCk7Cj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgNDA5NiwgU09S X0FVRElPX05WQUxfMDMyMCk7Cj4gKwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3IsIDIwMDAwLCBT T1JfQVVESU9fQVZBTF8wNDQxKTsKPiArCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCA0NzA0LCBTT1Jf QVVESU9fTlZBTF8wNDQxKTsKPiArCj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgMjAwMDAsIFNP Ul9BVURJT19BVkFMXzA4ODIpOwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3IsIDk0MDgsIFNPUl9B VURJT19OVkFMXzA4ODIpOwo+ICsKPiArCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCAyMDAwMCwgU09S X0FVRElPX0FWQUxfMTc2NCk7Cj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgMTg4MTYsIFNPUl9B VURJT19OVkFMXzE3NjQpOwo+ICsKPiArCXZhbHVlID0gKDI0MDAwICogNjE0NCkgLyAoMTI4ICog c29yLT5hdWRpby5zYW1wbGVfcmF0ZSAvIDEwMDApOwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3Is IHZhbHVlLCBTT1JfQVVESU9fQVZBTF8wNDgwKTsKPiArCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCA2 MTQ0LCBTT1JfQVVESU9fTlZBTF8wNDgwKTsKPiArCj4gKwl2YWx1ZSA9ICgyNDAwMCAqIDEyMjg4 KSAvICgxMjggKiBzb3ItPmF1ZGlvLnNhbXBsZV9yYXRlIC8gMTAwMCk7Cj4gKwl0ZWdyYV9zb3Jf d3JpdGVsKHNvciwgdmFsdWUsIFNPUl9BVURJT19BVkFMXzA5NjApOwo+ICsJdGVncmFfc29yX3dy aXRlbChzb3IsIDEyMjg4LCBTT1JfQVVESU9fTlZBTF8wOTYwKTsKPiArCj4gKwl2YWx1ZSA9ICgy NDAwMCAqIDI0NTc2KSAvICgxMjggKiBzb3ItPmF1ZGlvLnNhbXBsZV9yYXRlIC8gMTAwMCk7Cj4g Kwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9BVURJT19BVkFMXzE5MjApOwo+ICsJ dGVncmFfc29yX3dyaXRlbChzb3IsIDI0NTc2LCBTT1JfQVVESU9fTlZBTF8xOTIwKTsKPiArCj4g Kwl2YWx1ZSA9IHRlZ3JhX3Nvcl9yZWFkbChzb3IsIFNPUl9IRE1JX0FVRElPX04pOwo+ICsJdmFs dWUgJj0gflNPUl9IRE1JX0FVRElPX05fUkVTRVQ7Cj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwg dmFsdWUsIFNPUl9IRE1JX0FVRElPX04pOwo+ICsKPiArCXRlZ3JhX3Nvcl9oZG1pX2VuYWJsZV9h dWRpb19pbmZvZnJhbWUoc29yKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgdGVncmFfc29yX2hk bWlfZGlzYWJsZV9hdWRpb19pbmZvZnJhbWUoc3RydWN0IHRlZ3JhX3NvciAqc29yKQo+ICB7Cj4g IAl1MzIgdmFsdWU7Cj4gQEAgLTIxNDgsNiArMjI5NCwxMSBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9z b3JfaGRtaV9kaXNhYmxlX2F1ZGlvX2luZm9mcmFtZShzdHJ1Y3QgdGVncmFfc29yICpzb3IpCj4g IAl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9IRE1JX0FVRElPX0lORk9GUkFNRV9D VFJMKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgdGVncmFfc29yX2hkbWlfYXVkaW9fZGlzYWJs ZShzdHJ1Y3QgdGVncmFfc29yICpzb3IpCj4gK3sKPiArCXRlZ3JhX3Nvcl9oZG1pX2Rpc2FibGVf YXVkaW9faW5mb2ZyYW1lKHNvcik7Cj4gK30KPiArCj4gIHN0YXRpYyBzdHJ1Y3QgdGVncmFfc29y X2hkbWlfc2V0dGluZ3MgKgo+ICB0ZWdyYV9zb3JfaGRtaV9maW5kX3NldHRpbmdzKHN0cnVjdCB0 ZWdyYV9zb3IgKnNvciwgdW5zaWduZWQgbG9uZyBmcmVxdWVuY3kpCj4gIHsKPiBAQCAtMjI0Myw2 ICsyMzk0LDcgQEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2hkbWlfZGlzYWJsZShzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIpCj4gIAl1MzIgdmFsdWU7Cj4gIAlpbnQgZXJyOwo+ICAKPiArCXRl Z3JhX3Nvcl9hdWRpb191bnByZXBhcmUoc29yKTsKPiAgCXRlZ3JhX3Nvcl9oZG1pX3NjZGNfc3Rv cChzb3IpOwo+ICAKPiAgCWVyciA9IHRlZ3JhX3Nvcl9kZXRhY2goc29yKTsKPiBAQCAtMjY1MSw2 ICsyODAzLDcgQEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2hkbWlfZW5hYmxlKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcikKPiAgCQlkZXZfZXJyKHNvci0+ZGV2LCAiZmFpbGVkIHRvIHdha2V1 cCBTT1I6ICVkXG4iLCBlcnIpOwo+ICAKPiAgCXRlZ3JhX3Nvcl9oZG1pX3NjZGNfc3RhcnQoc29y KTsKPiArCXRlZ3JhX3Nvcl9hdWRpb19wcmVwYXJlKHNvcik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIHRlZ3JhX3Nvcl9oZG1pX2hlbHBl cnMgPSB7Cj4gQEAgLTI2NjYsNiArMjgxOSw3IEBAIHN0YXRpYyBpbnQgdGVncmFfc29yX2luaXQo c3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkKPiAgCXN0cnVjdCB0ZWdyYV9zb3IgKnNvciA9 IGhvc3QxeF9jbGllbnRfdG9fc29yKGNsaWVudCk7Cj4gIAlpbnQgY29ubmVjdG9yID0gRFJNX01P REVfQ09OTkVDVE9SX1Vua25vd247Cj4gIAlpbnQgZW5jb2RlciA9IERSTV9NT0RFX0VOQ09ERVJf Tk9ORTsKPiArCXUzMiB2YWx1ZTsKPiAgCWludCBlcnI7Cj4gIAo+ICAJaWYgKCFzb3ItPmF1eCkg ewo+IEBAIC0yNzU5LDYgKzI5MTMsMTUgQEAgc3RhdGljIGludCB0ZWdyYV9zb3JfaW5pdChzdHJ1 Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQo+ICAJaWYgKGVyciA8IDApCj4gIAkJcmV0dXJuIGVy cjsKPiAgCj4gKwkvKgo+ICsJICogRW5hYmxlIGFuZCB1bm1hc2sgdGhlIEhEQSBjb2RlYyBTQ1JB VENIMCByZWdpc3RlciBpbnRlcnJ1cHQuIFRoaXMKPiArCSAqIGlzIHVzZWQgZm9yIGludGVyb3Bl cmFiaWxpdHkgYmV0d2VlbiB0aGUgSERBIGNvZGVjIGRyaXZlciBhbmQgdGhlCj4gKwkgKiBIRE1J L0RQIGRyaXZlci4KPiArCSAqLwo+ICsJdmFsdWUgPSBTT1JfSU5UX0NPREVDX1NDUkFUQ0gxIHwg U09SX0lOVF9DT0RFQ19TQ1JBVENIMDsKPiArCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwg U09SX0lOVF9FTkFCTEUpOwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfSU5U X01BU0spOwo+ICsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0yNzY3LDYgKzI5MzAsOSBA QCBzdGF0aWMgaW50IHRlZ3JhX3Nvcl9leGl0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQp Cj4gIAlzdHJ1Y3QgdGVncmFfc29yICpzb3IgPSBob3N0MXhfY2xpZW50X3RvX3NvcihjbGllbnQp Owo+ICAJaW50IGVycjsKPiAgCj4gKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgMCwgU09SX0lOVF9N QVNLKTsKPiArCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCAwLCBTT1JfSU5UX0VOQUJMRSk7Cj4gKwo+ ICAJdGVncmFfb3V0cHV0X2V4aXQoJnNvci0+b3V0cHV0KTsKPiAgCj4gIAlpZiAoc29yLT5hdXgp IHsKPiBAQCAtMzAzNyw2ICszMjAzLDU0IEBAIHN0YXRpYyBpbnQgdGVncmFfc29yX3BhcnNlX2R0 KHN0cnVjdCB0ZWdyYV9zb3IgKnNvcikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMg dm9pZCB0ZWdyYV9oZGFfcGFyc2VfZm9ybWF0KHVuc2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVk IGludCAqcmF0ZSwKPiArCQkJCSAgIHVuc2lnbmVkIGludCAqY2hhbm5lbHMpCj4gK3sKPiArCXVu c2lnbmVkIGludCBtdWwsIGRpdjsKPiArCj4gKwlpZiAoZm9ybWF0ICYgQUNfRk1UX0JBU0VfNDRL KQo+ICsJCSpyYXRlID0gNDQxMDA7Cj4gKwllbHNlCj4gKwkJKnJhdGUgPSA0ODAwMDsKPiArCj4g KwltdWwgPSAoZm9ybWF0ICYgQUNfRk1UX01VTFRfTUFTSykgPj4gQUNfRk1UX01VTFRfU0hJRlQ7 Cj4gKwlkaXYgPSAoZm9ybWF0ICYgQUNfRk1UX0RJVl9NQVNLKSA+PiBBQ19GTVRfRElWX1NISUZU Owo+ICsKPiArCSpyYXRlID0gKnJhdGUgKiAobXVsICsgMSkgLyAoZGl2ICsgMSk7Cj4gKwo+ICsJ KmNoYW5uZWxzID0gKGZvcm1hdCAmIEFDX0ZNVF9DSEFOX01BU0spID4+IEFDX0ZNVF9DSEFOX1NI SUZUOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgdGVncmFfc29yX2lycShpbnQgaXJx LCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgdGVncmFfc29yICpzb3IgPSBkYXRhOwo+ICsJ dTMyIHZhbHVlOwo+ICsKPiArCXZhbHVlID0gdGVncmFfc29yX3JlYWRsKHNvciwgU09SX0lOVF9T VEFUVVMpOwo+ICsJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfSU5UX1NUQVRVUyk7 Cj4gKwo+ICsJaWYgKHZhbHVlICYgU09SX0lOVF9DT0RFQ19TQ1JBVENIMCkgewo+ICsJCXZhbHVl ID0gdGVncmFfc29yX3JlYWRsKHNvciwgU09SX0FVRElPX0hEQV9DT0RFQ19TQ1JBVENIMCk7Cj4g Kwo+ICsJCWlmICh2YWx1ZSAmIFNPUl9BVURJT19IREFfQ09ERUNfU0NSQVRDSDBfVkFMSUQpIHsK PiArCQkJdW5zaWduZWQgaW50IGZvcm1hdCwgc2FtcGxlX3JhdGUsIGNoYW5uZWxzOwo+ICsKPiAr CQkJZm9ybWF0ID0gdmFsdWUgJiBTT1JfQVVESU9fSERBX0NPREVDX1NDUkFUQ0gwX0ZNVF9NQVNL Owo+ICsKPiArCQkJdGVncmFfaGRhX3BhcnNlX2Zvcm1hdChmb3JtYXQsICZzYW1wbGVfcmF0ZSwg JmNoYW5uZWxzKTsKPiArCj4gKwkJCXNvci0+YXVkaW8uc2FtcGxlX3JhdGUgPSBzYW1wbGVfcmF0 ZTsKPiArCQkJc29yLT5hdWRpby5jaGFubmVscyA9IGNoYW5uZWxzOwo+ICsKPiArCQkJdGVncmFf c29yX2hkbWlfYXVkaW9fZW5hYmxlKHNvcik7Cj4gKwkJfSBlbHNlIHsKPiArCQkJdGVncmFfc29y X2hkbWlfYXVkaW9fZGlzYWJsZShzb3IpOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gSVJR X0hBTkRMRUQ7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgdGVncmFfc29yX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIHsKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7Cj4g QEAgLTMxMTksNiArMzMzMywyMSBAQCBzdGF0aWMgaW50IHRlZ3JhX3Nvcl9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJCWdvdG8gcmVtb3ZlOwo+ICAJfQo+ICAKPiArCWVy ciA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7Cj4gKwlpZiAoZXJyIDwgMCkgewo+ICsJCWRl dl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgSVJROiAlZFxuIiwgZXJyKTsKPiArCQln b3RvIHJlbW92ZTsKPiArCX0KPiArCj4gKwlzb3ItPmlycSA9IGVycjsKPiArCj4gKwllcnIgPSBk ZXZtX3JlcXVlc3RfaXJxKHNvci0+ZGV2LCBzb3ItPmlycSwgdGVncmFfc29yX2lycSwgMCwKPiAr CQkJICAgICAgIGRldl9uYW1lKHNvci0+ZGV2KSwgc29yKTsKPiArCWlmIChlcnIgPCAwKSB7Cj4g KwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlcXVlc3QgSVJROiAlZFxuIiwgZXJy KTsKPiArCQlnb3RvIHJlbW92ZTsKPiArCX0KPiArCj4gIAlpZiAoIXBkZXYtPmRldi5wbV9kb21h aW4pIHsKPiAgCQlzb3ItPnJzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXQoJnBkZXYtPmRldiwg InNvciIpOwo+ICAJCWlmIChJU19FUlIoc29yLT5yc3QpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS90ZWdyYS9zb3IuaCBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuaAo+IGlu ZGV4IGZiMDg1NGQ5MmEyNy4uMTNmN2U2OGJlYzQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS90ZWdyYS9zb3IuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuaAo+IEBA IC0zNjQsMTIgKzM2NCwyOCBAQAo+ICAjZGVmaW5lICBJTkZPRlJBTUVfSEVBREVSX1ZFUlNJT04o eCkgKCgoeCkgJiAweGZmKSA8PCA4KQo+ICAjZGVmaW5lICBJTkZPRlJBTUVfSEVBREVSX1RZUEUo eCkgKCgoeCkgJiAweGZmKSA8PCAwKQo+ICAKPiArI2RlZmluZSBTT1JfSERNSV9BQ1JfQ1RSTCAw eGIxCj4gKwo+ICsjZGVmaW5lIFNPUl9IRE1JX0FDUl8wMzIwX1NVQlBBQ0tfTE9XIDB4YjIKPiAr I2RlZmluZSAgU09SX0hETUlfQUNSX1NVQlBBQ0tfTE9XX1NCMSh4KSAoKCh4KSAmIDB4ZmYpIDw8 IDI0KQo+ICsKPiArI2RlZmluZSBTT1JfSERNSV9BQ1JfMDMyMF9TVUJQQUNLX0hJR0ggMHhiMwo+ ICsjZGVmaW5lICBTT1JfSERNSV9BQ1JfU1VCUEFDS19ISUdIX0VOQUJMRSAoMSA8PCAzMSkKPiAr Cj4gKyNkZWZpbmUgU09SX0hETUlfQUNSXzA0NDFfU1VCUEFDS19MT1cgMHhiNAo+ICsjZGVmaW5l IFNPUl9IRE1JX0FDUl8wNDQxX1NVQlBBQ0tfSElHSCAweGI1Cj4gKwo+ICAjZGVmaW5lIFNPUl9I RE1JX0NUUkwgMHhjMAo+ICAjZGVmaW5lICBTT1JfSERNSV9DVFJMX0VOQUJMRSAoMSA8PCAzMCkK PiAgI2RlZmluZSAgU09SX0hETUlfQ1RSTF9NQVhfQUNfUEFDS0VUKHgpICgoKHgpICYgMHgxZikg PDwgMTYpCj4gICNkZWZpbmUgIFNPUl9IRE1JX0NUUkxfQVVESU9fTEFZT1VUICgxIDw8IDEwKQo+ ICAjZGVmaW5lICBTT1JfSERNSV9DVFJMX1JFS0VZKHgpICgoKHgpICYgMHg3ZikgPDwgMCkKPiAg Cj4gKyNkZWZpbmUgU09SX0hETUlfU1BBUkUgMHhjYgo+ICsjZGVmaW5lICBTT1JfSERNSV9TUEFS RV9BQ1JfUFJJT1JJVFlfSElHSCAoMSA8PCAzMSkKPiArI2RlZmluZSAgU09SX0hETUlfU1BBUkVf Q1RTX1JFU0VUKHgpICgoKHgpICYgMHg3KSA8PCAxNikKPiArI2RlZmluZSAgU09SX0hETUlfU1BB UkVfSFdfQ1RTX0VOQUJMRSAoMSA8PCAwKQo+ICsKPiAgI2RlZmluZSBTT1JfUkVGQ0xLIDB4ZTYK PiAgI2RlZmluZSAgU09SX1JFRkNMS19ESVZfSU5UKHgpICgoKCh4KSA+PiAyKSAmIDB4ZmYpIDw8 IDgpCj4gICNkZWZpbmUgIFNPUl9SRUZDTEtfRElWX0ZSQUMoeCkgKCgoeCkgJiAweDMpIDw8IDYp Cj4gQEAgLTM3OCwxMCArMzk0LDYyIEBACj4gICNkZWZpbmUgIFNPUl9JTlBVVF9DT05UUk9MX0FS TV9WSURFT19SQU5HRV9MSU1JVEVEICgxIDw8IDEpCj4gICNkZWZpbmUgIFNPUl9JTlBVVF9DT05U Uk9MX0hETUlfU1JDX1NFTEVDVCh4KSAoKCh4KSAmIDB4MSkgPDwgMCkKPiAgCj4gKyNkZWZpbmUg U09SX0FVRElPX0NOVFJMIDB4ZmMKPiArI2RlZmluZSAgU09SX0FVRElPX0NOVFJMX0lOSkVDVF9O VUxMU01QTCAoMSA8PCAyOSkKPiArI2RlZmluZSAgU09SX0FVRElPX0NOVFJMX1NPVVJDRV9TRUxF Q1QoeCkgKCgoeCkgJiAweDMpIDw8IDIwKQo+ICsjZGVmaW5lICAgU09VUkNFX1NFTEVDVF9NQVNL IDB4Mwo+ICsjZGVmaW5lICAgU09VUkNFX1NFTEVDVF9IREEgMHgyCj4gKyNkZWZpbmUgICBTT1VS Q0VfU0VMRUNUX1NQRElGIDB4MQo+ICsjZGVmaW5lICAgU09VUkNFX1NFTEVDVF9BVVRPIDB4MAo+ ICsjZGVmaW5lICBTT1JfQVVESU9fQ05UUkxfQUZJRk9fRkxVU0ggKDEgPDwgMTIpCj4gKwo+ICsj ZGVmaW5lIFNPUl9BVURJT19TUEFSRSAweGZlCj4gKyNkZWZpbmUgIFNPUl9BVURJT19TUEFSRV9I QlJfRU5BQkxFICgxIDw8IDI3KQo+ICsKPiArI2RlZmluZSBTT1JfQVVESU9fTlZBTF8wMzIwIDB4 ZmYKPiArI2RlZmluZSBTT1JfQVVESU9fTlZBTF8wNDQxIDB4MTAwCj4gKyNkZWZpbmUgU09SX0FV RElPX05WQUxfMDg4MiAweDEwMQo+ICsjZGVmaW5lIFNPUl9BVURJT19OVkFMXzE3NjQgMHgxMDIK PiArI2RlZmluZSBTT1JfQVVESU9fTlZBTF8wNDgwIDB4MTAzCj4gKyNkZWZpbmUgU09SX0FVRElP X05WQUxfMDk2MCAweDEwNAo+ICsjZGVmaW5lIFNPUl9BVURJT19OVkFMXzE5MjAgMHgxMDUKPiAr Cj4gKyNkZWZpbmUgU09SX0FVRElPX0hEQV9DT0RFQ19TQ1JBVENIMCAweDEwYQo+ICsjZGVmaW5l ICBTT1JfQVVESU9fSERBX0NPREVDX1NDUkFUQ0gwX1ZBTElEICgxIDw8IDMwKQo+ICsjZGVmaW5l ICBTT1JfQVVESU9fSERBX0NPREVDX1NDUkFUQ0gwX0ZNVF9NQVNLIDB4ZmZmZgo+ICsKPiArI2Rl ZmluZSBTT1JfQVVESU9fSERBX0VMRF9CVUZXUiAweDEwYwo+ICsjZGVmaW5lICBTT1JfQVVESU9f SERBX0VMRF9CVUZXUl9JTkRFWCh4KSAoKCh4KSAmIDB4ZmYpIDw8IDgpCj4gKyNkZWZpbmUgIFNP Ul9BVURJT19IREFfRUxEX0JVRldSX0RBVEEoeCkgKCgoeCkgJiAweGZmKSA8PCAwKQo+ICsKPiAr I2RlZmluZSBTT1JfQVVESU9fSERBX1BSRVNFTlNFIDB4MTBkCj4gKyNkZWZpbmUgIFNPUl9BVURJ T19IREFfUFJFU0VOU0VfRUxEViAoMSA8PCAxKQo+ICsjZGVmaW5lICBTT1JfQVVESU9fSERBX1BS RVNFTlNFX1BEICgxIDw8IDApCj4gKwo+ICsjZGVmaW5lIFNPUl9BVURJT19BVkFMXzAzMjAgMHgx MGYKPiArI2RlZmluZSBTT1JfQVVESU9fQVZBTF8wNDQxIDB4MTEwCj4gKyNkZWZpbmUgU09SX0FV RElPX0FWQUxfMDg4MiAweDExMQo+ICsjZGVmaW5lIFNPUl9BVURJT19BVkFMXzE3NjQgMHgxMTIK PiArI2RlZmluZSBTT1JfQVVESU9fQVZBTF8wNDgwIDB4MTEzCj4gKyNkZWZpbmUgU09SX0FVRElP X0FWQUxfMDk2MCAweDExNAo+ICsjZGVmaW5lIFNPUl9BVURJT19BVkFMXzE5MjAgMHgxMTUKPiAr Cj4gKyNkZWZpbmUgU09SX0lOVF9TVEFUVVMgMHgxMWMKPiArI2RlZmluZSAgU09SX0lOVF9DT0RF Q19DUF9SRVFVRVNUICgxIDw8IDIpCj4gKyNkZWZpbmUgIFNPUl9JTlRfQ09ERUNfU0NSQVRDSDEg KDEgPDwgMSkKPiArI2RlZmluZSAgU09SX0lOVF9DT0RFQ19TQ1JBVENIMCAoMSA8PCAwKQo+ICsK PiArI2RlZmluZSBTT1JfSU5UX01BU0sgMHgxMWQKPiArI2RlZmluZSBTT1JfSU5UX0VOQUJMRSAw eDExZQo+ICsKPiAgI2RlZmluZSBTT1JfSERNSV9WU0lfSU5GT0ZSQU1FX0NUUkwgMHgxMjMKPiAg I2RlZmluZSBTT1JfSERNSV9WU0lfSU5GT0ZSQU1FX1NUQVRVUyAweDEyNAo+ICAjZGVmaW5lIFNP Ul9IRE1JX1ZTSV9JTkZPRlJBTUVfSEVBREVSIDB4MTI1Cj4gIAo+ICsjZGVmaW5lIFNPUl9IRE1J X0FVRElPX04gMHgxM2MKPiArI2RlZmluZSBTT1JfSERNSV9BVURJT19OX0xPT0tVUCAoMSA8PCAy OCkKPiArI2RlZmluZSBTT1JfSERNSV9BVURJT19OX1JFU0VUICgxIDw8IDIwKQo+ICsKPiAgI2Rl ZmluZSBTT1JfSERNSTJfQ1RSTCAweDEzZQo+ICAjZGVmaW5lICBTT1JfSERNSTJfQ1RSTF9DTE9D S19NT0RFX0RJVl9CWV80ICgxIDw8IDEpCj4gICNkZWZpbmUgIFNPUl9IRE1JMl9DVFJMX1NDUkFN QkxFICgxIDw8IDApCgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNz IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK