From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH v5 6/6] drm/bridge: sii902x: Implement HDMI audio support Date: Fri, 12 Apr 2019 10:52:28 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha , alsa-devel@alsa-project.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: fabrizio.castro@bp.renesas.com, architt@codeaurora.org, Songjun.Wu@atmel.com, peter.ujfalusi@ti.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com, voice.shen@atmel.com List-Id: devicetree@vger.kernel.org T24gMjIuMDMuMjAxOSAwOTowNiwgSnlyaSBTYXJoYSB3cm90ZToKPiBJbXBsZW1lbnQgSERNSSBh dWRpbyBzdXBwb3J0IGJ5IHVzaW5nIEFTb0MgSERNSSBjb2RlYy4gVGhlIGNvbW1pdAo+IGltcGxl bWVudHMgdGhlIG5lY2Vzc2FyeSBjYWxsYmFja3MgYW5kIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBI RE1JCj4gY29kZWMgYW5kIHJlZ2lzdGVycyBhIHZpcnR1YWwgcGxhdGZvcm0gZGV2aWNlIGZvciB0 aGUgY29kZWMgdG8gYXR0YWNoLgo+Cj4gU2lnbmVkLW9mZi1ieTogSnlyaSBTYXJoYSA8anNhcmhh QHRpLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMgfCA0NTkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICAxIGZpbGUgY2hhbmdlZCwgNDUzIGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9zaWk5MDJ4LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMnguYwo+ IGluZGV4IDM1OGNmODFjNWVhNC4uY2IxMmUyNjQxMTFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2Uvc2lpOTAyeC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9z aWk5MDJ4LmMKPiBAQCAtMjcsMTIgKzI3LDE1IEBACj4gICNpbmNsdWRlIDxsaW51eC9pMmMuaD4K PiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJt X2NydGNfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiAgCj4gKyNpbmNs dWRlIDxzb3VuZC9oZG1pLWNvZGVjLmg+Cj4gKwo+ICAjZGVmaW5lIFNJSTkwMlhfVFBJX1ZJREVP X0RBVEEJCQkweDAKPiAgCj4gICNkZWZpbmUgU0lJOTAyWF9UUElfUElYRUxfUkVQRVRJVElPTgkJ MHg4Cj4gQEAgLTc0LDYgKzc3LDc3IEBACj4gICNkZWZpbmUgU0lJOTAyWF9BVklfUE9XRVJfU1RB VEVfTVNLCQlHRU5NQVNLKDEsIDApCj4gICNkZWZpbmUgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVf RChsKQkJKChsKSAmIFNJSTkwMlhfQVZJX1BPV0VSX1NUQVRFX01TSykKPiAgCj4gKy8qIEF1ZGlv ICAqLwo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19FTkFCTEVfTUFQUElOR19SRUcJMHgxZgo+ ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19DT05GSUdfRklGTzAJCQkoMCA8PCAwKQo+ICsjZGVm aW5lIFNJSTkwMlhfVFBJX0kyU19DT05GSUdfRklGTzEJCQkoMSA8PCAwKQo+ICsjZGVmaW5lIFNJ STkwMlhfVFBJX0kyU19DT05GSUdfRklGTzIJCQkoMiA8PCAwKQo+ICsjZGVmaW5lIFNJSTkwMlhf VFBJX0kyU19DT05GSUdfRklGTzMJCQkoMyA8PCAwKQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0ky U19MRUZUX1JJR0hUX1NXQVAJCQkoMSA8PCAyKQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19B VVRPX0RPV05TQU1QTEUJCQkoMSA8PCAzKQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TRUxF Q1RfU0QwCQkJKDAgPDwgNCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU0VMRUNUX1NEMQkJ CSgxIDw8IDQpCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDIJCQkoMiA8PCA0 KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TRUxFQ1RfU0QzCQkJKDMgPDwgNCkKPiArI2Rl ZmluZSBTSUk5MDJYX1RQSV9JMlNfRklGT19FTkFCTEUJCQkoMSA8PCA3KQo+ICsKPiArI2RlZmlu ZSBTSUk5MDJYX1RQSV9JMlNfSU5QVVRfQ09ORklHX1JFRwkweDIwCj4gKyNkZWZpbmUgU0lJOTAy WF9UUElfSTJTX0ZJUlNUX0JJVF9TSElGVF9ZRVMJCSgwIDw8IDApCj4gKyNkZWZpbmUgU0lJOTAy WF9UUElfSTJTX0ZJUlNUX0JJVF9TSElGVF9OTwkJKDEgPDwgMCkKPiArI2RlZmluZSBTSUk5MDJY X1RQSV9JMlNfU0RfRElSRUNUSU9OX01TQl9GSVJTVAkJKDAgPDwgMSkKPiArI2RlZmluZSBTSUk5 MDJYX1RQSV9JMlNfU0RfRElSRUNUSU9OX0xTQl9GSVJTVAkJKDEgPDwgMSkKPiArI2RlZmluZSBT SUk5MDJYX1RQSV9JMlNfU0RfSlVTVElGWV9MRUZUCQkJKDAgPDwgMikKPiArI2RlZmluZSBTSUk5 MDJYX1RQSV9JMlNfU0RfSlVTVElGWV9SSUdIVAkJKDEgPDwgMikKPiArI2RlZmluZSBTSUk5MDJY X1RQSV9JMlNfV1NfUE9MQVJJVFlfTE9XCQkJKDAgPDwgMykKPiArI2RlZmluZSBTSUk5MDJYX1RQ SV9JMlNfV1NfUE9MQVJJVFlfSElHSAkJKDEgPDwgMykKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfTUNMS19NVUxUSVBMSUVSXzEyOAkJKDAgPDwgNCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfTUNMS19NVUxUSVBMSUVSXzI1NgkJKDEgPDwgNCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfTUNMS19NVUxUSVBMSUVSXzM4NAkJKDIgPDwgNCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfTUNMS19NVUxUSVBMSUVSXzUxMgkJKDMgPDwgNCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfTUNMS19NVUxUSVBMSUVSXzc2OAkJKDQgPDwgNCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfTUNMS19NVUxUSVBMSUVSXzEwMjQJCSg1IDw8IDQpCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElf STJTX01DTEtfTVVMVElQTElFUl8xMTUyCQkoNiA8PCA0KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJ X0kyU19NQ0xLX01VTFRJUExJRVJfMTkyCQkoNyA8PCA0KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJ X0kyU19TQ0tfRURHRV9GQUxMSU5HCQkoMCA8PCA3KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0ky U19TQ0tfRURHRV9SSVNJTkcJCQkoMSA8PCA3KQo+ICsKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfU1RSTV9IRFJfQkFTRQkweDIxCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NUUk1fSERS X1NJWkUJNQo+ICsKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllURTJfUkVH CTB4MjYKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfU1RSRUFNX0hFQURFUgkJ KDAgPDwgMCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfUENNCQkJKDEgPDwg MCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfQUMzCQkJKDIgPDwgMCkKPiAr I2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfTVBFRzEJCQkoMyA8PCAwKQo+ICsjZGVm aW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19NUDMJCQkoNCA8PCAwKQo+ICsjZGVmaW5lIFNJ STkwMlhfVFBJX0FVRElPX0NPRElOR19NUEVHMgkJCSg1IDw8IDApCj4gKyNkZWZpbmUgU0lJOTAy WF9UUElfQVVESU9fQ09ESU5HX0FBQwkJCSg2IDw8IDApCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElf QVVESU9fQ09ESU5HX0RUUwkJCSg3IDw8IDApCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9f Q09ESU5HX0FUUkFDCQkJKDggPDwgMCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19NVVRF X0RJU0FCTEUJCQkoMCA8PCA0KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX01VVEVfRU5B QkxFCQkJKDEgPDwgNCkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19MQVlPVVRfMl9DSEFO TkVMUwkJKDAgPDwgNSkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19MQVlPVVRfOF9DSEFO TkVMUwkJKDEgPDwgNSkKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19JTlRFUkZBQ0VfRElT QUJMRQkJKDAgPDwgNikKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19JTlRFUkZBQ0VfU1BE SUYJCSgxIDw8IDYpCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fSU5URVJGQUNFX0kyUwkJ CSgyIDw8IDYpCj4gKwo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPTkZJR19CWVRFM19S RUcJMHgyNwo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfU1RSRUFNCQkJKDAgPDwg MykKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzMyS0haCQkJKDEgPDwgMykKPiAr I2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzQ0S0haCQkJKDIgPDwgMykKPiArI2RlZmlu ZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzQ4S0haCQkJKDMgPDwgMykKPiArI2RlZmluZSBTSUk5 MDJYX1RQSV9BVURJT19GUkVRXzg4S0haCQkJKDQgPDwgMykKPiArI2RlZmluZSBTSUk5MDJYX1RQ SV9BVURJT19GUkVRXzk2S0haCQkJKDUgPDwgMykKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJ T19GUkVRXzE3NktIWgkJCSg2IDw8IDMpCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fRlJF UV8xOTJLSFoJCQkoNyA8PCAzKQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9T SVpFX1NUUkVBTQkJKDAgPDwgNikKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVf U0laRV8xNgkJKDEgPDwgNikKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0la RV8yMAkJKDIgPDwgNikKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV8y NAkJKDMgPDwgNikKPiArCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ORklHX0JZVEU0 X1JFRwkweDI4Cj4gKwo+ICAjZGVmaW5lIFNJSTkwMlhfSU5UX0VOQUJMRQkJCTB4M2MKPiAgI2Rl ZmluZSBTSUk5MDJYX0lOVF9TVEFUVVMJCQkweDNkCj4gICNkZWZpbmUgU0lJOTAyWF9IT1RQTFVH X0VWRU5UCQkJQklUKDApCj4gQEAgLTgxLDYgKzE1NSwxNiBAQAo+ICAKPiAgI2RlZmluZSBTSUk5 MDJYX1JFR19UUElfUlFCCQkJMHhjNwo+ICAKPiArLyogSW5kaXJlY3QgaW50ZXJuYWwgcmVnaXN0 ZXIgYWNjZXNzICovCj4gKyNkZWZpbmUgU0lJOTAyWF9JTkRfU0VUX1BBR0UJCQkweGJjCj4gKyNk ZWZpbmUgU0lJOTAyWF9JTkRfT0ZGU0VUCQkJMHhiZAo+ICsjZGVmaW5lIFNJSTkwMlhfSU5EX1ZB TFVFCQkJMHhiZQo+ICsKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9NSVNDX0lORk9GUkFNRV9CQVNF CQkweGJmCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfRU5ECQkweGRlCj4g KyNkZWZpbmUgU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfU0laRQlcCj4gKwkoU0lJOTAyWF9U UElfTUlTQ19JTkZPRlJBTUVfRU5EIC0gU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfQkFTRSkK PiArCj4gICNkZWZpbmUgU0lJOTAyWF9JMkNfQlVTX0FDUVVJU0lUSU9OX1RJTUVPVVRfTVMJNTAw Cj4gIAo+ICBzdHJ1Y3Qgc2lpOTAyeCB7Cj4gQEAgLTkwLDYgKzE3NCwxNiBAQCBzdHJ1Y3Qgc2lp OTAyeCB7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cj4gIAlzdHJ1Y3QgZ3Bp b19kZXNjICpyZXNldF9ncGlvOwo+ICAJc3RydWN0IGkyY19tdXhfY29yZSAqaTJjbXV4Owo+ICsJ LyoKPiArCSAqIE11dGV4IHByb3RlY3RzIGF1ZGlvIGFuZCB2aWRlbyBmdW5jdGlvbnMgZnJvbSBp bnRlcmZlcmluZwo+ICsJICogZWFjaCBvdGhlciwgYnkga2VlcGluZyB0aGVpciBpMmMgY29tbWFu ZCBzZXF1ZW5jZXMgYXRvbWljLgo+ICsJICovCj4gKwlzdHJ1Y3QgbXV0ZXggbXV0ZXg7Cj4gKwlz dHJ1Y3Qgc2lpOTAyeF9hdWRpbyB7Cj4gKwkJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsK PiArCQlzdHJ1Y3QgY2xrICptY2xrOwo+ICsJCXUzMiBpMnNfZmlmb19zZXF1ZW5jZVs0XTsKPiAr CX0gYXVkaW87Cj4gIH07Cj4gIAo+ICBzdGF0aWMgaW50IHNpaTkwMnhfcmVhZF91bmxvY2tlZChz dHJ1Y3QgaTJjX2NsaWVudCAqaTJjLCB1OCByZWcsIHU4ICp2YWwpCj4gQEAgLTE2MSw4ICsyNTUs MTIgQEAgc2lpOTAyeF9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsIGJvb2wgZm9yY2UpCj4gIAlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGNvbm5lY3Rv cl90b19zaWk5MDJ4KGNvbm5lY3Rvcik7Cj4gIAl1bnNpZ25lZCBpbnQgc3RhdHVzOwo+ICAKPiAr CW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKPiArCj4gIAlyZWdtYXBfcmVhZChzaWk5MDJ4 LT5yZWdtYXAsIFNJSTkwMlhfSU5UX1NUQVRVUywgJnN0YXR1cyk7Cj4gIAo+ICsJbXV0ZXhfdW5s b2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4gKwoKCnJlZ21hcCB1c2VzIGl0cyBvd24gbG9jayBzbyB3 ZSBoYXZlIGhlcmUgYW5kIGluIG90aGVyIHBsYWNlcyByZWR1bmRhbnQKbG9ja3MuCgpQcm9iYWJs eSB5b3Ugc2hvdWxkIGRpc2FibGUgcmVnbWFwIGxvY2tpbmcgKGNvbmZpZy0+ZGlzYWJsZV9sb2Nr aW5nID0gMSkuCgoKPiAgCXJldHVybiAoc3RhdHVzICYgU0lJOTAyWF9QTFVHR0VEX1NUQVRVUykg Pwo+ICAJICAgICAgIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkIDogY29ubmVjdG9yX3N0YXR1 c19kaXNjb25uZWN0ZWQ7Cj4gIH0KPiBAQCAtMTg0LDYgKzI4Miw4IEBAIHN0YXRpYyBpbnQgc2lp OTAyeF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXN0cnVj dCBlZGlkICplZGlkOwo+ICAJaW50IG51bSA9IDAsIHJldDsKPiAgCj4gKwltdXRleF9sb2NrKCZz aWk5MDJ4LT5tdXRleCk7Cj4gKwo+ICAJZWRpZCA9IGRybV9nZXRfZWRpZChjb25uZWN0b3IsIHNp aTkwMngtPmkyY211eC0+YWRhcHRlclswXSk7Cj4gIAlkcm1fY29ubmVjdG9yX3VwZGF0ZV9lZGlk X3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7Cj4gIAlpZiAoZWRpZCkgewo+IEBAIC0xOTcsMTQg KzI5NywxOSBAQCBzdGF0aWMgaW50IHNpaTkwMnhfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCj4gIAlyZXQgPSBkcm1fZGlzcGxheV9pbmZvX3NldF9idXNfZm9ybWF0 cygmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8sCj4gIAkJCQkJICAgICAgICZidXNfZm9ybWF0LCAx KTsKPiAgCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiArCQlnb3RvIGVycm9yX291dDsKPiAg Cj4gIAlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1NZ U19DVFJMX0RBVEEsCj4gIAkJCQkgU0lJOTAyWF9TWVNfQ1RSTF9PVVRQVVRfTU9ERSwgb3V0cHV0 X21vZGUpOwo+ICAJaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJCWdvdG8gZXJyb3Jfb3V0 Owo+ICsKPiArCXJldCA9IG51bTsKPiArCj4gK2Vycm9yX291dDoKPiArCW11dGV4X3VubG9jaygm c2lpOTAyeC0+bXV0ZXgpOwo+ICAKPiAtCXJldHVybiBudW07Cj4gKwlyZXR1cm4gcmV0Owo+ICB9 Cj4gIAo+ICBzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgc2lpOTAyeF9tb2RlX3ZhbGlkKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gQEAgLTIyNCwyMCArMzI5LDI4IEBAIHN0 YXRpYyB2b2lkIHNpaTkwMnhfYnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSkKPiAgewo+ICAJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBicmlkZ2VfdG9fc2lpOTAyeChi cmlkZ2UpOwo+ICAKPiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKPiArCj4gIAlyZWdt YXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsCj4g IAkJCSAgIFNJSTkwMlhfU1lTX0NUUkxfUFdSX0RXTiwKPiAgCQkJICAgU0lJOTAyWF9TWVNfQ1RS TF9QV1JfRFdOKTsKPiArCj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UpCj4gIHsKPiAgCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gYnJpZGdlX3RvX3Np aTkwMngoYnJpZGdlKTsKPiAgCj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4gKwo+ ICAJcmVnbWFwX3VwZGF0ZV9iaXRzKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9QV1JfU1RBVEVf Q1RSTCwKPiAgCQkJICAgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfTVNLLAo+ICAJCQkgICBTSUk5 MDJYX0FWSV9QT1dFUl9TVEFURV9EKDApKTsKPiAgCXJlZ21hcF91cGRhdGVfYml0cyhzaWk5MDJ4 LT5yZWdtYXAsIFNJSTkwMlhfU1lTX0NUUkxfREFUQSwKPiAgCQkJICAgU0lJOTAyWF9TWVNfQ1RS TF9QV1JfRFdOLCAwKTsKPiArCj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsKPiAg fQo+ICAKPiAgc3RhdGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwKPiBAQCAtMjY0LDI2ICszNzcsMzEgQEAgc3RhdGljIHZvaWQgc2lpOTAy eF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAgCWJ1Zls5XSA9 IFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9SQU5HRV9BVVRPIHwKPiAgCQkgU0lJOTAyWF9UUElfQVZJ X0lOUFVUX0NPTE9SU1BBQ0VfUkdCOwo+ICAKPiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4 KTsKPiArCj4gIAlyZXQgPSByZWdtYXBfYnVsa193cml0ZShyZWdtYXAsIFNJSTkwMlhfVFBJX1ZJ REVPX0RBVEEsIGJ1ZiwgMTApOwo+ICAJaWYgKHJldCkKPiAtCQlyZXR1cm47Cj4gKwkJZ290byBv dXQ7Cj4gIAo+ICAJcmV0ID0gZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9mcm9tX2Rpc3BsYXlfbW9k ZSgmZnJhbWUsIGFkaiwgZmFsc2UpOwo+ICAJaWYgKHJldCA8IDApIHsKPiAgCQlEUk1fRVJST1Io ImNvdWxkbid0IGZpbGwgQVZJIGluZm9mcmFtZVxuIik7Cj4gLQkJcmV0dXJuOwo+ICsJCWdvdG8g b3V0Owo+ICAJfQo+ICAKPiAgCXJldCA9IGhkbWlfYXZpX2luZm9mcmFtZV9wYWNrKCZmcmFtZSwg YnVmLCBzaXplb2YoYnVmKSk7Cj4gIAlpZiAocmV0IDwgMCkgewo+ICAJCURSTV9FUlJPUigiZmFp bGVkIHRvIHBhY2sgQVZJIGluZm9mcmFtZTogJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuOwo+ICsJ CWdvdG8gb3V0Owo+ICAJfQo+ICAKPiAgCS8qIERvIG5vdCBzZW5kIHRoZSBpbmZvZnJhbWUgaGVh ZGVyLCBidXQga2VlcCB0aGUgQ1JDIGZpZWxkLiAqLwo+ICAJcmVnbWFwX2J1bGtfd3JpdGUocmVn bWFwLCBTSUk5MDJYX1RQSV9BVklfSU5GT0ZSQU1FLAo+ICAJCQkgIGJ1ZiArIEhETUlfSU5GT0ZS QU1FX0hFQURFUl9TSVpFIC0gMSwKPiAgCQkJICBIRE1JX0FWSV9JTkZPRlJBTUVfU0laRSArIDEp Owo+ICsKPiArb3V0Ogo+ICsJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4gIH0KPiAg Cj4gIHN0YXRpYyBpbnQgc2lpOTAyeF9icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpCj4gQEAgLTMyNCw2ICs0NDIsMzMwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Jy aWRnZV9mdW5jcyBzaWk5MDJ4X2JyaWRnZV9mdW5jcyA9IHsKPiAgCS5lbmFibGUgPSBzaWk5MDJ4 X2JyaWRnZV9lbmFibGUsCj4gIH07Cj4gIAo+ICtzdGF0aWMgaW50IHNpaTkwMnhfbXV0ZShzdHJ1 Y3Qgc2lpOTAyeCAqc2lpOTAyeCwgYm9vbCBtdXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSAmc2lpOTAyeC0+aTJjLT5kZXY7Cj4gKwl1bnNpZ25lZCBpbnQgdmFsID0gbXV0ZSA/IFNJ STkwMlhfVFBJX0FVRElPX01VVEVfRU5BQkxFIDoKPiArCQlTSUk5MDJYX1RQSV9BVURJT19NVVRF X0RJU0FCTEU7Cj4gKwo+ICsJZGV2X2RiZyhkZXYsICIlczogJXNcbiIsIF9fZnVuY19fLCBtdXRl ID8gIk11dGVkIiA6ICJVbm11dGVkIik7Cj4gKwo+ICsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0 cyhzaWk5MDJ4LT5yZWdtYXAsCj4gKwkJCQkgIFNJSTkwMlhfVFBJX0FVRElPX0NPTkZJR19CWVRF Ml9SRUcsCj4gKwkJCQkgIFNJSTkwMlhfVFBJX0FVRElPX01VVEVfRU5BQkxFLCB2YWwpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNpaTkwMnhfbWNsa19kaXZfdGFibGVb XSA9IHsKPiArCTEyOCwgMjU2LCAzODQsIDUxMiwgNzY4LCAxMDI0LCAxMTUyLCAxOTIgfTsKPiAr Cj4gK3N0YXRpYyBpbnQgc2lpOTAyeF9zZWxlY3RfbWNsa19kaXYodTggKmkyc19jb25maWdfcmVn LCB1bnNpZ25lZCBpbnQgcmF0ZSwKPiArCQkJCSAgIHVuc2lnbmVkIGludCBtY2xrKQo+ICt7Cj4g Kwl1bnNpZ25lZCBpbnQgZGl2ID0gbWNsayAvIHJhdGU7Cj4gKwlpbnQgZGlzdGFuY2UgPSAxMDAw MDA7Cj4gKwl1OCBpLCBuZWFyZXN0ID0gMDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShzaWk5MDJ4X21jbGtfZGl2X3RhYmxlKTsgaSsrKSB7Cj4gKwkJdW5zaWduZWQgaW50IGQg PSBhYnMoZGl2IC0gc2lpOTAyeF9tY2xrX2Rpdl90YWJsZVtpXSk7CgoKVXNpbmcgdW5zaWduZWQg dHlwZXMgaW4gdGhpcyBjb250ZXh0IHNlZW1zIHRvIGJlIGFza2luZyBmb3IgdHJvdWJsZXMuCgoK PiArCj4gKwkJaWYgKGQgPj0gZGlzdGFuY2UpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQluZWFy ZXN0ID0gaTsKPiArCQlkaXN0YW5jZSA9IGQ7Cj4gKwkJaWYgKGQgPT0gMCkKPiArCQkJYnJlYWs7 Cj4gKwl9Cj4gKwo+ICsJKmkyc19jb25maWdfcmVnIHw9IG5lYXJlc3QgPDwgNDsKPiArCj4gKwlp ZiAoZGlzdGFuY2UgIT0gMCkKPiArCQlyZXR1cm4gc2lpOTAyeF9tY2xrX2Rpdl90YWJsZVtuZWFy ZXN0XTsKPiArCj4gKwlyZXR1cm4gMDsKCgpyZXQgdmFsdWUgaXMgaW5jb25zaXN0ZW50LCAwIGlu IGNhc2Ugb2YgZXhhY3QgbWF0Y2gsIGNsb3Nlc3QgdmFsdWUKb3RoZXJ3aXNlLCBjb2RlIHdpbGwg YmUgY2xlYW5lciBpZiB5b3UgcmV0dXJuIGFsd2F5cyBjbG9zZXN0IG1hdGNoLgoKCj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2lpOTAyeF9zYW1wbGVfZnJlcSB7Cj4gKwl1MzIgZnJl cTsKPiArCXU4IHZhbDsKPiArfSBzaWk5MDJ4X3NhbXBsZV9mcmVxW10gPSB7Cj4gKwl7IC5mcmVx ID0gMzIwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzMyS0haIH0sCj4gKwl7IC5m cmVxID0gNDQwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzQ0S0haIH0sCj4gKwl7 IC5mcmVxID0gNDgwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzQ4S0haIH0sCj4g Kwl7IC5mcmVxID0gODgwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzg4S0haIH0s Cj4gKwl7IC5mcmVxID0gOTYwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzk2S0ha IH0sCj4gKwl7IC5mcmVxID0gMTc2MDAwLAkudmFsID0gU0lJOTAyWF9UUElfQVVESU9fRlJFUV8x NzZLSFogfSwKPiArCXsgLmZyZXEgPSAxOTIwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19G UkVRXzE5MktIWiB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBzaWk5MDJ4X2F1ZGlvX2h3X3Bh cmFtcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gKwkJCQkgICBzdHJ1Y3QgaGRt aV9jb2RlY19kYWlmbXQgKmRhaWZtdCwKPiArCQkJCSAgIHN0cnVjdCBoZG1pX2NvZGVjX3BhcmFt cyAqcGFyYW1zKQo+ICt7Cj4gKwlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOwo+ICsJdTggaTJzX2NvbmZpZ19yZWcgPSBTSUk5MDJYX1RQSV9JMlNfU0RfRElS RUNUSU9OX01TQl9GSVJTVDsKPiArCXU4IGNvbmZpZ19ieXRlMl9yZWcgPSAoU0lJOTAyWF9UUElf QVVESU9fSU5URVJGQUNFX0kyUyB8Cj4gKwkJCSAgICAgICBTSUk5MDJYX1RQSV9BVURJT19NVVRF X0VOQUJMRSB8Cj4gKwkJCSAgICAgICBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfUENNKTsKPiAr CXU4IGNvbmZpZ19ieXRlM19yZWcgPSAwOwo+ICsJdTggaW5mb2ZyYW1lX2J1ZltIRE1JX0lORk9G UkFNRV9TSVpFKEFVRElPKV07Cj4gKwl1bnNpZ25lZCBsb25nIG1jbGtfcmF0ZTsKPiArCWludCBp LCByZXQ7Cj4gKwo+ICsJaWYgKGRhaWZtdC0+Yml0X2Nsa19tYXN0ZXIgfHwgZGFpZm10LT5mcmFt ZV9jbGtfbWFzdGVyKSB7Cj4gKwkJZGV2X2RiZyhkZXYsICIlczogSTJTIG1hc3RlciBtb2RlIG5v dCBzdXBwb3J0ZWRcbiIsIF9fZnVuY19fKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiAr Cj4gKwlzd2l0Y2ggKGRhaWZtdC0+Zm10KSB7Cj4gKwljYXNlIEhETUlfSTJTOgo+ICsJCWkyc19j b25maWdfcmVnIHw9IFNJSTkwMlhfVFBJX0kyU19GSVJTVF9CSVRfU0hJRlRfWUVTIHwKPiArCQkJ U0lJOTAyWF9UUElfSTJTX1NEX0pVU1RJRllfTEVGVDsKPiArCQlicmVhazsKPiArCWNhc2UgSERN SV9SSUdIVF9KOgo+ICsJCWkyc19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJX0kyU19TRF9KVVNU SUZZX1JJR0hUOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBIRE1JX0xFRlRfSjoKPiArCQlpMnNfY29u ZmlnX3JlZyB8PSBTSUk5MDJYX1RQSV9JMlNfU0RfSlVTVElGWV9MRUZUOwo+ICsJCWJyZWFrOwo+ ICsJZGVmYXVsdDoKPiArCQlkZXZfZGJnKGRldiwgIiVzOiBVbnN1cHBvcnRlZCBpMnMgZm9ybWF0 ICV1XG4iLCBfX2Z1bmNfXywKPiArCQkJZGFpZm10LT5mbXQpOwo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsJfQo+ICsKPiArCWlmIChkYWlmbXQtPmJpdF9jbGtfaW52KQo+ICsJCWkyc19jb25maWdf cmVnIHw9IFNJSTkwMlhfVFBJX0kyU19TQ0tfRURHRV9GQUxMSU5HOwo+ICsJZWxzZQo+ICsJCWky c19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJX0kyU19TQ0tfRURHRV9SSVNJTkc7Cj4gKwo+ICsJ aWYgKGRhaWZtdC0+ZnJhbWVfY2xrX2ludikKPiArCQlpMnNfY29uZmlnX3JlZyB8PSBTSUk5MDJY X1RQSV9JMlNfV1NfUE9MQVJJVFlfTE9XOwo+ICsJZWxzZQo+ICsJCWkyc19jb25maWdfcmVnIHw9 IFNJSTkwMlhfVFBJX0kyU19XU19QT0xBUklUWV9ISUdIOwo+ICsKPiArCWlmIChwYXJhbXMtPmNo YW5uZWxzID4gMikKPiArCQljb25maWdfYnl0ZTJfcmVnIHw9IFNJSTkwMlhfVFBJX0FVRElPX0xB WU9VVF84X0NIQU5ORUxTOwo+ICsJZWxzZQo+ICsJCWNvbmZpZ19ieXRlMl9yZWcgfD0gU0lJOTAy WF9UUElfQVVESU9fTEFZT1VUXzJfQ0hBTk5FTFM7Cj4gKwo+ICsJc3dpdGNoIChwYXJhbXMtPnNh bXBsZV93aWR0aCkgewo+ICsJY2FzZSAxNjoKPiArCQljb25maWdfYnl0ZTNfcmVnIHw9IFNJSTkw MlhfVFBJX0FVRElPX1NBTVBMRV9TSVpFXzE2Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSAyMDoKPiAr CQljb25maWdfYnl0ZTNfcmVnIHw9IFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpFXzIwOwo+ ICsJCWJyZWFrOwo+ICsJY2FzZSAyNDoKPiArCWNhc2UgMzI6Cj4gKwkJY29uZmlnX2J5dGUzX3Jl ZyB8PSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV8yNDsKPiArCQlicmVhazsKPiArCWRl ZmF1bHQ6Cj4gKwkJZGV2X2VycihkZXYsICIlczogVW5zdXBwb3J0ZWQgc2FtcGxlIHdpZHRoICV1 XG4iLCBfX2Z1bmNfXywKPiArCQkJcGFyYW1zLT5zYW1wbGVfd2lkdGgpOwo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNpaTkwMnhf c2FtcGxlX2ZyZXEpOyBpKyspIHsKPiArCQlpZiAocGFyYW1zLT5zYW1wbGVfcmF0ZSA9PSBzaWk5 MDJ4X3NhbXBsZV9mcmVxW2ldLmZyZXEpIHsKPiArCQkJY29uZmlnX2J5dGUzX3JlZyB8PSBzaWk5 MDJ4X3NhbXBsZV9mcmVxW2ldLnZhbDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsKPiAr CXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShzaWk5MDJ4LT5hdWRpby5tY2xrKTsKPiArCWlmIChy ZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgIkVuYWJsaW5nIG1jbGsgZmFpbGVkOiAlZFxuIiwgcmV0 KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCW1jbGtfcmF0ZSA9IGNsa19nZXRfcmF0 ZShzaWk5MDJ4LT5hdWRpby5tY2xrKTsKPiArCj4gKwlyZXQgPSBzaWk5MDJ4X3NlbGVjdF9tY2xr X2RpdigmaTJzX2NvbmZpZ19yZWcsIHBhcmFtcy0+c2FtcGxlX3JhdGUsCj4gKwkJCQkgICAgICBt Y2xrX3JhdGUpOwo+ICsJaWYgKHJldCkKPiArCQlkZXZfZGJnKGRldiwgIkluYWNjdXJhdGUgcmVm ZXJlbmNlIGNsb2NrICglbGQvJWQgIT0gJXUpXG4iLAo+ICsJCQltY2xrX3JhdGUsIHJldCwgcGFy YW1zLT5zYW1wbGVfcmF0ZSk7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+ ICsKPiArCXJldCA9IHJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsCj4gKwkJCSAgIFNJSTkw MlhfVFBJX0FVRElPX0NPTkZJR19CWVRFMl9SRUcsCj4gKwkJCSAgIGNvbmZpZ19ieXRlMl9yZWcp Owo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmV0ID0gcmVnbWFwX3dy aXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9UUElfSTJTX0lOUFVUX0NPTkZJR19SRUcsCj4g KwkJCSAgIGkyc19jb25maWdfcmVnKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ ICsJZm9yIChpID0gMDsgc2lpOTAyeC0+YXVkaW8uaTJzX2ZpZm9fc2VxdWVuY2VbaV0gJiYKPiAr CQkgICAgIGkgPCBBUlJBWV9TSVpFKHNpaTkwMngtPmF1ZGlvLmkyc19maWZvX3NlcXVlbmNlKTsg aSsrKQo+ICsJCXJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsCj4gKwkJCSAgICAgU0lJOTAy WF9UUElfSTJTX0VOQUJMRV9NQVBQSU5HX1JFRywKPiArCQkJICAgICBzaWk5MDJ4LT5hdWRpby5p MnNfZmlmb19zZXF1ZW5jZVtpXSk7Cj4gKwo+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngt PnJlZ21hcCwgU0lJOTAyWF9UUElfQVVESU9fQ09ORklHX0JZVEUzX1JFRywKPiArCQkJICAgY29u ZmlnX2J5dGUzX3JlZyk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCXJldCA9 IHJlZ21hcF9idWxrX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9UUElfSTJTX1NUUk1f SERSX0JBU0UsCj4gKwkJCQlwYXJhbXMtPmllYy5zdGF0dXMsCj4gKwkJCQltaW4oKHNpemVfdCkg U0lJOTAyWF9UUElfSTJTX1NUUk1fSERSX1NJWkUsCj4gKwkJCQkgICAgc2l6ZW9mKHBhcmFtcy0+ aWVjLnN0YXR1cykpKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmV0ID0g aGRtaV9hdWRpb19pbmZvZnJhbWVfcGFjaygmcGFyYW1zLT5jZWEsIGluZm9mcmFtZV9idWYsCj4g KwkJCQkJc2l6ZW9mKGluZm9mcmFtZV9idWYpKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2 X2VycihkZXYsICIlczogRmFpbGVkIHRvIHBhY2sgYXVkaW8gaW5mb2ZyYW1lOiAlZFxuIiwKPiAr CQkJX19mdW5jX18sIHJldCk7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gcmVn bWFwX2J1bGtfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLAo+ICsJCQkJU0lJOTAyWF9UUElfTUlTQ19J TkZPRlJBTUVfQkFTRSwKPiArCQkJCWluZm9mcmFtZV9idWYsCj4gKwkJCQltaW4ocmV0LCBTSUk5 MDJYX1RQSV9NSVNDX0lORk9GUkFNRV9TSVpFKSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0 Owo+ICsKPiArCS8qIERlY29kZSBMZXZlbCAwIFBhY2tldHMgKi8KPiArCXJldCA9IHJlZ21hcF93 cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfSU5EX1NFVF9QQUdFLCAweDAyKTsKPiArCWlm IChyZXQpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngt PnJlZ21hcCwgU0lJOTAyWF9JTkRfT0ZGU0VULCAweDI0KTsKPiArCWlmIChyZXQpCj4gKwkJZ290 byBvdXQ7Cj4gKwo+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAy WF9JTkRfVkFMVUUsIDB4MDIpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dDsKPiArCj4gKwlk ZXZfZGJnKGRldiwgIiVzOiBoZG1pIGF1ZGlvIGVuYWJsZWRcbiIsIF9fZnVuY19fKTsKPiArb3V0 Ogo+ICsJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4gKwo+ICsJaWYgKHJldCkgewo+ ICsJCWNsa19kaXNhYmxlX3VucHJlcGFyZShzaWk5MDJ4LT5hdWRpby5tY2xrKTsKPiArCQlkZXZf ZXJyKGRldiwgIiVzOiBoZG1pIGF1ZGlvIGVuYWJsZSBmYWlsZWQ6ICVkXG4iLCBfX2Z1bmNfXywK PiArCQkJcmV0KTsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBzaWk5MDJ4X2F1ZGlvX3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSkKPiArewo+ICsJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKPiArCj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4gKwo+ICsJcmVnbWFwX3dy aXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9UUElfQVVESU9fQ09ORklHX0JZVEUyX1JFRywK PiArCQkgICAgIFNJSTkwMlhfVFBJX0FVRElPX0lOVEVSRkFDRV9ESVNBQkxFKTsKPiArCj4gKwlt dXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsKPiArCj4gKwljbGtfZGlzYWJsZV91bnByZXBh cmUoc2lpOTAyeC0+YXVkaW8ubWNsayk7Cj4gK30KPiArCj4gK2ludCBzaWk5MDJ4X2F1ZGlvX2Rp Z2l0YWxfbXV0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIGJvb2wgZW5hYmxlKQo+ ICt7Cj4gKwlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ ICsKPiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKPiArCj4gKwlzaWk5MDJ4X211dGUo c2lpOTAyeCwgZW5hYmxlKTsKPiArCj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzaWk5MDJ4X2F1ZGlvX2dl dF9lbGQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICsJCQkJIHVpbnQ4X3QgKmJ1 Ziwgc2l6ZV90IGxlbikKPiArewo+ICsJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKPiArCj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4gKwo+ ICsJbWVtY3B5KGJ1Ziwgc2lpOTAyeC0+Y29ubmVjdG9yLmVsZCwKPiArCSAgICAgICBtaW4oc2l6 ZW9mKHNpaTkwMngtPmNvbm5lY3Rvci5lbGQpLCBsZW4pKTsKCgpJIGFtIG5vdCBmYW1pbGlhciB3 aXRoIGF1ZGlvIHN0dWZmLCBzbyBmb3JnaXZlIG15IGlnbm9yYW5jZSA6KQoKV2hhdCBoYXBwZW5z IHdoZW4gdGhpcyBvciBvdGhlciBhdWRpbyBjYWxsYmFja3MgaXMgY2FsbGVkOgoKMS4gYmVmb3Jl IHN0aCBpcyBwbHVnZ2VkIGluIGNvbm5lY3Rvci4KCjIuIGFmdGVyIHVucGx1Zy4KCjMuIHBsdWcv dW4tcGx1ZyBoYXBwZW5zIGJldHdlZW4gdGhlc2UgY2FsbHMuCgoKQWxzbyBJIGRvIG5vdCBzZWUg aG90cGx1Zy91bnBsdWcgbm90aWZpY2F0aW9uIG1lY2hhbmlzbSB0byBhdWRpbwpzdWJzeXN0ZW0u IEl0IGxvb2tzIHN1c3BpY2lvdXMuCgoKUmVnYXJkcwoKQW5kcnplagoKCgo+ICsKPiArCW11dGV4 X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGhkbWlfY29kZWNfb3BzIHNpaTkwMnhfYXVkaW9fY29kZWNfb3Bz ID0gewo+ICsJLmh3X3BhcmFtcyA9IHNpaTkwMnhfYXVkaW9faHdfcGFyYW1zLAo+ICsJLmF1ZGlv X3NodXRkb3duID0gc2lpOTAyeF9hdWRpb19zaHV0ZG93biwKPiArCS5kaWdpdGFsX211dGUgPSBz aWk5MDJ4X2F1ZGlvX2RpZ2l0YWxfbXV0ZSwKPiArCS5nZXRfZWxkID0gc2lpOTAyeF9hdWRpb19n ZXRfZWxkLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBzaWk5MDJ4X2F1ZGlvX2NvZGVjX2luaXQo c3RydWN0IHNpaTkwMnggKnNpaTkwMngsCj4gKwkJCQkgICAgc3RydWN0IGRldmljZSAqZGV2KQo+ ICt7Cj4gKwlzdGF0aWMgY29uc3QgdTggYXVkaW9fZmlmb19pZFtdID0gewo+ICsJCVNJSTkwMlhf VFBJX0kyU19DT05GSUdfRklGTzAsCj4gKwkJU0lJOTAyWF9UUElfSTJTX0NPTkZJR19GSUZPMSwK PiArCQlTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8yLAo+ICsJCVNJSTkwMlhfVFBJX0kyU19D T05GSUdfRklGTzMsCj4gKwl9Owo+ICsJc3RhdGljIGNvbnN0IHU4IGkyc19sYW5lX2lkW10gPSB7 Cj4gKwkJU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDAsCj4gKwkJU0lJOTAyWF9UUElfSTJTX1NF TEVDVF9TRDEsCj4gKwkJU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDIsCj4gKwkJU0lJOTAyWF9U UElfSTJTX1NFTEVDVF9TRDMsCj4gKwl9Owo+ICsJc3RydWN0IGhkbWlfY29kZWNfcGRhdGEgY29k ZWNfZGF0YSA9IHsKPiArCQkub3BzID0gJnNpaTkwMnhfYXVkaW9fY29kZWNfb3BzLAo+ICsJCS5p MnMgPSAxLCAvKiBPbmx5IGkycyBzdXBwb3J0IGZvciBub3cuICovCj4gKwkJLnNwZGlmID0gMCwK PiArCQkubWF4X2kyc19jaGFubmVscyA9IDAsCj4gKwl9Owo+ICsJdTggbGFuZXNbNF07Cj4gKwl1 MzIgbnVtX2xhbmVzLCBpOwo+ICsKPiArCW51bV9sYW5lcyA9IG9mX3Byb3BlcnR5X3JlYWRfdmFy aWFibGVfdThfYXJyYXkoZGV2LT5vZl9ub2RlLAo+ICsJCQkJCQkgICAgICAgInNpbCxpMnMtZGF0 YS1sYW5lcyIsCj4gKwkJCQkJCSAgICAgICBsYW5lcywgMSwKPiArCQkJCQkJICAgICAgIEFSUkFZ X1NJWkUobGFuZXMpKTsKPiArCWlmIChudW1fbGFuZXMgPCAwKSB7Cj4gKwkJaWYgKG51bV9sYW5l cyA9PSAtRUlOVkFMKQo+ICsJCQlkZXZfZGJnKGRldiwKPiArCQkJCSIlczogTm8gXCJzaWwsaTJz LWRhdGEtbGFuZXNcIiwgbm8gYXVkaW9cbiIsCj4gKwkJCQlfX2Z1bmNfXyk7Cj4gKwkJZWxzZQo+ ICsJCQlkZXZfZXJyKGRldiwKPiArCQkJCSIlczogRXJyb3IgZ2V0dGluIFwic2lsLGkycy1kYXRh LWxhbmVzXCI6ICVkXG4iLAo+ICsJCQkJX19mdW5jX18sIG51bV9sYW5lcyk7Cj4gKwkJcmV0dXJu IDA7Cj4gKwl9Cj4gKwljb2RlY19kYXRhLm1heF9pMnNfY2hhbm5lbHMgPSAyICogbnVtX2xhbmVz Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBudW1fbGFuZXM7IGkrKykKPiArCQlzaWk5MDJ4LT5h dWRpby5pMnNfZmlmb19zZXF1ZW5jZVtpXSB8PSBhdWRpb19maWZvX2lkW2ldIHwKPiArCQkJaTJz X2xhbmVfaWRbbGFuZXNbaV1dIHwJU0lJOTAyWF9UUElfSTJTX0ZJRk9fRU5BQkxFOwo+ICsKPiAr CWlmIChJU19FUlIoc2lpOTAyeC0+YXVkaW8ubWNsaykpIHsKPiArCQlkZXZfZXJyKGRldiwgIiVz OiBObyBjbG9jayAoYXVkaW8gbWNsaykgZm91bmQ6ICVsZFxuIiwKPiArCQkJX19mdW5jX18sIFBU Ul9FUlIoc2lpOTAyeC0+YXVkaW8ubWNsaykpOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiAr CXNpaTkwMngtPmF1ZGlvLnBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZGF0YSgKPiAr CQlkZXYsIEhETUlfQ09ERUNfRFJWX05BTUUsIFBMQVRGT1JNX0RFVklEX0FVVE8sCj4gKwkJJmNv ZGVjX2RhdGEsIHNpemVvZihjb2RlY19kYXRhKSk7Cj4gKwo+ICsJcmV0dXJuIFBUUl9FUlJfT1Jf WkVSTyhzaWk5MDJ4LT5hdWRpby5wZGV2KTsKPiArfQo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVj dCByZWdtYXBfcmFuZ2Ugc2lpOTAyeF92b2xhdGlsZV9yYW5nZXNbXSA9IHsKPiAgCXsgLnJhbmdl X21pbiA9IDAsIC5yYW5nZV9tYXggPSAweGZmIH0sCj4gIH07Cj4gQEAgLTMzNiw2ICs3NzgsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9hY2Nlc3NfdGFibGUgc2lpOTAyeF92b2xhdGls ZV90YWJsZSA9IHsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHNpaTkwMnhf cmVnbWFwX2NvbmZpZyA9IHsKPiAgCS5yZWdfYml0cyA9IDgsCj4gIAkudmFsX2JpdHMgPSA4LAo+ ICsJLm1heF9yZWdpc3RlciA9IFNJSTkwMlhfVFBJX01JU0NfSU5GT0ZSQU1FX0VORCwKPiAgCS52 b2xhdGlsZV90YWJsZSA9ICZzaWk5MDJ4X3ZvbGF0aWxlX3RhYmxlLAo+ICAJLmNhY2hlX3R5cGUg PSBSRUdDQUNIRV9OT05FLAo+ICB9Owo+IEBAIC01MDgsNiArOTUxLDggQEAgc3RhdGljIGludCBz aWk5MDJ4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCj4gIAkJcmV0dXJuIFBUUl9F UlIoc2lpOTAyeC0+cmVzZXRfZ3Bpbyk7Cj4gIAl9Cj4gIAo+ICsJbXV0ZXhfaW5pdCgmc2lpOTAy eC0+bXV0ZXgpOwo+ICsKPiAgCXNpaTkwMnhfcmVzZXQoc2lpOTAyeCk7Cj4gIAo+ICAJcmV0ID0g cmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9SRUdfVFBJX1JRQiwgMHgwKTsK PiBAQCAtNTQ4LDYgKzk5Myw4IEBAIHN0YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50LAo+ICAJc2lpOTAyeC0+YnJpZGdlLnRpbWluZ3MgPSAmZGVmYXVsdF9z aWk5MDJ4X3RpbWluZ3M7Cj4gIAlkcm1fYnJpZGdlX2FkZCgmc2lpOTAyeC0+YnJpZGdlKTsKPiAg Cj4gKwlzaWk5MDJ4X2F1ZGlvX2NvZGVjX2luaXQoc2lpOTAyeCwgZGV2KTsKPiArCj4gIAlpMmNf c2V0X2NsaWVudGRhdGEoY2xpZW50LCBzaWk5MDJ4KTsKPiAgCj4gIAlzaWk5MDJ4LT5pMmNtdXgg PSBpMmNfbXV4X2FsbG9jKGNsaWVudC0+YWRhcHRlciwgZGV2LAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==