From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH] drm/tegra: sor: Support for audio over HDMI Date: Mon, 3 Dec 2018 16:36:42 +0100 Message-ID: <20181203153642.13562-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-tegra@vger.kernel.org, Sameer Pujar , dri-devel@lists.freedesktop.org, Jon Hunter List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClRoaXMgY29kZSBpcyB2 ZXJ5IHNpbWlsYXIgdG8gdGhlIGF1ZGlvIG92ZXIgSERNSSBzdXBwb3J0IG9uIG9sZGVyIGNoaXBz LgpJbnRlcm9wZXJhdGlvbiB3aXRoIHRoZSBhdWRpbyBjb2RlYyBpcyBkb25lIHZpYSBhIHBhaXIg b2YgY29kZWMgc2NyYXRjaApyZWdpc3RlcnMgYW5kIGFuIGludGVycnVwdCB0aGF0IGlzIHJhaXNl ZCBhdCB0aGUgU09SIHdoZW4gdGhlIGNvZGVjIGhhcwp3cml0dGVuIHRob3NlIHJlZ2lzdGVycy4K ClNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jIHwgMjI5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5oIHwgIDY4ICsrKysrKysr KysrCiAyIGZpbGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jCmlu ZGV4IGIxMjlkYTJlNWFmZC4uMjJhNTQ0MzRhNzU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vdGVncmEvc29yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jCkBAIC0xOSw2 ICsxOSw4IEBACiAKICNpbmNsdWRlIDxzb2MvdGVncmEvcG1jLmg+CiAKKyNpbmNsdWRlIDxzb3Vu ZC9oZGFfdmVyYnMuaD4KKwogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2lu Y2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgpA QCAtNDA3LDYgKzQwOSw3IEBAIHN0cnVjdCB0ZWdyYV9zb3IgewogCWNvbnN0IHN0cnVjdCB0ZWdy YV9zb3Jfc29jICpzb2M7CiAJdm9pZCBfX2lvbWVtICpyZWdzOwogCXVuc2lnbmVkIGludCBpbmRl eDsKKwl1bnNpZ25lZCBpbnQgaXJxOwogCiAJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdDsKIAlz dHJ1Y3QgY2xrICpjbGtfcGFyZW50OwpAQCAtNDMzLDYgKzQzNiwxMSBAQCBzdHJ1Y3QgdGVncmFf c29yIHsKIAogCXN0cnVjdCBkZWxheWVkX3dvcmsgc2NkYzsKIAlib29sIHNjZGNfZW5hYmxlZDsK KworCXN0cnVjdCB7CisJCXVuc2lnbmVkIGludCBzYW1wbGVfcmF0ZTsKKwkJdW5zaWduZWQgaW50 IGNoYW5uZWxzOworCX0gYXVkaW87CiB9OwogCiBzdHJ1Y3QgdGVncmFfc29yX3N0YXRlIHsKQEAg LTIxMzksNiArMjE0NywxNDQgQEAgdGVncmFfc29yX2hkbWlfc2V0dXBfYXZpX2luZm9mcmFtZShz dHJ1Y3QgdGVncmFfc29yICpzb3IsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIHRlZ3Jh X3Nvcl93cml0ZV9lbGQoc3RydWN0IHRlZ3JhX3NvciAqc29yKQoreworCXNpemVfdCBsZW5ndGgg PSBkcm1fZWxkX3NpemUoc29yLT5vdXRwdXQuY29ubmVjdG9yLmVsZCksIGk7CisKKwlmb3IgKGkg PSAwOyBpIDwgbGVuZ3RoOyBpKyspCisJCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCBpIDw8IDggfCBz b3ItPm91dHB1dC5jb25uZWN0b3IuZWxkW2ldLAorCQkJCSBTT1JfQVVESU9fSERBX0VMRF9CVUZX Uik7CisKKwkvKgorCSAqIFRoZSBIREEgY29kZWMgd2lsbCBhbHdheXMgcmVwb3J0IGFuIEVMRCBi dWZmZXIgc2l6ZSBvZiA5NiBieXRlcyBhbmQKKwkgKiB0aGUgSERBIGNvZGVjIGRyaXZlciB3aWxs IGNoZWNrIHRoYXQgZWFjaCBieXRlIHJlYWQgZnJvbSB0aGUgYnVmZmVyCisJICogaXMgdmFsaWQu IFRoZXJlZm9yZSBldmVyeSBieXRlIG11c3QgYmUgd3JpdHRlbiwgZXZlbiBpZiBubyA5NiBieXRl cworCSAqIHdlcmUgcGFyc2VkIGZyb20gRURJRC4KKwkgKi8KKwlmb3IgKGkgPSBsZW5ndGg7IGkg PCA5NjsgaSsrKQorCQl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgaSA8PCA4IHwgMCwgU09SX0FVRElP X0hEQV9FTERfQlVGV1IpOworfQorCitzdGF0aWMgdm9pZCB0ZWdyYV9zb3JfYXVkaW9fcHJlcGFy ZShzdHJ1Y3QgdGVncmFfc29yICpzb3IpCit7CisJdTMyIHZhbHVlOworCisJdGVncmFfc29yX3dy aXRlX2VsZChzb3IpOworCisJdmFsdWUgPSBTT1JfQVVESU9fSERBX1BSRVNFTlNFX0VMRFYgfCBT T1JfQVVESU9fSERBX1BSRVNFTlNFX1BEOworCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwg U09SX0FVRElPX0hEQV9QUkVTRU5TRSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlZ3JhX3Nvcl9hdWRp b191bnByZXBhcmUoc3RydWN0IHRlZ3JhX3NvciAqc29yKQoreworCXRlZ3JhX3Nvcl93cml0ZWwo c29yLCAwLCBTT1JfQVVESU9fSERBX1BSRVNFTlNFKTsKK30KKworc3RhdGljIGludCB0ZWdyYV9z b3JfaGRtaV9lbmFibGVfYXVkaW9faW5mb2ZyYW1lKHN0cnVjdCB0ZWdyYV9zb3IgKnNvcikKK3sK Kwl1OCBidWZmZXJbSERNSV9JTkZPRlJBTUVfU0laRShBVURJTyldOworCXN0cnVjdCBoZG1pX2F1 ZGlvX2luZm9mcmFtZSBmcmFtZTsKKwl1MzIgdmFsdWU7CisJaW50IGVycjsKKworCWVyciA9IGhk bWlfYXVkaW9faW5mb2ZyYW1lX2luaXQoJmZyYW1lKTsKKwlpZiAoZXJyIDwgMCkgeworCQlkZXZf ZXJyKHNvci0+ZGV2LCAiZmFpbGVkIHRvIHNldHVwIGF1ZGlvIGluZm9mcmFtZTogJWRcbiIsIGVy cik7CisJCXJldHVybiBlcnI7CisJfQorCisJZnJhbWUuY2hhbm5lbHMgPSBzb3ItPmF1ZGlvLmNo YW5uZWxzOworCisJZXJyID0gaGRtaV9hdWRpb19pbmZvZnJhbWVfcGFjaygmZnJhbWUsIGJ1ZmZl ciwgc2l6ZW9mKGJ1ZmZlcikpOworCWlmIChlcnIgPCAwKSB7CisJCWRldl9lcnIoc29yLT5kZXYs ICJmYWlsZWQgdG8gcGFjayBhdWRpbyBpbmZvZnJhbWU6ICVkXG4iLCBlcnIpOworCQlyZXR1cm4g ZXJyOworCX0KKworCXRlZ3JhX3Nvcl9oZG1pX3dyaXRlX2luZm9wYWNrKHNvciwgYnVmZmVyLCBl cnIpOworCisJdmFsdWUgPSB0ZWdyYV9zb3JfcmVhZGwoc29yLCBTT1JfSERNSV9BVURJT19JTkZP RlJBTUVfQ1RSTCk7CisJdmFsdWUgfD0gSU5GT0ZSQU1FX0NUUkxfQ0hFQ0tTVU1fRU5BQkxFOwor CXZhbHVlIHw9IElORk9GUkFNRV9DVFJMX0VOQUJMRTsKKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwg dmFsdWUsIFNPUl9IRE1JX0FVRElPX0lORk9GUkFNRV9DVFJMKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgdm9pZCB0ZWdyYV9zb3JfaGRtaV9hdWRpb19lbmFibGUoc3RydWN0IHRlZ3JhX3Nv ciAqc29yKQoreworCXUzMiB2YWx1ZTsKKworCXZhbHVlID0gdGVncmFfc29yX3JlYWRsKHNvciwg U09SX0FVRElPX0NOVFJMKTsKKworCS8qIHNlbGVjdCBIREEgYXVkaW8gaW5wdXQgKi8KKwl2YWx1 ZSAmPSB+U09SX0FVRElPX0NOVFJMX1NPVVJDRV9TRUxFQ1QoU09VUkNFX1NFTEVDVF9NQVNLKTsK Kwl2YWx1ZSB8PSBTT1JfQVVESU9fQ05UUkxfU09VUkNFX1NFTEVDVChTT1VSQ0VfU0VMRUNUX0hE QSk7CisKKwkvKiBpbmplY3QgbnVsbCBzYW1wbGVzICovCisJaWYgKHNvci0+YXVkaW8uY2hhbm5l bHMgIT0gMikKKwkJdmFsdWUgJj0gflNPUl9BVURJT19DTlRSTF9JTkpFQ1RfTlVMTFNNUEw7CisJ ZWxzZQorCQl2YWx1ZSB8PSBTT1JfQVVESU9fQ05UUkxfSU5KRUNUX05VTExTTVBMOworCisJdmFs dWUgfD0gU09SX0FVRElPX0NOVFJMX0FGSUZPX0ZMVVNIOworCisJdGVncmFfc29yX3dyaXRlbChz b3IsIHZhbHVlLCBTT1JfQVVESU9fQ05UUkwpOworCisJLyogZW5hYmxlIGFkdmVydGlzaW5nIEhC UiBjYXBhYmlsaXR5ICovCisJdGVncmFfc29yX3dyaXRlbChzb3IsIFNPUl9BVURJT19TUEFSRV9I QlJfRU5BQkxFLCBTT1JfQVVESU9fU1BBUkUpOworCisJdGVncmFfc29yX3dyaXRlbChzb3IsIDAs IFNPUl9IRE1JX0FDUl9DVFJMKTsKKworCXZhbHVlID0gU09SX0hETUlfU1BBUkVfQUNSX1BSSU9S SVRZX0hJR0ggfAorCQlTT1JfSERNSV9TUEFSRV9DVFNfUkVTRVQoMSkgfAorCQlTT1JfSERNSV9T UEFSRV9IV19DVFNfRU5BQkxFOworCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwgU09SX0hE TUlfU1BBUkUpOworCisJLyogZW5hYmxlIEhXIENUUyAqLworCXZhbHVlID0gU09SX0hETUlfQUNS X1NVQlBBQ0tfTE9XX1NCMSgwKTsKKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9I RE1JX0FDUl8wNDQxX1NVQlBBQ0tfTE9XKTsKKworCS8qIGFsbG93IHBhY2tldCB0byBiZSBzZW50 ICovCisJdmFsdWUgPSBTT1JfSERNSV9BQ1JfU1VCUEFDS19ISUdIX0VOQUJMRTsKKwl0ZWdyYV9z b3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9IRE1JX0FDUl8wNDQxX1NVQlBBQ0tfSElHSCk7CisK KwkvKiByZXNldCBOIGNvdW50ZXIgYW5kIGVuYWJsZSBsb29rdXAgKi8KKwl2YWx1ZSA9IFNPUl9I RE1JX0FVRElPX05fUkVTRVQgfCBTT1JfSERNSV9BVURJT19OX0xPT0tVUDsKKwl0ZWdyYV9zb3Jf d3JpdGVsKHNvciwgdmFsdWUsIFNPUl9IRE1JX0FVRElPX04pOworCisJdmFsdWUgPSAoMjQwMDAg KiA0MDk2KSAvICgxMjggKiBzb3ItPmF1ZGlvLnNhbXBsZV9yYXRlIC8gMTAwMCk7CisJdGVncmFf c29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfQVVESU9fQVZBTF8wMzIwKTsKKwl0ZWdyYV9zb3Jf d3JpdGVsKHNvciwgNDA5NiwgU09SX0FVRElPX05WQUxfMDMyMCk7CisKKwl0ZWdyYV9zb3Jfd3Jp dGVsKHNvciwgMjAwMDAsIFNPUl9BVURJT19BVkFMXzA0NDEpOworCXRlZ3JhX3Nvcl93cml0ZWwo c29yLCA0NzA0LCBTT1JfQVVESU9fTlZBTF8wNDQxKTsKKworCXRlZ3JhX3Nvcl93cml0ZWwoc29y LCAyMDAwMCwgU09SX0FVRElPX0FWQUxfMDg4Mik7CisJdGVncmFfc29yX3dyaXRlbChzb3IsIDk0 MDgsIFNPUl9BVURJT19OVkFMXzA4ODIpOworCisJdGVncmFfc29yX3dyaXRlbChzb3IsIDIwMDAw LCBTT1JfQVVESU9fQVZBTF8xNzY0KTsKKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgMTg4MTYsIFNP Ul9BVURJT19OVkFMXzE3NjQpOworCisJdmFsdWUgPSAoMjQwMDAgKiA2MTQ0KSAvICgxMjggKiBz b3ItPmF1ZGlvLnNhbXBsZV9yYXRlIC8gMTAwMCk7CisJdGVncmFfc29yX3dyaXRlbChzb3IsIHZh bHVlLCBTT1JfQVVESU9fQVZBTF8wNDgwKTsKKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgNjE0NCwg U09SX0FVRElPX05WQUxfMDQ4MCk7CisKKwl2YWx1ZSA9ICgyNDAwMCAqIDEyMjg4KSAvICgxMjgg KiBzb3ItPmF1ZGlvLnNhbXBsZV9yYXRlIC8gMTAwMCk7CisJdGVncmFfc29yX3dyaXRlbChzb3Is IHZhbHVlLCBTT1JfQVVESU9fQVZBTF8wOTYwKTsKKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgMTIy ODgsIFNPUl9BVURJT19OVkFMXzA5NjApOworCisJdmFsdWUgPSAoMjQwMDAgKiAyNDU3NikgLyAo MTI4ICogc29yLT5hdWRpby5zYW1wbGVfcmF0ZSAvIDEwMDApOworCXRlZ3JhX3Nvcl93cml0ZWwo c29yLCB2YWx1ZSwgU09SX0FVRElPX0FWQUxfMTkyMCk7CisJdGVncmFfc29yX3dyaXRlbChzb3Is IDI0NTc2LCBTT1JfQVVESU9fTlZBTF8xOTIwKTsKKworCXZhbHVlID0gdGVncmFfc29yX3JlYWRs KHNvciwgU09SX0hETUlfQVVESU9fTik7CisJdmFsdWUgJj0gflNPUl9IRE1JX0FVRElPX05fUkVT RVQ7CisJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfSERNSV9BVURJT19OKTsKKwor CXRlZ3JhX3Nvcl9oZG1pX2VuYWJsZV9hdWRpb19pbmZvZnJhbWUoc29yKTsKK30KKwogc3RhdGlj IHZvaWQgdGVncmFfc29yX2hkbWlfZGlzYWJsZV9hdWRpb19pbmZvZnJhbWUoc3RydWN0IHRlZ3Jh X3NvciAqc29yKQogewogCXUzMiB2YWx1ZTsKQEAgLTIxNDgsNiArMjI5NCwxMSBAQCBzdGF0aWMg dm9pZCB0ZWdyYV9zb3JfaGRtaV9kaXNhYmxlX2F1ZGlvX2luZm9mcmFtZShzdHJ1Y3QgdGVncmFf c29yICpzb3IpCiAJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfSERNSV9BVURJT19J TkZPRlJBTUVfQ1RSTCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlZ3JhX3Nvcl9oZG1pX2F1ZGlvX2Rp c2FibGUoc3RydWN0IHRlZ3JhX3NvciAqc29yKQoreworCXRlZ3JhX3Nvcl9oZG1pX2Rpc2FibGVf YXVkaW9faW5mb2ZyYW1lKHNvcik7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgdGVncmFfc29yX2hkbWlf c2V0dGluZ3MgKgogdGVncmFfc29yX2hkbWlfZmluZF9zZXR0aW5ncyhzdHJ1Y3QgdGVncmFfc29y ICpzb3IsIHVuc2lnbmVkIGxvbmcgZnJlcXVlbmN5KQogewpAQCAtMjI0Myw2ICsyMzk0LDcgQEAg c3RhdGljIHZvaWQgdGVncmFfc29yX2hkbWlfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIpCiAJdTMyIHZhbHVlOwogCWludCBlcnI7CiAKKwl0ZWdyYV9zb3JfYXVkaW9fdW5wcmVw YXJlKHNvcik7CiAJdGVncmFfc29yX2hkbWlfc2NkY19zdG9wKHNvcik7CiAKIAllcnIgPSB0ZWdy YV9zb3JfZGV0YWNoKHNvcik7CkBAIC0yNjUxLDYgKzI4MDMsNyBAQCBzdGF0aWMgdm9pZCB0ZWdy YV9zb3JfaGRtaV9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCQlkZXZfZXJy KHNvci0+ZGV2LCAiZmFpbGVkIHRvIHdha2V1cCBTT1I6ICVkXG4iLCBlcnIpOwogCiAJdGVncmFf c29yX2hkbWlfc2NkY19zdGFydChzb3IpOworCXRlZ3JhX3Nvcl9hdWRpb19wcmVwYXJlKHNvcik7 CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIHRlZ3Jh X3Nvcl9oZG1pX2hlbHBlcnMgPSB7CkBAIC0yNjY2LDYgKzI4MTksNyBAQCBzdGF0aWMgaW50IHRl Z3JhX3Nvcl9pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAJc3RydWN0IHRlZ3Jh X3NvciAqc29yID0gaG9zdDF4X2NsaWVudF90b19zb3IoY2xpZW50KTsKIAlpbnQgY29ubmVjdG9y ID0gRFJNX01PREVfQ09OTkVDVE9SX1Vua25vd247CiAJaW50IGVuY29kZXIgPSBEUk1fTU9ERV9F TkNPREVSX05PTkU7CisJdTMyIHZhbHVlOwogCWludCBlcnI7CiAKIAlpZiAoIXNvci0+YXV4KSB7 CkBAIC0yNzU5LDYgKzI5MTMsMTUgQEAgc3RhdGljIGludCB0ZWdyYV9zb3JfaW5pdChzdHJ1Y3Qg aG9zdDF4X2NsaWVudCAqY2xpZW50KQogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwogCisJ LyoKKwkgKiBFbmFibGUgYW5kIHVubWFzayB0aGUgSERBIGNvZGVjIFNDUkFUQ0gwIHJlZ2lzdGVy IGludGVycnVwdC4gVGhpcworCSAqIGlzIHVzZWQgZm9yIGludGVyb3BlcmFiaWxpdHkgYmV0d2Vl biB0aGUgSERBIGNvZGVjIGRyaXZlciBhbmQgdGhlCisJICogSERNSS9EUCBkcml2ZXIuCisJICov CisJdmFsdWUgPSBTT1JfSU5UX0NPREVDX1NDUkFUQ0gxIHwgU09SX0lOVF9DT0RFQ19TQ1JBVENI MDsKKwl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9JTlRfRU5BQkxFKTsKKwl0ZWdy YV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9JTlRfTUFTSyk7CisKIAlyZXR1cm4gMDsKIH0K IApAQCAtMjc2Nyw2ICsyOTMwLDkgQEAgc3RhdGljIGludCB0ZWdyYV9zb3JfZXhpdChzdHJ1Y3Qg aG9zdDF4X2NsaWVudCAqY2xpZW50KQogCXN0cnVjdCB0ZWdyYV9zb3IgKnNvciA9IGhvc3QxeF9j bGllbnRfdG9fc29yKGNsaWVudCk7CiAJaW50IGVycjsKIAorCXRlZ3JhX3Nvcl93cml0ZWwoc29y LCAwLCBTT1JfSU5UX01BU0spOworCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCAwLCBTT1JfSU5UX0VO QUJMRSk7CisKIAl0ZWdyYV9vdXRwdXRfZXhpdCgmc29yLT5vdXRwdXQpOwogCiAJaWYgKHNvci0+ YXV4KSB7CkBAIC0zMDM3LDYgKzMyMDMsNTQgQEAgc3RhdGljIGludCB0ZWdyYV9zb3JfcGFyc2Vf ZHQoc3RydWN0IHRlZ3JhX3NvciAqc29yKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCB0 ZWdyYV9oZGFfcGFyc2VfZm9ybWF0KHVuc2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVkIGludCAq cmF0ZSwKKwkJCQkgICB1bnNpZ25lZCBpbnQgKmNoYW5uZWxzKQoreworCXVuc2lnbmVkIGludCBt dWwsIGRpdjsKKworCWlmIChmb3JtYXQgJiBBQ19GTVRfQkFTRV80NEspCisJCSpyYXRlID0gNDQx MDA7CisJZWxzZQorCQkqcmF0ZSA9IDQ4MDAwOworCisJbXVsID0gKGZvcm1hdCAmIEFDX0ZNVF9N VUxUX01BU0spID4+IEFDX0ZNVF9NVUxUX1NISUZUOworCWRpdiA9IChmb3JtYXQgJiBBQ19GTVRf RElWX01BU0spID4+IEFDX0ZNVF9ESVZfU0hJRlQ7CisKKwkqcmF0ZSA9ICpyYXRlICogKG11bCAr IDEpIC8gKGRpdiArIDEpOworCisJKmNoYW5uZWxzID0gKGZvcm1hdCAmIEFDX0ZNVF9DSEFOX01B U0spID4+IEFDX0ZNVF9DSEFOX1NISUZUOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgdGVncmFf c29yX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCB0ZWdyYV9zb3IgKnNvciA9 IGRhdGE7CisJdTMyIHZhbHVlOworCisJdmFsdWUgPSB0ZWdyYV9zb3JfcmVhZGwoc29yLCBTT1Jf SU5UX1NUQVRVUyk7CisJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfSU5UX1NUQVRV Uyk7CisKKwlpZiAodmFsdWUgJiBTT1JfSU5UX0NPREVDX1NDUkFUQ0gwKSB7CisJCXZhbHVlID0g dGVncmFfc29yX3JlYWRsKHNvciwgU09SX0FVRElPX0hEQV9DT0RFQ19TQ1JBVENIMCk7CisKKwkJ aWYgKHZhbHVlICYgU09SX0FVRElPX0hEQV9DT0RFQ19TQ1JBVENIMF9WQUxJRCkgeworCQkJdW5z aWduZWQgaW50IGZvcm1hdCwgc2FtcGxlX3JhdGUsIGNoYW5uZWxzOworCisJCQlmb3JtYXQgPSB2 YWx1ZSAmIFNPUl9BVURJT19IREFfQ09ERUNfU0NSQVRDSDBfRk1UX01BU0s7CisKKwkJCXRlZ3Jh X2hkYV9wYXJzZV9mb3JtYXQoZm9ybWF0LCAmc2FtcGxlX3JhdGUsICZjaGFubmVscyk7CisKKwkJ CXNvci0+YXVkaW8uc2FtcGxlX3JhdGUgPSBzYW1wbGVfcmF0ZTsKKwkJCXNvci0+YXVkaW8uY2hh bm5lbHMgPSBjaGFubmVsczsKKworCQkJdGVncmFfc29yX2hkbWlfYXVkaW9fZW5hYmxlKHNvcik7 CisJCX0gZWxzZSB7CisJCQl0ZWdyYV9zb3JfaGRtaV9hdWRpb19kaXNhYmxlKHNvcik7CisJCX0K Kwl9CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKIHN0YXRpYyBpbnQgdGVncmFfc29yX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGRldmljZV9ub2Rl ICpucDsKQEAgLTMxMTksNiArMzMzMywyMSBAQCBzdGF0aWMgaW50IHRlZ3JhX3Nvcl9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlnb3RvIHJlbW92ZTsKIAl9CiAKKwllcnIg PSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOworCWlmIChlcnIgPCAwKSB7CisJCWRldl9lcnIo JnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgSVJROiAlZFxuIiwgZXJyKTsKKwkJZ290byByZW1v dmU7CisJfQorCisJc29yLT5pcnEgPSBlcnI7CisKKwllcnIgPSBkZXZtX3JlcXVlc3RfaXJxKHNv ci0+ZGV2LCBzb3ItPmlycSwgdGVncmFfc29yX2lycSwgMCwKKwkJCSAgICAgICBkZXZfbmFtZShz b3ItPmRldiksIHNvcik7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAi ZmFpbGVkIHRvIHJlcXVlc3QgSVJROiAlZFxuIiwgZXJyKTsKKwkJZ290byByZW1vdmU7CisJfQor CiAJaWYgKCFwZGV2LT5kZXYucG1fZG9tYWluKSB7CiAJCXNvci0+cnN0ID0gZGV2bV9yZXNldF9j b250cm9sX2dldCgmcGRldi0+ZGV2LCAic29yIik7CiAJCWlmIChJU19FUlIoc29yLT5yc3QpKSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmggYi9kcml2ZXJzL2dwdS9k cm0vdGVncmEvc29yLmgKaW5kZXggZmIwODU0ZDkyYTI3Li4xM2Y3ZTY4YmVjNDIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVn cmEvc29yLmgKQEAgLTM2NCwxMiArMzY0LDI4IEBACiAjZGVmaW5lICBJTkZPRlJBTUVfSEVBREVS X1ZFUlNJT04oeCkgKCgoeCkgJiAweGZmKSA8PCA4KQogI2RlZmluZSAgSU5GT0ZSQU1FX0hFQURF Ul9UWVBFKHgpICgoKHgpICYgMHhmZikgPDwgMCkKIAorI2RlZmluZSBTT1JfSERNSV9BQ1JfQ1RS TCAweGIxCisKKyNkZWZpbmUgU09SX0hETUlfQUNSXzAzMjBfU1VCUEFDS19MT1cgMHhiMgorI2Rl ZmluZSAgU09SX0hETUlfQUNSX1NVQlBBQ0tfTE9XX1NCMSh4KSAoKCh4KSAmIDB4ZmYpIDw8IDI0 KQorCisjZGVmaW5lIFNPUl9IRE1JX0FDUl8wMzIwX1NVQlBBQ0tfSElHSCAweGIzCisjZGVmaW5l ICBTT1JfSERNSV9BQ1JfU1VCUEFDS19ISUdIX0VOQUJMRSAoMSA8PCAzMSkKKworI2RlZmluZSBT T1JfSERNSV9BQ1JfMDQ0MV9TVUJQQUNLX0xPVyAweGI0CisjZGVmaW5lIFNPUl9IRE1JX0FDUl8w NDQxX1NVQlBBQ0tfSElHSCAweGI1CisKICNkZWZpbmUgU09SX0hETUlfQ1RSTCAweGMwCiAjZGVm aW5lICBTT1JfSERNSV9DVFJMX0VOQUJMRSAoMSA8PCAzMCkKICNkZWZpbmUgIFNPUl9IRE1JX0NU UkxfTUFYX0FDX1BBQ0tFVCh4KSAoKCh4KSAmIDB4MWYpIDw8IDE2KQogI2RlZmluZSAgU09SX0hE TUlfQ1RSTF9BVURJT19MQVlPVVQgKDEgPDwgMTApCiAjZGVmaW5lICBTT1JfSERNSV9DVFJMX1JF S0VZKHgpICgoKHgpICYgMHg3ZikgPDwgMCkKIAorI2RlZmluZSBTT1JfSERNSV9TUEFSRSAweGNi CisjZGVmaW5lICBTT1JfSERNSV9TUEFSRV9BQ1JfUFJJT1JJVFlfSElHSCAoMSA8PCAzMSkKKyNk ZWZpbmUgIFNPUl9IRE1JX1NQQVJFX0NUU19SRVNFVCh4KSAoKCh4KSAmIDB4NykgPDwgMTYpCisj ZGVmaW5lICBTT1JfSERNSV9TUEFSRV9IV19DVFNfRU5BQkxFICgxIDw8IDApCisKICNkZWZpbmUg U09SX1JFRkNMSyAweGU2CiAjZGVmaW5lICBTT1JfUkVGQ0xLX0RJVl9JTlQoeCkgKCgoKHgpID4+ IDIpICYgMHhmZikgPDwgOCkKICNkZWZpbmUgIFNPUl9SRUZDTEtfRElWX0ZSQUMoeCkgKCgoeCkg JiAweDMpIDw8IDYpCkBAIC0zNzgsMTAgKzM5NCw2MiBAQAogI2RlZmluZSAgU09SX0lOUFVUX0NP TlRST0xfQVJNX1ZJREVPX1JBTkdFX0xJTUlURUQgKDEgPDwgMSkKICNkZWZpbmUgIFNPUl9JTlBV VF9DT05UUk9MX0hETUlfU1JDX1NFTEVDVCh4KSAoKCh4KSAmIDB4MSkgPDwgMCkKIAorI2RlZmlu ZSBTT1JfQVVESU9fQ05UUkwgMHhmYworI2RlZmluZSAgU09SX0FVRElPX0NOVFJMX0lOSkVDVF9O VUxMU01QTCAoMSA8PCAyOSkKKyNkZWZpbmUgIFNPUl9BVURJT19DTlRSTF9TT1VSQ0VfU0VMRUNU KHgpICgoKHgpICYgMHgzKSA8PCAyMCkKKyNkZWZpbmUgICBTT1VSQ0VfU0VMRUNUX01BU0sgMHgz CisjZGVmaW5lICAgU09VUkNFX1NFTEVDVF9IREEgMHgyCisjZGVmaW5lICAgU09VUkNFX1NFTEVD VF9TUERJRiAweDEKKyNkZWZpbmUgICBTT1VSQ0VfU0VMRUNUX0FVVE8gMHgwCisjZGVmaW5lICBT T1JfQVVESU9fQ05UUkxfQUZJRk9fRkxVU0ggKDEgPDwgMTIpCisKKyNkZWZpbmUgU09SX0FVRElP X1NQQVJFIDB4ZmUKKyNkZWZpbmUgIFNPUl9BVURJT19TUEFSRV9IQlJfRU5BQkxFICgxIDw8IDI3 KQorCisjZGVmaW5lIFNPUl9BVURJT19OVkFMXzAzMjAgMHhmZgorI2RlZmluZSBTT1JfQVVESU9f TlZBTF8wNDQxIDB4MTAwCisjZGVmaW5lIFNPUl9BVURJT19OVkFMXzA4ODIgMHgxMDEKKyNkZWZp bmUgU09SX0FVRElPX05WQUxfMTc2NCAweDEwMgorI2RlZmluZSBTT1JfQVVESU9fTlZBTF8wNDgw IDB4MTAzCisjZGVmaW5lIFNPUl9BVURJT19OVkFMXzA5NjAgMHgxMDQKKyNkZWZpbmUgU09SX0FV RElPX05WQUxfMTkyMCAweDEwNQorCisjZGVmaW5lIFNPUl9BVURJT19IREFfQ09ERUNfU0NSQVRD SDAgMHgxMGEKKyNkZWZpbmUgIFNPUl9BVURJT19IREFfQ09ERUNfU0NSQVRDSDBfVkFMSUQgKDEg PDwgMzApCisjZGVmaW5lICBTT1JfQVVESU9fSERBX0NPREVDX1NDUkFUQ0gwX0ZNVF9NQVNLIDB4 ZmZmZgorCisjZGVmaW5lIFNPUl9BVURJT19IREFfRUxEX0JVRldSIDB4MTBjCisjZGVmaW5lICBT T1JfQVVESU9fSERBX0VMRF9CVUZXUl9JTkRFWCh4KSAoKCh4KSAmIDB4ZmYpIDw8IDgpCisjZGVm aW5lICBTT1JfQVVESU9fSERBX0VMRF9CVUZXUl9EQVRBKHgpICgoKHgpICYgMHhmZikgPDwgMCkK KworI2RlZmluZSBTT1JfQVVESU9fSERBX1BSRVNFTlNFIDB4MTBkCisjZGVmaW5lICBTT1JfQVVE SU9fSERBX1BSRVNFTlNFX0VMRFYgKDEgPDwgMSkKKyNkZWZpbmUgIFNPUl9BVURJT19IREFfUFJF U0VOU0VfUEQgKDEgPDwgMCkKKworI2RlZmluZSBTT1JfQVVESU9fQVZBTF8wMzIwIDB4MTBmCisj ZGVmaW5lIFNPUl9BVURJT19BVkFMXzA0NDEgMHgxMTAKKyNkZWZpbmUgU09SX0FVRElPX0FWQUxf MDg4MiAweDExMQorI2RlZmluZSBTT1JfQVVESU9fQVZBTF8xNzY0IDB4MTEyCisjZGVmaW5lIFNP Ul9BVURJT19BVkFMXzA0ODAgMHgxMTMKKyNkZWZpbmUgU09SX0FVRElPX0FWQUxfMDk2MCAweDEx NAorI2RlZmluZSBTT1JfQVVESU9fQVZBTF8xOTIwIDB4MTE1CisKKyNkZWZpbmUgU09SX0lOVF9T VEFUVVMgMHgxMWMKKyNkZWZpbmUgIFNPUl9JTlRfQ09ERUNfQ1BfUkVRVUVTVCAoMSA8PCAyKQor I2RlZmluZSAgU09SX0lOVF9DT0RFQ19TQ1JBVENIMSAoMSA8PCAxKQorI2RlZmluZSAgU09SX0lO VF9DT0RFQ19TQ1JBVENIMCAoMSA8PCAwKQorCisjZGVmaW5lIFNPUl9JTlRfTUFTSyAweDExZAor I2RlZmluZSBTT1JfSU5UX0VOQUJMRSAweDExZQorCiAjZGVmaW5lIFNPUl9IRE1JX1ZTSV9JTkZP RlJBTUVfQ1RSTCAweDEyMwogI2RlZmluZSBTT1JfSERNSV9WU0lfSU5GT0ZSQU1FX1NUQVRVUyAw eDEyNAogI2RlZmluZSBTT1JfSERNSV9WU0lfSU5GT0ZSQU1FX0hFQURFUiAweDEyNQogCisjZGVm aW5lIFNPUl9IRE1JX0FVRElPX04gMHgxM2MKKyNkZWZpbmUgU09SX0hETUlfQVVESU9fTl9MT09L VVAgKDEgPDwgMjgpCisjZGVmaW5lIFNPUl9IRE1JX0FVRElPX05fUkVTRVQgKDEgPDwgMjApCisK ICNkZWZpbmUgU09SX0hETUkyX0NUUkwgMHgxM2UKICNkZWZpbmUgIFNPUl9IRE1JMl9DVFJMX0NM T0NLX01PREVfRElWX0JZXzQgKDEgPDwgMSkKICNkZWZpbmUgIFNPUl9IRE1JMl9DVFJMX1NDUkFN QkxFICgxIDw8IDApCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=