From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: [PATCH 3/4] drm/bridge: sii902x: Implement HDMI audio support Date: Mon, 25 Feb 2019 13:23:11 +0200 Message-ID: <9b7d96b02731cd53359a924e4c5f8b8f2d550717.1551090126.git.jsarha@ti.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fllv0016.ext.ti.com (fllv0016.ext.ti.com [198.47.19.142]) by gabe.freedesktop.org (Postfix) with ESMTPS id A0456894FE for ; Mon, 25 Feb 2019 11:23:35 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: fabrizio.castro@bp.renesas.com, boris.brezillon@free-electrons.com, Songjun.Wu@atmel.com, peter.ujfalusi@ti.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com, voice.shen@atmel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50IEhETUkgYXVkaW8gc3VwcG9ydCBieSB1c2luZyBBU29DIEhETUkgY29kZWMuIFRo ZSBjb21taXQKaW1wbGVtZW50cyB0aGUgbmVjZXNzYXJ5IGNhbGxiYWNrcyBhbmQgY29uZmlndXJh dGlvbiBmb3IgdGhlIEhETUkKY29kZWMgYW5kIHJlZ2lzdGVycyBhIHZpcnR1YWwgcGxhdGZvcm0g ZGV2aWNlIGZvciB0aGUgY29kZWMgdG8gYXR0YWNoLgoKU2lnbmVkLW9mZi1ieTogSnlyaSBTYXJo YSA8anNhcmhhQHRpLmNvbT4KLS0tCiAuLi4vYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uvc2lpOTAy eC50eHQgICAgICAgfCAgMjQgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMgICAg ICAgICAgICAgIHwgNDU2ICsrKysrKysrKysrKysrKysrLQogaW5jbHVkZS9kdC1iaW5kaW5ncy9z b3VuZC9zaWk5MDJ4LWF1ZGlvLmggICAgIHwgIDExICsKIDMgZmlsZXMgY2hhbmdlZCwgNDg1IGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9k dC1iaW5kaW5ncy9zb3VuZC9zaWk5MDJ4LWF1ZGlvLmgKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uvc2lpOTAyeC50eHQgYi9Eb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uvc2lpOTAyeC50eHQK aW5kZXggNzJkMmRjNmMzZTZiLi5hMWNmZjkxZTRlODQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9zaWk5MDJ4LnR4dAorKysgYi9E b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uvc2lpOTAyeC50 eHQKQEAgLTgsNiArOCwyMSBAQCBPcHRpb25hbCBwcm9wZXJ0aWVzOgogCS0gaW50ZXJydXB0czog ZGVzY3JpYmUgdGhlIGludGVycnVwdCBsaW5lIHVzZWQgdG8gaW5mb3JtIHRoZSBob3N0IAogCSAg YWJvdXQgaG90cGx1ZyBldmVudHMuCiAJLSByZXNldC1ncGlvczogT0YgZGV2aWNlLXRyZWUgZ3Bp byBzcGVjaWZpY2F0aW9uIGZvciBSU1RfTiBwaW4uCisJLSBpMnMtZmlmby1yb3V0aW5nOiBBcnJh eSBvZiBleGFjdGx5IDQgaW50ZWdlcnMgaW5kaWNhdGluZyBpMnMKKwkgIHBpbnMgZm9yIGF1ZGlv IGZpZm8gcm91dGluZy4gRmlyc3QgaW50ZWdlciBkZWZpbmVzIHJvdXRpbmcgdG8KKwkgIGZpZm8g MCBhbmQgc2Vjb25kIHRvIGZpZm8gMSwgZXRjLiBJbnRlZ2VycyBjYW4gYmUgZmlsbGVkIHdpdGgK KwkgIGRlZmluaXRpb25zIGZyb206IGluY2x1ZGUvZHQtYmluZGluZ3Mvc291bmQvc2lpOTAyeC1h dWRpby5oCisJICBUaGUgYXZhaWxhYmxlIGRlZmluaXRpb25zIGFyZToKKwkgIC0gRU5BQkxFX0JJ VDoJZW5hYmxlIHRoaXMgYXVkaW8gZmlmbworCSAgLSBDT05ORUNUX1NEIzogcm91dGUgYXVkaW8g aW5wdXQgZnJvbSBTRDAsIFNEMSwgU0QyLCBvciBTRDMgaTJzCisJCQkgZGF0YSBpbnB1dCBwaW4K KwkgIC0gTEVGVF9SSUdIVF9TV0FQX0JJVDogc3dhcCBpMnMgaW5wdXQgY2hhbm5lbHMgZm9yIHRo aXMgZmlmbworCSAgSTJTIEhETUkgYXVkaW8gaXMgY29uZmlndXJlZCBvbmx5IGlmIHRoaXMgcHJv cGVydHkgaXMgZm91bmQuCisJLSBjbG9ja3M6IGRlc2NyaWJlcyBTSUk5MDJ4IE1DTEsgaW5wdXQu IE1DTEsgaXMgdXNlZCB0byBwcm9kdWNlCisJICBIRE1JIGF1ZGlvIENUUyB2YWx1ZXMuIFRoaXMg cHJvcGVydHkgaXMgcmVxdWlyZWQgaWYKKwkgICJpMnMtZmlmby1yb3V0aW5nIi1wcm9wZXJ0eSBp cyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGZvbGxvd3MKKwkgIERvY3VtZW50YXRpb24vZGV2aWNl dHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKwkgIGNvbnN1bWVyIGJpbmRp bmcuCiAKIE9wdGlvbmFsIHN1Ym5vZGVzOgogCS0gdmlkZW8gaW5wdXQ6IHRoaXMgc3Vibm9kZSBj YW4gY29udGFpbiBhIHZpZGVvIGlucHV0IHBvcnQgbm9kZQpAQCAtMjEsNiArMzYsMTUgQEAgRXhh bXBsZToKIAkJY29tcGF0aWJsZSA9ICJzaWwsc2lpOTAyMiI7CiAJCXJlZyA9IDwweDM5PjsKIAkJ cmVzZXQtZ3Bpb3MgPSA8JnBpb0EgMSAwPjsKKworCQlpMnMtZmlmby1yb3V0aW5nID0gPAorCQkJ KEVOQUJMRV9CSVR8Q09OTkVDVF9TRDApCisJCQkwCisJCQkwCisJCQkwCisJCT47CisJCWNsb2Nr cyA9IDwmbWNsaz47CisKIAkJcG9ydHMgewogCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CiAJCQkj c2l6ZS1jZWxscyA9IDwwPjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lp OTAyeC5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMKaW5kZXggMGUyMWZhNDE5 ZDI3Li5mMjk2YTMzYzU3YzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lp OTAyeC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAyeC5jCkBAIC0yNywxMiAr MjcsMTYgQEAKICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KICNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KIAog I2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZWRp ZC5oPgogCisjaW5jbHVkZSA8c291bmQvaGRtaS1jb2RlYy5oPgorI2luY2x1ZGUgPGR0LWJpbmRp bmdzL3NvdW5kL3NpaTkwMngtYXVkaW8uaD4KKwogI2RlZmluZSBTSUk5MDJYX1RQSV9WSURFT19E QVRBCQkJMHgwCiAKICNkZWZpbmUgU0lJOTAyWF9UUElfUElYRUxfUkVQRVRJVElPTgkJMHg4CkBA IC03NCw2ICs3OCw3NyBAQAogI2RlZmluZSBTSUk5MDJYX0FWSV9QT1dFUl9TVEFURV9NU0sJCUdF Tk1BU0soMSwgMCkKICNkZWZpbmUgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfRChsKQkJKChsKSAm IFNJSTkwMlhfQVZJX1BPV0VSX1NUQVRFX01TSykKIAorLyogQXVkaW8gICovCisjZGVmaW5lIFNJ STkwMlhfVFBJX0kyU19FTkFCTEVfTUFQUElOR19SRUcJMHgxZgorI2RlZmluZSBTSUk5MDJYX1RQ SV9JMlNfQ09ORklHX0ZJRk8wCQkJKDAgPDwgMCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX0NP TkZJR19GSUZPMQkJCSgxIDw8IDApCisjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19DT05GSUdfRklG TzIJCQkoMiA8PCAwKQorI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8zCQkJKDMg PDwgMCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX0xFRlRfUklHSFRfU1dBUAkJCSgxIDw8IDIp CisjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19BVVRPX0RPV05TQU1QTEUJCQkoMSA8PCAzKQorI2Rl ZmluZSBTSUk5MDJYX1RQSV9JMlNfU0VMRUNUX1NEMAkJCSgwIDw8IDQpCisjZGVmaW5lIFNJSTkw MlhfVFBJX0kyU19TRUxFQ1RfU0QxCQkJKDEgPDwgNCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJT X1NFTEVDVF9TRDIJCQkoMiA8PCA0KQorI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU0VMRUNUX1NE MwkJCSgzIDw8IDQpCisjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19GSUZPX0VOQUJMRQkJCSgxIDw8 IDcpCisKKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX0lOUFVUX0NPTkZJR19SRUcJMHgyMAorI2Rl ZmluZSBTSUk5MDJYX1RQSV9JMlNfRklSU1RfQklUX1NISUZUX1lFUwkJKDAgPDwgMCkKKyNkZWZp bmUgU0lJOTAyWF9UUElfSTJTX0ZJUlNUX0JJVF9TSElGVF9OTwkJKDEgPDwgMCkKKyNkZWZpbmUg U0lJOTAyWF9UUElfSTJTX1NEX0RJUkVDVElPTl9NU0JfRklSU1QJCSgwIDw8IDEpCisjZGVmaW5l IFNJSTkwMlhfVFBJX0kyU19TRF9ESVJFQ1RJT05fTFNCX0ZJUlNUCQkoMSA8PCAxKQorI2RlZmlu ZSBTSUk5MDJYX1RQSV9JMlNfU0RfSlVTVElGWV9MRUZUCQkJKDAgPDwgMikKKyNkZWZpbmUgU0lJ OTAyWF9UUElfSTJTX1NEX0pVU1RJRllfUklHSFQJCSgxIDw8IDIpCisjZGVmaW5lIFNJSTkwMlhf VFBJX0kyU19XU19QT0xBUklUWV9MT1cJCQkoMCA8PCAzKQorI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfV1NfUE9MQVJJVFlfSElHSAkJKDEgPDwgMykKKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX01D TEtfTVVMVElQTElFUl8xMjgJCSgwIDw8IDQpCisjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19NQ0xL X01VTFRJUExJRVJfMjU2CQkoMSA8PCA0KQorI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfTUNMS19N VUxUSVBMSUVSXzM4NAkJKDIgPDwgNCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX01DTEtfTVVM VElQTElFUl81MTIJCSgzIDw8IDQpCisjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19NQ0xLX01VTFRJ UExJRVJfNzY4CQkoNCA8PCA0KQorI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfTUNMS19NVUxUSVBM SUVSXzEwMjQJCSg1IDw8IDQpCisjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19NQ0xLX01VTFRJUExJ RVJfMTE1MgkJKDYgPDwgNCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX01DTEtfTVVMVElQTElF Ul8xOTIJCSg3IDw8IDQpCisjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TQ0tfRURHRV9GQUxMSU5H CQkoMCA8PCA3KQorI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU0NLX0VER0VfUklTSU5HCQkJKDEg PDwgNykKKworI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU1RSTV9IRFJfQkFTRQkweDIxCisjZGVm aW5lIFNJSTkwMlhfVFBJX0kyU19TVFJNX0hEUl9TSVpFCTUKKworI2RlZmluZSBTSUk5MDJYX1RQ SV9BVURJT19DT05GSUdfQllURTJfUkVHCTB4MjYKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9f Q09ESU5HX1NUUkVBTV9IRUFERVIJCSgwIDw8IDApCisjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElP X0NPRElOR19QQ00JCQkoMSA8PCAwKQorI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdf QUMzCQkJKDIgPDwgMCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX01QRUcxCQkJ KDMgPDwgMCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX01QMwkJCSg0IDw8IDAp CisjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19NUEVHMgkJCSg1IDw8IDApCisjZGVm aW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19BQUMJCQkoNiA8PCAwKQorI2RlZmluZSBTSUk5 MDJYX1RQSV9BVURJT19DT0RJTkdfRFRTCQkJKDcgPDwgMCkKKyNkZWZpbmUgU0lJOTAyWF9UUElf QVVESU9fQ09ESU5HX0FUUkFDCQkJKDggPDwgMCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9f TVVURV9ESVNBQkxFCQkJKDAgPDwgNCkKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fTVVURV9F TkFCTEUJCQkoMSA8PCA0KQorI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19MQVlPVVRfMl9DSEFO TkVMUwkJKDAgPDwgNSkKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fTEFZT1VUXzhfQ0hBTk5F TFMJCSgxIDw8IDUpCisjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0lOVEVSRkFDRV9ESVNBQkxF CQkoMCA8PCA2KQorI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19JTlRFUkZBQ0VfU1BESUYJCSgx IDw8IDYpCisjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0lOVEVSRkFDRV9JMlMJCQkoMiA8PCA2 KQorCisjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPTkZJR19CWVRFM19SRUcJMHgyNworI2Rl ZmluZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRX1NUUkVBTQkJCSgwIDw8IDMpCisjZGVmaW5lIFNJ STkwMlhfVFBJX0FVRElPX0ZSRVFfMzJLSFoJCQkoMSA8PCAzKQorI2RlZmluZSBTSUk5MDJYX1RQ SV9BVURJT19GUkVRXzQ0S0haCQkJKDIgPDwgMykKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9f RlJFUV80OEtIWgkJCSgzIDw8IDMpCisjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfODhL SFoJCQkoNCA8PCAzKQorI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzk2S0haCQkJKDUg PDwgMykKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fRlJFUV8xNzZLSFoJCQkoNiA8PCAzKQor I2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzE5MktIWgkJCSg3IDw8IDMpCisjZGVmaW5l IFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpFX1NUUkVBTQkJKDAgPDwgNikKKyNkZWZpbmUg U0lJOTAyWF9UUElfQVVESU9fU0FNUExFX1NJWkVfMTYJCSgxIDw8IDYpCisjZGVmaW5lIFNJSTkw MlhfVFBJX0FVRElPX1NBTVBMRV9TSVpFXzIwCQkoMiA8PCA2KQorI2RlZmluZSBTSUk5MDJYX1RQ SV9BVURJT19TQU1QTEVfU0laRV8yNAkJKDMgPDwgNikKKworI2RlZmluZSBTSUk5MDJYX1RQSV9B VURJT19DT05GSUdfQllURTRfUkVHCTB4MjgKKwogI2RlZmluZSBTSUk5MDJYX0lOVF9FTkFCTEUJ CQkweDNjCiAjZGVmaW5lIFNJSTkwMlhfSU5UX1NUQVRVUwkJCTB4M2QKICNkZWZpbmUgU0lJOTAy WF9IT1RQTFVHX0VWRU5UCQkJQklUKDApCkBAIC04MSw2ICsxNTYsMTYgQEAKIAogI2RlZmluZSBT SUk5MDJYX1JFR19UUElfUlFCCQkJMHhjNwogCisvKiBJbmRpcmVjdCBpbnRlcm5hbCByZWdpc3Rl ciBhY2Nlc3MgKi8KKyNkZWZpbmUgU0lJOTAyWF9JTkRfU0VUX1BBR0UJCQkweGJjCisjZGVmaW5l IFNJSTkwMlhfSU5EX09GRlNFVAkJCTB4YmQKKyNkZWZpbmUgU0lJOTAyWF9JTkRfVkFMVUUJCQkw eGJlCisKKyNkZWZpbmUgU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfQkFTRQkJMHhiZgorI2Rl ZmluZSBTSUk5MDJYX1RQSV9NSVNDX0lORk9GUkFNRV9FTkQJCTB4ZGUKKyNkZWZpbmUgU0lJOTAy WF9UUElfTUlTQ19JTkZPRlJBTUVfU0laRQlcCisJKFNJSTkwMlhfVFBJX01JU0NfSU5GT0ZSQU1F X0VORCAtIFNJSTkwMlhfVFBJX01JU0NfSU5GT0ZSQU1FX0JBU0UpCisKICNkZWZpbmUgU0lJOTAy WF9JMkNfQlVTX0FDUVVJU0lUSU9OX1RJTUVPVVRfTVMJNTAwCiAKIHN0cnVjdCBzaWk5MDJ4IHsK QEAgLTkwLDYgKzE3NSwxMiBAQCBzdHJ1Y3Qgc2lpOTAyeCB7CiAJc3RydWN0IGRybV9jb25uZWN0 b3IgY29ubmVjdG9yOwogCXN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87CiAJc3RydWN0IGky Y19tdXhfY29yZSAqaTJjbXV4OworCXN0cnVjdCBtdXRleCBtdXRleDsKKwlzdHJ1Y3Qgc2lpOTAy eF9hdWRpbyB7CisJCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7CisJCXN0cnVjdCBjbGsg Km1jbGs7CisJCXUzMiBpMnNfZmlmb19yb3V0aW5nWzRdOworCX0gYXVkaW87CiB9OwogCiBzdGF0 aWMgaW50IHNpaTkwMnhfcmVhZF91bmxvY2tlZChzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLCB1OCBy ZWcsIHU4ICp2YWwpCkBAIC0xNjEsOCArMjUyLDEyIEBAIHNpaTkwMnhfY29ubmVjdG9yX2RldGVj dChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQogCXN0cnVjdCBz aWk5MDJ4ICpzaWk5MDJ4ID0gY29ubmVjdG9yX3RvX3NpaTkwMngoY29ubmVjdG9yKTsKIAl1bnNp Z25lZCBpbnQgc3RhdHVzOwogCisJbXV0ZXhfbG9jaygmc2lpOTAyeC0+bXV0ZXgpOworCiAJcmVn bWFwX3JlYWQoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9TVEFUVVMsICZzdGF0dXMpOwog CisJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7CisKIAlyZXR1cm4gKHN0YXR1cyAmIFNJ STkwMlhfUExVR0dFRF9TVEFUVVMpID8KIAkgICAgICAgY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQgOiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKIH0KQEAgLTE4NCw2ICsyNzksOCBA QCBzdGF0aWMgaW50IHNpaTkwMnhfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCiAJdTggb3V0cHV0X21vZGUgPSBTSUk5MDJYX1NZU19DVFJMX09VVFBVVF9EVkk7CiAJ aW50IG51bSA9IDAsIHJldDsKIAorCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKKwogCWVk aWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBzaWk5MDJ4LT5pMmNtdXgtPmFkYXB0ZXJbMF0p OwogCWRybV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsK IAlpZiAoZWRpZCkgewpAQCAtMTk3LDE0ICsyOTQsMTkgQEAgc3RhdGljIGludCBzaWk5MDJ4X2dl dF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXJldCA9IGRybV9kaXNw bGF5X2luZm9fc2V0X2J1c19mb3JtYXRzKCZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbywKIAkJCQkJ ICAgICAgICZidXNfZm9ybWF0LCAxKTsKIAlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCQlnb3Rv IGVycm9yX291dDsKIAogCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzaWk5MDJ4LT5yZWdtYXAs IFNJSTkwMlhfU1lTX0NUUkxfREFUQSwKIAkJCQkgU0lJOTAyWF9TWVNfQ1RSTF9PVVRQVVRfTU9E RSwgb3V0cHV0X21vZGUpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJCWdvdG8gZXJyb3Jf b3V0OworCisJcmV0ID0gbnVtOwogCi0JcmV0dXJuIG51bTsKK2Vycm9yX291dDoKKwltdXRleF91 bmxvY2soJnNpaTkwMngtPm11dGV4KTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBlbnVt IGRybV9tb2RlX3N0YXR1cyBzaWk5MDJ4X21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKQEAgLTIyNCwyMCArMzI2LDI4IEBAIHN0YXRpYyB2b2lkIHNpaTkwMnhfYnJp ZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKIHsKIAlzdHJ1Y3Qgc2lpOTAy eCAqc2lpOTAyeCA9IGJyaWRnZV90b19zaWk5MDJ4KGJyaWRnZSk7CiAKKwltdXRleF9sb2NrKCZz aWk5MDJ4LT5tdXRleCk7CisKIAlyZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBT SUk5MDJYX1NZU19DVFJMX0RBVEEsCiAJCQkgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04sCiAJ CQkgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04pOworCisJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4 LT5tdXRleCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNpaTkwMnhfYnJpZGdlX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKQogewogCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gYnJpZGdl X3RvX3NpaTkwMngoYnJpZGdlKTsKIAorCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKKwog CXJlZ21hcF91cGRhdGVfYml0cyhzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfUFdSX1NUQVRFX0NU UkwsCiAJCQkgICBTSUk5MDJYX0FWSV9QT1dFUl9TVEFURV9NU0ssCiAJCQkgICBTSUk5MDJYX0FW SV9QT1dFUl9TVEFURV9EKDApKTsKIAlyZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFw LCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsCiAJCQkgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04s IDApOworCisJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7CiB9CiAKIHN0YXRpYyB2b2lk IHNpaTkwMnhfYnJpZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCkBAIC0y NjMsMjYgKzM3MywzMSBAQCBzdGF0aWMgdm9pZCBzaWk5MDJ4X2JyaWRnZV9tb2RlX3NldChzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAogCWJ1Zls5XSA9IFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9S QU5HRV9BVVRPIHwKIAkJIFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9DT0xPUlNQQUNFX1JHQjsKIAor CW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKKwogCXJldCA9IHJlZ21hcF9idWxrX3dyaXRl KHJlZ21hcCwgU0lJOTAyWF9UUElfVklERU9fREFUQSwgYnVmLCAxMCk7CiAJaWYgKHJldCkKLQkJ cmV0dXJuOworCQlnb3RvIG91dDsKIAogCXJldCA9IGRybV9oZG1pX2F2aV9pbmZvZnJhbWVfZnJv bV9kaXNwbGF5X21vZGUoJmZyYW1lLCBhZGosIGZhbHNlKTsKIAlpZiAocmV0IDwgMCkgewogCQlE Uk1fRVJST1IoImNvdWxkbid0IGZpbGwgQVZJIGluZm9mcmFtZVxuIik7Ci0JCXJldHVybjsKKwkJ Z290byBvdXQ7CiAJfQogCiAJcmV0ID0gaGRtaV9hdmlfaW5mb2ZyYW1lX3BhY2soJmZyYW1lLCBi dWYsIHNpemVvZihidWYpKTsKIAlpZiAocmV0IDwgMCkgewogCQlEUk1fRVJST1IoImZhaWxlZCB0 byBwYWNrIEFWSSBpbmZvZnJhbWU6ICVkXG4iLCByZXQpOwotCQlyZXR1cm47CisJCWdvdG8gb3V0 OwogCX0KIAogCS8qIERvIG5vdCBzZW5kIHRoZSBpbmZvZnJhbWUgaGVhZGVyLCBidXQga2VlcCB0 aGUgQ1JDIGZpZWxkLiAqLwogCXJlZ21hcF9idWxrX3dyaXRlKHJlZ21hcCwgU0lJOTAyWF9UUElf QVZJX0lORk9GUkFNRSwKIAkJCSAgYnVmICsgSERNSV9JTkZPRlJBTUVfSEVBREVSX1NJWkUgLSAx LAogCQkJICBIRE1JX0FWSV9JTkZPRlJBTUVfU0laRSArIDEpOworCitvdXQ6CisJbXV0ZXhfdW5s b2NrKCZzaWk5MDJ4LT5tdXRleCk7CiB9CiAKIHN0YXRpYyBpbnQgc2lpOTAyeF9icmlkZ2VfYXR0 YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCkBAIC0zMjMsNiArNDM4LDMyOSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgc2lpOTAyeF9icmlkZ2VfZnVuY3MgPSB7 CiAJLmVuYWJsZSA9IHNpaTkwMnhfYnJpZGdlX2VuYWJsZSwKIH07CiAKK3N0YXRpYyBpbnQgc2lp OTAyeF9tdXRlKHN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4LCBpbnQgbXV0ZSkKK3sKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmc2lpOTAyeC0+aTJjLT5kZXY7CisJaW50IHJldDsKKworCWlmIChtdXRl KSB7CisJCWRldl9kYmcoZGV2LCAiJXM6IE11dGVkICglZClcbiIsIF9fZnVuY19fLCBtdXRlKTsK KwkJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHNpaTkwMngtPnJlZ21hcCwKKwkJCQkJIFNJSTkw MlhfVFBJX0FVRElPX0NPTkZJR19CWVRFMl9SRUcsCisJCQkJCSBTSUk5MDJYX1RQSV9BVURJT19N VVRFX0VOQUJMRSwKKwkJCQkJIFNJSTkwMlhfVFBJX0FVRElPX01VVEVfRU5BQkxFKTsKKwl9IGVs c2UgeworCQlkZXZfZGJnKGRldiwgIiVzOiBVbm11dGVkICglZClcbiIsIF9fZnVuY19fLCBtdXRl KTsKKwkJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHNpaTkwMngtPnJlZ21hcCwKKwkJCQkJIFNJ STkwMlhfVFBJX0FVRElPX0NPTkZJR19CWVRFMl9SRUcsCisJCQkJCSBTSUk5MDJYX1RQSV9BVURJ T19NVVRFX0VOQUJMRSwKKwkJCQkJIFNJSTkwMlhfVFBJX0FVRElPX01VVEVfRElTQUJMRSk7CisJ fQorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2lpOTAyeF9t Y2xrX2Rpdl90YWJsZVtdID0geworCTEyOCwgMjU2LCAzODQsIDUxMiwgNzY4LCAxMDI0LCAxMTUy LCAxOTIgfTsKKworc3RhdGljIGludCBzaWk5MDJ4X3NlbGVjdF9tY2xrX2Rpdih1OCAqaTJzX2Nv bmZpZ19yZWcsIHVuc2lnbmVkIGludCByYXRlLAorCQkJCSAgIHVuc2lnbmVkIGludCBtY2xrKQor eworCWludCBkaXN0YW5jZSA9IDEwMDAwMDsKKwl1OCBpLCBuZWFyZXN0ID0gMDsKKworCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNpaTkwMnhfbWNsa19kaXZfdGFibGUpOyBpKyspIHsKKwkJ dW5zaWduZWQgaW50IGRpdiA9IG1jbGsgLyByYXRlOworCisJCWlmIChhYnMoZGl2IC0gc2lpOTAy eF9tY2xrX2Rpdl90YWJsZVtpXSkgPCBkaXN0YW5jZSkgeworCQkJbmVhcmVzdCA9IGk7CisJCQlk aXN0YW5jZSA9IGFicyhkaXYgLSBzaWk5MDJ4X21jbGtfZGl2X3RhYmxlW2ldKTsKKwkJfQorCQlp ZiAoZGl2ID09IHNpaTkwMnhfbWNsa19kaXZfdGFibGVbaV0pCisJCQlicmVhazsKKwl9CisKKwkq aTJzX2NvbmZpZ19yZWcgfD0gbmVhcmVzdCA8PCA0OworCisJaWYgKGkgPT0gQVJSQVlfU0laRShz aWk5MDJ4X21jbGtfZGl2X3RhYmxlKSkKKwkJcmV0dXJuIHNpaTkwMnhfbWNsa19kaXZfdGFibGVb bmVhcmVzdF07CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBzaWk5MDJ4 X3NhbXBsZV9mcmVxIHsKKwl1MzIgZnJlcTsKKwl1OCB2YWw7Cit9IHNpaTkwMnhfc2FtcGxlX2Zy ZXFbXSA9IHsKKwl7IC5mcmVxID0gMzIwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVR XzMyS0haIH0sCisJeyAuZnJlcSA9IDQ0MDAwLAkudmFsID0gU0lJOTAyWF9UUElfQVVESU9fRlJF UV80NEtIWiB9LAorCXsgLmZyZXEgPSA0ODAwMCwJLnZhbCA9IFNJSTkwMlhfVFBJX0FVRElPX0ZS RVFfNDhLSFogfSwKKwl7IC5mcmVxID0gODgwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19G UkVRXzg4S0haIH0sCisJeyAuZnJlcSA9IDk2MDAwLAkudmFsID0gU0lJOTAyWF9UUElfQVVESU9f RlJFUV85NktIWiB9LAorCXsgLmZyZXEgPSAxNzYwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJ T19GUkVRXzE3NktIWiB9LAorCXsgLmZyZXEgPSAxOTIwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9B VURJT19GUkVRXzE5MktIWiB9LAorfTsKKworc3RhdGljIGludCBzaWk5MDJ4X2F1ZGlvX2h3X3Bh cmFtcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICAgc3RydWN0IGhkbWlf Y29kZWNfZGFpZm10ICpkYWlmbXQsCisJCQkJICAgc3RydWN0IGhkbWlfY29kZWNfcGFyYW1zICpw YXJhbXMpCit7CisJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKKwl1OCBpMnNfY29uZmlnX3JlZyA9IFNJSTkwMlhfVFBJX0kyU19TRF9ESVJFQ1RJT05fTVNC X0ZJUlNUOworCXU4IGNvbmZpZ19ieXRlMl9yZWcgPSAoU0lJOTAyWF9UUElfQVVESU9fSU5URVJG QUNFX0kyUyB8CisJCQkgICAgICAgU0lJOTAyWF9UUElfQVVESU9fTVVURV9FTkFCTEUgfAorCQkJ ICAgICAgIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19QQ00pOworCXU4IGNvbmZpZ19ieXRlM19y ZWcgPSAwOworCXU4IGluZm9mcmFtZV9idWZbSERNSV9JTkZPRlJBTUVfU0laRShBVURJTyldOwor CXVuc2lnbmVkIGxvbmcgbWNsa19yYXRlOworCWludCBpLCByZXQ7CisKKwlpZiAoZGFpZm10LT5i aXRfY2xrX21hc3RlciB8fCBkYWlmbXQtPmZyYW1lX2Nsa19tYXN0ZXIpIHsKKwkJZGV2X2RiZyhk ZXYsICIlczogSTJTIG1hc3RlciBtb2RlIG5vdCBzdXBwb3J0ZWRcbiIsIF9fZnVuY19fKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJc3dpdGNoIChkYWlmbXQtPmZtdCkgeworCWNhc2UgSERN SV9JMlM6CisJCWkyc19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJX0kyU19GSVJTVF9CSVRfU0hJ RlRfWUVTIHwKKwkJCVNJSTkwMlhfVFBJX0kyU19TRF9KVVNUSUZZX0xFRlQ7CisJCWJyZWFrOwor CWNhc2UgSERNSV9SSUdIVF9KOgorCQlpMnNfY29uZmlnX3JlZyB8PSBTSUk5MDJYX1RQSV9JMlNf U0RfSlVTVElGWV9SSUdIVDsKKwkJYnJlYWs7CisJY2FzZSBIRE1JX0xFRlRfSjoKKwkJaTJzX2Nv bmZpZ19yZWcgfD0gU0lJOTAyWF9UUElfSTJTX1NEX0pVU1RJRllfTEVGVDsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJZGV2X2RiZyhkZXYsICIlczogVW5zdXBwb3J0ZWQgaTJzIGZvcm1hdCAldVxu IiwgX19mdW5jX18sCisJCQlkYWlmbXQtPmZtdCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CWlmIChkYWlmbXQtPmJpdF9jbGtfaW52KQorCQlpMnNfY29uZmlnX3JlZyB8PSBTSUk5MDJYX1RQ SV9JMlNfU0NLX0VER0VfRkFMTElORzsKKwllbHNlCisJCWkyc19jb25maWdfcmVnIHw9IFNJSTkw MlhfVFBJX0kyU19TQ0tfRURHRV9SSVNJTkc7CisKKwlpZiAoZGFpZm10LT5mcmFtZV9jbGtfaW52 KQorCQlpMnNfY29uZmlnX3JlZyB8PSBTSUk5MDJYX1RQSV9JMlNfV1NfUE9MQVJJVFlfTE9XOwor CWVsc2UKKwkJaTJzX2NvbmZpZ19yZWcgfD0gU0lJOTAyWF9UUElfSTJTX1dTX1BPTEFSSVRZX0hJ R0g7CisKKwlpZiAocGFyYW1zLT5jaGFubmVscyA+IDIpCisJCWNvbmZpZ19ieXRlMl9yZWcgfD0g U0lJOTAyWF9UUElfQVVESU9fTEFZT1VUXzhfQ0hBTk5FTFM7CisJZWxzZQorCQljb25maWdfYnl0 ZTJfcmVnIHw9IFNJSTkwMlhfVFBJX0FVRElPX0xBWU9VVF8yX0NIQU5ORUxTOworCisJc3dpdGNo IChwYXJhbXMtPnNhbXBsZV93aWR0aCkgeworCWNhc2UgMTY6CisJCWNvbmZpZ19ieXRlM19yZWcg fD0gU0lJOTAyWF9UUElfQVVESU9fU0FNUExFX1NJWkVfMTY7CisJCWJyZWFrOworCWNhc2UgMjA6 CisJCWNvbmZpZ19ieXRlM19yZWcgfD0gU0lJOTAyWF9UUElfQVVESU9fU0FNUExFX1NJWkVfMjA7 CisJCWJyZWFrOworCWNhc2UgMjQ6CisJY2FzZSAzMjoKKwkJY29uZmlnX2J5dGUzX3JlZyB8PSBT SUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV8yNDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJ ZGV2X2VycihkZXYsICIlczogVW5zdXBwb3J0ZWQgc2FtcGxlIHdpZHRoICV1XG4iLCBfX2Z1bmNf XywKKwkJCXBhcmFtcy0+c2FtcGxlX3dpZHRoKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfTsKKwor CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNpaTkwMnhfc2FtcGxlX2ZyZXEpOyBpKyspIHsK KwkJaWYgKHBhcmFtcy0+c2FtcGxlX3JhdGUgPT0gc2lpOTAyeF9zYW1wbGVfZnJlcVtpXS5mcmVx KSB7CisJCQljb25maWdfYnl0ZTNfcmVnIHw9IHNpaTkwMnhfc2FtcGxlX2ZyZXFbaV0udmFsOwor CQkJYnJlYWs7CisJCX0KKwl9CisKKwltY2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoc2lpOTAyeC0+ YXVkaW8ubWNsayk7CisKKwlyZXQgPSBzaWk5MDJ4X3NlbGVjdF9tY2xrX2RpdigmaTJzX2NvbmZp Z19yZWcsIHBhcmFtcy0+c2FtcGxlX3JhdGUsCisJCQkJICAgICAgbWNsa19yYXRlKTsKKwlpZiAo cmV0KQorCQlkZXZfZGJnKGRldiwgIkluYWNjdXJhdGUgcmVmZXJlbmNlIGNsb2NrICglbGQvJWQg IT0gJXUpXG4iLAorCQkJbWNsa19yYXRlLCByZXQsIHBhcmFtcy0+c2FtcGxlX3JhdGUpOworCisJ cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHNpaTkwMngtPmF1ZGlvLm1jbGspOworCWlmIChyZXQp IHsKKwkJZGV2X2VycihkZXYsICJFbmFibGluZyBtY2xrIGZhaWxlZDogJWRcbiIsIHJldCk7CisJ CXJldHVybiByZXQ7CisJfQorCisJbXV0ZXhfbG9jaygmc2lpOTAyeC0+bXV0ZXgpOworCisJcmV0 ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwKKwkJCSAgIFNJSTkwMlhfVFBJX0FVRElP X0NPTkZJR19CWVRFMl9SRUcsCisJCQkgICBjb25maWdfYnl0ZTJfcmVnKTsKKwlpZiAocmV0IDwg MCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSByZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBT SUk5MDJYX1RQSV9JMlNfSU5QVVRfQ09ORklHX1JFRywKKwkJCSAgIGkyc19jb25maWdfcmVnKTsK KwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNp aTkwMngtPmF1ZGlvLmkyc19maWZvX3JvdXRpbmcpOyBpKyspCisJCXJlZ21hcF93cml0ZShzaWk5 MDJ4LT5yZWdtYXAsCisJCQkgICAgIFNJSTkwMlhfVFBJX0kyU19FTkFCTEVfTUFQUElOR19SRUcs CisJCQkgICAgIHNpaTkwMngtPmF1ZGlvLmkyc19maWZvX3JvdXRpbmdbaV0pOworCisJcmV0ID0g cmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9UUElfQVVESU9fQ09ORklHX0JZ VEUzX1JFRywKKwkJCSAgIGNvbmZpZ19ieXRlM19yZWcpOworCWlmIChyZXQpCisJCWdvdG8gb3V0 OworCisJcmV0ID0gcmVnbWFwX2J1bGtfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1RQ SV9JMlNfU1RSTV9IRFJfQkFTRSwKKwkJCQlwYXJhbXMtPmllYy5zdGF0dXMsCisJCQkJbWluKChz aXplX3QpIFNJSTkwMlhfVFBJX0kyU19TVFJNX0hEUl9TSVpFLAorCQkJCSAgICBzaXplb2YocGFy YW1zLT5pZWMuc3RhdHVzKSkpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJcmV0ID0gaGRt aV9hdWRpb19pbmZvZnJhbWVfcGFjaygmcGFyYW1zLT5jZWEsIGluZm9mcmFtZV9idWYsCisJCQkJ CXNpemVvZihpbmZvZnJhbWVfYnVmKSk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYs ICIlczogRmFpbGVkIHRvIHBhY2sgYXVkaW8gaW5mb2ZyYW1lOiAlZFxuIiwKKwkJCV9fZnVuY19f LCByZXQpOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSByZWdtYXBfYnVsa193cml0ZShzaWk5 MDJ4LT5yZWdtYXAsCisJCQkJU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfQkFTRSwKKwkJCQlp bmZvZnJhbWVfYnVmLAorCQkJCW1pbihyZXQsIFNJSTkwMlhfVFBJX01JU0NfSU5GT0ZSQU1FX1NJ WkUpKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCS8qIERlY29kZSBMZXZlbCAwIFBhY2tl dHMgKi8KKwlyZXQgPSByZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lORF9T RVRfUEFHRSwgMHgwMik7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSByZWdtYXBf d3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lORF9PRkZTRVQsIDB4MjQpOworCWlmIChy ZXQpCisJCWdvdG8gb3V0OworCisJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwg U0lJOTAyWF9JTkRfVkFMVUUsIDB4MDIpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJZGV2 X2RiZyhkZXYsICIlczogaGRtaSBhdWRpbyBlbmFibGVkXG4iLCBfX2Z1bmNfXyk7CitvdXQ6CisJ bXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7CisKKwlpZiAocmV0KSB7CisJCWNsa19kaXNh YmxlX3VucHJlcGFyZShzaWk5MDJ4LT5hdWRpby5tY2xrKTsKKwkJZGV2X2VycihkZXYsICIlczog aGRtaSBhdWRpbyBlbmFibGUgZmFpbGVkOiAlZFxuIiwgX19mdW5jX18sCisJCQlyZXQpOworCX0K KworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHNpaTkwMnhfYXVkaW9fc2h1dGRvd24o c3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBzaWk5MDJ4ICpzaWk5 MDJ4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRl eCk7CisKKwlyZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1RQSV9BVURJT19D T05GSUdfQllURTJfUkVHLAorCQkgICAgIFNJSTkwMlhfVFBJX0FVRElPX0lOVEVSRkFDRV9ESVNB QkxFKTsKKworCW11dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOworCisJY2xrX2Rpc2FibGVf dW5wcmVwYXJlKHNpaTkwMngtPmF1ZGlvLm1jbGspOworfQorCitpbnQgc2lpOTAyeF9hdWRpb19k aWdpdGFsX211dGUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLCBib29sIGVuYWJsZSkK K3sKKwlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJ bXV0ZXhfbG9jaygmc2lpOTAyeC0+bXV0ZXgpOworCisJc2lpOTAyeF9tdXRlKHNpaTkwMngsIGVu YWJsZSk7CisKKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHNpaTkwMnhfYXVkaW9fZ2V0X2VsZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCisJCQkJIHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3Qg c2lpOTAyeCAqc2lpOTAyeCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJbXV0ZXhfbG9jaygm c2lpOTAyeC0+bXV0ZXgpOworCisJbWVtY3B5KGJ1Ziwgc2lpOTAyeC0+Y29ubmVjdG9yLmVsZCwK KwkgICAgICAgbWluKHNpemVvZihzaWk5MDJ4LT5jb25uZWN0b3IuZWxkKSwgbGVuKSk7CisKKwlt dXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGhkbWlfY29kZWNfb3BzIHNpaTkwMnhfYXVkaW9fY29kZWNfb3BzID0gewor CS5od19wYXJhbXMgPSBzaWk5MDJ4X2F1ZGlvX2h3X3BhcmFtcywKKwkuYXVkaW9fc2h1dGRvd24g PSBzaWk5MDJ4X2F1ZGlvX3NodXRkb3duLAorCS5kaWdpdGFsX211dGUgPSBzaWk5MDJ4X2F1ZGlv X2RpZ2l0YWxfbXV0ZSwKKwkuZ2V0X2VsZCA9IHNpaTkwMnhfYXVkaW9fZ2V0X2VsZCwKK307CisK K3N0YXRpYyBpbnQgc2lpOTAyeF9hdWRpb19jb2RlY19pbml0KHN0cnVjdCBzaWk5MDJ4ICpzaWk5 MDJ4LAorCQkJCSAgICBzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RhdGljIGNvbnN0IHU4IGky c19maWZvX2RlZmF1bHRzW10gPSB7CisJCVNJSTkwMlhfVFBJX0kyU19DT05GSUdfRklGTzAsCisJ CVNJSTkwMlhfVFBJX0kyU19DT05GSUdfRklGTzEsCisJCVNJSTkwMlhfVFBJX0kyU19DT05GSUdf RklGTzIsCisJCVNJSTkwMlhfVFBJX0kyU19DT05GSUdfRklGTzMsCisJfTsKKwlzdHJ1Y3QgaGRt aV9jb2RlY19wZGF0YSBjb2RlY19kYXRhID0geworCQkub3BzID0gJnNpaTkwMnhfYXVkaW9fY29k ZWNfb3BzLAorCQkuaTJzID0gMSwgLyogT25seSBpMnMgc3VwcG9ydCBmb3Igbm93LiAqLworCQku c3BkaWYgPSAwLAorCQkubWF4X2kyc19jaGFubmVscyA9IDAsCisJfTsKKwlpbnQgcmV0LCBpOwor CisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzJfYXJyYXkoZGV2LT5vZl9ub2RlLCAiaTJzLWZp Zm8tcm91dGluZyIsCisJCQkJCSBzaWk5MDJ4LT5hdWRpby5pMnNfZmlmb19yb3V0aW5nLAorCQkJ CQkgQVJSQVlfU0laRShzaWk5MDJ4LT5hdWRpby5pMnNfZmlmb19yb3V0aW5nKSk7CisKKwlpZiAo cmV0ICE9IDApIHsKKwkJaWYgKHJldCA9PSAtRUlOVkFMKQorCQkJZGV2X2RiZyhkZXYsICIlczog Tm8gXCJpMnMtZmlmby1yb3V0aW5nXCIsIG5vIGF1ZGlvXG4iLAorCQkJX19mdW5jX18pOworCQll bHNlCisJCQlkZXZfZXJyKGRldiwKKwkJCQkiJXM6IEVycm9yIGdldHRpbiBcImkycy1maWZvLXJv dXRpbmdcIjogJWRcbiIsCisJCQkJX19mdW5jX18sIHJldCk7CisJCXJldHVybiAwOworCX0KKwor CXNpaTkwMngtPmF1ZGlvLm1jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBOVUxMKTsKKwlpZiAoSVNf RVJSKHNpaTkwMngtPmF1ZGlvLm1jbGspKSB7CisJCWRldl9lcnIoZGV2LCAiJXM6IE5vIGNsb2Nr IChhdWRpbyBtY2xrKSBmb3VuZDogJWxkXG4iLAorCQkJX19mdW5jX18sIFBUUl9FUlIoc2lpOTAy eC0+YXVkaW8ubWNsaykpOworCQlyZXR1cm4gMDsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShzaWk5MDJ4LT5hdWRpby5pMnNfZmlmb19yb3V0aW5nKTsgaSsrKSB7CisJCWlmIChz aWk5MDJ4LT5hdWRpby5pMnNfZmlmb19yb3V0aW5nW2ldIHwgRU5BQkxFX0JJVCkKKwkJCWNvZGVj X2RhdGEubWF4X2kyc19jaGFubmVscyArPSAyOworCQlzaWk5MDJ4LT5hdWRpby5pMnNfZmlmb19y b3V0aW5nW2ldIHw9IGkyc19maWZvX2RlZmF1bHRzW2ldOworCX0KKworCXNpaTkwMngtPmF1ZGlv LnBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZGF0YSgKKwkJZGV2LCBIRE1JX0NPREVD X0RSVl9OQU1FLCBQTEFURk9STV9ERVZJRF9BVVRPLAorCQkmY29kZWNfZGF0YSwgc2l6ZW9mKGNv ZGVjX2RhdGEpKTsKKworCXJldHVybiBQVFJfRVJSX09SX1pFUk8oc2lpOTAyeC0+YXVkaW8ucGRl dik7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX3JhbmdlIHNpaTkwMnhfdm9sYXRp bGVfcmFuZ2VzW10gPSB7CiAJeyAucmFuZ2VfbWluID0gMCwgLnJhbmdlX21heCA9IDB4ZmYgfSwK IH07CkBAIC0zMzUsNiArNzczLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNz X3RhYmxlIHNpaTkwMnhfdm9sYXRpbGVfdGFibGUgPSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJl Z21hcF9jb25maWcgc2lpOTAyeF9yZWdtYXBfY29uZmlnID0gewogCS5yZWdfYml0cyA9IDgsCiAJ LnZhbF9iaXRzID0gOCwKKwkubWF4X3JlZ2lzdGVyID0gU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJB TUVfRU5ELAogCS52b2xhdGlsZV90YWJsZSA9ICZzaWk5MDJ4X3ZvbGF0aWxlX3RhYmxlLAogCS5j YWNoZV90eXBlID0gUkVHQ0FDSEVfTk9ORSwKIH07CkBAIC01MDcsNiArOTQ2LDkgQEAgc3RhdGlj IGludCBzaWk5MDJ4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCiAJCXJldHVybiBQ VFJfRVJSKHNpaTkwMngtPnJlc2V0X2dwaW8pOwogCX0KIAorCS8qIHByb3RlY3QgYXVkaW8gYW5k IHZpZGVvIGZ1bmN0aW9ucyBmcm9tIGVhY2ggb3RoZXIgKi8KKwltdXRleF9pbml0KCZzaWk5MDJ4 LT5tdXRleCk7CisKIAlzaWk5MDJ4X3Jlc2V0KHNpaTkwMngpOwogCiAJcmV0ID0gcmVnbWFwX3dy aXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9SRUdfVFBJX1JRQiwgMHgwKTsKQEAgLTU0Nyw2 ICs5ODksOCBAQCBzdGF0aWMgaW50IHNpaTkwMnhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCwKIAlzaWk5MDJ4LT5icmlkZ2UudGltaW5ncyA9ICZkZWZhdWx0X3NpaTkwMnhfdGltaW5n czsKIAlkcm1fYnJpZGdlX2FkZCgmc2lpOTAyeC0+YnJpZGdlKTsKIAorCXNpaTkwMnhfYXVkaW9f Y29kZWNfaW5pdChzaWk5MDJ4LCBkZXYpOworCiAJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwg c2lpOTAyeCk7CiAKIAlzaWk5MDJ4LT5pMmNtdXggPSBpMmNfbXV4X2FsbG9jKGNsaWVudC0+YWRh cHRlciwgZGV2LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kdC1iaW5kaW5ncy9zb3VuZC9zaWk5MDJ4 LWF1ZGlvLmggYi9pbmNsdWRlL2R0LWJpbmRpbmdzL3NvdW5kL3NpaTkwMngtYXVkaW8uaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMyZTUwYTkyNmI2ZgotLS0gL2Rl di9udWxsCisrKyBiL2luY2x1ZGUvZHQtYmluZGluZ3Mvc291bmQvc2lpOTAyeC1hdWRpby5oCkBA IC0wLDAgKzEsMTEgQEAKKyNpZm5kZWYgX19EVF9TSUk5MDIyX0FVRElPX0gKKyNkZWZpbmUgX19E VF9TSUk5MDIyX0FVRElPX0gKKworI2RlZmluZSBFTkFCTEVfQklUCQkJMHg4MAorI2RlZmluZSBD T05ORUNUX1NEMAkJCTB4MDAKKyNkZWZpbmUgQ09OTkVDVF9TRDEJCQkweDEwCisjZGVmaW5lIENP Tk5FQ1RfU0QyCQkJMHgyMAorI2RlZmluZSBDT05ORUNUX1NEMwkJCTB4MzAKKyNkZWZpbmUgTEVG VF9SSUdIVF9TV0FQX0JJVAkJMHgwNAorCisjZW5kaWYgLyogX19EVF9TSUk5MDIyX0FVRElPX0gg Ki8KLS0gClRleGFzIEluc3RydW1lbnRzIEZpbmxhbmQgT3ksIFBvcmtrYWxhbmthdHUgMjIsIDAw MTgwIEhlbHNpbmtpLiBZLXR1bm51cy9CdXNpbmVzcyBJRDogMDYxNTUyMS00LiBLb3RpcGFpa2th L0RvbWljaWxlOiBIZWxzaW5raQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVs