[PATCH v9 11/12] reset: zte: Add a zx297520v3 reset driver

Stefan Dösinger <[email protected]> Sun, 02 Aug 2026 23:33:43 +0300
Newsgroups org.infradead.lists.linux-phy,dev.linux.lists.mfd,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
VGhpcyBkcml2ZXMgdGhlIE1GRCBjaGlsZCBkZXZpY2VzIGNyZWF0ZWQgYnkgdGhlIHp0ZS16eDI5
NzUyMHYzLWNybQpkcml2ZXIuCgpSZXZpZXdlZC1ieTogUGhpbGlwcCBaYWJlbCA8cC56YWJlbEBw
ZW5ndXRyb25peC5kZT4KU2lnbmVkLW9mZi1ieTogU3RlZmFuIETDtnNpbmdlciA8c3RlZmFuZG9l
c2luZ2VyQGdtYWlsLmNvbT4KLS0tCgp2OToKUmVtb3ZlIEhTSUMgYW5kIFVTQiBQSFkgcmVzZXRz
LCB0aGUgcGh5IGRyaXZlciB3aWxsIGFjY2VzcyB0aGVtIHRocm91Z2gKdGhlIHNoYXJlZCByZWdt
YXAgZGlyZWN0bHkKU29ydCBpbmNsdWRlIGZpbGVzIGFscGhhYmV0aWNhbGx5CkRlcGVuZCBvbiBI
QVNfSU9NRU0gZHVlIHRvICJzZWxlY3QgTUZEX1NZU0NPTiIgKFNhc2hpa28pLiBUaGlzIGhhcyBz
b21lLApidXQgbm90IGNvbnNpc3RlbnQsIHByZWNlZGVudCBpbiB0aGUgc2FtZSBmaWxlCgp2ODog
U2VsZWN0IE1GRF9TWVNDT04gZm9yIENPTVBJTEVfVEVTVGluZyB0aGlzIGRyaXZlciB3aXRob3V0
IHRoZSBNRkQKcGFyZW50IGRyaXZlci4KCnY3OgpBZGQgTU9EVUxFX0RFVklDRV9UQUJMRSAoUGhp
bGlwcCkKQWRkIEREUiBjb250cm9sIGFuZCBMU1AgcmVzZXRzCgp2NjoKQWRkIGEgY29tbWVudCB3
cnQgY2hlY2tpbmcgYWxsIGJpdHMgaW4gLnN0YXR1cygpIChQaGlsaXBwKQppbmNsdWRlIGNsZWFu
dXAgKFBoaWxpcHAsIFNhc2hpa28pCgp2NToKTWFrZSB0b3AgYW5kIG1hdHJpeCBNRkQgY2hpbGRy
ZW4gaW5zdGVhZCBvZiBhdXggZGV2aWNlcwpTcGxpdCBVU0IgUEhZIHJlc2V0IGludG8gaXRzIG93
biByZXNldCBJRApSZW1vdmUgVVNCIHJlc2V0IHdhaXQgY29kZSAtIHRoaXMgd2lsbCBiZSBoYW5k
bGVkIHZpYSBzeXNjb24gZnJvbSBhCmZ1dHVyZSBtaW5pbWFsIHBoeS16eDI5LXVzYiBkcml2ZXIK
LS0tCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVy
cy9yZXNldC9LY29uZmlnICAgICAgICAgICAgICAgIHwgIDEzICsrCiBkcml2ZXJzL3Jlc2V0L01h
a2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9yZXNldC9yZXNldC16dGUtengy
OTc1MjB2My5jIHwgMjM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZp
bGVzIGNoYW5nZWQsIDI1MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMg
Yi9NQUlOVEFJTkVSUwppbmRleCA3N2ZhODZjNjcxYjguLmVhYjBjZGY4ZWZhYyAxMDA2NDQKLS0t
IGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTM5MTcsNiArMzkxNyw3IEBAIEY6
CWFyY2gvYXJtL2Jvb3QvZHRzL3p0ZS8KIEY6CWFyY2gvYXJtL21hY2gtenRlLwogRjoJZHJpdmVy
cy9jbGsvenRlLwogRjoJZHJpdmVycy9tZmQvenRlLXp4Mjk3NTIwdjMtY3JtLmMKK0Y6CWRyaXZl
cnMvcmVzZXQvcmVzZXQtenRlLXp4Mjk3NTIwdjMuYwogRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9j
bG9jay96dGUsengyOTc1MjB2My1jbGsuaAogRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9waHkvenRl
LHp4Mjk3NTIwdjMtdG9wY3JtLmgKIEY6CWluY2x1ZGUvZHQtYmluZGluZ3MvcmVzZXQvenRlLHp4
Mjk3NTIwdjMtcmVzZXQuaApkaWZmIC0tZ2l0IGEvZHJpdmVycy9yZXNldC9LY29uZmlnIGIvZHJp
dmVycy9yZXNldC9LY29uZmlnCmluZGV4IGQwMDllYjA4NDlhMy4uYjkyYmQwYzE2NTE3IDEwMDY0
NAotLS0gYS9kcml2ZXJzL3Jlc2V0L0tjb25maWcKKysrIGIvZHJpdmVycy9yZXNldC9LY29uZmln
CkBAIC00MDQsNiArNDA0LDE5IEBAIGNvbmZpZyBSRVNFVF9VTklQSElFUl9HTFVFCiAJICBvbiBV
bmlQaGllciBTb0NzLiBTYXkgWSBpZiB5b3Ugd2FudCB0byBjb250cm9sIHJlc2V0IHNpZ25hbHMK
IAkgIHByb3ZpZGVkIGJ5IHRoZSBnbHVlIGxheWVyLgogCitjb25maWcgUkVTRVRfWlRFX1pYMjk3
NTIwVjMKKwl0cmlzdGF0ZSAiWlRFIHp4Mjk3NTIwdjMgUmVzZXQgRHJpdmVyIgorCWRlcGVuZHMg
b24gSEFTX0lPTUVNCisJZGVwZW5kcyBvbiBNRkRfWlRFX1pYMjk3NTIwVjNfQ1JNIHx8IENPTVBJ
TEVfVEVTVAorCWRlZmF1bHQgU09DX1pYMjk3NTIwVjMKKwlzZWxlY3QgTUZEX1NZU0NPTgorCWhl
bHAKKwkgIFRoaXMgZW5hYmxlcyB0aGUgcmVzZXQgY29udHJvbGxlcnMgZm9yIFpURSB6eDI5NzUy
MHYzIFNvQ3MuIFRoZSByZXNldAorCSAgY29udHJvbGxlcnMgYXJlIHJlcXVpcmVkIGZvciBib290
aW5nIHRoaXMgYm9hcmQgYW5kIGFyZSBwYXJ0IG9mIHRoZQorCSAgY2xvY2sgYW5kIHJlc2V0IG1h
bmFnZW1lbnQgY29udHJvbGxlcnMgb24gdGhpcyBib2FyZCwgc28geW91IHdpbGwgYWxzbworCSAg
bmVlZCBNRkRfWlRFX1pYMjk3NTIwVjNfQ1JNLiBFbmFibGUgdGhpcyBpZiB5b3UgYXJlIGJ1aWxk
aW5nIGEga2VybmVsCisJICBmb3IgYSBaVEUgengyOTc1MjB2MyBiYXNlZCBib2FyZC4KKwogY29u
ZmlnIFJFU0VUX1pZTlEKIAlib29sICJaWU5RIFJlc2V0IERyaXZlciIgaWYgQ09NUElMRV9URVNU
CiAJZGVmYXVsdCBBUkNIX1pZTlEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmVzZXQvTWFrZWZpbGUg
Yi9kcml2ZXJzL3Jlc2V0L01ha2VmaWxlCmluZGV4IDNlNTI1NjliZDI3Ni4uOWE4YTQ4ZDQ0ZGM0
IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Jlc2V0L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcmVzZXQv
TWFrZWZpbGUKQEAgLTUwLDUgKzUwLDYgQEAgb2JqLSQoQ09ORklHX1JFU0VUX1RJX1RQUzM4MFgp
ICs9IHJlc2V0LXRwczM4MHgubwogb2JqLSQoQ09ORklHX1JFU0VUX1RONDhNX0NQTEQpICs9IHJl
c2V0LXRuNDhtLm8KIG9iai0kKENPTkZJR19SRVNFVF9VTklQSElFUikgKz0gcmVzZXQtdW5pcGhp
ZXIubwogb2JqLSQoQ09ORklHX1JFU0VUX1VOSVBISUVSX0dMVUUpICs9IHJlc2V0LXVuaXBoaWVy
LWdsdWUubworb2JqLSQoQ09ORklHX1JFU0VUX1pURV9aWDI5NzUyMFYzKSArPSByZXNldC16dGUt
engyOTc1MjB2My5vCiBvYmotJChDT05GSUdfUkVTRVRfWllOUSkgKz0gcmVzZXQtenlucS5vCiBv
YmotJChDT05GSUdfUkVTRVRfWllOUU1QKSArPSByZXNldC16eW5xbXAubwpkaWZmIC0tZ2l0IGEv
ZHJpdmVycy9yZXNldC9yZXNldC16dGUtengyOTc1MjB2My5jIGIvZHJpdmVycy9yZXNldC9yZXNl
dC16dGUtengyOTc1MjB2My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uYmMyODAxZDQzZDEwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9yZXNldC9yZXNldC16
dGUtengyOTc1MjB2My5jCkBAIC0wLDAgKzEsMjM2IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogQ29weXJpZ2h0IChDKSAyMDI2IFN0ZWZhbiBEw7Zz
aW5nZXIKKyAqLworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3Jlc2V0L3p0ZSx6eDI5NzUyMHYzLXJl
c2V0Lmg+CisKKyNpbmNsdWRlIDxsaW51eC9iaXRzLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+
CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+
CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2
aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvcmVzZXQt
Y29udHJvbGxlci5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKy8qIE1vc3QgZGV2aWNl
cyBvbiB0aGUgengyOTc1MjB2MyBTb0MgaGF2ZSBvbmUgcmVzZXQgYml0IHBlciBjbG9jayBsaW5l
LiBBcyBhIHJ1bGUgb2YgdGh1bWIsIHRoZQorICogbG93ZXIgYml0IGRpc2Nvbm5lY3RzIHRoZSBk
ZXZpY2UgZnJvbSB0aGUgYnVzLCBzaW1pbGFybHkgdG8gdHVybmluZyBvZmYgUENMSyAtIHJlZ2lz
dGVycyByZWFkIDAKKyAqIG9yIGhhbmcgaW5kZWZpbml0ZWx5LiBVbmxpa2UgUENMSywgdGhpcyBy
ZXNldCBtYXkgaGF2ZSBhIGxpbmdlcmluZyBlZmZlY3QgYWZ0ZXIgZGVhc3NlcnRpbmcuCisgKiBF
LmcuIHRpbWVycyB3aWxsIGJlIGRpc2FibGVkLCBidXQgcmV0YWluIHRoZWlyIGNvdW50ZXIgdmFs
dWUuCisgKgorICogVGhlIG90aGVyIGJpdCByZXNldHMgdGhlIGFjdHVhbCBkZXZpY2UgcmVnaXN0
ZXJzLgorICoKKyAqIEZvciBzb21lIGRldmljZXMsIGUuZy4gR01BQywgYm90aCByZXNldCBiaXRz
IGJlaGF2ZSBpbiB0aGUgc2FtZSB3YXk6IFRoZXkgZGlzY29ubmVjdCB0aGUgZGV2aWNlCisgKiBh
bmQgcmVnaXN0ZXJzIHdpbGwgaGF2ZSB0aGVpciBkZWZhdWx0IHN0YXRlIGFmdGVyIGRlYXNzZXJ0
aW5nLiBGb3IgZGV2aWNlcyB0aGF0IGhhdmUgdHdvIHJlc2V0CisgKiBiaXRzLCBib3RoIG5lZWQg
dG8gYmUgZGVhc3NlcnRlZCBmb3IgdGhlIGRldmljZSB0byBmdW5jdGlvbi4KKyAqLworc3RydWN0
IHp0ZV9yZXNldF9yZWcgeworCXUzMiBtYXNrOworCXUxNiByZWc7Cit9OworCitzdHJ1Y3QgenRl
X3Jlc2V0X2RhdGEgeworCWNvbnN0IHN0cnVjdCB6dGVfcmVzZXRfcmVnICpyZXNldHM7CisJdW5z
aWduZWQgaW50IG51bTsKK307CisKK3N0cnVjdCB6dGVfcmVzZXQgeworCXN0cnVjdCByZXNldF9j
b250cm9sbGVyX2RldiByY2RldjsKKwlzdHJ1Y3QgcmVnbWFwICptYXA7CisJY29uc3Qgc3RydWN0
IHp0ZV9yZXNldF9yZWcgKnJlc2V0czsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHp0ZV9y
ZXNldCAqdG9fenRlX3Jlc2V0KHN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiAqcmNkZXYpCit7
CisJcmV0dXJuIGNvbnRhaW5lcl9vZihyY2Rldiwgc3RydWN0IHp0ZV9yZXNldCwgcmNkZXYpOwor
fQorCitzdGF0aWMgaW50IHp4MjlfcnN0X2Fzc2VydChzdHJ1Y3QgcmVzZXRfY29udHJvbGxlcl9k
ZXYgKnJjZGV2LCB1bnNpZ25lZCBsb25nIGlkKQoreworCXN0cnVjdCB6dGVfcmVzZXQgKnJzdCA9
IHRvX3p0ZV9yZXNldChyY2Rldik7CisKKwlyZXR1cm4gcmVnbWFwX2NsZWFyX2JpdHMocnN0LT5t
YXAsIHJzdC0+cmVzZXRzW2lkXS5yZWcsIHJzdC0+cmVzZXRzW2lkXS5tYXNrKTsKK30KKworc3Rh
dGljIGludCB6eDI5X3JzdF9kZWFzc2VydChzdHJ1Y3QgcmVzZXRfY29udHJvbGxlcl9kZXYgKnJj
ZGV2LCB1bnNpZ25lZCBsb25nIGlkKQoreworCXN0cnVjdCB6dGVfcmVzZXQgKnJzdCA9IHRvX3p0
ZV9yZXNldChyY2Rldik7CisKKwlyZXR1cm4gcmVnbWFwX3NldF9iaXRzKHJzdC0+bWFwLCByc3Qt
PnJlc2V0c1tpZF0ucmVnLCByc3QtPnJlc2V0c1tpZF0ubWFzayk7Cit9CisKK3N0YXRpYyBpbnQg
engyOV9yc3Rfc3RhdHVzKHN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiAqcmNkZXYsIHVuc2ln
bmVkIGxvbmcgaWQpCit7CisJc3RydWN0IHp0ZV9yZXNldCAqcnN0ID0gdG9fenRlX3Jlc2V0KHJj
ZGV2KTsKKwlpbnQgcmVzOworCisJLyogRGV2aWNlcyB3aXRoIHR3byByZXNldCBiaXRzIG5lZWQg
Ym90aCBkZWFzc2VydGVkIHRvIHdvcmsuIFNvIG9ubHkgcmVwb3J0IHRoZW0gYXMKKwkgKiBkZWFz
c2VydGVkIGlmIGJvdGggYml0cyBhcmUgc2V0LgorCSAqCisJICogYXNzZXJ0KCkvZGVhc3NlcnQo
KSB3aWxsIGFsd2F5cyBjbGVhci9zZXQgYm90aC4gVGhlIG9ubHkgcmVhc29uIGEgZGV2aWNlIG1p
Z2h0IGJlIGluIGEKKwkgKiBoeWJyaWQgc3RhdGUgaXMgYW4gdW5leHBlY3RlZCBoYW5kb3ZlciBz
dGF0ZSBmcm9tIHRoZSBib290bG9hZGVyLgorCSAqLworCXJlcyA9IHJlZ21hcF90ZXN0X2JpdHMo
cnN0LT5tYXAsIHJzdC0+cmVzZXRzW2lkXS5yZWcsIHJzdC0+cmVzZXRzW2lkXS5tYXNrKTsKKwlp
ZiAocmVzIDwgMCkKKwkJcmV0dXJuIHJlczsKKworCXJldHVybiAhcmVzOworfQorCitzdGF0aWMg
Y29uc3Qgc3RydWN0IHJlc2V0X2NvbnRyb2xfb3BzIHp4MjlfcnN0X29wcyA9IHsKKwkuYXNzZXJ0
CQk9IHp4MjlfcnN0X2Fzc2VydCwKKwkuZGVhc3NlcnQJPSB6eDI5X3JzdF9kZWFzc2VydCwKKwku
c3RhdHVzCQk9IHp4MjlfcnN0X3N0YXR1cywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgenRl
X3Jlc2V0X3JlZyB6eDI5NzUyMHYzX3RvcF9yZXNldHNbXSA9IHsKKwkvKiBUaGlzIGJpdCBpcyBz
ZXQgYnkgWlRFJ3MgY3Brby5rbyBibG9iLCBpdCBsb29rcyBsaWtlIGEgcmVzZXQgYml0IGZvciB0
aGUgTFRFIERTUAorCSAqIGNvcHJvY2Vzc29yLiBDbG9ja3MgZm9yIGl0IGFyZSBpbiBtYXRyaXhj
cm0uCisJICovCisJW1pYMjk3NTIwVjNfWlNQX1JFU0VUXSAgICAgICA9IHsgLnJlZyA9IDB4MTNj
LCAubWFzayA9IEJJVCgwKSAgICAgICAgICAgIH0sCisKKwlbWlgyOTc1MjBWM19VQVJUMF9SRVNF
VF0gICAgID0geyAucmVnID0gIDB4NzgsIC5tYXNrID0gQklUKDYpICB8IEJJVCg3KSAgfSwKKwlb
WlgyOTc1MjBWM19JMkMwX1JFU0VUXSAgICAgID0geyAucmVnID0gIDB4NzQsIC5tYXNrID0gQklU
KDgpICB8IEJJVCg5KSAgfSwKKwkvKiBPbmx5IG9uZSByZXNldC4gQml0IDUgaXMgc2V0dGFibGUg
YnV0IGRvZXMgbm90IGRvIGFueXRoaW5nIG9ic2VydmFibGUgKi8KKwlbWlgyOTc1MjBWM19SVENf
UkVTRVRdICAgICAgID0geyAucmVnID0gIDB4NzQsIC5tYXNrID0gQklUKDQpICAgICAgICAgICAg
fSwKKwlbWlgyOTc1MjBWM19USU1FUl9UMDhfUkVTRVRdID0geyAucmVnID0gIDB4NzgsIC5tYXNr
ID0gQklUKDQpICB8IEJJVCg1KSAgfSwKKwlbWlgyOTc1MjBWM19USU1FUl9UMDlfUkVTRVRdID0g
eyAucmVnID0gIDB4NzgsIC5tYXNrID0gQklUKDIpICB8IEJJVCgzKSAgfSwKKwkvKiBPbmx5IG9u
ZSByZXNldC4gQml0IDAgaXMgc2V0dGFibGUgYnV0IGRvZXMgbm90IGRvIGFueXRoaW5nIG9ic2Vy
dmFibGUgKi8KKwlbWlgyOTc1MjBWM19QTU1fUkVTRVRdICAgICAgID0geyAucmVnID0gIDB4NzQs
IC5tYXNrID0gQklUKDEpICAgICAgICAgICAgfSwKKworCS8qIEkgaGF2ZW4ndCBmb3VuZCBhbnkg
Y2xvY2tzIGZvciBHUElPLiBJdCBwcm9iYWJseSB3b3VsZG4ndCBtYWtlIG11Y2gKKwkgKiBzZW5z
ZSBhbnl3YXkuIE9ubHkgb25lIHJlc2V0IGJpdCBwZXIgY29udHJvbGxlci4KKwkgKi8KKwlbWlgy
OTc1MjBWM19HUElPX1JFU0VUXSAgICAgID0geyAucmVnID0gIDB4NzQsIC5tYXNrID0gQklUKDMp
ICAgICAgICAgICAgfSwKKwlbWlgyOTc1MjBWM19HUElPOF9SRVNFVF0gICAgID0geyAucmVnID0g
IDB4NzQsIC5tYXNrID0gQklUKDIpICAgICAgICAgICAgfSwKKworCVtaWDI5NzUyMFYzX1RJTUVS
X1QxMl9SRVNFVF0gPSB7IC5yZWcgPSAgMHg3NCwgLm1hc2sgPSBCSVQoNikgIHwgQklUKDcpICB9
LAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxM19SRVNFVF0gPSB7IC5yZWcgPSAgMHg3YywgLm1hc2sg
PSBCSVQoMCkgIHwgQklUKDEpICB9LAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxNF9SRVNFVF0gPSB7
IC5yZWcgPSAgMHg3YywgLm1hc2sgPSBCSVQoMikgIHwgQklUKDMpICB9LAorCVtaWDI5NzUyMFYz
X1RJTUVSX1QxNV9SRVNFVF0gPSB7IC5yZWcgPSAgMHg3NCwgLm1hc2sgPSBCSVQoMTApIHwgQklU
KDExKSB9LAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxNl9SRVNFVF0gPSB7IC5yZWcgPSAgMHg3Yywg
Lm1hc2sgPSBCSVQoNCkgIHwgQklUKDUpICB9LAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxN19SRVNF
VF0gPSB7IC5yZWcgPSAweDEyYywgLm1hc2sgPSBCSVQoMCkgIHwgQklUKDEpICB9LAorCVtaWDI5
NzUyMFYzX1dEVF9UMThfUkVTRVRdICAgPSB7IC5yZWcgPSAgMHg3NCwgLm1hc2sgPSBCSVQoMTIp
IHwgQklUKDEzKSB9LAorCVtaWDI5NzUyMFYzX1VTSU0xX1JFU0VUXSAgICAgPSB7IC5yZWcgPSAg
MHg3NCwgLm1hc2sgPSBCSVQoMTQpIHwgQklUKDE1KSB9LAorCVtaWDI5NzUyMFYzX0FIQl9SRVNF
VF0gICAgICAgPSB7IC5yZWcgPSAgMHg3MCwgLm1hc2sgPSBCSVQoMCkgIHwgQklUKDEpICB9LAor
CisJLyogVVNCIHJlc2V0LiAweDg0IHJldHVybnMgdGhlIFVTQiBkZXZpY2Ugc3RhdHVzICgweDEg
Zm9yIEhTSUMgdXAsIDB4MiBmb3IgVVNCIHVwLCBidXQKKwkgKiBhbGwgMyBiaXRzIChQQ0xLLCBX
Q0xLLCBQSFkpIG5lZWQgdG8gYmUgZGVhc3NlcnRlZCBmb3IgdGhlIGRldmljZSB0byByZXBvcnQg
cmVhZHkuCisJICogVGh1cyBwb2xsaW5nIHRoZSBzdGF0dXMgaXMgdGhlIHJlc3BvbnNpYmlsaXR5
IG9mIHRoZSBVU0IgUEhZIGRyaXZlci4KKwkgKi8KKwlbWlgyOTc1MjBWM19VU0JfUkVTRVRdICAg
ICAgID0geyAucmVnID0gIDB4ODAsIC5tYXNrID0gQklUKDQpIHwgQklUKDUpICAgfSwKKwlbWlgy
OTc1MjBWM19IU0lDX1JFU0VUXSAgICAgID0geyAucmVnID0gIDB4ODAsIC5tYXNrID0gQklUKDEp
IHwgQklUKDIpICAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgenRlX3Jlc2V0X2RhdGEg
engyOTc1MjB2M190b3ByZXNldF9kYXRhID0geworCS5yZXNldHMgPSB6eDI5NzUyMHYzX3RvcF9y
ZXNldHMsCisJLm51bSA9IEFSUkFZX1NJWkUoengyOTc1MjB2M190b3BfcmVzZXRzKSwKK307CisK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgenRlX3Jlc2V0X3JlZyB6eDI5NzUyMHYzX21hdHJpeF9yZXNl
dHNbXSA9IHsKKwlbWlgyOTc1MjBWM19DUFVfUkVTRVRdICAgICAgID0geyAucmVnID0gIDB4Mjgs
IC5tYXNrID0gQklUKDEpICAgICAgICAgICAgfSwKKwlbWlgyOTc1MjBWM19ERFJfQ1RSTF9SRVNF
VF0gID0geyAucmVnID0gMHgxMDAsIC5tYXNrID0gQklUKDEwKSB8IEJJVCgxMSkgfSwKKwlbWlgy
OTc1MjBWM19FRENQX1JFU0VUXSAgICAgID0geyAucmVnID0gIDB4NjgsIC5tYXNrID0gQklUKDAp
ICAgICAgICAgICAgfSwKKwlbWlgyOTc1MjBWM19TRDBfUkVTRVRdICAgICAgID0geyAucmVnID0g
IDB4NTgsIC5tYXNrID0gQklUKDEpICAgICAgICAgICAgfSwKKwlbWlgyOTc1MjBWM19TRDFfUkVT
RVRdICAgICAgID0geyAucmVnID0gIDB4NTgsIC5tYXNrID0gQklUKDApICAgICAgICAgICAgfSwK
KwlbWlgyOTc1MjBWM19OQU5EX1JFU0VUXSAgICAgID0geyAucmVnID0gIDB4NTgsIC5tYXNrID0g
QklUKDQpICAgICAgICAgICAgfSwKKwlbWlgyOTc1MjBWM19QRENGR19SRVNFVF0gICAgID0geyAu
cmVnID0gIDB4OTQsIC5tYXNrID0gQklUKDIwKSAgICAgICAgICAgfSwKKwlbWlgyOTc1MjBWM19T
U0NfUkVTRVRdICAgICAgID0geyAucmVnID0gIDB4OTQsIC5tYXNrID0gQklUKDI0KSAgICAgICAg
ICAgfSwKKwlbWlgyOTc1MjBWM19HTUFDX1JFU0VUXSAgICAgID0geyAucmVnID0gMHgxMTQsIC5t
YXNrID0gQklUKDApICB8IEJJVCgxKSAgfSwKKwlbWlgyOTc1MjBWM19WT1VfUkVTRVRdICAgICAg
ID0geyAucmVnID0gMHgxNmMsIC5tYXNrID0gQklUKDApICAgICAgICAgICAgfSwKKwlbWlgyOTc1
MjBWM19MU1BfUkVTRVRdICAgICAgID0geyAucmVnID0gIDB4ODAsIC5tYXNrID0gQklUKDApICAg
ICAgICAgICAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgenRlX3Jlc2V0X2RhdGEgengy
OTc1MjB2M19tYXRyaXhyZXNldF9kYXRhID0geworCS5yZXNldHMgPSB6eDI5NzUyMHYzX21hdHJp
eF9yZXNldHMsCisJLm51bSA9IEFSUkFZX1NJWkUoengyOTc1MjB2M19tYXRyaXhfcmVzZXRzKSwK
K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgenRlX3Jlc2V0X3JlZyB6eDI5NzUyMHYzX2xzcF9y
ZXNldHNbXSA9IHsKKwlbWlgyOTc1MjBWM19USU1FUl9MMV9SRVNFVF0gID0geyAucmVnID0gMHgw
NCwgIC5tYXNrID0gQklUKDgpICB8IEJJVCg5KSAgfSwKKwlbWlgyOTc1MjBWM19XRFRfTDJfUkVT
RVRdICAgID0geyAucmVnID0gMHgwOCwgIC5tYXNrID0gQklUKDgpICB8IEJJVCg5KSAgfSwKKwlb
WlgyOTc1MjBWM19XRFRfTDNfUkVTRVRdICAgID0geyAucmVnID0gMHgwYywgIC5tYXNrID0gQklU
KDgpICB8IEJJVCg5KSAgfSwKKwlbWlgyOTc1MjBWM19QV01fUkVTRVRdICAgICAgID0geyAucmVn
ID0gMHgxMCwgIC5tYXNrID0gQklUKDgpICB8IEJJVCg5KSAgfSwKKwlbWlgyOTc1MjBWM19JMlMw
X1JFU0VUXSAgICAgID0geyAucmVnID0gMHgxNCwgIC5tYXNrID0gQklUKDgpICB8IEJJVCg5KSAg
fSwKKwkvKiAweDE4OiBOb3Qgd3JpdGVhYmxlICovCisJW1pYMjk3NTIwVjNfSTJTMV9SRVNFVF0g
ICAgICA9IHsgLnJlZyA9IDB4MWMsICAubWFzayA9IEJJVCg4KSAgfCBCSVQoOSkgIH0sCisJLyog
MHgyMDogTm90IHdyaXRlYWJsZSAqLworCVtaWDI5NzUyMFYzX1FTUElfUkVTRVRdICAgICAgPSB7
IC5yZWcgPSAweDI0LCAgLm1hc2sgPSBCSVQoOCkgIHwgQklUKDkpICB9LAorCVtaWDI5NzUyMFYz
X1VBUlQxX1JFU0VUXSAgICAgPSB7IC5yZWcgPSAweDI4LCAgLm1hc2sgPSBCSVQoOCkgIHwgQklU
KDkpICB9LAorCVtaWDI5NzUyMFYzX0kyQzFfUkVTRVRdICAgICAgPSB7IC5yZWcgPSAweDJjLCAg
Lm1hc2sgPSBCSVQoOCkgIHwgQklUKDkpICB9LAorCVtaWDI5NzUyMFYzX1NQSTBfUkVTRVRdICAg
ICAgPSB7IC5yZWcgPSAweDMwLCAgLm1hc2sgPSBCSVQoOCkgIHwgQklUKDkpICB9LAorCVtaWDI5
NzUyMFYzX1RJTUVSX0xCX1JFU0VUXSAgPSB7IC5yZWcgPSAweDM0LCAgLm1hc2sgPSBCSVQoOCkg
IHwgQklUKDkpICB9LAorCVtaWDI5NzUyMFYzX1RJTUVSX0xDX1JFU0VUXSAgPSB7IC5yZWcgPSAw
eDM4LCAgLm1hc2sgPSBCSVQoOCkgIHwgQklUKDkpICB9LAorCVtaWDI5NzUyMFYzX1VBUlQyX1JF
U0VUXSAgICAgPSB7IC5yZWcgPSAweDNjLCAgLm1hc2sgPSBCSVQoOCkgIHwgQklUKDkpICB9LAor
CVtaWDI5NzUyMFYzX1dEVF9MRV9SRVNFVF0gICAgPSB7IC5yZWcgPSAweDQwLCAgLm1hc2sgPSBC
SVQoOCkgIHwgQklUKDkpICB9LAorCVtaWDI5NzUyMFYzX1RJTUVSX0xGX1JFU0VUXSAgPSB7IC5y
ZWcgPSAweDQ0LCAgLm1hc2sgPSBCSVQoOCkgIHwgQklUKDkpICB9LAorCVtaWDI5NzUyMFYzX1NQ
STFfUkVTRVRdICAgICAgPSB7IC5yZWcgPSAweDQ4LCAgLm1hc2sgPSBCSVQoOCkgIHwgQklUKDkp
ICB9LAorCVtaWDI5NzUyMFYzX1RJTUVSX0wxMV9SRVNFVF0gPSB7IC5yZWcgPSAweDRjLCAgLm1h
c2sgPSBCSVQoOCkgIHwgQklUKDkpICB9LAorCVtaWDI5NzUyMFYzX1RETV9SRVNFVF0gICAgICAg
PSB7IC5yZWcgPSAweDUwLCAgLm1hc2sgPSBCSVQoOCkgIHwgQklUKDkpICB9LAorfTsKKworc3Rh
dGljIGNvbnN0IHN0cnVjdCB6dGVfcmVzZXRfZGF0YSB6eDI5NzUyMHYzX2xzcHJlc2V0X2RhdGEg
PSB7CisJLnJlc2V0cyA9IHp4Mjk3NTIwdjNfbHNwX3Jlc2V0cywKKwkubnVtID0gQVJSQVlfU0la
RSh6eDI5NzUyMHYzX2xzcF9yZXNldHMpLAorfTsKKworc3RhdGljIGludCByZXNldF96eDI5NzUy
MHYzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJY29uc3Qgc3RydWN0
IHBsYXRmb3JtX2RldmljZV9pZCAqaWQgPSBwbGF0Zm9ybV9nZXRfZGV2aWNlX2lkKHBkZXYpOwor
CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3RydWN0IGRldmljZV9ub2RlICpv
Zl9ub2RlID0gZGV2LT5wYXJlbnQtPm9mX25vZGU7CisJY29uc3Qgc3RydWN0IHp0ZV9yZXNldF9k
YXRhICpkYXRhOworCXN0cnVjdCB6dGVfcmVzZXQgKnJzdDsKKworCWlmICghaWQpCisJCXJldHVy
biAtRU5PREVWOworCWRhdGEgPSAoY29uc3Qgc3RydWN0IHp0ZV9yZXNldF9kYXRhICopaWQtPmRy
aXZlcl9kYXRhOworCisJcnN0ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpyc3QpLCBHRlBf
S0VSTkVMKTsKKwlpZiAoIXJzdCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlyc3QtPnJlc2V0cyA9
IGRhdGEtPnJlc2V0czsKKwlyc3QtPnJjZGV2Lm93bmVyID0gVEhJU19NT0RVTEU7CisJcnN0LT5y
Y2Rldi5ucl9yZXNldHMgPSBkYXRhLT5udW07CisJcnN0LT5yY2Rldi5vcHMgPSAmengyOV9yc3Rf
b3BzOworCXJzdC0+cmNkZXYub2Zfbm9kZSA9IG9mX25vZGU7CisJcnN0LT5yY2Rldi5kZXYgPSBk
ZXY7CisKKwlyc3QtPm1hcCA9IGRldmljZV9ub2RlX3RvX3JlZ21hcChvZl9ub2RlKTsKKwlpZiAo
SVNfRVJSKHJzdC0+bWFwKSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHJz
dC0+bWFwKSwgIkNhbm5vdCBnZXQgcGFyZW50IHN5c2NvbiByZWdtYXBcbiIpOworCisJcmV0dXJu
IGRldm1fcmVzZXRfY29udHJvbGxlcl9yZWdpc3RlcihkZXYsICZyc3QtPnJjZGV2KTsKK30KKwor
c3RhdGljIGNvbnN0IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaWQgcmVzZXRfengyOTc1MjB2M19p
ZHNbXSA9IHsKKwl7CisJCS5uYW1lID0gInp4Mjk3NTIwdjMtdG9wcmVzZXQiLAorCQkuZHJpdmVy
X2RhdGEgPSAoa2VybmVsX3Vsb25nX3QpJnp4Mjk3NTIwdjNfdG9wcmVzZXRfZGF0YSwKKwl9LAor
CXsKKwkJLm5hbWUgPSAiengyOTc1MjB2My1tYXRyaXhyZXNldCIsCisJCS5kcml2ZXJfZGF0YSA9
IChrZXJuZWxfdWxvbmdfdCkmengyOTc1MjB2M19tYXRyaXhyZXNldF9kYXRhLAorCX0sCisJewor
CQkubmFtZSA9ICJ6eDI5NzUyMHYzLWxzcHJlc2V0IiwKKwkJLmRyaXZlcl9kYXRhID0gKGtlcm5l
bF91bG9uZ190KSZ6eDI5NzUyMHYzX2xzcHJlc2V0X2RhdGEsCisJfSwKKwl7IH0KK307CitNT0RV
TEVfREVWSUNFX1RBQkxFKHBsYXRmb3JtLCByZXNldF96eDI5NzUyMHYzX2lkcyk7CisKK3N0YXRp
YyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJlc2V0X3p4Mjk3NTIwdjMgPSB7CisJLnByb2JlID0g
cmVzZXRfengyOTc1MjB2M19wcm9iZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJyZXNldC16
eDI5NzUyMHYzIiwKKwl9LAorCS5pZF90YWJsZSA9IHJlc2V0X3p4Mjk3NTIwdjNfaWRzLAorfTsK
K21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocmVzZXRfengyOTc1MjB2Myk7CisKK01PRFVMRV9BVVRI
T1IoIlN0ZWZhbiBEw7ZzaW5nZXIgPHN0ZWZhbmRvZXNpbmdlckBnbWFpbC5jb20+Iik7CitNT0RV
TEVfREVTQ1JJUFRJT04oIlpURSB6eDI5NzUyMHYzIHJlc2V0IGRyaXZlciIpOworTU9EVUxFX0xJ
Q0VOU0UoIkdQTCIpOwoKLS0gCjIuNTQuMAoKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0Cmxp
bnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t
YWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBoeQo=