[PATCH v9 05/12] clk: zte: Add Clock registration infrastructure
Stefan Dösinger <[email protected]> Sun, 02 Aug 2026 23:33:37 +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]> |
VGhlIG5leHQgcGF0Y2hlcyB3aWxsIGltcGxlbWVudCB0aGUgcmVnbWFwIGNsb2NrcyBhbmQgUExM IGRyaXZlci4gVGhlCmFjdHVhbCBoYXJkd2FyZSBzcGVjaWZpYyBjbG9jayBsaXN0aW5nIHdpbGwg bGl2ZSBpbiBhIHNlcGFyYXRlIG1vZHVsZS4KClNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBEw7ZzaW5n ZXIgPHN0ZWZhbmRvZXNpbmdlckBnbWFpbC5jb20+CgotLS0KClZlcnNpb24gOToKUmV3b3JrIHBh cmVudCBtYXRjaGluZyBhbmQgY2xvY2sgZXhwb3J0IGNvbnRyb2wuIE1vc3Qgb2YgdGhlIGNoYW5n ZXMKd2lsbCBiZSBpbiB0aGUgbmV4dCBwYXRjaGVzLiBUaGUgdmlzaWJsZSBjaGFuZ2UgaGVyZSBp cyB0aGF0IHRoZSBjbG9jawphcnJheSBpcyB1bmlmaWVkIHdpdGggc2luZ2xlIGNsb2NrcyBoYXZp bmcgYSB0eXBlIHJhdGhlciB0aGFuIG9uZSBhcnJheQpwZXIgdHlwZS4KCkRlcGVuZCBvbiBIQVNf SU9NRU0sIHNpbWlsYXJseSB0byBTYXNoaWtvJ3MgZmxhZ2dlZCBpc3N1ZSBpbiB0aGUgUmVzZXQK cGF0Y2gKClpYMjk3NTIwVjNfQ0xLX05PX0VYUE9SVCBpcyBnb25lIGFnYWluLgoKVGhlIGV4cGxp Y2l0IGNsb2NrIGlucHV0IGFycmF5IGFuZCBlbmFibGluZyBvZiBMU1AncyBwY2xrIGlzIHJlbW92 ZWQKZnJvbSB0aGUgY2xvY2sgZHJpdmVyLiBUaGUgTUZEIHBhcmVudCB0YWtlcyBjYXJlIG9mIHRo aXMgaW5zdGVhZC4gVGhlCmNsb2NrIGRyaXZlciBkb2VzIHNvbWUgc2FuaXR5IGNoZWNraW5nIG9u IHRoZSBzdGF0aWMgY2xvY2sgZGF0YSB0aG91Z2guCgpWZXJzaW9uIDg6ClVzZSBaWDI5NzUyMFYz X0NMS19OT19FWFBPUlQ9KH4wdSkgZm9yIHVuZXhwb3J0ZWQgY2xvY2tzLiBXaGlsZSB1c2luZyAw LAphbmQgc3RhcnRpbmcgY2xvY2sgaW5kaWNlcyBhdCAxLCBpcyBhIGNvbW1vbiBwYXR0ZXJuIGlu IGV4aXN0aW5nCmRyaXZlcnMsIGl0IGV4cG9zZXMgYSBkcml2ZXIgaW1wbGVtZW50YXRpb24gZGV0 YWlsIGluIHRoZSBoYXJkd2FyZQpiaW5kaW5nIGludGVyZmFjZS4KCklmIGRlc2lyZWQsIEkgY2Fu IGNoYW5nZSB0aGUgc3BlY2lhbCBpbmRleCB0byBhIHNlcGFyYXRlIGZpZWxkIGluIHRoZQpzdHJ1 Y3RzLgoKRml4IHRoZSByZXR1cm4gdmFsdWUgaWYgdGhlIC0+aW5pdCgpIGNhbGxiYWNrIGZhaWxz LiAoU2FzaGlrbykKClZlcnNpb24gNzoKKikgQWRkIGZpeGVkIGRpdmlkZXJzIHRvIGhhbmRsZSBQ TEwgc3ViZGl2aXNpb25zCiopIE5ldmVyIHJlZ2lzdGVyIFBMTHMgZGlyZWN0bHkgYXMgZXhwb3J0 ZWQgY2xvY2tzIC0gZXZlcnl0aGluZyBvbiB0aGlzClNvQyBnb2VzIHRocm91Z2ggYSBnYXRlIGJl Zm9yZSBpdCBsZWF2ZXMgYSBjb250cm9sbGVyLgoKVmVyc2lvbiA2OgoqKSBSZW1vdmUgYXV4ZGV2 IG5vdyB0aGF0IExTUCBjbG9ja3MgYWxzbyB1c2UgTUZECiopIEVycm9yIGNvZGVwYXRoIGZpeGVz IHBvaW50ZWQgb3V0IGJ5IFNhc2hpa28uCgpWZXJzaW9uIDU6CgoqKSBQYXNzIHRoZSBzdGF0aWMg Y2xrIGRhdGEgaW5zdGVhZCBvZiBjYWxsaW5nIGdldF9tYXRjaF9kYXRhIHRvIHByZXBhcmUKZm9y IG9wZXJhdGluZyBhcyBhbiBNRkQgY2hpbGQuCgoqKSBEb24ndCB1c2UgZGV2bV9remFsbG9jIHRv IGFsbG9jYXRlIHRoZSBhdXhpbGlhcnlfZGV2aWNlCnN0cnVjdHVyZS4gSSBndWVzcyBTYXNoaWtv IGlzIHJpZ2h0LCBhbmQgdGhhdCdzIHdoYXQgIkJlY2F1c2Ugb25jZSB0aGUKZGV2aWNlIGlzIHBs YWNlZCBvbiB0aGUgYnVzIHRoZSBwYXJlbnQgZHJpdmVyIGNhbiBub3QgdGVsbCB3aGF0IG90aGVy CmNvZGUgbWF5IGhhdmUgYSByZWZlcmVuY2UgdG8gdGhpcyBkYXRhIiBpcyB0cnlpbmcgdG8gdGVs bCBtZS4KCiopIEZpeCBlcnJvciBjaGVjayBmb3IgZGV2aWNlX25vZGVfdG9fcmVnbWFwLgotLS0K IE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9jbGsvS2NvbmZp ZyAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2Nsay9NYWtlZmlsZSAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvY2xrL3p0ZS9LY29uZmlnICAgICAgfCAgMTcgKysrKwogZHJpdmVycy9jbGsvenRl L01ha2VmaWxlICAgICB8ICAgNSArKwogZHJpdmVycy9jbGsvenRlL2Nsay1yZWdtYXAuYyB8ICAz MiArKysrKysrKwogZHJpdmVycy9jbGsvenRlL2Nsay16eC5jICAgICB8IDE4OSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2Nsay96dGUvY2xrLXp4 LmggICAgIHwgMTQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2Ns ay96dGUvcGxsLXp4LmMgICAgIHwgIDE4ICsrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDQwNiBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCBi OWY5NjQ1NWJjYTcuLjc3ZmE4NmM2NzFiOCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIv TUFJTlRBSU5FUlMKQEAgLTM5MTUsNiArMzkxNSw3IEBAIEY6CURvY3VtZW50YXRpb24vZGV2aWNl dHJlZS9iaW5kaW5ncy9jbG9jay96dGUsengyOTc1MjB2My1tYXRyaXhjcm0ueWFtbAogRjoJRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3p0ZSx6eDI5NzUyMHYzLXRvcGNy bS55YW1sCiBGOglhcmNoL2FybS9ib290L2R0cy96dGUvCiBGOglhcmNoL2FybS9tYWNoLXp0ZS8K K0Y6CWRyaXZlcnMvY2xrL3p0ZS8KIEY6CWRyaXZlcnMvbWZkL3p0ZS16eDI5NzUyMHYzLWNybS5j CiBGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL3p0ZSx6eDI5NzUyMHYzLWNsay5oCiBGOglp bmNsdWRlL2R0LWJpbmRpbmdzL3BoeS96dGUsengyOTc1MjB2My10b3Bjcm0uaApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9jbGsvS2NvbmZpZyBiL2RyaXZlcnMvY2xrL0tjb25maWcKaW5kZXggMTcxN2Nl NzVhOTA3Li42ZjBhODYzOTUxY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2xrL0tjb25maWcKKysr IGIvZHJpdmVycy9jbGsvS2NvbmZpZwpAQCAtNTQ1LDYgKzU0NSw3IEBAIHNvdXJjZSAiZHJpdmVy cy9jbGsvdW5pcGhpZXIvS2NvbmZpZyIKIHNvdXJjZSAiZHJpdmVycy9jbGsvdmlzY29udGkvS2Nv bmZpZyIKIHNvdXJjZSAiZHJpdmVycy9jbGsveDg2L0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMv Y2xrL3hpbGlueC9LY29uZmlnIgorc291cmNlICJkcml2ZXJzL2Nsay96dGUvS2NvbmZpZyIKIHNv dXJjZSAiZHJpdmVycy9jbGsvenlucW1wL0tjb25maWciCiAKICMgS3VuaXQgdGVzdCBjYXNlcwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvTWFrZWZpbGUgYi9kcml2ZXJzL2Nsay9NYWtlZmlsZQpp bmRleCA2ODk5ZTMyZTE0YWEuLjY1MWZlODY2ZGRhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsv TWFrZWZpbGUKKysrIGIvZHJpdmVycy9jbGsvTWFrZWZpbGUKQEAgLTE2Nyw1ICsxNjcsNiBAQCBp ZmVxICgkKENPTkZJR19DT01NT05fQ0xLKSwgeSkKIG9iai0kKENPTkZJR19YODYpCQkJKz0geDg2 LwogZW5kaWYKIG9iai15CQkJCQkrPSB4aWxpbngvCitvYmotJChDT05GSUdfQ09NTU9OX0NMS19a VEUpCQkrPSB6dGUvCiBvYmotJChDT05GSUdfQVJDSF9aWU5RKQkJCSs9IHp5bnEvCiBvYmotJChD T05GSUdfQ09NTU9OX0NMS19aWU5RTVApICAgICAgICAgKz0genlucW1wLwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9jbGsvenRlL0tjb25maWcgYi9kcml2ZXJzL2Nsay96dGUvS2NvbmZpZwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE1MmMyNDIzYjhmMAotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvY2xrL3p0ZS9LY29uZmlnCkBAIC0wLDAgKzEsMTcgQEAKKyMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIyBaVEUgQ2xvY2sgRHJpdmVy cworIworCitjb25maWcgQ09NTU9OX0NMS19aVEUKKwl0cmlzdGF0ZSAiQ2xvY2sgZHJpdmVyIGZv ciBaVEUgU29DcyIKKwlkZXBlbmRzIG9uIEhBU19JT01FTQorCWRlcGVuZHMgb24gQVJDSF9aVEUg fHwgQ09NUElMRV9URVNUCisJZGVmYXVsdCBBUkNIX1pURQorCXNlbGVjdCBNRkRfU1lTQ09OCisJ aGVscAorCSAgVGhpcyBvcHRpb24gc2VsZWN0cyBjb21tb24gY2xvY2sgaW5mcmFzdHJ1Y3R1cmUg Zm9yIFpURSBiYXNlZCBTb0NzLgorCSAgWW91IHdpbGwgbmVlZCB0byBlbmFibGUgb25lIG9yIG1v cmUgU29DIHNwZWNpZmljIGRyaXZlcnMgdG8gbWFrZSB1c2UKKwkgIG9mIHRoaXMuCisKKwkgIEVu YWJsZSB0aGlzIGlmIHlvdSBhcmUgYnVpbGRpbmcgYSBrZXJuZWwgZm9yIGEgWlRFIGRlc2lnbmVk IGJvYXJkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvenRlL01ha2VmaWxlIGIvZHJpdmVycy9j bGsvenRlL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MjdkYjA3MjkzMTY1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9jbGsvenRlL01ha2VmaWxl CkBAIC0wLDAgKzEsNSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 CisKK29iai0kKENPTkZJR19DT01NT05fQ0xLX1pURSkgKz0gY2xrLXp0ZS5vCisKK2Nsay16dGUt eSArPSBjbGstengubyBwbGwtengubyBjbGstcmVnbWFwLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Y2xrL3p0ZS9jbGstcmVnbWFwLmMgYi9kcml2ZXJzL2Nsay96dGUvY2xrLXJlZ21hcC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODAzMzJkYmE5N2Y2Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9jbGsvenRlL2Nsay1yZWdtYXAuYwpAQCAtMCwwICsxLDMyIEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIENvcHlyaWdodCAo YykgMjAyNiBTdGVmYW4gRMO2c2luZ2VyCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92 aWRlci5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5v Lmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisKKyNpbmNsdWRlICJjbGstenguaCIKKwor c3RydWN0IGNsa19odyAqenhfY2xrX3JlZ2lzdGVyX2dhdGUoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgcmVnbWFwICpyZWdtYXAsCisJCQkJICAgIGNvbnN0IHN0cnVjdCB6eF9nYXRlX2Rlc2Mg KmRlc2MsCisJCQkJICAgIHN0cnVjdCBjbGtfaHcgKiBjb25zdCAqY2xvY2tzKQoreworCXJldHVy biBFUlJfUFRSKC1FTk9ERVYpOworfQorCitzdHJ1Y3QgY2xrX2h3ICp6eF9jbGtfcmVnaXN0ZXJf ZGl2aWRlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcCwKKwkJCQkg ICAgICAgY29uc3Qgc3RydWN0IHp4X2Rpdl9kZXNjICpkZXNjLAorCQkJCSAgICAgICBzdHJ1Y3Qg Y2xrX2h3ICogY29uc3QgKmNsb2NrcykKK3sKKwlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKK30K Kworc3RydWN0IGNsa19odyAqenhfY2xrX3JlZ2lzdGVyX211eChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCByZWdtYXAgKnJlZ21hcCwKKwkJCQkgICBjb25zdCBzdHJ1Y3QgenhfbXV4X2Rlc2Mg KmRlc2MsCisJCQkJICAgc3RydWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpCit7CisJcmV0dXJu IEVSUl9QVFIoLUVOT0RFVik7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay96dGUvY2xrLXp4 LmMgYi9kcml2ZXJzL2Nsay96dGUvY2xrLXp4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4yN2JiYWZkOGNlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2Ns ay96dGUvY2xrLXp4LmMKQEAgLTAsMCArMSwxODkgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgU3RlZmFuIETDtnNp bmdlcgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxs aW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJu by5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KKworI2luY2x1ZGUgImNsay16eC5oIgorCitzdGF0aWMgc3RydWN0IGNsa19odyAqenhf Y2xrX3JlZ2lzdGVyX2ZpeGVkX2RpdihzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCQljb25zdCBz dHJ1Y3QgenhfZml4ZWRfZGl2aWRlcl9kZXNjICpkZXNjLAorCQkJCQkJc3RydWN0IGNsa19odyAq IGNvbnN0ICpjbG9ja3MpCit7CisJY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjICpwID0gJmRl c2MtPnBhcmVudDsKKworCXN3aXRjaCAocC0+dHlwZSkgeworCWNhc2UgWlhfUEFSRU5UX0ZXOgor CQlyZXR1cm4gZGV2bV9jbGtfaHdfcmVnaXN0ZXJfZml4ZWRfZmFjdG9yX2Z3bmFtZShkZXYsIE5V TEwsIGRlc2MtPm5hbWUsIHAtPmZ3X25hbWUsCisJCQkJCQkJCUNMS19TRVRfUkFURV9QQVJFTlQs IDEsIGRlc2MtPmRpdik7CisKKwljYXNlIFpYX1BBUkVOVF9JRDoKKwkJcmV0dXJuIGRldm1fY2xr X2h3X3JlZ2lzdGVyX2ZpeGVkX2ZhY3Rvcl9wYXJlbnRfaHcoZGV2LCBkZXNjLT5uYW1lLCBjbG9j a3NbcC0+aWRdLAorCQkJCQkJCQkgICBDTEtfU0VUX1JBVEVfUEFSRU5ULCAxLAorCQkJCQkJCQkg ICBkZXNjLT5kaXYpOworCX0KKwlXQVJOX09OX09OQ0UoMSk7CisJcmV0dXJuIEVSUl9QVFIoLUVJ TlZBTCk7Cit9CisKK3N0YXRpYyBpbnQgenhfY2xrX3ZhbGlkYXRlKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGRldmljZV9ub2RlICpvZl9ub2RlLAorCQkJICAgY29uc3Qgc3RydWN0IHp4X2Ns a19kYXRhICpkYXRhKQoreworCWNvbnN0IHN0cnVjdCB6eF9wYXJlbnRfZGVzYyAqcGFyZW50czsK Kwl1bnNpZ25lZCBpbnQgaSwgcCwgbnVtX3BhcmVudHM7CisJc3RydWN0IGNsayAqY2xrOworCisJ LyoKKwkgKiBTYW5pdHkgY2hlY2s6IE1ha2Ugc3VyZSBhbGwgcGFyZW50cyBhcmUgdGhlcmUgYW5k IHdyaXRlIGEgY2xlYXIgbWVzc2FnZSByYXRoZXIgdGhhbgorCSAqIGxlYXZlIHBvdGVudGlhbCBv cnBoYW5zLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5udW1fY2xvY2tzOyArK2kpIHsK KwkJc3dpdGNoIChkYXRhLT5jbG9ja3NbaV0udHlwZSkgeworCQljYXNlIFpYX0NMT0NLX1BMTDoK KwkJCXBhcmVudHMgPSBkYXRhLT5jbG9ja3NbaV0ucGxsLnBhcmVudHM7CisJCQludW1fcGFyZW50 cyA9IGRhdGEtPmNsb2Nrc1tpXS5wbGwubnVtX3BhcmVudHM7CisJCQlicmVhazsKKworCQljYXNl IFpYX0NMT0NLX0ZJWEVEX0RJVjoKKwkJCXBhcmVudHMgPSAmZGF0YS0+Y2xvY2tzW2ldLmZpeGVk X2Rpdi5wYXJlbnQ7CisJCQludW1fcGFyZW50cyA9IDE7CisJCQlicmVhazsKKworCQljYXNlIFpY X0NMT0NLX01VWDoKKwkJCXBhcmVudHMgPSBkYXRhLT5jbG9ja3NbaV0ubXV4LnBhcmVudHM7CisJ CQludW1fcGFyZW50cyA9IGRhdGEtPmNsb2Nrc1tpXS5tdXgubnVtX3BhcmVudHM7CisJCQlicmVh azsKKworCQljYXNlIFpYX0NMT0NLX0RJVjoKKwkJCXBhcmVudHMgPSAmZGF0YS0+Y2xvY2tzW2ld LmRpdi5wYXJlbnQ7CisJCQludW1fcGFyZW50cyA9IDE7CisJCQlicmVhazsKKworCQljYXNlIFpY X0NMT0NLX0dBVEU6CisJCQlwYXJlbnRzID0gJmRhdGEtPmNsb2Nrc1tpXS5nYXRlLnBhcmVudDsK KwkJCW51bV9wYXJlbnRzID0gMTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlyZXR1cm4g ZGV2X2Vycl9wcm9iZShkZXYsIC1FSU5WQUwsICJJbnZhbGlkIGNsb2NrIGVudHJ5ICV1XG4iLCBp KTsKKwkJfQorCisJCWZvciAocCA9IDA7IHAgPCBudW1fcGFyZW50czsgKytwKSB7CisJCQlzd2l0 Y2ggKHBhcmVudHNbcF0udHlwZSkgeworCQkJY2FzZSBaWF9QQVJFTlRfRlc6CisJCQkJY2xrID0g b2ZfY2xrX2dldF9ieV9uYW1lKG9mX25vZGUsIHBhcmVudHNbcF0uZndfbmFtZSk7CisJCQkJaWYg KElTX0VSUihjbGspKQorCQkJCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoY2xr KSwKKwkJCQkJCQkgICAgICJJbnB1dCBjbGsgJXMgZmFpbHVyZVxuIiwKKwkJCQkJCQkgICAgIHBh cmVudHNbcF0uZndfbmFtZSk7CisJCQkJY2xrX3B1dChjbGspOworCQkJCWJyZWFrOworCisJCQlj YXNlIFpYX1BBUkVOVF9JRDoKKwkJCQlpZiAocGFyZW50c1twXS5pZCA+PSBpKQorCQkJCQlyZXR1 cm4gZGV2X2Vycl9wcm9iZShkZXYsIC1FSU5WQUwsCisJCQkJCQkJICAgICAiQ2xvY2sgJXUgaGFz IHBhcmVudCAldVxuIiwKKwkJCQkJCQkgICAgIGksIHBhcmVudHNbcF0uaWQpOworCQkJCWJyZWFr OworCisJCQlkZWZhdWx0OgorCQkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVJTlZBTCwK KwkJCQkJCSAgICAgIkNsb2NrICV1IGhhcyB1bmV4cGVjdGVkIHBhcmVudCBvZiB0eXBlICV1XG4i LAorCQkJCQkJICAgICBpLCBwYXJlbnRzW3BdLnR5cGUpOworCQkJfQorCQl9CisJfQorCisJcmV0 dXJuIDA7Cit9CisKK2ludCB6eF9jbGtfY29tbW9uX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwg c3RydWN0IGRldmljZV9ub2RlICpvZl9ub2RlLAorCQkJY29uc3Qgc3RydWN0IHp4X2Nsa19kYXRh ICpkYXRhKQoreworCXN0cnVjdCBjbGtfaHdfb25lY2VsbF9kYXRhICpleHBvcnRzOworCXN0cnVj dCBjbGtfaHcgKipjbG9ja3M7CisJc3RydWN0IHJlZ21hcCAqbWFwOworCXVuc2lnbmVkIGludCBp OworCWludCByZXM7CisKKwlyZXMgPSB6eF9jbGtfdmFsaWRhdGUoZGV2LCBvZl9ub2RlLCBkYXRh KTsKKwlpZiAocmVzKQorCQlyZXR1cm4gcmVzOworCisJbWFwID0gZGV2aWNlX25vZGVfdG9fcmVn bWFwKG9mX25vZGUpOworCWlmIChJU19FUlIobWFwKSkKKwkJcmV0dXJuIFBUUl9FUlIobWFwKTsK KworCWNsb2NrcyA9IGRldm1fa2NhbGxvYyhkZXYsIGRhdGEtPm51bV9jbG9ja3MsIHNpemVvZigq Y2xvY2tzKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjbG9ja3MpCisJCXJldHVybiAtRU5PTUVNOwor CisJaWYgKGRhdGEtPmluaXQpIHsKKwkJcmVzID0gZGF0YS0+aW5pdChtYXApOworCQlpZiAocmVz KQorCQkJcmV0dXJuIHJlczsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+bnVtX2Nsb2Nr czsgKytpKSB7CisJCXN0cnVjdCBjbGtfaHcgKmh3OworCisJCXN3aXRjaCAoZGF0YS0+Y2xvY2tz W2ldLnR5cGUpIHsKKwkJY2FzZSBaWF9DTE9DS19QTEw6CisJCQlodyA9IHp4X2Nsa19yZWdpc3Rl cl9wbGwoZGV2LCBtYXAsICZkYXRhLT5jbG9ja3NbaV0ucGxsLCBjbG9ja3MpOworCQkJYnJlYWs7 CisKKwkJY2FzZSBaWF9DTE9DS19GSVhFRF9ESVY6CisJCQlodyA9IHp4X2Nsa19yZWdpc3Rlcl9m aXhlZF9kaXYoZGV2LCAmZGF0YS0+Y2xvY2tzW2ldLmZpeGVkX2RpdiwgY2xvY2tzKTsKKwkJCWJy ZWFrOworCisJCWNhc2UgWlhfQ0xPQ0tfTVVYOgorCQkJaHcgPSB6eF9jbGtfcmVnaXN0ZXJfbXV4 KGRldiwgbWFwLCAmZGF0YS0+Y2xvY2tzW2ldLm11eCwgY2xvY2tzKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgWlhfQ0xPQ0tfRElWOgorCQkJaHcgPSB6eF9jbGtfcmVnaXN0ZXJfZGl2aWRlcihkZXYs IG1hcCwgJmRhdGEtPmNsb2Nrc1tpXS5kaXYsIGNsb2Nrcyk7CisJCQlicmVhazsKKworCQljYXNl IFpYX0NMT0NLX0dBVEU6CisJCQlodyA9IHp4X2Nsa19yZWdpc3Rlcl9nYXRlKGRldiwgbWFwLCAm ZGF0YS0+Y2xvY2tzW2ldLmdhdGUsIGNsb2Nrcyk7CisJCQlicmVhazsKKworCQlkZWZhdWx0Ogor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlpZiAoSVNfRVJSKGh3KSkKKwkJCXJldHVybiBk ZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihodyksICJGYWlsZWQgdG8gcmVnaXN0ZXIgY2xrICV1 XG4iLCBpKTsKKworCQljbG9ja3NbaV0gPSBodzsKKwl9CisKKwlleHBvcnRzID0gZGV2bV9remFs bG9jKGRldiwgc3RydWN0X3NpemUoZXhwb3J0cywgaHdzLCBkYXRhLT5udW1fZXhwb3J0cyksIEdG UF9LRVJORUwpOworCWlmICghZXhwb3J0cykKKwkJcmV0dXJuIC1FTk9NRU07CisJZXhwb3J0cy0+ bnVtID0gZGF0YS0+bnVtX2V4cG9ydHM7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+bnVtX2V4 cG9ydHM7ICsraSkgeworCQlpZiAoZGF0YS0+ZXhwb3J0c1tpXSA+PSBkYXRhLT5udW1fY2xvY2tz KQorCQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLAorCQkJCQkgICAgICJFeHBv cnQgJXUgcG9pbnRzIHRvIG91dCBvZiByYW5nZSBjbG9jayAldVxuIiwKKwkJCQkJICAgICBpLCBk YXRhLT5leHBvcnRzW2ldKTsKKworCQlleHBvcnRzLT5od3NbaV0gPSBjbG9ja3NbZGF0YS0+ZXhw b3J0c1tpXV07CisJfQorCisJZGV2bV9rZnJlZShkZXYsIGNsb2Nrcyk7CisKKwlyZXR1cm4gZGV2 bV9vZl9jbGtfYWRkX2h3X3Byb3ZpZGVyKGRldiwgb2ZfY2xrX2h3X29uZWNlbGxfZ2V0LCBleHBv cnRzKTsKK30KK0VYUE9SVF9TWU1CT0xfTlNfR1BMKHp4X2Nsa19jb21tb25fcHJvYmUsICJaVEVf Q0xLIik7CisKK01PRFVMRV9BVVRIT1IoIlN0ZWZhbiBEw7ZzaW5nZXIgPHN0ZWZhbmRvZXNpbmdl ckBnbWFpbC5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlpURSBjb21tb24gY2xvY2sgZHJp dmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay96 dGUvY2xrLXp4LmggYi9kcml2ZXJzL2Nsay96dGUvY2xrLXp4LmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNzVmYmJhM2UwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2Nsay96dGUvY2xrLXp4LmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjYg U3RlZmFuIETDtnNpbmdlcgorICovCisKKyNpZm5kZWYgX19EUlZfQ0xLX1pYX0gKKyNkZWZpbmUg X19EUlZfQ0xLX1pYX0gKKworI2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgorI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgor I2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKyNkZWZpbmUgQ0xLX1pYX1BMTF9QUkVQQVJFX0lT X0VOQUJMRQkxCisjZGVmaW5lIENMS19aWF9NQVhfUEFSRU5UUwkJOAorCitlbnVtIHp4X3BhcmVu dF90eXBlIHsKKwlaWF9QQVJFTlRfRlcsCisJWlhfUEFSRU5UX0lELAorfTsKKworc3RydWN0IHp4 X3BhcmVudF9kZXNjIHsKKwllbnVtIHp4X3BhcmVudF90eXBlCQl0eXBlOworCXVuaW9uIHsKKwkJ Y29uc3QgY2hhcgkJKmZ3X25hbWU7CisJCXVuc2lnbmVkIGludAkJaWQ7CisJfTsKK307CisKKyNk ZWZpbmUgUEFSRU5UX0ZXKF9uYW1lKSB7IC50eXBlID0gWlhfUEFSRU5UX0ZXLCAuZndfbmFtZSA9 IChfbmFtZSkgfQorCisjZGVmaW5lIFBBUkVOVF9JRChfaWQpIHsgLnR5cGUgPSBaWF9QQVJFTlRf SUQsIC5pZCA9IChfaWQpIH0KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRh IHp4X2dldF9wYXJlbnQoY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjICpwLAorCQkJCQkJICAg c3RydWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpCit7CisJc3RydWN0IGNsa19wYXJlbnRfZGF0 YSByZXQgPSB7fTsKKworCXN3aXRjaCAocC0+dHlwZSkgeworCWNhc2UgWlhfUEFSRU5UX0ZXOgor CQlyZXQuZndfbmFtZSA9IHAtPmZ3X25hbWU7CisJCXJldC5pbmRleCA9IC0xOworCQlyZXR1cm4g cmV0OworCisJY2FzZSBaWF9QQVJFTlRfSUQ6CisJCXJldC5odyA9IGNsb2Nrc1twLT5pZF07CisJ CXJldC5pbmRleCA9IC0xOworCQlyZXR1cm4gcmV0OworCX07CisKKwlXQVJOX09OX09OQ0UoMSk7 CisJcmV0dXJuIHJldDsKK30KKworc3RydWN0IHp4X3BsbF9kZXNjIHsKKwljb25zdCBjaGFyCQkJ Km5hbWU7CisJY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjCSpwYXJlbnRzOworCXVuc2lnbmVk IGludAkJCW51bV9wYXJlbnRzOworCXVuc2lnbmVkIGxvbmcJCQlyYXRlOworCXUxNgkJCQlyZWc7 CisJdTE2CQkJCWZsYWdzOworfTsKKworc3RydWN0IHp4X2ZpeGVkX2RpdmlkZXJfZGVzYyB7CisJ Y29uc3QgY2hhcgkJCSpuYW1lOworCXN0cnVjdCB6eF9wYXJlbnRfZGVzYwkJcGFyZW50OworCXVu c2lnbmVkIGludAkJCWRpdjsKK307CisKK3N0cnVjdCB6eF9tdXhfZGVzYyB7CisJY29uc3QgY2hh cgkJCSpuYW1lOworCWNvbnN0IHN0cnVjdCB6eF9wYXJlbnRfZGVzYwkqcGFyZW50czsKKwl1bnNp Z25lZCBpbnQJCQludW1fcGFyZW50czsKKwl1MTYJCQkJcmVnOworCXU4CQkJCXNoaWZ0LCBzaXpl OworfTsKKworc3RydWN0IHp4X2Rpdl9kZXNjIHsKKwljb25zdCBjaGFyCQkJKm5hbWU7CisJc3Ry dWN0IHp4X3BhcmVudF9kZXNjCQlwYXJlbnQ7CisJdTE2CQkJCXJlZzsKKwl1OAkJCQlzaGlmdCwg c2l6ZTsKK307CisKK3N0cnVjdCB6eF9nYXRlX2Rlc2MgeworCWNvbnN0IGNoYXIJCQkqbmFtZTsK KwlzdHJ1Y3QgenhfcGFyZW50X2Rlc2MJCXBhcmVudDsKKwl1bnNpZ25lZCBsb25nCQkJZmxhZ3M7 CisJdTE2CQkJCXJlZzsKKwl1OAkJCQlzaGlmdDsKK307CisKK2VudW0genhfY2xvY2tfdHlwZSB7 CisJWlhfQ0xPQ0tfSU5WQUxJRCA9IDAsCisJWlhfQ0xPQ0tfUExMLAorCVpYX0NMT0NLX0ZJWEVE X0RJViwKKwlaWF9DTE9DS19NVVgsCisJWlhfQ0xPQ0tfRElWLAorCVpYX0NMT0NLX0dBVEUsCit9 OworCitzdHJ1Y3QgenhfY2xvY2sgeworCWVudW0genhfY2xvY2tfdHlwZSB0eXBlOworCXVuaW9u IHsKKwkJc3RydWN0IHp4X3BsbF9kZXNjIHBsbDsKKwkJc3RydWN0IHp4X2ZpeGVkX2RpdmlkZXJf ZGVzYyBmaXhlZF9kaXY7CisJCXN0cnVjdCB6eF9tdXhfZGVzYyBtdXg7CisJCXN0cnVjdCB6eF9k aXZfZGVzYyBkaXY7CisJCXN0cnVjdCB6eF9nYXRlX2Rlc2MgZ2F0ZTsKKwl9OworfTsKKworc3Ry dWN0IGNsa19odyAqenhfY2xrX3JlZ2lzdGVyX3BsbChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCByZWdtYXAgKnJlZ21hcCwKKwkJCQkgICBjb25zdCBzdHJ1Y3QgenhfcGxsX2Rlc2MgKmRlc2Ms CisJCQkJICAgc3RydWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpOworc3RydWN0IGNsa19odyAq enhfY2xrX3JlZ2lzdGVyX211eChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJl Z21hcCwKKwkJCQkgICBjb25zdCBzdHJ1Y3QgenhfbXV4X2Rlc2MgKmRlc2MsCisJCQkJICAgc3Ry dWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpOworc3RydWN0IGNsa19odyAqenhfY2xrX3JlZ2lz dGVyX2RpdmlkZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXAsCisJ CQkJICAgICAgIGNvbnN0IHN0cnVjdCB6eF9kaXZfZGVzYyAqZGVzYywKKwkJCQkgICAgICAgc3Ry dWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpOworc3RydWN0IGNsa19odyAqenhfY2xrX3JlZ2lz dGVyX2dhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXAsCisJCQkJ ICAgIGNvbnN0IHN0cnVjdCB6eF9nYXRlX2Rlc2MgKmRlc2MsCisJCQkJICAgIHN0cnVjdCBjbGtf aHcgKiBjb25zdCAqY2xvY2tzKTsKKworc3RydWN0IHp4X2Nsa19leHBvcnQgeworCXVuc2lnbmVk IGludCBwcml2OworCXVuc2lnbmVkIGludCBiaW5kaW5nOworfTsKKworc3RydWN0IHp4X2Nsa19k YXRhIHsKKwlpbnQgKCppbml0KShzdHJ1Y3QgcmVnbWFwICptYXApOworCWNvbnN0IHN0cnVjdCB6 eF9jbG9jayAqY2xvY2tzOworCXVuc2lnbmVkIGludCBudW1fY2xvY2tzOworCXVuc2lnbmVkIGlu dCAqZXhwb3J0czsKKwl1bnNpZ25lZCBpbnQgbnVtX2V4cG9ydHM7Cit9OworCitpbnQgenhfY2xr X2NvbW1vbl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2Zf bm9kZSwKKwkJCWNvbnN0IHN0cnVjdCB6eF9jbGtfZGF0YSAqZGF0YSk7CisKKyNlbmRpZiAvKiBf X0RSVl9DTEtfWlhfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvenRlL3BsbC16eC5jIGIv ZHJpdmVycy9jbGsvenRlL3BsbC16eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uZmM3NmM2NTI0YTE2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9jbGsvenRl L3BsbC16eC5jCkBAIC0wLDAgKzEsMTggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgU3RlZmFuIETDtnNpbmdlcgor ICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9k ZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21h cC5oPgorCisjaW5jbHVkZSAiY2xrLXp4LmgiCisKK3N0cnVjdCBjbGtfaHcgKnp4X2Nsa19yZWdp c3Rlcl9wbGwoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXAsCisJCQkJ ICAgY29uc3Qgc3RydWN0IHp4X3BsbF9kZXNjICpkZXNjLAorCQkJCSAgIHN0cnVjdCBjbGtfaHcg KiBjb25zdCAqY2xvY2tzKQoreworCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOworfQoKLS0gCjIu NTQuMAoKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LXBoeQo=