From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Schrempf Frieder Subject: Re: [PATCH v2 2/4] usb: chipidea: imx: add HSIC support Date: Mon, 5 Nov 2018 08:52:39 +0000 Message-ID: References: <20181022054031.14027-1-peter.chen@nxp.com> <20181022054031.14027-3-peter.chen@nxp.com> In-Reply-To: <20181022054031.14027-3-peter.chen@nxp.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <941DFCA6DCC2724DA44ED0F1A3B39CD4@snt-world.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 To: Peter Chen , "linux-usb@vger.kernel.org" Cc: dl-linux-imx , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , "frieder.schrempf@exceet.de" , "festevam@gmail.com" List-ID: T24gMjIuMTAuMTggMDc6NDMsIFBldGVyIENoZW4gd3JvdGU6DQo+IFRvIHN1cHBvcnQgaW14IEhT SUMsIHRoZXJlIGFyZSBzb21lIHNwZWNpYWwgcmVxdWlyZW1lbnQ6DQo+IC0gVGhlIEhTSUMgcGFk IGlzIDEuMnYsIGl0IG1heSBuZWVkIHRvIHN1cHBseSBmcm9tIGV4dGVybmFsDQo+IC0gVGhlIGRh dGEvc3Ryb2JlIHBpbiBuZWVkcyB0byBiZSBwdWxsZWQgZG93biBmaXJzdCwgYW5kIGFmdGVyDQo+ ICAgIGhvc3QgbW9kZSBpcyBpbml0aWFsaXplZCwgdGhlIHN0cm9iZSBwaW4gbmVlZHMgdG8gYmUg cHVsbGVkIHVwDQo+IC0gRHVyaW5nIHRoZSBVU0Igc3VzcGVuZC9yZXN1bWUsIHNwZWNpYWwgc2V0 dGluZyBpcyBuZWVkZWQNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFBldGVyIENoZW4gPHBldGVyLmNo ZW5AbnhwLmNvbT4NCj4gLS0tDQo+ICAgZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXgu YyB8IDE0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQo+ICAgZHJpdmVy cy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguaCB8ICAgOSArKy0NCj4gICBkcml2ZXJzL3VzYi9j aGlwaWRlYS91c2JtaXNjX2lteC5jIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysNCj4gICAzIGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlv bnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lt eC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYw0KPiBpbmRleCAwOWIzN2Mw ZDA3NWQuLjM4OWMzMjYxYzRlZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEv Y2lfaGRyY19pbXguYw0KPiArKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5j DQo+IEBAIC0xNCw2ICsxNCw3IEBADQo+ICAgI2luY2x1ZGUgPGxpbnV4L3VzYi9jaGlwaWRlYS5o Pg0KPiAgICNpbmNsdWRlIDxsaW51eC91c2Ivb2YuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvY2xr Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGluY3RybC9jb25zdW1lci5oPg0KPiAgIA0KPiAgICNp bmNsdWRlICJjaS5oIg0KPiAgICNpbmNsdWRlICJjaV9oZHJjX2lteC5oIg0KPiBAQCAtODUsNiAr ODYsOSBAQCBzdHJ1Y3QgY2lfaGRyY19pbXhfZGF0YSB7DQo+ICAgCWJvb2wgc3VwcG9ydHNfcnVu dGltZV9wbTsNCj4gICAJYm9vbCBvdmVycmlkZV9waHlfY29udHJvbDsNCj4gICAJYm9vbCBpbl9s cG07DQo+ICsJc3RydWN0IHBpbmN0cmwgKnBpbmN0cmw7DQo+ICsJc3RydWN0IHBpbmN0cmxfc3Rh dGUgKnBpbmN0cmxfaHNpY19hY3RpdmU7DQo+ICsJc3RydWN0IHJlZ3VsYXRvciAqaHNpY19wYWRf cmVndWxhdG9yOw0KPiAgIAkvKiBTb0MgYmVmb3JlIGkubXg2IChleGNlcHQgaW14MjMvaW14Mjgp IG5lZWRzIHRocmVlIGNsa3MgKi8NCj4gICAJYm9vbCBuZWVkX3RocmVlX2Nsa3M7DQo+ICAgCXN0 cnVjdCBjbGsgKmNsa19pcGc7DQo+IEBAIC0yNDUsMTkgKzI0OSw0OSBAQCBzdGF0aWMgdm9pZCBp bXhfZGlzYWJsZV91bnByZXBhcmVfY2xrcyhzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICAgCX0NCj4g ICB9DQo+ICAgDQo+ICtzdGF0aWMgaW50IGNpX2hkcmNfaW14X25vdGlmeV9ldmVudChzdHJ1Y3Qg Y2lfaGRyYyAqY2ksIHVuc2lnbmVkIGludCBldmVudCkNCj4gK3sNCj4gKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSBjaS0+ZGV2LT5wYXJlbnQ7DQo+ICsJc3RydWN0IGNpX2hkcmNfaW14X2RhdGEgKmRh dGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlpbnQgcmV0ID0gMDsNCj4gKw0KPiArCXN3 aXRjaCAoZXZlbnQpIHsNCj4gKwljYXNlIENJX0hEUkNfSU1YX0hTSUNfQUNUSVZFX0VWRU5UOg0K PiArCQlyZXQgPSBwaW5jdHJsX3NlbGVjdF9zdGF0ZShkYXRhLT5waW5jdHJsLA0KPiArCQkJCWRh dGEtPnBpbmN0cmxfaHNpY19hY3RpdmUpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJZGV2X2Vycihk ZXYsICJoc2ljX2FjdGl2ZSBzZWxlY3QgZmFpbGVkLCBlcnI9JWRcbiIsDQo+ICsJCQkJcmV0KTsN Cj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBDSV9IRFJDX0lNWF9IU0lDX1NVU1BFTkRfRVZFTlQ6DQo+ ICsJCXJldCA9IGlteF91c2JtaXNjX2hzaWNfc2V0X2Nvbm5lY3QoZGF0YS0+dXNibWlzY19kYXRh KTsNCj4gKwkJaWYgKHJldCkNCj4gKwkJCWRldl9lcnIoZGV2LA0KPiArCQkJCSJoc2ljX3NldF9j b25uZWN0IGZhaWxlZCwgZXJyPSVkXG4iLCByZXQpOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0 Og0KPiArCQlicmVhazsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ ICAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQ0KPiAgIHsNCj4gICAJc3RydWN0IGNpX2hkcmNfaW14X2RhdGEgKmRhdGE7DQo+ICAgCXN0 cnVjdCBjaV9oZHJjX3BsYXRmb3JtX2RhdGEgcGRhdGEgPSB7DQo+ICAgCQkubmFtZQkJPSBkZXZf bmFtZSgmcGRldi0+ZGV2KSwNCj4gICAJCS5jYXBvZmZzZXQJPSBERUZfQ0FQT0ZGU0VULA0KPiAr CQkubm90aWZ5X2V2ZW50CT0gY2lfaGRyY19pbXhfbm90aWZ5X2V2ZW50LA0KPiAgIAl9Ow0KPiAg IAlpbnQgcmV0Ow0KPiAgIAljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9pZDsNCj4gICAJ Y29uc3Qgc3RydWN0IGNpX2hkcmNfaW14X3BsYXRmb3JtX2ZsYWcgKmlteF9wbGF0Zm9ybV9mbGFn Ow0KPiAgIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ZGV2Lm9mX25vZGU7DQo+ICsJ c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gKwlzdHJ1Y3QgcGluY3RybF9zdGF0 ZSAqcGluY3RybF9oc2ljX2lkbGU7DQo+ICAgDQo+IC0Jb2ZfaWQgPSBvZl9tYXRjaF9kZXZpY2Uo Y2lfaGRyY19pbXhfZHRfaWRzLCAmcGRldi0+ZGV2KTsNCj4gKwlvZl9pZCA9IG9mX21hdGNoX2Rl dmljZShjaV9oZHJjX2lteF9kdF9pZHMsIGRldik7DQo+ICAgCWlmICghb2ZfaWQpDQo+ICAgCQly ZXR1cm4gLUVOT0RFVjsNCj4gICANCj4gQEAgLTI2OCwxOSArMzAyLDczIEBAIHN0YXRpYyBpbnQg Y2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gICAJCXJl dHVybiAtRU5PTUVNOw0KPiAgIA0KPiAgIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkYXRh KTsNCj4gLQlkYXRhLT51c2JtaXNjX2RhdGEgPSB1c2JtaXNjX2dldF9pbml0X2RhdGEoJnBkZXYt PmRldik7DQo+ICsJZGF0YS0+dXNibWlzY19kYXRhID0gdXNibWlzY19nZXRfaW5pdF9kYXRhKGRl dik7DQo+ICAgCWlmIChJU19FUlIoZGF0YS0+dXNibWlzY19kYXRhKSkNCj4gICAJCXJldHVybiBQ VFJfRVJSKGRhdGEtPnVzYm1pc2NfZGF0YSk7DQo+ICAgDQo+IC0JcmV0ID0gaW14X2dldF9jbGtz KCZwZGV2LT5kZXYpOw0KPiArCWlmIChvZl91c2JfZ2V0X3BoeV9tb2RlKGRldi0+b2Zfbm9kZSkg PT0gVVNCUEhZX0lOVEVSRkFDRV9NT0RFX0hTSUMpIHsNCj4gKwkJcGRhdGEuZmxhZ3MgfD0gQ0lf SERSQ19JTVhfSVNfSFNJQzsNCj4gKwkJZGF0YS0+dXNibWlzY19kYXRhLT5oc2ljID0gMTsNCj4g KwkJZGF0YS0+cGluY3RybCA9IGRldm1fcGluY3RybF9nZXQoZGV2KTsNCj4gKwkJaWYgKElTX0VS UihkYXRhLT5waW5jdHJsKSkgew0KPiArCQkJZGV2X2VycihkZXYsICJwaW5jdHJsIGdldCBmYWls ZWQsIGVycj0lbGRcbiIsDQo+ICsJCQkJCVBUUl9FUlIoZGF0YS0+cGluY3RybCkpOw0KPiArCQkJ cmV0dXJuIFBUUl9FUlIoZGF0YS0+cGluY3RybCk7DQo+ICsJCX0NCj4gKw0KPiArCQlwaW5jdHJs X2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtPnBpbmN0cmwsICJpZGxlIik7 DQo+ICsJCWlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7DQo+ICsJCQlkZXZfZXJyKGRl diwNCj4gKwkJCQkicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxuIiwN Cj4gKwkJCQkJUFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpOw0KPiArCQkJcmV0dXJuIFBUUl9F UlIocGluY3RybF9oc2ljX2lkbGUpOw0KPiArCQl9DQo+ICsNCj4gKwkJcmV0ID0gcGluY3RybF9z ZWxlY3Rfc3RhdGUoZGF0YS0+cGluY3RybCwgcGluY3RybF9oc2ljX2lkbGUpOw0KPiArCQlpZiAo cmV0KSB7DQo+ICsJCQlkZXZfZXJyKGRldiwgImhzaWNfaWRsZSBzZWxlY3QgZmFpbGVkLCBlcnI9 JWRcbiIsIHJldCk7DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ICsNCj4gKwkJZGF0YS0+ cGluY3RybF9oc2ljX2FjdGl2ZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtPnBpbmN0cmws DQo+ICsJCQkJCQkJCSJhY3RpdmUiKTsNCj4gKwkJaWYgKElTX0VSUihkYXRhLT5waW5jdHJsX2hz aWNfYWN0aXZlKSkgew0KPiArCQkJZGV2X2VycihkZXYsDQo+ICsJCQkJInBpbmN0cmxfaHNpY19h Y3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxuIiwNCj4gKwkJCQkJUFRSX0VSUihkYXRhLT5w aW5jdHJsX2hzaWNfYWN0aXZlKSk7DQo+ICsJCQlyZXR1cm4gUFRSX0VSUihkYXRhLT5waW5jdHJs X2hzaWNfYWN0aXZlKTsNCj4gKwkJfQ0KPiArDQo+ICsJCWRhdGEtPmhzaWNfcGFkX3JlZ3VsYXRv ciA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJoc2ljIik7DQo+ICsJCWlmIChQVFJfRVJSKGRh dGEtPmhzaWNfcGFkX3JlZ3VsYXRvcikgPT0gLUVQUk9CRV9ERUZFUikgew0KPiArCQkJcmV0dXJu IC1FUFJPQkVfREVGRVI7DQo+ICsJCX0gZWxzZSBpZiAoUFRSX0VSUihkYXRhLT5oc2ljX3BhZF9y ZWd1bGF0b3IpID09IC1FTk9ERVYpIHsNCj4gKwkJCS8qIG5vIHBhZCByZWd1YWxhdG9yIGlzIG5l ZWRlZCAqLw0KPiArCQkJZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yID0gTlVMTDsNCj4gKwkJfSBl bHNlIGlmIChJU19FUlIoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKSkgew0KPiArCQkJZGV2X2Vy cihkZXYsICJHZXQgSFNJQyBwYWQgcmVndWxhdG9yIGVycm9yOiAlbGRcbiIsDQo+ICsJCQkJCVBU Ul9FUlIoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKSk7DQo+ICsJCQlyZXR1cm4gUFRSX0VSUihk YXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IpOw0KPiArCQl9DQo+ICsNCj4gKwkJaWYgKGRhdGEtPmhz aWNfcGFkX3JlZ3VsYXRvcikgew0KPiArCQkJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShkYXRhLT5o c2ljX3BhZF9yZWd1bGF0b3IpOw0KPiArCQkJaWYgKHJldCkgew0KPiArCQkJCWRldl9lcnIoZGV2 LA0KPiArCQkJCQkiRmFpbCB0byBlbmFibGUgSFNJQyBwYWQgcmVndWxhdG9yXG4iKTsNCg0Kcy9G YWlsL0ZhaWxlZA0KDQo+ICsJCQkJcmV0dXJuIHJldDsNCj4gKwkJCX0NCj4gKwkJfQ0KPiArCX0N Cj4gKwlyZXQgPSBpbXhfZ2V0X2Nsa3MoZGV2KTsNCj4gICAJaWYgKHJldCkNCj4gLQkJcmV0dXJu IHJldDsNCj4gKwkJZ290byBkaXNhYmxlX2hzaWNfcmVndWxhdG9yOw0KPiAgIA0KPiAtCXJldCA9 IGlteF9wcmVwYXJlX2VuYWJsZV9jbGtzKCZwZGV2LT5kZXYpOw0KPiArCXJldCA9IGlteF9wcmVw YXJlX2VuYWJsZV9jbGtzKGRldik7DQo+ICAgCWlmIChyZXQpDQo+IC0JCXJldHVybiByZXQ7DQo+ ICsJCWdvdG8gZGlzYWJsZV9oc2ljX3JlZ3VsYXRvcjsNCj4gICANCj4gLQlkYXRhLT5waHkgPSBk ZXZtX3VzYl9nZXRfcGh5X2J5X3BoYW5kbGUoJnBkZXYtPmRldiwgImZzbCx1c2JwaHkiLCAwKTsN Cj4gKwlkYXRhLT5waHkgPSBkZXZtX3VzYl9nZXRfcGh5X2J5X3BoYW5kbGUoZGV2LCAiZnNsLHVz YnBoeSIsIDApOw0KPiAgIAlpZiAoSVNfRVJSKGRhdGEtPnBoeSkpIHsNCj4gICAJCXJldCA9IFBU Ul9FUlIoZGF0YS0+cGh5KTsNCj4gICAJCS8qIFJldHVybiAtRUlOVkFMIGlmIG5vIHVzYnBoeSBp cyBhdmFpbGFibGUgKi8NCj4gQEAgLTMwNSw0MCArMzkzLDQzIEBAIHN0YXRpYyBpbnQgY2lfaGRy Y19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gICANCj4gICAJcmV0 ID0gaW14X3VzYm1pc2NfaW5pdChkYXRhLT51c2JtaXNjX2RhdGEpOw0KPiAgIAlpZiAocmV0KSB7 DQo+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwgInVzYm1pc2MgaW5pdCBmYWlsZWQsIHJldD0lZFxu IiwgcmV0KTsNCj4gKwkJZGV2X2VycihkZXYsICJ1c2JtaXNjIGluaXQgZmFpbGVkLCByZXQ9JWRc biIsIHJldCk7DQo+ICAgCQlnb3RvIGVycl9jbGs7DQo+ICAgCX0NCj4gICANCj4gLQlkYXRhLT5j aV9wZGV2ID0gY2lfaGRyY19hZGRfZGV2aWNlKCZwZGV2LT5kZXYsDQo+ICsJZGF0YS0+Y2lfcGRl diA9IGNpX2hkcmNfYWRkX2RldmljZShkZXYsDQo+ICAgCQkJCXBkZXYtPnJlc291cmNlLCBwZGV2 LT5udW1fcmVzb3VyY2VzLA0KPiAgIAkJCQkmcGRhdGEpOw0KPiAgIAlpZiAoSVNfRVJSKGRhdGEt PmNpX3BkZXYpKSB7DQo+ICAgCQlyZXQgPSBQVFJfRVJSKGRhdGEtPmNpX3BkZXYpOw0KPiAgIAkJ aWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQ0KPiAtCQkJZGV2X2VycigmcGRldi0+ZGV2LA0KPiAt CQkJCSJjaV9oZHJjX2FkZF9kZXZpY2UgZmFpbGVkLCBlcnI9JWRcbiIsIHJldCk7DQo+ICsJCQlk ZXZfZXJyKGRldiwgImNpX2hkcmNfYWRkX2RldmljZSBmYWlsZWQsIGVycj0lZFxuIiwNCj4gKwkJ CQkJcmV0KTsNCj4gICAJCWdvdG8gZXJyX2NsazsNCj4gICAJfQ0KPiAgIA0KPiAgIAlyZXQgPSBp bXhfdXNibWlzY19pbml0X3Bvc3QoZGF0YS0+dXNibWlzY19kYXRhKTsNCj4gICAJaWYgKHJldCkg ew0KPiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJ1c2JtaXNjIHBvc3QgZmFpbGVkLCByZXQ9JWRc biIsIHJldCk7DQo+ICsJCWRldl9lcnIoZGV2LCAidXNibWlzYyBwb3N0IGZhaWxlZCwgcmV0PSVk XG4iLCByZXQpOw0KPiAgIAkJZ290byBkaXNhYmxlX2RldmljZTsNCj4gICAJfQ0KPiAgIA0KPiAg IAlpZiAoZGF0YS0+c3VwcG9ydHNfcnVudGltZV9wbSkgew0KPiAtCQlwbV9ydW50aW1lX3NldF9h Y3RpdmUoJnBkZXYtPmRldik7DQo+IC0JCXBtX3J1bnRpbWVfZW5hYmxlKCZwZGV2LT5kZXYpOw0K PiArCQlwbV9ydW50aW1lX3NldF9hY3RpdmUoZGV2KTsNCj4gKwkJcG1fcnVudGltZV9lbmFibGUo ZGV2KTsNCj4gICAJfQ0KPiAgIA0KPiAtCWRldmljZV9zZXRfd2FrZXVwX2NhcGFibGUoJnBkZXYt PmRldiwgdHJ1ZSk7DQo+ICsJZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpOw0K PiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICANCj4gICBkaXNhYmxlX2RldmljZToNCj4gICAJY2lf aGRyY19yZW1vdmVfZGV2aWNlKGRhdGEtPmNpX3BkZXYpOw0KPiAgIGVycl9jbGs6DQo+IC0JaW14 X2Rpc2FibGVfdW5wcmVwYXJlX2Nsa3MoJnBkZXYtPmRldik7DQo+ICsJaW14X2Rpc2FibGVfdW5w cmVwYXJlX2Nsa3MoZGV2KTsNCj4gK2Rpc2FibGVfaHNpY19yZWd1bGF0b3I6DQo+ICsJaWYgKGRh dGEtPmhzaWNfcGFkX3JlZ3VsYXRvcikNCj4gKwkJcmV0ID0gcmVndWxhdG9yX2Rpc2FibGUoZGF0 YS0+aHNpY19wYWRfcmVndWxhdG9yKTsNCj4gICAJcmV0dXJuIHJldDsNCj4gICB9DQo+ICAgDQo+ IEBAIC0zNTUsNiArNDQ2LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9yZW1vdmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gICAJaWYgKGRhdGEtPm92ZXJyaWRlX3BoeV9jb250 cm9sKQ0KPiAgIAkJdXNiX3BoeV9zaHV0ZG93bihkYXRhLT5waHkpOw0KPiAgIAlpbXhfZGlzYWJs ZV91bnByZXBhcmVfY2xrcygmcGRldi0+ZGV2KTsNCj4gKwlpZiAoZGF0YS0+aHNpY19wYWRfcmVn dWxhdG9yKQ0KPiArCQlyZWd1bGF0b3JfZGlzYWJsZShkYXRhLT5oc2ljX3BhZF9yZWd1bGF0b3Ip Ow0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+IEBAIC0zNjcsOSArNDYwLDE2IEBAIHN0 YXRpYyB2b2lkIGNpX2hkcmNfaW14X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQo+ICAgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBpbXhfY29udHJvbGxlcl9zdXNwZW5k KHN0cnVjdCBkZXZpY2UgKmRldikNCj4gICB7DQo+ICAgCXN0cnVjdCBjaV9oZHJjX2lteF9kYXRh ICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsJaW50IHJldCA9IDA7DQo+ICAgDQo+ ICAgCWRldl9kYmcoZGV2LCAiYXQgJXNcbiIsIF9fZnVuY19fKTsNCj4gICANCj4gKwlyZXQgPSBp bXhfdXNibWlzY19oc2ljX3NldF9jbGsoZGF0YS0+dXNibWlzY19kYXRhLCBmYWxzZSk7DQo+ICsJ aWYgKHJldCkgew0KPiArCQlkZXZfZXJyKGRldiwgInVzYm1pc2MgaHNpY19zZXRfY2xrIGZhaWxl ZCwgcmV0PSVkXG4iLCByZXQpOw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiAgIAlp bXhfZGlzYWJsZV91bnByZXBhcmVfY2xrcyhkZXYpOw0KPiAgIAlkYXRhLT5pbl9scG0gPSB0cnVl Ow0KPiAgIA0KPiBAQCAtNDAwLDggKzUwMCwxNiBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2Vk IGlteF9jb250cm9sbGVyX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICAgCQlnb3RvIGNs a19kaXNhYmxlOw0KPiAgIAl9DQo+ICAgDQo+ICsJcmV0ID0gaW14X3VzYm1pc2NfaHNpY19zZXRf Y2xrKGRhdGEtPnVzYm1pc2NfZGF0YSwgdHJ1ZSk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZf ZXJyKGRldiwgInVzYm1pc2MgaHNpY19zZXRfY2xrIGZhaWxlZCwgcmV0PSVkXG4iLCByZXQpOw0K PiArCQlnb3RvIGhzaWNfc2V0X2Nsa19mYWlsOw0KPiArCX0NCj4gKw0KPiAgIAlyZXR1cm4gMDsN Cj4gICANCj4gK2hzaWNfc2V0X2Nsa19mYWlsOg0KPiArCWlteF91c2JtaXNjX3NldF93YWtldXAo ZGF0YS0+dXNibWlzY19kYXRhLCB0cnVlKTsNCj4gICBjbGtfZGlzYWJsZToNCj4gICAJaW14X2Rp c2FibGVfdW5wcmVwYXJlX2Nsa3MoZGV2KTsNCj4gICAJcmV0dXJuIHJldDsNCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmggYi9kcml2ZXJzL3VzYi9jaGlw aWRlYS9jaV9oZHJjX2lteC5oDQo+IGluZGV4IDIwNDI3NWY0NzU3My4uZmNlY2FiNDc4OTM0IDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5oDQo+ICsrKyBi L2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmgNCj4gQEAgLTE0LDEwICsxNCwxMyBA QCBzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSB7DQo+ICAgCXVuc2lnbmVkIGludCBvY19wb2xhcml0 eToxOyAvKiBvdmVyIGN1cnJlbnQgcG9sYXJpdHkgaWYgb2MgZW5hYmxlZCAqLw0KPiAgIAl1bnNp Z25lZCBpbnQgZXZkbzoxOyAvKiBzZXQgZXh0ZXJuYWwgdmJ1cyBkaXZpZGVyIG9wdGlvbiAqLw0K PiAgIAl1bnNpZ25lZCBpbnQgdWxwaToxOyAvKiBjb25uZWN0ZWQgdG8gYW4gVUxQSSBwaHkgKi8N Cj4gKwl1bnNpZ25lZCBpbnQgaHNpYzoxOyAvKiBIU0lDIGNvbnRyb2xsbGVyICovDQo+ICAgfTsN Cj4gICANCj4gLWludCBpbXhfdXNibWlzY19pbml0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICop Ow0KPiAtaW50IGlteF91c2JtaXNjX2luaXRfcG9zdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAq KTsNCj4gLWludCBpbXhfdXNibWlzY19zZXRfd2FrZXVwKHN0cnVjdCBpbXhfdXNibWlzY19kYXRh ICosIGJvb2wpOw0KPiAraW50IGlteF91c2JtaXNjX2luaXQoc3RydWN0IGlteF91c2JtaXNjX2Rh dGEgKmRhdGEpOw0KPiAraW50IGlteF91c2JtaXNjX2luaXRfcG9zdChzdHJ1Y3QgaW14X3VzYm1p c2NfZGF0YSAqZGF0YSk7DQo+ICtpbnQgaW14X3VzYm1pc2Nfc2V0X3dha2V1cChzdHJ1Y3QgaW14 X3VzYm1pc2NfZGF0YSAqZGF0YSwgYm9vbCBlbmFibGVkKTsNCj4gK2ludCBpbXhfdXNibWlzY19o c2ljX3NldF9jb25uZWN0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKTsNCj4gK2ludCBp bXhfdXNibWlzY19oc2ljX3NldF9jbGsoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJv b2wgb24pOw0KPiAgIA0KPiAgICNlbmRpZiAvKiBfX0RSSVZFUl9VU0JfQ0hJUElERUFfQ0lfSERS Q19JTVhfSCAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvdXNibWlzY19p bXguYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL3VzYm1pc2NfaW14LmMNCj4gaW5kZXggZGVmODBm ZjU0N2U0Li5kZjI0NGJlODBiOTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVh L3VzYm1pc2NfaW14LmMNCj4gKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvdXNibWlzY19pbXgu Yw0KPiBAQCAtNjQsMTAgKzY0LDIyIEBADQo+ICAgI2RlZmluZSBNWDZfQk1fT1ZFUl9DVVJfRElT CQlCSVQoNykNCj4gICAjZGVmaW5lIE1YNl9CTV9PVkVSX0NVUl9QT0xBUklUWQlCSVQoOCkNCj4g ICAjZGVmaW5lIE1YNl9CTV9XQUtFVVBfRU5BQkxFCQlCSVQoMTApDQo+ICsjZGVmaW5lIE1YNl9C TV9VVE1JX09OX0NMT0NLCQlCSVQoMTMpDQo+ICAgI2RlZmluZSBNWDZfQk1fSURfV0FLRVVQCQlC SVQoMTYpDQo+ICAgI2RlZmluZSBNWDZfQk1fVkJVU19XQUtFVVAJCUJJVCgxNykNCj4gICAjZGVm aW5lIE1YNlNYX0JNX0RQRE1fV0FLRVVQX0VOCQlCSVQoMjkpDQo+ICAgI2RlZmluZSBNWDZfQk1f V0FLRVVQX0lOVFIJCUJJVCgzMSkNCj4gKw0KPiArI2RlZmluZSBNWDZfVVNCX0hTSUNfQ1RSTF9P RkZTRVQJMHgxMA0KPiArLyogU2VuZCByZXN1bWUgc2lnbmFsIHdpdGhvdXQgNDgwTWh6IFBIWSBj bG9jayAqLw0KPiArI2RlZmluZSBNWDZTWF9CTV9IU0lDX0FVVE9fUkVTVU1FCUJJVCgyMykNCj4g Ky8qIHNldCBiZWZvcmUgcG9ydHNjLnN1c3BlbmRNID0gMSAqLw0KPiArI2RlZmluZSBNWDZfQk1f SFNJQ19ERVZfQ09OTgkJQklUKDIxKQ0KPiArLyogSFNJQyBlbmFibGUgKi8NCj4gKyNkZWZpbmUg TVg2X0JNX0hTSUNfRU4JCQlCSVQoMTIpDQo+ICsvKiBGb3JjZSBIU0lDIG1vZHVsZSA0ODBNIGNs b2NrIG9uLCBldmVuIHdoZW4gaW4gSG9zdCBpcyBpbiBzdXNwZW5kIG1vZGUgKi8NCj4gKyNkZWZp bmUgTVg2X0JNX0hTSUNfQ0xLX09OCQlCSVQoMTEpDQo+ICsNCj4gICAjZGVmaW5lIE1YNl9VU0Jf T1RHMV9QSFlfQ1RSTAkJMHgxOA0KPiAgIC8qIEZvciBpbXg2ZHFsLCBpdCBpcyBob3N0LW9ubHkg Y29udHJvbGxlciwgZm9yIGxhdGVyIGlteDYsIGl0IGlzIG90ZydzICovDQo+ICAgI2RlZmluZSBN WDZfVVNCX09URzJfUEhZX0NUUkwJCTB4MWMNCj4gQEAgLTk0LDYgKzEwNiwxMCBAQCBzdHJ1Y3Qg dXNibWlzY19vcHMgew0KPiAgIAlpbnQgKCpwb3N0KShzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAq ZGF0YSk7DQo+ICAgCS8qIEl0J3MgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byBlbmFibGUvZGlzYWJs ZSB1c2Igd2FrZXVwICovDQo+ICAgCWludCAoKnNldF93YWtldXApKHN0cnVjdCBpbXhfdXNibWlz Y19kYXRhICpkYXRhLCBib29sIGVuYWJsZWQpOw0KPiArCS8qIEl0J3MgY2FsbGVkIGJlZm9yZSBz ZXR0aW5nIHBvcnRzYy5zdXNwZW5kTSAqLw0KPiArCWludCAoKmhzaWNfc2V0X2Nvbm5lY3QpKHN0 cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKTsNCj4gKwkvKiBJdCdzIGNhbGxlZCBkdXJpbmcg c3VzcGVuZC9yZXN1bWUgKi8NCj4gKwlpbnQgKCpoc2ljX3NldF9jbGspKHN0cnVjdCBpbXhfdXNi bWlzY19kYXRhICpkYXRhLCBib29sIGVuYWJsZWQpOw0KPiAgIH07DQo+ICAgDQo+ICAgc3RydWN0 IGlteF91c2JtaXNjIHsNCj4gQEAgLTM1Myw2ICszNjksMTggQEAgc3RhdGljIGludCB1c2JtaXNj X2lteDZxX2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpDQo+ICAgCXdyaXRlbChy ZWcgfCBNWDZfQk1fTk9OX0JVUlNUX1NFVFRJTkcsDQo+ICAgCQkJdXNibWlzYy0+YmFzZSArIGRh dGEtPmluZGV4ICogNCk7DQo+ICAgDQo+ICsJLyogRm9yIEhTSUMgY29udHJvbGxlciAqLw0KPiAr CWlmIChkYXRhLT5oc2ljKSB7DQo+ICsJCXJlZyA9IHJlYWRsKHVzYm1pc2MtPmJhc2UgKyBkYXRh LT5pbmRleCAqIDQpOw0KPiArCQl3cml0ZWwocmVnIHwgTVg2X0JNX1VUTUlfT05fQ0xPQ0ssDQo+ ICsJCQl1c2JtaXNjLT5iYXNlICsgZGF0YS0+aW5kZXggKiA0KTsNCj4gKwkJcmVnID0gcmVhZGwo dXNibWlzYy0+YmFzZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVA0KPiArCQkJKyAoZGF0YS0+ aW5kZXggLSAyKSAqIDQpOw0KPiArCQlyZWcgfD0gTVg2X0JNX0hTSUNfRU4gfCBNWDZfQk1fSFNJ Q19DTEtfT047DQo+ICsJCXdyaXRlbChyZWcsIHVzYm1pc2MtPmJhc2UgKyBNWDZfVVNCX0hTSUNf Q1RSTF9PRkZTRVQNCj4gKwkJCSsgKGRhdGEtPmluZGV4IC0gMikgKiA0KTsNCj4gKwl9DQo+ICsN Cj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdXNibWlzYy0+bG9jaywgZmxhZ3MpOw0KPiAg IA0KPiAgIAl1c2JtaXNjX2lteDZxX3NldF93YWtldXAoZGF0YSwgZmFsc2UpOw0KPiBAQCAtMzYw LDYgKzM4OCw2OSBAQCBzdGF0aWMgaW50IHVzYm1pc2NfaW14NnFfaW5pdChzdHJ1Y3QgaW14X3Vz Ym1pc2NfZGF0YSAqZGF0YSkNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiAgIA0KPiArc3RhdGlj IGludCB1c2JtaXNjX2lteDZfaHNpY19zZXRfY29ubmVjdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0 YSAqZGF0YSkNCj4gK3sNCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiArCXUzMiB2YWwsIG9m ZnNldDsNCj4gKwlzdHJ1Y3QgaW14X3VzYm1pc2MgKnVzYm1pc2MgPSBkZXZfZ2V0X2RydmRhdGEo ZGF0YS0+ZGV2KTsNCj4gKwlpbnQgcmV0ID0gMDsNCj4gKw0KPiArCXNwaW5fbG9ja19pcnFzYXZl KCZ1c2JtaXNjLT5sb2NrLCBmbGFncyk7DQo+ICsJaWYgKGRhdGEtPmluZGV4ID09IDIgfHwgZGF0 YS0+aW5kZXggPT0gMykgew0KPiArCQlvZmZzZXQgPSAoZGF0YS0+aW5kZXggLSAyKSAqIDQ7DQo+ ICsJfSBlbHNlIGlmIChkYXRhLT5pbmRleCA9PSAwKSB7DQo+ICsJCS8qDQo+ICsJCSAqIEZvciBT b0NzIGxpa2UgaS5NWDdEIGFuZCBsYXRlciwgZWFjaCBVU0IgY29udHJvbGxlciBoYXMNCj4gKwkJ ICogaXRzIG93biBub24tY29yZSByZWdpc3RlciByZWdpb24uIEZvciBTb0NzIGJlZm9yZSBpLk1Y N0QsDQo+ICsJCSAqIHRoZSBmaXJzdCBVU0IgY29udHJvbGxlciBpcyBub24tSFNJQyBjb250cm9s bGVyLg0KPiArCQkgKi8NCj4gKwkJb2Zmc2V0ID0gMDsNCj4gKwl9IGVsc2Ugew0KPiArCQlkZXZf ZXJyKGRhdGEtPmRldiwgImluZGV4IGlzIGVycm9yIGZvciB1c2JtaXNjXG4iKTsNCj4gKwkJb2Zm c2V0ID0gMDsNCj4gKwkJcmV0ID0gLUVJTlZBTDsNCj4gKwl9DQoNCk1heWJlIHlvdSBjb3VsZCBt b3ZlIHRoZSBjb2RlIGFib3ZlIHRvIGEgZnVuY3Rpb24gDQp1c2JtaXNjX2lteDZfaHNpY19nZXRf cmVnX29mZnNldChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSksIHRoYXQgDQpyZXR1cm5z IHRoZSBvZmZzZXQgdmFsdWUuLi4NCg0KPiArDQo+ICsJdmFsID0gcmVhZGwodXNibWlzYy0+YmFz ZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVCArIG9mZnNldCk7DQo+ICsJaWYgKCEodmFsICYg TVg2X0JNX0hTSUNfREVWX0NPTk4pKQ0KPiArCQl3cml0ZWwodmFsIHwgTVg2X0JNX0hTSUNfREVW X0NPTk4sDQo+ICsJCQl1c2JtaXNjLT5iYXNlICsgTVg2X1VTQl9IU0lDX0NUUkxfT0ZGU0VUICsg b2Zmc2V0KTsNCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1c2JtaXNjLT5sb2NrLCBmbGFn cyk7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHVzYm1p c2NfaW14Nl9oc2ljX3NldF9jbGsoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wg b24pDQo+ICt7DQo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gKwl1MzIgdmFsLCBvZmZzZXQ7 DQo+ICsJc3RydWN0IGlteF91c2JtaXNjICp1c2JtaXNjID0gZGV2X2dldF9kcnZkYXRhKGRhdGEt PmRldik7DQo+ICsJaW50IHJldCA9IDA7DQo+ICsNCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdXNi bWlzYy0+bG9jaywgZmxhZ3MpOw0KPiArCWlmIChkYXRhLT5pbmRleCA9PSAyIHx8IGRhdGEtPmlu ZGV4ID09IDMpIHsNCj4gKwkJb2Zmc2V0ID0gKGRhdGEtPmluZGV4IC0gMikgKiA0Ow0KPiArCX0g ZWxzZSBpZiAoZGF0YS0+aW5kZXggPT0gMCkgew0KPiArCQlvZmZzZXQgPSAwOw0KPiArCX0gZWxz ZSB7DQo+ICsJCWRldl9lcnIoZGF0YS0+ZGV2LCAiaW5kZXggaXMgZXJyb3IgZm9yIHVzYm1pc2Nc biIpOw0KPiArCQlvZmZzZXQgPSAwOw0KPiArCQlyZXQgPSAtRUlOVkFMOw0KPiArCX0NCg0KLi4u YW5kIHVzZSB0aGUgcHJvcG9zZWQgZnVuY3Rpb24gdXNibWlzY19pbXg2X2hzaWNfZ2V0X3JlZ19v ZmZzZXQoKSANCmhlcmUsIHRvby4NCg0KPiArDQo+ICsJdmFsID0gcmVhZGwodXNibWlzYy0+YmFz ZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVCArIG9mZnNldCk7DQo+ICsJdmFsIHw9IE1YNl9C TV9IU0lDX0VOIHwgTVg2X0JNX0hTSUNfQ0xLX09OOw0KPiArCWlmIChvbikNCj4gKwkJdmFsIHw9 IE1YNl9CTV9IU0lDX0NMS19PTjsNCj4gKwllbHNlDQo+ICsJCXZhbCAmPSB+TVg2X0JNX0hTSUNf Q0xLX09OOw0KPiArCXdyaXRlbCh2YWwsIHVzYm1pc2MtPmJhc2UgKyBNWDZfVVNCX0hTSUNfQ1RS TF9PRkZTRVQgKyBvZmZzZXQpOw0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2Mt PmxvY2ssIGZsYWdzKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsNCj4gICBz dGF0aWMgaW50IHVzYm1pc2NfaW14NnN4X2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRh dGEpDQo+ICAgew0KPiAgIAl2b2lkIF9faW9tZW0gKnJlZyA9IE5VTEw7DQo+IEBAIC0zODUsNiAr NDc2LDEzIEBAIHN0YXRpYyBpbnQgdXNibWlzY19pbXg2c3hfaW5pdChzdHJ1Y3QgaW14X3VzYm1p c2NfZGF0YSAqZGF0YSkNCj4gICAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2MtPmxv Y2ssIGZsYWdzKTsNCj4gICAJfQ0KPiAgIA0KPiArCS8qIEZvciBIU0lDIGNvbnRyb2xsZXIgKi8N Cj4gKwlpZiAoZGF0YS0+aHNpYykgew0KPiArCQl2YWwgPSByZWFkbCh1c2JtaXNjLT5iYXNlICsg TVg2X1VTQl9IU0lDX0NUUkxfT0ZGU0VUKTsNCj4gKwkJdmFsIHw9IE1YNlNYX0JNX0hTSUNfQVVU T19SRVNVTUU7DQo+ICsJCXdyaXRlbCh2YWwsIHVzYm1pc2MtPmJhc2UgKyBNWDZfVVNCX0hTSUNf Q1RSTF9PRkZTRVQpOw0KPiArCX0NCj4gKw0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+ IEBAIC00NTQsNiArNTUyLDcgQEAgc3RhdGljIGludCB1c2JtaXNjX2lteDdkX2luaXQoc3RydWN0 IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpDQo+ICAgCXJlZyAmPSB+TVg3RF9VU0JfVkJVU19XQUtF VVBfU09VUkNFX01BU0s7DQo+ICAgCXdyaXRlbChyZWcgfCBNWDdEX1VTQl9WQlVTX1dBS0VVUF9T T1VSQ0VfQlZBTElELA0KPiAgIAkJIHVzYm1pc2MtPmJhc2UgKyBNWDdEX1VTQk5DX1VTQl9DVFJM Mik7DQo+ICsNCj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdXNibWlzYy0+bG9jaywgZmxh Z3MpOw0KPiAgIA0KPiAgIAl1c2JtaXNjX2lteDdkX3NldF93YWtldXAoZGF0YSwgZmFsc2UpOw0K PiBAQCAtNDgxLDYgKzU4MCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNibWlzY19vcHMgaW14 NTNfdXNibWlzY19vcHMgPSB7DQo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JtaXNjX29wcyBp bXg2cV91c2JtaXNjX29wcyA9IHsNCj4gICAJLnNldF93YWtldXAgPSB1c2JtaXNjX2lteDZxX3Nl dF93YWtldXAsDQo+ICAgCS5pbml0ID0gdXNibWlzY19pbXg2cV9pbml0LA0KPiArCS5oc2ljX3Nl dF9jb25uZWN0ID0gdXNibWlzY19pbXg2X2hzaWNfc2V0X2Nvbm5lY3QsDQo+ICsJLmhzaWNfc2V0 X2NsayAgID0gdXNibWlzY19pbXg2X2hzaWNfc2V0X2NsaywNCj4gICB9Ow0KPiAgIA0KPiAgIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdXNibWlzY19vcHMgdmY2MTBfdXNibWlzY19vcHMgPSB7DQo+IEBA IC00OTAsNiArNTkxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JtaXNjX29wcyB2ZjYxMF91 c2JtaXNjX29wcyA9IHsNCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYm1pc2Nfb3BzIGlteDZz eF91c2JtaXNjX29wcyA9IHsNCj4gICAJLnNldF93YWtldXAgPSB1c2JtaXNjX2lteDZxX3NldF93 YWtldXAsDQo+ICAgCS5pbml0ID0gdXNibWlzY19pbXg2c3hfaW5pdCwNCj4gKwkuaHNpY19zZXRf Y29ubmVjdCA9IHVzYm1pc2NfaW14Nl9oc2ljX3NldF9jb25uZWN0LA0KPiArCS5oc2ljX3NldF9j bGsgPSB1c2JtaXNjX2lteDZfaHNpY19zZXRfY2xrLA0KPiAgIH07DQo+ICAgDQo+ICAgc3RhdGlj IGNvbnN0IHN0cnVjdCB1c2JtaXNjX29wcyBpbXg3ZF91c2JtaXNjX29wcyA9IHsNCj4gQEAgLTU0 Niw2ICs2NDksMzMgQEAgaW50IGlteF91c2JtaXNjX3NldF93YWtldXAoc3RydWN0IGlteF91c2Jt aXNjX2RhdGEgKmRhdGEsIGJvb2wgZW5hYmxlZCkNCj4gICB9DQo+ICAgRVhQT1JUX1NZTUJPTF9H UEwoaW14X3VzYm1pc2Nfc2V0X3dha2V1cCk7DQo+ICAgDQo+ICtpbnQgaW14X3VzYm1pc2NfaHNp Y19zZXRfY29ubmVjdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSkNCj4gK3sNCj4gKwlz dHJ1Y3QgaW14X3VzYm1pc2MgKnVzYm1pc2M7DQo+ICsNCj4gKwlpZiAoIWRhdGEpDQo+ICsJCXJl dHVybiAwOw0KPiArDQo+ICsJdXNibWlzYyA9IGRldl9nZXRfZHJ2ZGF0YShkYXRhLT5kZXYpOw0K PiArCWlmICghdXNibWlzYy0+b3BzLT5oc2ljX3NldF9jb25uZWN0IHx8ICFkYXRhLT5oc2ljKQ0K PiArCQlyZXR1cm4gMDsNCj4gKwlyZXR1cm4gdXNibWlzYy0+b3BzLT5oc2ljX3NldF9jb25uZWN0 KGRhdGEpOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwoaW14X3VzYm1pc2NfaHNpY19zZXRf Y29ubmVjdCk7DQo+ICsNCj4gK2ludCBpbXhfdXNibWlzY19oc2ljX3NldF9jbGsoc3RydWN0IGlt eF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wgb24pDQo+ICt7DQo+ICsJc3RydWN0IGlteF91c2Jt aXNjICp1c2JtaXNjOw0KPiArDQo+ICsJaWYgKCFkYXRhKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0K PiArCXVzYm1pc2MgPSBkZXZfZ2V0X2RydmRhdGEoZGF0YS0+ZGV2KTsNCj4gKwlpZiAoIXVzYm1p c2MtPm9wcy0+aHNpY19zZXRfY2xrIHx8ICFkYXRhLT5oc2ljKQ0KPiArCQlyZXR1cm4gMDsNCj4g KwlyZXR1cm4gdXNibWlzYy0+b3BzLT5oc2ljX3NldF9jbGsoZGF0YSwgb24pOw0KPiArfQ0KPiAr RVhQT1JUX1NZTUJPTF9HUEwoaW14X3VzYm1pc2NfaHNpY19zZXRfY2xrKTsNCj4gICBzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB1c2JtaXNjX2lteF9kdF9pZHNbXSA9IHsNCj4gICAJ ew0KPiAgIAkJLmNvbXBhdGlibGUgPSAiZnNsLGlteDI1LXVzYm1pc2MiLA0KPiA= From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2,2/4] usb: chipidea: imx: add HSIC support From: Frieder Schrempf Message-Id: Date: Mon, 5 Nov 2018 08:52:39 +0000 To: Peter Chen , "linux-usb@vger.kernel.org" Cc: dl-linux-imx , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , "frieder.schrempf@exceet.de" , "festevam@gmail.com" List-ID: T24gMjIuMTAuMTggMDc6NDMsIFBldGVyIENoZW4gd3JvdGU6DQo+IFRvIHN1cHBvcnQgaW14IEhT SUMsIHRoZXJlIGFyZSBzb21lIHNwZWNpYWwgcmVxdWlyZW1lbnQ6DQo+IC0gVGhlIEhTSUMgcGFk IGlzIDEuMnYsIGl0IG1heSBuZWVkIHRvIHN1cHBseSBmcm9tIGV4dGVybmFsDQo+IC0gVGhlIGRh dGEvc3Ryb2JlIHBpbiBuZWVkcyB0byBiZSBwdWxsZWQgZG93biBmaXJzdCwgYW5kIGFmdGVyDQo+ ICAgIGhvc3QgbW9kZSBpcyBpbml0aWFsaXplZCwgdGhlIHN0cm9iZSBwaW4gbmVlZHMgdG8gYmUg cHVsbGVkIHVwDQo+IC0gRHVyaW5nIHRoZSBVU0Igc3VzcGVuZC9yZXN1bWUsIHNwZWNpYWwgc2V0 dGluZyBpcyBuZWVkZWQNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFBldGVyIENoZW4gPHBldGVyLmNo ZW5AbnhwLmNvbT4NCj4gLS0tDQo+ICAgZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXgu YyB8IDE0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQo+ICAgZHJpdmVy cy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguaCB8ICAgOSArKy0NCj4gICBkcml2ZXJzL3VzYi9j aGlwaWRlYS91c2JtaXNjX2lteC5jIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysNCj4gICAzIGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlv bnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lt eC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYw0KPiBpbmRleCAwOWIzN2Mw ZDA3NWQuLjM4OWMzMjYxYzRlZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEv Y2lfaGRyY19pbXguYw0KPiArKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5j DQo+IEBAIC0xNCw2ICsxNCw3IEBADQo+ICAgI2luY2x1ZGUgPGxpbnV4L3VzYi9jaGlwaWRlYS5o Pg0KPiAgICNpbmNsdWRlIDxsaW51eC91c2Ivb2YuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvY2xr Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGluY3RybC9jb25zdW1lci5oPg0KPiAgIA0KPiAgICNp bmNsdWRlICJjaS5oIg0KPiAgICNpbmNsdWRlICJjaV9oZHJjX2lteC5oIg0KPiBAQCAtODUsNiAr ODYsOSBAQCBzdHJ1Y3QgY2lfaGRyY19pbXhfZGF0YSB7DQo+ICAgCWJvb2wgc3VwcG9ydHNfcnVu dGltZV9wbTsNCj4gICAJYm9vbCBvdmVycmlkZV9waHlfY29udHJvbDsNCj4gICAJYm9vbCBpbl9s cG07DQo+ICsJc3RydWN0IHBpbmN0cmwgKnBpbmN0cmw7DQo+ICsJc3RydWN0IHBpbmN0cmxfc3Rh dGUgKnBpbmN0cmxfaHNpY19hY3RpdmU7DQo+ICsJc3RydWN0IHJlZ3VsYXRvciAqaHNpY19wYWRf cmVndWxhdG9yOw0KPiAgIAkvKiBTb0MgYmVmb3JlIGkubXg2IChleGNlcHQgaW14MjMvaW14Mjgp IG5lZWRzIHRocmVlIGNsa3MgKi8NCj4gICAJYm9vbCBuZWVkX3RocmVlX2Nsa3M7DQo+ICAgCXN0 cnVjdCBjbGsgKmNsa19pcGc7DQo+IEBAIC0yNDUsMTkgKzI0OSw0OSBAQCBzdGF0aWMgdm9pZCBp bXhfZGlzYWJsZV91bnByZXBhcmVfY2xrcyhzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICAgCX0NCj4g ICB9DQo+ICAgDQo+ICtzdGF0aWMgaW50IGNpX2hkcmNfaW14X25vdGlmeV9ldmVudChzdHJ1Y3Qg Y2lfaGRyYyAqY2ksIHVuc2lnbmVkIGludCBldmVudCkNCj4gK3sNCj4gKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSBjaS0+ZGV2LT5wYXJlbnQ7DQo+ICsJc3RydWN0IGNpX2hkcmNfaW14X2RhdGEgKmRh dGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlpbnQgcmV0ID0gMDsNCj4gKw0KPiArCXN3 aXRjaCAoZXZlbnQpIHsNCj4gKwljYXNlIENJX0hEUkNfSU1YX0hTSUNfQUNUSVZFX0VWRU5UOg0K PiArCQlyZXQgPSBwaW5jdHJsX3NlbGVjdF9zdGF0ZShkYXRhLT5waW5jdHJsLA0KPiArCQkJCWRh dGEtPnBpbmN0cmxfaHNpY19hY3RpdmUpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJZGV2X2Vycihk ZXYsICJoc2ljX2FjdGl2ZSBzZWxlY3QgZmFpbGVkLCBlcnI9JWRcbiIsDQo+ICsJCQkJcmV0KTsN Cj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBDSV9IRFJDX0lNWF9IU0lDX1NVU1BFTkRfRVZFTlQ6DQo+ ICsJCXJldCA9IGlteF91c2JtaXNjX2hzaWNfc2V0X2Nvbm5lY3QoZGF0YS0+dXNibWlzY19kYXRh KTsNCj4gKwkJaWYgKHJldCkNCj4gKwkJCWRldl9lcnIoZGV2LA0KPiArCQkJCSJoc2ljX3NldF9j b25uZWN0IGZhaWxlZCwgZXJyPSVkXG4iLCByZXQpOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0 Og0KPiArCQlicmVhazsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ ICAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQ0KPiAgIHsNCj4gICAJc3RydWN0IGNpX2hkcmNfaW14X2RhdGEgKmRhdGE7DQo+ICAgCXN0 cnVjdCBjaV9oZHJjX3BsYXRmb3JtX2RhdGEgcGRhdGEgPSB7DQo+ICAgCQkubmFtZQkJPSBkZXZf bmFtZSgmcGRldi0+ZGV2KSwNCj4gICAJCS5jYXBvZmZzZXQJPSBERUZfQ0FQT0ZGU0VULA0KPiAr CQkubm90aWZ5X2V2ZW50CT0gY2lfaGRyY19pbXhfbm90aWZ5X2V2ZW50LA0KPiAgIAl9Ow0KPiAg IAlpbnQgcmV0Ow0KPiAgIAljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9pZDsNCj4gICAJ Y29uc3Qgc3RydWN0IGNpX2hkcmNfaW14X3BsYXRmb3JtX2ZsYWcgKmlteF9wbGF0Zm9ybV9mbGFn Ow0KPiAgIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ZGV2Lm9mX25vZGU7DQo+ICsJ c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gKwlzdHJ1Y3QgcGluY3RybF9zdGF0 ZSAqcGluY3RybF9oc2ljX2lkbGU7DQo+ICAgDQo+IC0Jb2ZfaWQgPSBvZl9tYXRjaF9kZXZpY2Uo Y2lfaGRyY19pbXhfZHRfaWRzLCAmcGRldi0+ZGV2KTsNCj4gKwlvZl9pZCA9IG9mX21hdGNoX2Rl dmljZShjaV9oZHJjX2lteF9kdF9pZHMsIGRldik7DQo+ICAgCWlmICghb2ZfaWQpDQo+ICAgCQly ZXR1cm4gLUVOT0RFVjsNCj4gICANCj4gQEAgLTI2OCwxOSArMzAyLDczIEBAIHN0YXRpYyBpbnQg Y2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gICAJCXJl dHVybiAtRU5PTUVNOw0KPiAgIA0KPiAgIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkYXRh KTsNCj4gLQlkYXRhLT51c2JtaXNjX2RhdGEgPSB1c2JtaXNjX2dldF9pbml0X2RhdGEoJnBkZXYt PmRldik7DQo+ICsJZGF0YS0+dXNibWlzY19kYXRhID0gdXNibWlzY19nZXRfaW5pdF9kYXRhKGRl dik7DQo+ICAgCWlmIChJU19FUlIoZGF0YS0+dXNibWlzY19kYXRhKSkNCj4gICAJCXJldHVybiBQ VFJfRVJSKGRhdGEtPnVzYm1pc2NfZGF0YSk7DQo+ICAgDQo+IC0JcmV0ID0gaW14X2dldF9jbGtz KCZwZGV2LT5kZXYpOw0KPiArCWlmIChvZl91c2JfZ2V0X3BoeV9tb2RlKGRldi0+b2Zfbm9kZSkg PT0gVVNCUEhZX0lOVEVSRkFDRV9NT0RFX0hTSUMpIHsNCj4gKwkJcGRhdGEuZmxhZ3MgfD0gQ0lf SERSQ19JTVhfSVNfSFNJQzsNCj4gKwkJZGF0YS0+dXNibWlzY19kYXRhLT5oc2ljID0gMTsNCj4g KwkJZGF0YS0+cGluY3RybCA9IGRldm1fcGluY3RybF9nZXQoZGV2KTsNCj4gKwkJaWYgKElTX0VS UihkYXRhLT5waW5jdHJsKSkgew0KPiArCQkJZGV2X2VycihkZXYsICJwaW5jdHJsIGdldCBmYWls ZWQsIGVycj0lbGRcbiIsDQo+ICsJCQkJCVBUUl9FUlIoZGF0YS0+cGluY3RybCkpOw0KPiArCQkJ cmV0dXJuIFBUUl9FUlIoZGF0YS0+cGluY3RybCk7DQo+ICsJCX0NCj4gKw0KPiArCQlwaW5jdHJs X2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtPnBpbmN0cmwsICJpZGxlIik7 DQo+ICsJCWlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7DQo+ICsJCQlkZXZfZXJyKGRl diwNCj4gKwkJCQkicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxuIiwN Cj4gKwkJCQkJUFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpOw0KPiArCQkJcmV0dXJuIFBUUl9F UlIocGluY3RybF9oc2ljX2lkbGUpOw0KPiArCQl9DQo+ICsNCj4gKwkJcmV0ID0gcGluY3RybF9z ZWxlY3Rfc3RhdGUoZGF0YS0+cGluY3RybCwgcGluY3RybF9oc2ljX2lkbGUpOw0KPiArCQlpZiAo cmV0KSB7DQo+ICsJCQlkZXZfZXJyKGRldiwgImhzaWNfaWRsZSBzZWxlY3QgZmFpbGVkLCBlcnI9 JWRcbiIsIHJldCk7DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ICsNCj4gKwkJZGF0YS0+ cGluY3RybF9oc2ljX2FjdGl2ZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtPnBpbmN0cmws DQo+ICsJCQkJCQkJCSJhY3RpdmUiKTsNCj4gKwkJaWYgKElTX0VSUihkYXRhLT5waW5jdHJsX2hz aWNfYWN0aXZlKSkgew0KPiArCQkJZGV2X2VycihkZXYsDQo+ICsJCQkJInBpbmN0cmxfaHNpY19h Y3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxuIiwNCj4gKwkJCQkJUFRSX0VSUihkYXRhLT5w aW5jdHJsX2hzaWNfYWN0aXZlKSk7DQo+ICsJCQlyZXR1cm4gUFRSX0VSUihkYXRhLT5waW5jdHJs X2hzaWNfYWN0aXZlKTsNCj4gKwkJfQ0KPiArDQo+ICsJCWRhdGEtPmhzaWNfcGFkX3JlZ3VsYXRv ciA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJoc2ljIik7DQo+ICsJCWlmIChQVFJfRVJSKGRh dGEtPmhzaWNfcGFkX3JlZ3VsYXRvcikgPT0gLUVQUk9CRV9ERUZFUikgew0KPiArCQkJcmV0dXJu IC1FUFJPQkVfREVGRVI7DQo+ICsJCX0gZWxzZSBpZiAoUFRSX0VSUihkYXRhLT5oc2ljX3BhZF9y ZWd1bGF0b3IpID09IC1FTk9ERVYpIHsNCj4gKwkJCS8qIG5vIHBhZCByZWd1YWxhdG9yIGlzIG5l ZWRlZCAqLw0KPiArCQkJZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yID0gTlVMTDsNCj4gKwkJfSBl bHNlIGlmIChJU19FUlIoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKSkgew0KPiArCQkJZGV2X2Vy cihkZXYsICJHZXQgSFNJQyBwYWQgcmVndWxhdG9yIGVycm9yOiAlbGRcbiIsDQo+ICsJCQkJCVBU Ul9FUlIoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKSk7DQo+ICsJCQlyZXR1cm4gUFRSX0VSUihk YXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IpOw0KPiArCQl9DQo+ICsNCj4gKwkJaWYgKGRhdGEtPmhz aWNfcGFkX3JlZ3VsYXRvcikgew0KPiArCQkJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShkYXRhLT5o c2ljX3BhZF9yZWd1bGF0b3IpOw0KPiArCQkJaWYgKHJldCkgew0KPiArCQkJCWRldl9lcnIoZGV2 LA0KPiArCQkJCQkiRmFpbCB0byBlbmFibGUgSFNJQyBwYWQgcmVndWxhdG9yXG4iKTsNCg0Kcy9G YWlsL0ZhaWxlZA0KDQo+ICsJCQkJcmV0dXJuIHJldDsNCj4gKwkJCX0NCj4gKwkJfQ0KPiArCX0N Cj4gKwlyZXQgPSBpbXhfZ2V0X2Nsa3MoZGV2KTsNCj4gICAJaWYgKHJldCkNCj4gLQkJcmV0dXJu IHJldDsNCj4gKwkJZ290byBkaXNhYmxlX2hzaWNfcmVndWxhdG9yOw0KPiAgIA0KPiAtCXJldCA9 IGlteF9wcmVwYXJlX2VuYWJsZV9jbGtzKCZwZGV2LT5kZXYpOw0KPiArCXJldCA9IGlteF9wcmVw YXJlX2VuYWJsZV9jbGtzKGRldik7DQo+ICAgCWlmIChyZXQpDQo+IC0JCXJldHVybiByZXQ7DQo+ ICsJCWdvdG8gZGlzYWJsZV9oc2ljX3JlZ3VsYXRvcjsNCj4gICANCj4gLQlkYXRhLT5waHkgPSBk ZXZtX3VzYl9nZXRfcGh5X2J5X3BoYW5kbGUoJnBkZXYtPmRldiwgImZzbCx1c2JwaHkiLCAwKTsN Cj4gKwlkYXRhLT5waHkgPSBkZXZtX3VzYl9nZXRfcGh5X2J5X3BoYW5kbGUoZGV2LCAiZnNsLHVz YnBoeSIsIDApOw0KPiAgIAlpZiAoSVNfRVJSKGRhdGEtPnBoeSkpIHsNCj4gICAJCXJldCA9IFBU Ul9FUlIoZGF0YS0+cGh5KTsNCj4gICAJCS8qIFJldHVybiAtRUlOVkFMIGlmIG5vIHVzYnBoeSBp cyBhdmFpbGFibGUgKi8NCj4gQEAgLTMwNSw0MCArMzkzLDQzIEBAIHN0YXRpYyBpbnQgY2lfaGRy Y19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gICANCj4gICAJcmV0 ID0gaW14X3VzYm1pc2NfaW5pdChkYXRhLT51c2JtaXNjX2RhdGEpOw0KPiAgIAlpZiAocmV0KSB7 DQo+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwgInVzYm1pc2MgaW5pdCBmYWlsZWQsIHJldD0lZFxu IiwgcmV0KTsNCj4gKwkJZGV2X2VycihkZXYsICJ1c2JtaXNjIGluaXQgZmFpbGVkLCByZXQ9JWRc biIsIHJldCk7DQo+ICAgCQlnb3RvIGVycl9jbGs7DQo+ICAgCX0NCj4gICANCj4gLQlkYXRhLT5j aV9wZGV2ID0gY2lfaGRyY19hZGRfZGV2aWNlKCZwZGV2LT5kZXYsDQo+ICsJZGF0YS0+Y2lfcGRl diA9IGNpX2hkcmNfYWRkX2RldmljZShkZXYsDQo+ICAgCQkJCXBkZXYtPnJlc291cmNlLCBwZGV2 LT5udW1fcmVzb3VyY2VzLA0KPiAgIAkJCQkmcGRhdGEpOw0KPiAgIAlpZiAoSVNfRVJSKGRhdGEt PmNpX3BkZXYpKSB7DQo+ICAgCQlyZXQgPSBQVFJfRVJSKGRhdGEtPmNpX3BkZXYpOw0KPiAgIAkJ aWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQ0KPiAtCQkJZGV2X2VycigmcGRldi0+ZGV2LA0KPiAt CQkJCSJjaV9oZHJjX2FkZF9kZXZpY2UgZmFpbGVkLCBlcnI9JWRcbiIsIHJldCk7DQo+ICsJCQlk ZXZfZXJyKGRldiwgImNpX2hkcmNfYWRkX2RldmljZSBmYWlsZWQsIGVycj0lZFxuIiwNCj4gKwkJ CQkJcmV0KTsNCj4gICAJCWdvdG8gZXJyX2NsazsNCj4gICAJfQ0KPiAgIA0KPiAgIAlyZXQgPSBp bXhfdXNibWlzY19pbml0X3Bvc3QoZGF0YS0+dXNibWlzY19kYXRhKTsNCj4gICAJaWYgKHJldCkg ew0KPiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJ1c2JtaXNjIHBvc3QgZmFpbGVkLCByZXQ9JWRc biIsIHJldCk7DQo+ICsJCWRldl9lcnIoZGV2LCAidXNibWlzYyBwb3N0IGZhaWxlZCwgcmV0PSVk XG4iLCByZXQpOw0KPiAgIAkJZ290byBkaXNhYmxlX2RldmljZTsNCj4gICAJfQ0KPiAgIA0KPiAg IAlpZiAoZGF0YS0+c3VwcG9ydHNfcnVudGltZV9wbSkgew0KPiAtCQlwbV9ydW50aW1lX3NldF9h Y3RpdmUoJnBkZXYtPmRldik7DQo+IC0JCXBtX3J1bnRpbWVfZW5hYmxlKCZwZGV2LT5kZXYpOw0K PiArCQlwbV9ydW50aW1lX3NldF9hY3RpdmUoZGV2KTsNCj4gKwkJcG1fcnVudGltZV9lbmFibGUo ZGV2KTsNCj4gICAJfQ0KPiAgIA0KPiAtCWRldmljZV9zZXRfd2FrZXVwX2NhcGFibGUoJnBkZXYt PmRldiwgdHJ1ZSk7DQo+ICsJZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpOw0K PiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICANCj4gICBkaXNhYmxlX2RldmljZToNCj4gICAJY2lf aGRyY19yZW1vdmVfZGV2aWNlKGRhdGEtPmNpX3BkZXYpOw0KPiAgIGVycl9jbGs6DQo+IC0JaW14 X2Rpc2FibGVfdW5wcmVwYXJlX2Nsa3MoJnBkZXYtPmRldik7DQo+ICsJaW14X2Rpc2FibGVfdW5w cmVwYXJlX2Nsa3MoZGV2KTsNCj4gK2Rpc2FibGVfaHNpY19yZWd1bGF0b3I6DQo+ICsJaWYgKGRh dGEtPmhzaWNfcGFkX3JlZ3VsYXRvcikNCj4gKwkJcmV0ID0gcmVndWxhdG9yX2Rpc2FibGUoZGF0 YS0+aHNpY19wYWRfcmVndWxhdG9yKTsNCj4gICAJcmV0dXJuIHJldDsNCj4gICB9DQo+ICAgDQo+ IEBAIC0zNTUsNiArNDQ2LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9yZW1vdmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gICAJaWYgKGRhdGEtPm92ZXJyaWRlX3BoeV9jb250 cm9sKQ0KPiAgIAkJdXNiX3BoeV9zaHV0ZG93bihkYXRhLT5waHkpOw0KPiAgIAlpbXhfZGlzYWJs ZV91bnByZXBhcmVfY2xrcygmcGRldi0+ZGV2KTsNCj4gKwlpZiAoZGF0YS0+aHNpY19wYWRfcmVn dWxhdG9yKQ0KPiArCQlyZWd1bGF0b3JfZGlzYWJsZShkYXRhLT5oc2ljX3BhZF9yZWd1bGF0b3Ip Ow0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+IEBAIC0zNjcsOSArNDYwLDE2IEBAIHN0 YXRpYyB2b2lkIGNpX2hkcmNfaW14X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQo+ICAgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBpbXhfY29udHJvbGxlcl9zdXNwZW5k KHN0cnVjdCBkZXZpY2UgKmRldikNCj4gICB7DQo+ICAgCXN0cnVjdCBjaV9oZHJjX2lteF9kYXRh ICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsJaW50IHJldCA9IDA7DQo+ICAgDQo+ ICAgCWRldl9kYmcoZGV2LCAiYXQgJXNcbiIsIF9fZnVuY19fKTsNCj4gICANCj4gKwlyZXQgPSBp bXhfdXNibWlzY19oc2ljX3NldF9jbGsoZGF0YS0+dXNibWlzY19kYXRhLCBmYWxzZSk7DQo+ICsJ aWYgKHJldCkgew0KPiArCQlkZXZfZXJyKGRldiwgInVzYm1pc2MgaHNpY19zZXRfY2xrIGZhaWxl ZCwgcmV0PSVkXG4iLCByZXQpOw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiAgIAlp bXhfZGlzYWJsZV91bnByZXBhcmVfY2xrcyhkZXYpOw0KPiAgIAlkYXRhLT5pbl9scG0gPSB0cnVl Ow0KPiAgIA0KPiBAQCAtNDAwLDggKzUwMCwxNiBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2Vk IGlteF9jb250cm9sbGVyX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICAgCQlnb3RvIGNs a19kaXNhYmxlOw0KPiAgIAl9DQo+ICAgDQo+ICsJcmV0ID0gaW14X3VzYm1pc2NfaHNpY19zZXRf Y2xrKGRhdGEtPnVzYm1pc2NfZGF0YSwgdHJ1ZSk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZf ZXJyKGRldiwgInVzYm1pc2MgaHNpY19zZXRfY2xrIGZhaWxlZCwgcmV0PSVkXG4iLCByZXQpOw0K PiArCQlnb3RvIGhzaWNfc2V0X2Nsa19mYWlsOw0KPiArCX0NCj4gKw0KPiAgIAlyZXR1cm4gMDsN Cj4gICANCj4gK2hzaWNfc2V0X2Nsa19mYWlsOg0KPiArCWlteF91c2JtaXNjX3NldF93YWtldXAo ZGF0YS0+dXNibWlzY19kYXRhLCB0cnVlKTsNCj4gICBjbGtfZGlzYWJsZToNCj4gICAJaW14X2Rp c2FibGVfdW5wcmVwYXJlX2Nsa3MoZGV2KTsNCj4gICAJcmV0dXJuIHJldDsNCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmggYi9kcml2ZXJzL3VzYi9jaGlw aWRlYS9jaV9oZHJjX2lteC5oDQo+IGluZGV4IDIwNDI3NWY0NzU3My4uZmNlY2FiNDc4OTM0IDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5oDQo+ICsrKyBi L2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmgNCj4gQEAgLTE0LDEwICsxNCwxMyBA QCBzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSB7DQo+ICAgCXVuc2lnbmVkIGludCBvY19wb2xhcml0 eToxOyAvKiBvdmVyIGN1cnJlbnQgcG9sYXJpdHkgaWYgb2MgZW5hYmxlZCAqLw0KPiAgIAl1bnNp Z25lZCBpbnQgZXZkbzoxOyAvKiBzZXQgZXh0ZXJuYWwgdmJ1cyBkaXZpZGVyIG9wdGlvbiAqLw0K PiAgIAl1bnNpZ25lZCBpbnQgdWxwaToxOyAvKiBjb25uZWN0ZWQgdG8gYW4gVUxQSSBwaHkgKi8N Cj4gKwl1bnNpZ25lZCBpbnQgaHNpYzoxOyAvKiBIU0lDIGNvbnRyb2xsbGVyICovDQo+ICAgfTsN Cj4gICANCj4gLWludCBpbXhfdXNibWlzY19pbml0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICop Ow0KPiAtaW50IGlteF91c2JtaXNjX2luaXRfcG9zdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAq KTsNCj4gLWludCBpbXhfdXNibWlzY19zZXRfd2FrZXVwKHN0cnVjdCBpbXhfdXNibWlzY19kYXRh ICosIGJvb2wpOw0KPiAraW50IGlteF91c2JtaXNjX2luaXQoc3RydWN0IGlteF91c2JtaXNjX2Rh dGEgKmRhdGEpOw0KPiAraW50IGlteF91c2JtaXNjX2luaXRfcG9zdChzdHJ1Y3QgaW14X3VzYm1p c2NfZGF0YSAqZGF0YSk7DQo+ICtpbnQgaW14X3VzYm1pc2Nfc2V0X3dha2V1cChzdHJ1Y3QgaW14 X3VzYm1pc2NfZGF0YSAqZGF0YSwgYm9vbCBlbmFibGVkKTsNCj4gK2ludCBpbXhfdXNibWlzY19o c2ljX3NldF9jb25uZWN0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKTsNCj4gK2ludCBp bXhfdXNibWlzY19oc2ljX3NldF9jbGsoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJv b2wgb24pOw0KPiAgIA0KPiAgICNlbmRpZiAvKiBfX0RSSVZFUl9VU0JfQ0hJUElERUFfQ0lfSERS Q19JTVhfSCAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvdXNibWlzY19p bXguYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL3VzYm1pc2NfaW14LmMNCj4gaW5kZXggZGVmODBm ZjU0N2U0Li5kZjI0NGJlODBiOTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVh L3VzYm1pc2NfaW14LmMNCj4gKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvdXNibWlzY19pbXgu Yw0KPiBAQCAtNjQsMTAgKzY0LDIyIEBADQo+ICAgI2RlZmluZSBNWDZfQk1fT1ZFUl9DVVJfRElT CQlCSVQoNykNCj4gICAjZGVmaW5lIE1YNl9CTV9PVkVSX0NVUl9QT0xBUklUWQlCSVQoOCkNCj4g ICAjZGVmaW5lIE1YNl9CTV9XQUtFVVBfRU5BQkxFCQlCSVQoMTApDQo+ICsjZGVmaW5lIE1YNl9C TV9VVE1JX09OX0NMT0NLCQlCSVQoMTMpDQo+ICAgI2RlZmluZSBNWDZfQk1fSURfV0FLRVVQCQlC SVQoMTYpDQo+ICAgI2RlZmluZSBNWDZfQk1fVkJVU19XQUtFVVAJCUJJVCgxNykNCj4gICAjZGVm aW5lIE1YNlNYX0JNX0RQRE1fV0FLRVVQX0VOCQlCSVQoMjkpDQo+ICAgI2RlZmluZSBNWDZfQk1f V0FLRVVQX0lOVFIJCUJJVCgzMSkNCj4gKw0KPiArI2RlZmluZSBNWDZfVVNCX0hTSUNfQ1RSTF9P RkZTRVQJMHgxMA0KPiArLyogU2VuZCByZXN1bWUgc2lnbmFsIHdpdGhvdXQgNDgwTWh6IFBIWSBj bG9jayAqLw0KPiArI2RlZmluZSBNWDZTWF9CTV9IU0lDX0FVVE9fUkVTVU1FCUJJVCgyMykNCj4g Ky8qIHNldCBiZWZvcmUgcG9ydHNjLnN1c3BlbmRNID0gMSAqLw0KPiArI2RlZmluZSBNWDZfQk1f SFNJQ19ERVZfQ09OTgkJQklUKDIxKQ0KPiArLyogSFNJQyBlbmFibGUgKi8NCj4gKyNkZWZpbmUg TVg2X0JNX0hTSUNfRU4JCQlCSVQoMTIpDQo+ICsvKiBGb3JjZSBIU0lDIG1vZHVsZSA0ODBNIGNs b2NrIG9uLCBldmVuIHdoZW4gaW4gSG9zdCBpcyBpbiBzdXNwZW5kIG1vZGUgKi8NCj4gKyNkZWZp bmUgTVg2X0JNX0hTSUNfQ0xLX09OCQlCSVQoMTEpDQo+ICsNCj4gICAjZGVmaW5lIE1YNl9VU0Jf T1RHMV9QSFlfQ1RSTAkJMHgxOA0KPiAgIC8qIEZvciBpbXg2ZHFsLCBpdCBpcyBob3N0LW9ubHkg Y29udHJvbGxlciwgZm9yIGxhdGVyIGlteDYsIGl0IGlzIG90ZydzICovDQo+ICAgI2RlZmluZSBN WDZfVVNCX09URzJfUEhZX0NUUkwJCTB4MWMNCj4gQEAgLTk0LDYgKzEwNiwxMCBAQCBzdHJ1Y3Qg dXNibWlzY19vcHMgew0KPiAgIAlpbnQgKCpwb3N0KShzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAq ZGF0YSk7DQo+ICAgCS8qIEl0J3MgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byBlbmFibGUvZGlzYWJs ZSB1c2Igd2FrZXVwICovDQo+ICAgCWludCAoKnNldF93YWtldXApKHN0cnVjdCBpbXhfdXNibWlz Y19kYXRhICpkYXRhLCBib29sIGVuYWJsZWQpOw0KPiArCS8qIEl0J3MgY2FsbGVkIGJlZm9yZSBz ZXR0aW5nIHBvcnRzYy5zdXNwZW5kTSAqLw0KPiArCWludCAoKmhzaWNfc2V0X2Nvbm5lY3QpKHN0 cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKTsNCj4gKwkvKiBJdCdzIGNhbGxlZCBkdXJpbmcg c3VzcGVuZC9yZXN1bWUgKi8NCj4gKwlpbnQgKCpoc2ljX3NldF9jbGspKHN0cnVjdCBpbXhfdXNi bWlzY19kYXRhICpkYXRhLCBib29sIGVuYWJsZWQpOw0KPiAgIH07DQo+ICAgDQo+ICAgc3RydWN0 IGlteF91c2JtaXNjIHsNCj4gQEAgLTM1Myw2ICszNjksMTggQEAgc3RhdGljIGludCB1c2JtaXNj X2lteDZxX2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpDQo+ICAgCXdyaXRlbChy ZWcgfCBNWDZfQk1fTk9OX0JVUlNUX1NFVFRJTkcsDQo+ICAgCQkJdXNibWlzYy0+YmFzZSArIGRh dGEtPmluZGV4ICogNCk7DQo+ICAgDQo+ICsJLyogRm9yIEhTSUMgY29udHJvbGxlciAqLw0KPiAr CWlmIChkYXRhLT5oc2ljKSB7DQo+ICsJCXJlZyA9IHJlYWRsKHVzYm1pc2MtPmJhc2UgKyBkYXRh LT5pbmRleCAqIDQpOw0KPiArCQl3cml0ZWwocmVnIHwgTVg2X0JNX1VUTUlfT05fQ0xPQ0ssDQo+ ICsJCQl1c2JtaXNjLT5iYXNlICsgZGF0YS0+aW5kZXggKiA0KTsNCj4gKwkJcmVnID0gcmVhZGwo dXNibWlzYy0+YmFzZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVA0KPiArCQkJKyAoZGF0YS0+ aW5kZXggLSAyKSAqIDQpOw0KPiArCQlyZWcgfD0gTVg2X0JNX0hTSUNfRU4gfCBNWDZfQk1fSFNJ Q19DTEtfT047DQo+ICsJCXdyaXRlbChyZWcsIHVzYm1pc2MtPmJhc2UgKyBNWDZfVVNCX0hTSUNf Q1RSTF9PRkZTRVQNCj4gKwkJCSsgKGRhdGEtPmluZGV4IC0gMikgKiA0KTsNCj4gKwl9DQo+ICsN Cj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdXNibWlzYy0+bG9jaywgZmxhZ3MpOw0KPiAg IA0KPiAgIAl1c2JtaXNjX2lteDZxX3NldF93YWtldXAoZGF0YSwgZmFsc2UpOw0KPiBAQCAtMzYw LDYgKzM4OCw2OSBAQCBzdGF0aWMgaW50IHVzYm1pc2NfaW14NnFfaW5pdChzdHJ1Y3QgaW14X3Vz Ym1pc2NfZGF0YSAqZGF0YSkNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiAgIA0KPiArc3RhdGlj IGludCB1c2JtaXNjX2lteDZfaHNpY19zZXRfY29ubmVjdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0 YSAqZGF0YSkNCj4gK3sNCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiArCXUzMiB2YWwsIG9m ZnNldDsNCj4gKwlzdHJ1Y3QgaW14X3VzYm1pc2MgKnVzYm1pc2MgPSBkZXZfZ2V0X2RydmRhdGEo ZGF0YS0+ZGV2KTsNCj4gKwlpbnQgcmV0ID0gMDsNCj4gKw0KPiArCXNwaW5fbG9ja19pcnFzYXZl KCZ1c2JtaXNjLT5sb2NrLCBmbGFncyk7DQo+ICsJaWYgKGRhdGEtPmluZGV4ID09IDIgfHwgZGF0 YS0+aW5kZXggPT0gMykgew0KPiArCQlvZmZzZXQgPSAoZGF0YS0+aW5kZXggLSAyKSAqIDQ7DQo+ ICsJfSBlbHNlIGlmIChkYXRhLT5pbmRleCA9PSAwKSB7DQo+ICsJCS8qDQo+ICsJCSAqIEZvciBT b0NzIGxpa2UgaS5NWDdEIGFuZCBsYXRlciwgZWFjaCBVU0IgY29udHJvbGxlciBoYXMNCj4gKwkJ ICogaXRzIG93biBub24tY29yZSByZWdpc3RlciByZWdpb24uIEZvciBTb0NzIGJlZm9yZSBpLk1Y N0QsDQo+ICsJCSAqIHRoZSBmaXJzdCBVU0IgY29udHJvbGxlciBpcyBub24tSFNJQyBjb250cm9s bGVyLg0KPiArCQkgKi8NCj4gKwkJb2Zmc2V0ID0gMDsNCj4gKwl9IGVsc2Ugew0KPiArCQlkZXZf ZXJyKGRhdGEtPmRldiwgImluZGV4IGlzIGVycm9yIGZvciB1c2JtaXNjXG4iKTsNCj4gKwkJb2Zm c2V0ID0gMDsNCj4gKwkJcmV0ID0gLUVJTlZBTDsNCj4gKwl9DQoNCk1heWJlIHlvdSBjb3VsZCBt b3ZlIHRoZSBjb2RlIGFib3ZlIHRvIGEgZnVuY3Rpb24gDQp1c2JtaXNjX2lteDZfaHNpY19nZXRf cmVnX29mZnNldChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSksIHRoYXQgDQpyZXR1cm5z IHRoZSBvZmZzZXQgdmFsdWUuLi4NCg0KPiArDQo+ICsJdmFsID0gcmVhZGwodXNibWlzYy0+YmFz ZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVCArIG9mZnNldCk7DQo+ICsJaWYgKCEodmFsICYg TVg2X0JNX0hTSUNfREVWX0NPTk4pKQ0KPiArCQl3cml0ZWwodmFsIHwgTVg2X0JNX0hTSUNfREVW X0NPTk4sDQo+ICsJCQl1c2JtaXNjLT5iYXNlICsgTVg2X1VTQl9IU0lDX0NUUkxfT0ZGU0VUICsg b2Zmc2V0KTsNCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1c2JtaXNjLT5sb2NrLCBmbGFn cyk7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHVzYm1p c2NfaW14Nl9oc2ljX3NldF9jbGsoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wg b24pDQo+ICt7DQo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gKwl1MzIgdmFsLCBvZmZzZXQ7 DQo+ICsJc3RydWN0IGlteF91c2JtaXNjICp1c2JtaXNjID0gZGV2X2dldF9kcnZkYXRhKGRhdGEt PmRldik7DQo+ICsJaW50IHJldCA9IDA7DQo+ICsNCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdXNi bWlzYy0+bG9jaywgZmxhZ3MpOw0KPiArCWlmIChkYXRhLT5pbmRleCA9PSAyIHx8IGRhdGEtPmlu ZGV4ID09IDMpIHsNCj4gKwkJb2Zmc2V0ID0gKGRhdGEtPmluZGV4IC0gMikgKiA0Ow0KPiArCX0g ZWxzZSBpZiAoZGF0YS0+aW5kZXggPT0gMCkgew0KPiArCQlvZmZzZXQgPSAwOw0KPiArCX0gZWxz ZSB7DQo+ICsJCWRldl9lcnIoZGF0YS0+ZGV2LCAiaW5kZXggaXMgZXJyb3IgZm9yIHVzYm1pc2Nc biIpOw0KPiArCQlvZmZzZXQgPSAwOw0KPiArCQlyZXQgPSAtRUlOVkFMOw0KPiArCX0NCg0KLi4u YW5kIHVzZSB0aGUgcHJvcG9zZWQgZnVuY3Rpb24gdXNibWlzY19pbXg2X2hzaWNfZ2V0X3JlZ19v ZmZzZXQoKSANCmhlcmUsIHRvby4NCg0KPiArDQo+ICsJdmFsID0gcmVhZGwodXNibWlzYy0+YmFz ZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVCArIG9mZnNldCk7DQo+ICsJdmFsIHw9IE1YNl9C TV9IU0lDX0VOIHwgTVg2X0JNX0hTSUNfQ0xLX09OOw0KPiArCWlmIChvbikNCj4gKwkJdmFsIHw9 IE1YNl9CTV9IU0lDX0NMS19PTjsNCj4gKwllbHNlDQo+ICsJCXZhbCAmPSB+TVg2X0JNX0hTSUNf Q0xLX09OOw0KPiArCXdyaXRlbCh2YWwsIHVzYm1pc2MtPmJhc2UgKyBNWDZfVVNCX0hTSUNfQ1RS TF9PRkZTRVQgKyBvZmZzZXQpOw0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2Mt PmxvY2ssIGZsYWdzKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsNCj4gICBz dGF0aWMgaW50IHVzYm1pc2NfaW14NnN4X2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRh dGEpDQo+ICAgew0KPiAgIAl2b2lkIF9faW9tZW0gKnJlZyA9IE5VTEw7DQo+IEBAIC0zODUsNiAr NDc2LDEzIEBAIHN0YXRpYyBpbnQgdXNibWlzY19pbXg2c3hfaW5pdChzdHJ1Y3QgaW14X3VzYm1p c2NfZGF0YSAqZGF0YSkNCj4gICAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2MtPmxv Y2ssIGZsYWdzKTsNCj4gICAJfQ0KPiAgIA0KPiArCS8qIEZvciBIU0lDIGNvbnRyb2xsZXIgKi8N Cj4gKwlpZiAoZGF0YS0+aHNpYykgew0KPiArCQl2YWwgPSByZWFkbCh1c2JtaXNjLT5iYXNlICsg TVg2X1VTQl9IU0lDX0NUUkxfT0ZGU0VUKTsNCj4gKwkJdmFsIHw9IE1YNlNYX0JNX0hTSUNfQVVU T19SRVNVTUU7DQo+ICsJCXdyaXRlbCh2YWwsIHVzYm1pc2MtPmJhc2UgKyBNWDZfVVNCX0hTSUNf Q1RSTF9PRkZTRVQpOw0KPiArCX0NCj4gKw0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+ IEBAIC00NTQsNiArNTUyLDcgQEAgc3RhdGljIGludCB1c2JtaXNjX2lteDdkX2luaXQoc3RydWN0 IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpDQo+ICAgCXJlZyAmPSB+TVg3RF9VU0JfVkJVU19XQUtF VVBfU09VUkNFX01BU0s7DQo+ICAgCXdyaXRlbChyZWcgfCBNWDdEX1VTQl9WQlVTX1dBS0VVUF9T T1VSQ0VfQlZBTElELA0KPiAgIAkJIHVzYm1pc2MtPmJhc2UgKyBNWDdEX1VTQk5DX1VTQl9DVFJM Mik7DQo+ICsNCj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdXNibWlzYy0+bG9jaywgZmxh Z3MpOw0KPiAgIA0KPiAgIAl1c2JtaXNjX2lteDdkX3NldF93YWtldXAoZGF0YSwgZmFsc2UpOw0K PiBAQCAtNDgxLDYgKzU4MCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNibWlzY19vcHMgaW14 NTNfdXNibWlzY19vcHMgPSB7DQo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JtaXNjX29wcyBp bXg2cV91c2JtaXNjX29wcyA9IHsNCj4gICAJLnNldF93YWtldXAgPSB1c2JtaXNjX2lteDZxX3Nl dF93YWtldXAsDQo+ICAgCS5pbml0ID0gdXNibWlzY19pbXg2cV9pbml0LA0KPiArCS5oc2ljX3Nl dF9jb25uZWN0ID0gdXNibWlzY19pbXg2X2hzaWNfc2V0X2Nvbm5lY3QsDQo+ICsJLmhzaWNfc2V0 X2NsayAgID0gdXNibWlzY19pbXg2X2hzaWNfc2V0X2NsaywNCj4gICB9Ow0KPiAgIA0KPiAgIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdXNibWlzY19vcHMgdmY2MTBfdXNibWlzY19vcHMgPSB7DQo+IEBA IC00OTAsNiArNTkxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JtaXNjX29wcyB2ZjYxMF91 c2JtaXNjX29wcyA9IHsNCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYm1pc2Nfb3BzIGlteDZz eF91c2JtaXNjX29wcyA9IHsNCj4gICAJLnNldF93YWtldXAgPSB1c2JtaXNjX2lteDZxX3NldF93 YWtldXAsDQo+ICAgCS5pbml0ID0gdXNibWlzY19pbXg2c3hfaW5pdCwNCj4gKwkuaHNpY19zZXRf Y29ubmVjdCA9IHVzYm1pc2NfaW14Nl9oc2ljX3NldF9jb25uZWN0LA0KPiArCS5oc2ljX3NldF9j bGsgPSB1c2JtaXNjX2lteDZfaHNpY19zZXRfY2xrLA0KPiAgIH07DQo+ICAgDQo+ICAgc3RhdGlj IGNvbnN0IHN0cnVjdCB1c2JtaXNjX29wcyBpbXg3ZF91c2JtaXNjX29wcyA9IHsNCj4gQEAgLTU0 Niw2ICs2NDksMzMgQEAgaW50IGlteF91c2JtaXNjX3NldF93YWtldXAoc3RydWN0IGlteF91c2Jt aXNjX2RhdGEgKmRhdGEsIGJvb2wgZW5hYmxlZCkNCj4gICB9DQo+ICAgRVhQT1JUX1NZTUJPTF9H UEwoaW14X3VzYm1pc2Nfc2V0X3dha2V1cCk7DQo+ICAgDQo+ICtpbnQgaW14X3VzYm1pc2NfaHNp Y19zZXRfY29ubmVjdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSkNCj4gK3sNCj4gKwlz dHJ1Y3QgaW14X3VzYm1pc2MgKnVzYm1pc2M7DQo+ICsNCj4gKwlpZiAoIWRhdGEpDQo+ICsJCXJl dHVybiAwOw0KPiArDQo+ICsJdXNibWlzYyA9IGRldl9nZXRfZHJ2ZGF0YShkYXRhLT5kZXYpOw0K PiArCWlmICghdXNibWlzYy0+b3BzLT5oc2ljX3NldF9jb25uZWN0IHx8ICFkYXRhLT5oc2ljKQ0K PiArCQlyZXR1cm4gMDsNCj4gKwlyZXR1cm4gdXNibWlzYy0+b3BzLT5oc2ljX3NldF9jb25uZWN0 KGRhdGEpOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwoaW14X3VzYm1pc2NfaHNpY19zZXRf Y29ubmVjdCk7DQo+ICsNCj4gK2ludCBpbXhfdXNibWlzY19oc2ljX3NldF9jbGsoc3RydWN0IGlt eF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wgb24pDQo+ICt7DQo+ICsJc3RydWN0IGlteF91c2Jt aXNjICp1c2JtaXNjOw0KPiArDQo+ICsJaWYgKCFkYXRhKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0K PiArCXVzYm1pc2MgPSBkZXZfZ2V0X2RydmRhdGEoZGF0YS0+ZGV2KTsNCj4gKwlpZiAoIXVzYm1p c2MtPm9wcy0+aHNpY19zZXRfY2xrIHx8ICFkYXRhLT5oc2ljKQ0KPiArCQlyZXR1cm4gMDsNCj4g KwlyZXR1cm4gdXNibWlzYy0+b3BzLT5oc2ljX3NldF9jbGsoZGF0YSwgb24pOw0KPiArfQ0KPiAr RVhQT1JUX1NZTUJPTF9HUEwoaW14X3VzYm1pc2NfaHNpY19zZXRfY2xrKTsNCj4gICBzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB1c2JtaXNjX2lteF9kdF9pZHNbXSA9IHsNCj4gICAJ ew0KPiAgIAkJLmNvbXBhdGlibGUgPSAiZnNsLGlteDI1LXVzYm1pc2MiLA0KPgo=