Re: [PATCH v10 13/26] scsi: ufs: mediatek: Use the common PHY framework

Chaotian Jing (井朝天) <[email protected]> Fri, 31 Jul 2026 05:51:17 +0000
Newsgroups org.kernel.vger.linux-scsi,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.infradead.lists.linux-phy,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
T24gVGh1LCAyMDI2LTA3LTMwIGF0IDExOjQ5ICswMjAwLCBMb3Vpcy1BbGV4aXMgRXlyYXVkIHdy
b3RlOg0KPiBGcm9tOiBOaWNvbGFzIEZyYXR0YXJvbGkgPG5pY29sYXMuZnJhdHRhcm9saUBjb2xs
YWJvcmEuY29tPg0KPiANCj4gVGhlcmUgaXMgbm8gbmVlZCB0byByZWludmVudCB0aGUgUEhZIGZy
YW1ld29yaywgZXNwZWNpYWxseSBub3QgaXRzIE9GDQo+IHBhcnNpbmcuDQo+IA0KPiBDaGFuZ2Ug
dGhlIGNvZGUgdG8gc2ltcGx5IHVzZSB0aGUgUEhZIGZyYW1ld29yayB0byBhY3F1aXJlIHRoZQ0K
PiBkZXZpY2Uncw0KPiBQSFkgaW4gdGhlIHVmc2hjZCBpbml0LCBzbyB0aGF0IGl0J3MgZGV2aWNl
IGxpbmtlZCB0byB0aGUgcmlnaHQNCj4gZGV2aWNlLg0KPiANClJldmlld2VkLWJ5OiBDaGFvdGlh
biBKaW5nIDxjaGFvdGlhbi5qaW5nQG1lZGlhdGVrLmNvbT4NCj4gUmV2aWV3ZWQtYnk6IEFuZ2Vs
b0dpb2FjY2hpbm8gRGVsIFJlZ25vIDwNCj4gYW5nZWxvZ2lvYWNjaGluby5kZWxyZWdub0Bjb2xs
YWJvcmEuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEZyYXR0YXJvbGkgPG5pY29sYXMu
ZnJhdHRhcm9saUBjb2xsYWJvcmEuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBMb3Vpcy1BbGV4aXMg
RXlyYXVkIDxsb3Vpc2FsZXhpcy5leXJhdWRAY29sbGFib3JhLmNvbT4NCj4gLS0tDQo+ICBkcml2
ZXJzL3Vmcy9ob3N0L3Vmcy1tZWRpYXRlay5jIHwgMTM0ICsrKysrKysrKysrKystLS0tLS0tLS0t
LS0tLS0tLQ0KPiAtLS0tLS0tLS0tDQo+ICBkcml2ZXJzL3Vmcy9ob3N0L3Vmcy1tZWRpYXRlay5o
IHwgICAxIC0NCj4gIDIgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgOTMgZGVsZXRp
b25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91ZnMvaG9zdC91ZnMtbWVkaWF0ZWsu
YyBiL2RyaXZlcnMvdWZzL2hvc3QvdWZzLQ0KPiBtZWRpYXRlay5jDQo+IGluZGV4IGU1NTI3OTY5
YTVlNi4uMzg1ZjAxODBiMjMwIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3Vmcy9ob3N0L3Vmcy1t
ZWRpYXRlay5jDQo+ICsrKyBiL2RyaXZlcnMvdWZzL2hvc3QvdWZzLW1lZGlhdGVrLmMNCj4gQEAg
LTI5Myw0NCArMjkzLDYgQEAgc3RhdGljIGludCB1ZnNfbXRrX2hjZV9lbmFibGVfbm90aWZ5KHN0
cnVjdA0KPiB1ZnNfaGJhICpoYmEsDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+ICANCj4gLXN0YXRp
YyBpbnQgdWZzX210a19iaW5kX21waHkoc3RydWN0IHVmc19oYmEgKmhiYSkNCj4gLXsNCj4gLQlz
dHJ1Y3QgdWZzX210a19ob3N0ICpob3N0ID0gdWZzaGNkX2dldF92YXJpYW50KGhiYSk7DQo+IC0J
c3RydWN0IGRldmljZSAqZGV2ID0gaGJhLT5kZXY7DQo+IC0Jc3RydWN0IGRldmljZV9ub2RlICpu
cCA9IGRldi0+b2Zfbm9kZTsNCj4gLQlpbnQgZXJyID0gMDsNCj4gLQ0KPiAtCWhvc3QtPm1waHkg
PSBkZXZtX29mX3BoeV9nZXRfYnlfaW5kZXgoZGV2LCBucCwgMCk7DQo+IC0NCj4gLQlpZiAoaG9z
dC0+bXBoeSA9PSBFUlJfUFRSKC1FUFJPQkVfREVGRVIpKSB7DQo+IC0JCS8qDQo+IC0JCSAqIFVG
UyBkcml2ZXIgbWlnaHQgYmUgcHJvYmVkIGJlZm9yZSB0aGUgcGh5IGRyaXZlcg0KPiBkb2VzLg0K
PiAtCQkgKiBJbiB0aGF0IGNhc2Ugd2Ugd291bGQgbGlrZSB0byByZXR1cm4gRVBST0JFX0RFRkVS
DQo+IGNvZGUuDQo+IC0JCSAqLw0KPiAtCQllcnIgPSAtRVBST0JFX0RFRkVSOw0KPiAtCQlkZXZf
aW5mbyhkZXYsDQo+IC0JCQkgIiVzOiByZXF1aXJlZCBwaHkgaGFzbid0IHByb2JlZCB5ZXQuIGVy
ciA9DQo+ICVkXG4iLA0KPiAtCQkJX19mdW5jX18sIGVycik7DQo+IC0JfSBlbHNlIGlmIChJU19F
UlIoaG9zdC0+bXBoeSkpIHsNCj4gLQkJZXJyID0gUFRSX0VSUihob3N0LT5tcGh5KTsNCj4gLQkJ
aWYgKGVyciAhPSAtRU5PREVWKSB7DQo+IC0JCQlkZXZfaW5mbyhkZXYsICIlczogUEhZIGdldCBm
YWlsZWQgJWRcbiIsDQo+IF9fZnVuY19fLA0KPiAtCQkJCSBlcnIpOw0KPiAtCQl9DQo+IC0JfQ0K
PiAtDQo+IC0JaWYgKGVycikNCj4gLQkJaG9zdC0+bXBoeSA9IE5VTEw7DQo+IC0JLyoNCj4gLQkg
KiBBbGxvdyB1bmJvdW5kIG1waHkgYmVjYXVzZSBub3QgZXZlcnkgcGxhdGZvcm0gbmVlZHMgc3Bl
Y2lmaWMNCj4gLQkgKiBtcGh5IGNvbnRyb2wuDQo+IC0JICovDQo+IC0JaWYgKGVyciA9PSAtRU5P
REVWKQ0KPiAtCQllcnIgPSAwOw0KPiAtDQo+IC0JcmV0dXJuIGVycjsNCj4gLX0NCj4gLQ0KPiAg
c3RhdGljIGludCB1ZnNfbXRrX3NldHVwX3JlZl9jbGsoc3RydWN0IHVmc19oYmEgKmhiYSwgYm9v
bCBvbikNCj4gIHsNCj4gIAlzdHJ1Y3QgdWZzX210a19ob3N0ICpob3N0ID0gdWZzaGNkX2dldF92
YXJpYW50KGhiYSk7DQo+IEBAIC0xMTg1LDEzICsxMTQ3LDIxIEBAIHN0YXRpYyBpbnQgdWZzX210
a19pbml0KHN0cnVjdCB1ZnNfaGJhICpoYmEpDQo+ICANCj4gIAl1ZnNfbXRrX2luaXRfbWNxX2ly
cShoYmEpOw0KPiAgDQo+IC0JZXJyID0gdWZzX210a19iaW5kX21waHkoaGJhKTsNCj4gLQlpZiAo
ZXJyKQ0KPiArCWhvc3QtPm1waHkgPSBkZXZtX3BoeV9nZXQoZGV2LCBOVUxMKTsNCj4gKwlpZiAo
SVNfRVJSKGhvc3QtPm1waHkpKSB7DQo+ICsJCWVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJf
RVJSKGhvc3QtPm1waHkpLCAiRmFpbGVkDQo+IHRvIGdldCBQSFlcbiIpOw0KPiArCQlnb3RvIG91
dF92YXJpYW50X2NsZWFyOw0KPiArCX0NCj4gKw0KPiArCWVyciA9IHBoeV9pbml0KGhvc3QtPm1w
aHkpOw0KPiArCWlmIChlcnIpIHsNCj4gKwkJZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgIkZhaWxl
ZCB0byBpbml0aWFsaXplIFBIWVxuIik7DQo+ICAJCWdvdG8gb3V0X3ZhcmlhbnRfY2xlYXI7DQo+
ICsJfQ0KPiAgDQo+ICAJZXJyID0gdWZzX210a19pbml0X3Jlc2V0KGhiYSk7DQo+ICAJaWYgKGVy
cikNCj4gLQkJZ290byBvdXRfdmFyaWFudF9jbGVhcjsNCj4gKwkJZ290byBvdXRfcGh5X2V4aXQ7
DQo+ICANCj4gIAkvKiBFbmFibGUgcnVudGltZSBhdXRvc3VzcGVuZCAqLw0KPiAgCWhiYS0+Y2Fw
cyB8PSBVRlNIQ0RfQ0FQX1JQTV9BVVRPU1VTUEVORDsNCj4gQEAgLTEyMzAsNyArMTIwMCw3IEBA
IHN0YXRpYyBpbnQgdWZzX210a19pbml0KHN0cnVjdCB1ZnNfaGJhICpoYmEpDQo+ICANCj4gIAll
cnIgPSB1ZnNfbXRrX2dldF9zdXBwbGllcyhob3N0KTsNCj4gIAlpZiAoZXJyKQ0KPiAtCQlnb3Rv
IG91dF92YXJpYW50X2NsZWFyOw0KPiArCQlnb3RvIG91dF9waHlfZXhpdDsNCj4gIA0KPiAgCS8q
DQo+ICAJICogdWZzaGNkX3ZvcHNfaW5pdCgpIGlzIGludm9rZWQgYWZ0ZXINCj4gQEAgLTEyNTUs
MTEgKzEyMjUsMjIgQEAgc3RhdGljIGludCB1ZnNfbXRrX2luaXQoc3RydWN0IHVmc19oYmEgKmhi
YSkNCj4gIA0KPiAgCXJldHVybiAwOw0KPiAgDQo+ICtvdXRfcGh5X2V4aXQ6DQo+ICsJcGh5X2V4
aXQoaG9zdC0+bXBoeSk7DQo+ICBvdXRfdmFyaWFudF9jbGVhcjoNCj4gIAl1ZnNoY2Rfc2V0X3Zh
cmlhbnQoaGJhLCBOVUxMKTsNCj4gIAlyZXR1cm4gZXJyOw0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMg
dm9pZCB1ZnNfbXRrX2V4aXQoc3RydWN0IHVmc19oYmEgKmhiYSkNCj4gK3sNCj4gKwlzdHJ1Y3Qg
dWZzX210a19ob3N0ICpob3N0ID0gdWZzaGNkX2dldF92YXJpYW50KGhiYSk7DQo+ICsNCj4gKwl1
ZnNfbXRrX21waHlfcG93ZXJfb24oaGJhLCBmYWxzZSk7DQo+ICsNCj4gKwlwaHlfZXhpdChob3N0
LT5tcGh5KTsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGludCB1ZnNfbXRrX25lZ290aWF0ZV9wd3Jf
bW9kZShzdHJ1Y3QgdWZzX2hiYSAqaGJhLA0KPiAgCQkJCSAgICAgIGNvbnN0IHN0cnVjdCB1ZnNf
cGFfbGF5ZXJfYXR0cg0KPiAqZGV2X21heF9wYXJhbXMsDQo+ICAJCQkJICAgICAgc3RydWN0IHVm
c19wYV9sYXllcl9hdHRyDQo+ICpkZXZfcmVxX3BhcmFtcykNCj4gQEAgLTIyNzIsNiArMjI1Myw3
IEBAIHN0YXRpYyB2b2lkIHVmc19tdGtfY29uZmlnX3Njc2lfZGV2KHN0cnVjdA0KPiBzY3NpX2Rl
dmljZSAqc2RldikNCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdWZzX2hiYV92YXJpYW50X29wcyB1
ZnNfaGJhX210a192b3BzID0gew0KPiAgCS5uYW1lICAgICAgICAgICAgICAgID0gIm1lZGlhdGVr
LnVmc2hjaSIsDQo+ICAJLmluaXQgICAgICAgICAgICAgICAgPSB1ZnNfbXRrX2luaXQsDQo+ICsJ
LmV4aXQgICAgICAgICAgICAgICAgPSB1ZnNfbXRrX2V4aXQsDQo+ICAJLmdldF91ZnNfaGNpX3Zl
cnNpb24gPSB1ZnNfbXRrX2dldF91ZnNfaGNpX3ZlcnNpb24sDQo+ICAJLnNldHVwX2Nsb2NrcyAg
ICAgICAgPSB1ZnNfbXRrX3NldHVwX2Nsb2NrcywNCj4gIAkuaGNlX2VuYWJsZV9ub3RpZnkgICA9
IHVmc19tdGtfaGNlX2VuYWJsZV9ub3RpZnksDQo+IEBAIC0yMzMyLDQ4ICsyMzE0LDE1IEBAIE1P
RFVMRV9ERVZJQ0VfVEFCTEUob2YsIHVmc19tdGtfb2ZfbWF0Y2gpOw0KPiAgICovDQo+ICBzdGF0
aWMgaW50IHVmc19tdGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIHsN
Cj4gLQlpbnQgZXJyOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICAJ
c3RydWN0IHVmc19oYmEgKmhiYTsNCj4gLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwaHlfcGRl
diA9IE5VTEw7DQo+IC0Jc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldiwgKnBoeV9kZXYg
PSBOVUxMOw0KPiAtCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X25vZGUgPSBOVUxMOw0KPiAtCXN0
cnVjdCB1ZnNfbXRrX2hvc3QgKmhvc3Q7DQo+IC0NCj4gLQkvKiBmaW5kIHBoeSBub2RlICovDQo+
IC0JcGh5X25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKGRldi0+b2Zfbm9kZSwgInBoeXMiLCAwKTsN
Cj4gLQ0KPiAtCWlmIChwaHlfbm9kZSkgew0KPiAtCQlwaHlfcGRldiA9IG9mX2ZpbmRfZGV2aWNl
X2J5X25vZGUocGh5X25vZGUpOw0KPiAtCQlpZiAoIXBoeV9wZGV2KQ0KPiAtCQkJZ290byBza2lw
X3BoeTsNCj4gLQkJcGh5X2RldiA9ICZwaHlfcGRldi0+ZGV2Ow0KPiAtDQo+IC0JCXBtX3J1bnRp
bWVfc2V0X2FjdGl2ZShwaHlfZGV2KTsNCj4gLQkJcG1fcnVudGltZV9lbmFibGUocGh5X2Rldik7
DQo+IC0JCXBtX3J1bnRpbWVfZ2V0X3N5bmMocGh5X2Rldik7DQo+IC0NCj4gLQkJcHV0X2Rldmlj
ZShwaHlfZGV2KTsNCj4gLQkJZGV2X2luZm8oZGV2LCAicGh5cyBub2RlIGZvdW5kXG4iKTsNCj4g
LQl9IGVsc2Ugew0KPiAtCQlkZXZfbm90aWNlKGRldiwgInBoeXMgbm9kZSBub3QgZm91bmRcbiIp
Ow0KPiAtCX0NCj4gKwlpbnQgcmV0Ow0KPiAgDQo+IC1za2lwX3BoeToNCj4gLQkvKiBwZXJmb3Jt
IGdlbmVyaWMgcHJvYmUgKi8NCj4gLQllcnIgPSB1ZnNoY2RfcGx0ZnJtX2luaXQocGRldiwgJnVm
c19oYmFfbXRrX3ZvcHMpOw0KPiAtCWlmIChlcnIpIHsNCj4gLQkJZGV2X2VycihkZXYsICJwcm9i
ZSBmYWlsZWQgJWRcbiIsIGVycik7DQo+IC0JCWdvdG8gb3V0Ow0KPiAtCX0NCj4gKwlyZXQgPSB1
ZnNoY2RfcGx0ZnJtX2luaXQocGRldiwgJnVmc19oYmFfbXRrX3ZvcHMpOw0KPiArCWlmIChyZXQp
DQo+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiR2VuZXJpYyBwbGF0Zm9ybSBw
cm9iZQ0KPiBmYWlsZWRcbiIpOw0KPiAgDQo+ICAJaGJhID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo
cGRldik7DQo+IC0JaWYgKCFoYmEpDQo+IC0JCWdvdG8gb3V0Ow0KPiAtDQo+IC0JaWYgKHBoeV9u
b2RlICYmIHBoeV9kZXYpIHsNCj4gLQkJaG9zdCA9IHVmc2hjZF9nZXRfdmFyaWFudChoYmEpOw0K
PiAtCQlob3N0LT5waHlfZGV2ID0gcGh5X2RldjsNCj4gLQl9DQo+ICANCj4gIAkvKg0KPiAgCSAq
IEJlY2F1c2UgdGhlIGRlZmF1bHQgcG93ZXIgc2V0dGluZyBvZiBWU3ggKHRoZSB1cHBlciBsYXll
ciBvZg0KPiBAQCAtMjM4MiwxNiArMjMzMSwxMiBAQCBzdGF0aWMgaW50IHVmc19tdGtfcHJvYmUo
c3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAkgKi8NCj4gIAl1ZnNfbXRrX2Rl
dl92cmVnX3NldF9scG0oaGJhLCBmYWxzZSk7DQo+ICANCj4gLW91dDoNCj4gLQlvZl9ub2RlX3B1
dChwaHlfbm9kZSk7DQo+IC0JcmV0dXJuIGVycjsNCj4gKwlyZXR1cm4gMDsNCj4gIH0NCj4gIA0K
PiAgLyoqDQo+ICAgKiB1ZnNfbXRrX3JlbW92ZSAtIHNldCBkcml2ZXJfZGF0YSBvZiB0aGUgZGV2
aWNlIHRvIE5VTEwNCj4gICAqIEBwZGV2OiBwb2ludGVyIHRvIHBsYXRmb3JtIGRldmljZSBoYW5k
bGUNCj4gLSAqDQo+IC0gKiBBbHdheXMgcmV0dXJuIDANCj4gICAqLw0KPiAgc3RhdGljIHZvaWQg
dWZzX210a19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIHsNCj4gQEAg
LTI0NDgsOSArMjM5Myw4IEBAIHN0YXRpYyBpbnQgdWZzX210a19zeXN0ZW1fcmVzdW1lKHN0cnVj
dCBkZXZpY2UNCj4gKmRldikNCj4gIHN0YXRpYyBpbnQgdWZzX210a19ydW50aW1lX3N1c3BlbmQo
c3RydWN0IGRldmljZSAqZGV2KQ0KPiAgew0KPiAgCXN0cnVjdCB1ZnNfaGJhICpoYmEgPSBkZXZf
Z2V0X2RydmRhdGEoZGV2KTsNCj4gLQlzdHJ1Y3QgdWZzX210a19ob3N0ICpob3N0ID0gdWZzaGNk
X2dldF92YXJpYW50KGhiYSk7DQo+ICAJc3RydWN0IGFybV9zbWNjY19yZXMgcmVzOw0KPiAtCWlu
dCByZXQgPSAwOw0KPiArCWludCByZXQ7DQo+ICANCj4gIAlyZXQgPSB1ZnNoY2RfcnVudGltZV9z
dXNwZW5kKGRldik7DQo+ICAJaWYgKHJldCkNCj4gQEAgLTI0NjEsOCArMjQwNSwxMSBAQCBzdGF0
aWMgaW50IHVmc19tdGtfcnVudGltZV9zdXNwZW5kKHN0cnVjdA0KPiBkZXZpY2UgKmRldikNCj4g
IAlpZiAodWZzX210a19pc19ydGZmX210Y21vcyhoYmEpKQ0KPiAgCQl1ZnNfbXRrX210Y21vc19j
dHJsKGZhbHNlLCByZXMpOw0KPiAgDQo+IC0JaWYgKGhvc3QtPnBoeV9kZXYpDQo+IC0JCXBtX3J1
bnRpbWVfcHV0X3N5bmMoaG9zdC0+cGh5X2Rldik7DQo+ICsJcmV0ID0gdWZzX210a19tcGh5X3Bv
d2VyX29uKGhiYSwgZmFsc2UpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2VycihkZXYsICJG
YWlsZWQgdG8gcG93ZXIgb2ZmIFBIWTogJXBlXG4iLA0KPiBFUlJfUFRSKHJldCkpOw0KPiArCQly
ZXR1cm4gcmV0Ow0KPiArCX0NCj4gIA0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiBAQCAtMjQ3MCwx
NCArMjQxNywxNyBAQCBzdGF0aWMgaW50IHVmc19tdGtfcnVudGltZV9zdXNwZW5kKHN0cnVjdA0K
PiBkZXZpY2UgKmRldikNCj4gIHN0YXRpYyBpbnQgdWZzX210a19ydW50aW1lX3Jlc3VtZShzdHJ1
Y3QgZGV2aWNlICpkZXYpDQo+ICB7DQo+ICAJc3RydWN0IHVmc19oYmEgKmhiYSA9IGRldl9nZXRf
ZHJ2ZGF0YShkZXYpOw0KPiAtCXN0cnVjdCB1ZnNfbXRrX2hvc3QgKmhvc3QgPSB1ZnNoY2RfZ2V0
X3ZhcmlhbnQoaGJhKTsNCj4gIAlzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXM7DQo+ICsJaW50IHJl
dDsNCj4gIA0KPiAgCWlmICh1ZnNfbXRrX2lzX3J0ZmZfbXRjbW9zKGhiYSkpDQo+ICAJCXVmc19t
dGtfbXRjbW9zX2N0cmwodHJ1ZSwgcmVzKTsNCj4gIA0KPiAtCWlmIChob3N0LT5waHlfZGV2KQ0K
PiAtCQlwbV9ydW50aW1lX2dldF9zeW5jKGhvc3QtPnBoeV9kZXYpOw0KPiArCXJldCA9IHVmc19t
dGtfbXBoeV9wb3dlcl9vbihoYmEsIHRydWUpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2Vy
cihkZXYsICJGYWlsZWQgdG8gcG93ZXIgb24gUEhZOiAlcGVcbiIsDQo+IEVSUl9QVFIocmV0KSk7
DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiAgDQo+ICAJdWZzX210a19kZXZfdnJlZ19zZXRf
bHBtKGhiYSwgZmFsc2UpOw0KPiAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Vmcy9ob3N0L3Vm
cy1tZWRpYXRlay5oIGIvZHJpdmVycy91ZnMvaG9zdC91ZnMtDQo+IG1lZGlhdGVrLmgNCj4gaW5k
ZXggYzYzNzQwYjk4ZTg1Li44YjNjZDE3ZTYyMjcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvdWZz
L2hvc3QvdWZzLW1lZGlhdGVrLmgNCj4gKysrIGIvZHJpdmVycy91ZnMvaG9zdC91ZnMtbWVkaWF0
ZWsuaA0KPiBAQCAtMTk1LDcgKzE5NSw2IEBAIHN0cnVjdCB1ZnNfbXRrX2hvc3Qgew0KPiAgCWJv
b2wgaXNfbWNxX2ludHJfZW5hYmxlZDsNCj4gIAlpbnQgbWNxX25yX2ludHI7DQo+ICAJc3RydWN0
IHVmc19tdGtfbWNxX2ludHJfaW5mbyBtY3FfaW50cl9pbmZvW1VGU0hDRF9NQVhfUV9OUl07DQo+
IC0Jc3RydWN0IGRldmljZSAqcGh5X2RldjsNCj4gIH07DQo+ICANCj4gIC8qIE1USyBkZWxheSBv
ZiBhdXRvc3VzcGVuZDogNTAwIG1zICovDQo+IA0K