[PATCH v9 06/12] clk: zte: Add regmap-based clocks

Stefan Dösinger <[email protected]> Sun, 02 Aug 2026 23:33:38 +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]>
VGhpcyBpcyBiYXNlZCBvbiBtZXNvbi9jbGstcmVnbWFwLmMsIGFsdGhvdWdoIHNsaWdodGx5IHNp
bXBsaWZpZWQuIEkKaGF2ZSBrZXB0IHRoZSBjb3B5cmlnaHQgbGluZXMgYXQgdGhlIHRvcCBvZiB0
aGUgZmlsZSB0byBpbmRpY2F0ZSBpdHMKb3JpZ2luLgoKSSBzZWUgdGhhdCBudW1lcm91cyBjbG9j
ayBkcml2ZXJzIGhhdmUgdGhlaXIgb3duIGluY2FybmF0aW9uIG9mIHJlZ21hcC0KYmFzZWQgbXV4
L2Rpdi9nYXRlIGNsb2Nrcy4gSWYgdGhlcmUgaXMgYW55IHZlcnNpb24gb2YgaXQgdGhhdCBpcyBs
aWtlbHkKdG8gYmUgZWxldmF0ZWQgdG8gc2hhcmVkIGNvZGUgbGlrZSBjbGstZ2F0ZS5jIEknbGwg
Y29weSB0aGF0IGFuZCB0cnkgdG8KdXNlIGl0IGFzIHVubW9kaWZpZWQgYXMgcG9zc2libGUuCgpT
aWduZWQtb2ZmLWJ5OiBTdGVmYW4gRMO2c2luZ2VyIDxzdGVmYW5kb2VzaW5nZXJAZ21haWwuY29t
PgoKLS0tCgpWZXJzaW9uIDk6ClJlZ2lzdGVyIHNpbmdsZSBjbG9ja3MgcGVyIGZ1bmN0aW9uIGlu
dm9jYXRpb24sIHJlbW92ZQpaWDI5NzUyMFYzX0NMS19OT19FWFBPUlQgYWdhaW4KClZlcnNpb24g
ODogVXNlIFpYMjk3NTIwVjNfQ0xLX05PX0VYUE9SVCBpbnN0ZWFkIG9mIDAgZm9yIHVuZXhwb3J0
ZWQgY2xvY2tzLgoKVmVyc2lvbiA2OiBSZW1vdmUgc3RyYXkgcmVnbWFwIChTYXNoaWtvKQoKVmVy
c2lvbiA1OiBVc2UgcmVnbWFwX3Rlc3RfYml0cyBpbiB6dGVfY2xrX3JlZ21hcF9nYXRlX2lzX2Vu
YWJsZWQKLS0tCiBkcml2ZXJzL2Nsay96dGUvY2xrLXJlZ21hcC5jIHwgMjE5ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMTIgaW5z
ZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay96dGUv
Y2xrLXJlZ21hcC5jIGIvZHJpdmVycy9jbGsvenRlL2Nsay1yZWdtYXAuYwppbmRleCA4MDMzMmRi
YTk3ZjYuLjAyMmIyYmU3YmIzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvenRlL2Nsay1yZWdt
YXAuYworKysgYi9kcml2ZXJzL2Nsay96dGUvY2xrLXJlZ21hcC5jCkBAIC0xLDMyICsxLDIzNyBA
QAogLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKIC8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTggQmF5TGlicmUsIFNBUy4KICAqIENvcHlyaWdodCAoYykgMjAyNiBTdGVmYW4gRMO2
c2luZ2VyCiAgKi8KIAorI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KICNpbmNsdWRlIDxsaW51eC9j
bGstcHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9jb250YWluZXJfb2YuaD4KICNpbmNsdWRl
IDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KICNpbmNsdWRlIDxsaW51
eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5
cGVzLmg+CiAKICNpbmNsdWRlICJjbGstenguaCIKIAorc3RydWN0IHp0ZV9jbGtfcmVnbWFwIHsK
KwlzdHJ1Y3QgY2xrX2h3CWh3OworCXN0cnVjdCByZWdtYXAJKm1hcDsKKwl1MTYJCXJlZzsKKwl1
OAkJc2hpZnQ7CisJdTgJCXNpemU7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCB6dGVfY2xr
X3JlZ21hcCAqdG9fenRlX2Nsa19yZWdtYXAoc3RydWN0IGNsa19odyAqaHcpCit7CisJcmV0dXJu
IGNvbnRhaW5lcl9vZihodywgc3RydWN0IHp0ZV9jbGtfcmVnbWFwLCBodyk7Cit9CisKK3N0YXRp
YyBpbnQgenRlX2Nsa19yZWdtYXBfZ2F0ZV9lbmFibGUoc3RydWN0IGNsa19odyAqaHcpCit7CisJ
c3RydWN0IHp0ZV9jbGtfcmVnbWFwICpjbGsgPSB0b196dGVfY2xrX3JlZ21hcChodyk7CisKKwly
ZXR1cm4gcmVnbWFwX3NldF9iaXRzKGNsay0+bWFwLCBjbGstPnJlZywgQklUKGNsay0+c2hpZnQp
KTsKK30KKworc3RhdGljIHZvaWQgenRlX2Nsa19yZWdtYXBfZ2F0ZV9kaXNhYmxlKHN0cnVjdCBj
bGtfaHcgKmh3KQoreworCXN0cnVjdCB6dGVfY2xrX3JlZ21hcCAqY2xrID0gdG9fenRlX2Nsa19y
ZWdtYXAoaHcpOworCisJcmVnbWFwX2NsZWFyX2JpdHMoY2xrLT5tYXAsIGNsay0+cmVnLCBCSVQo
Y2xrLT5zaGlmdCkpOworfQorCitzdGF0aWMgaW50IHp0ZV9jbGtfcmVnbWFwX2dhdGVfaXNfZW5h
YmxlZChzdHJ1Y3QgY2xrX2h3ICpodykKK3sKKwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9
IHRvX3p0ZV9jbGtfcmVnbWFwKGh3KTsKKworCXJldHVybiByZWdtYXBfdGVzdF9iaXRzKGNsay0+
bWFwLCBjbGstPnJlZywgQklUKGNsay0+c2hpZnQpKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj
dCBjbGtfb3BzIHp0ZV9jbGtfcmVnbWFwX2dhdGVfb3BzID0geworCS5lbmFibGUJCT0genRlX2Ns
a19yZWdtYXBfZ2F0ZV9lbmFibGUsCisJLmRpc2FibGUJPSB6dGVfY2xrX3JlZ21hcF9nYXRlX2Rp
c2FibGUsCisJLmlzX2VuYWJsZWQJPSB6dGVfY2xrX3JlZ21hcF9nYXRlX2lzX2VuYWJsZWQsCit9
OworCiBzdHJ1Y3QgY2xrX2h3ICp6eF9jbGtfcmVnaXN0ZXJfZ2F0ZShzdHJ1Y3QgZGV2aWNlICpk
ZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcCwKLQkJCQkgICAgY29uc3Qgc3RydWN0IHp4X2dhdGVf
ZGVzYyAqZGVzYywKLQkJCQkgICAgc3RydWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpCisJCQkJ
ICAgIGNvbnN0IHN0cnVjdCB6eF9nYXRlX2Rlc2MgKmRlc2MsIHN0cnVjdCBjbGtfaHcgKiBjb25z
dCAqY2xvY2tzKQoreworCXN0cnVjdCBjbGtfcGFyZW50X2RhdGEgcGFyZW50ID0genhfZ2V0X3Bh
cmVudCgmZGVzYy0+cGFyZW50LCBjbG9ja3MpOworCXN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQg
PSB7fTsKKwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsazsKKwlpbnQgcmVzOworCisJY2xrID0g
ZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjbGspLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNsaykK
KwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlpbml0Lm5hbWUgPSBkZXNjLT5uYW1lOwor
CWluaXQub3BzID0gJnp0ZV9jbGtfcmVnbWFwX2dhdGVfb3BzOworCWluaXQucGFyZW50X2RhdGEg
PSAmcGFyZW50OworCWluaXQubnVtX3BhcmVudHMgPSAxOworCWluaXQuZmxhZ3MgPSBDTEtfU0VU
X1JBVEVfUEFSRU5UIHwgZGVzYy0+ZmxhZ3M7CisJY2xrLT5ody5pbml0ID0gJmluaXQ7CisJY2xr
LT5tYXAgPSByZWdtYXA7CisJY2xrLT5yZWcgPSBkZXNjLT5yZWc7CisJY2xrLT5zaGlmdCA9IGRl
c2MtPnNoaWZ0OworCWNsay0+c2l6ZSA9IDE7CisKKwlyZXMgPSBkZXZtX2Nsa19od19yZWdpc3Rl
cihkZXYsICZjbGstPmh3KTsKKwlpZiAocmVzKQorCQlyZXR1cm4gRVJSX1BUUihyZXMpOworCisJ
cmV0dXJuICZjbGstPmh3OworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyB6dGVfY2xrX3JlZ21h
cF9kaXZfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsCisJCQkJCQkgICAgdW5zaWduZWQg
bG9uZyBwcmF0ZSkKK3sKKwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9IHRvX3p0ZV9jbGtf
cmVnbWFwKGh3KTsKKwl1bnNpZ25lZCBpbnQgdmFsOworCWludCByZXQ7CisKKwlyZXQgPSByZWdt
YXBfcmVhZChjbGstPm1hcCwgY2xrLT5yZWcsICZ2YWwpOworCWlmIChyZXQpCisJCXJldHVybiAw
OyAvKiBHaXZlcyBhIGhpbnQgdGhhdCBzb21ldGhpbmcgaXMgd3JvbmcgKi8KKworCXZhbCA+Pj0g
Y2xrLT5zaGlmdDsKKwl2YWwgJj0gY2xrX2Rpdl9tYXNrKGNsay0+c2l6ZSk7CisKKwlyZXR1cm4g
ZGl2aWRlcl9yZWNhbGNfcmF0ZShodywgcHJhdGUsIHZhbCwgTlVMTCwgMCwgY2xrLT5zaXplKTsK
K30KKworc3RhdGljIGludCB6dGVfY2xrX3JlZ21hcF9kaXZfZGV0ZXJtaW5lX3JhdGUoc3RydWN0
IGNsa19odyAqaHcsCisJCQkJCSAgICAgc3RydWN0IGNsa19yYXRlX3JlcXVlc3QgKnJlcSkKK3sK
KwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9IHRvX3p0ZV9jbGtfcmVnbWFwKGh3KTsKKwor
CXJldHVybiBkaXZpZGVyX2RldGVybWluZV9yYXRlKGh3LCByZXEsIE5VTEwsIGNsay0+c2l6ZSwg
MCk7Cit9CisKK3N0YXRpYyBpbnQgenRlX2Nsa19yZWdtYXBfZGl2X3NldF9yYXRlKHN0cnVjdCBj
bGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcg
cGFyZW50X3JhdGUpCiB7Ci0JcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisJc3RydWN0IHp0ZV9j
bGtfcmVnbWFwICpjbGsgPSB0b196dGVfY2xrX3JlZ21hcChodyk7CisJdW5zaWduZWQgaW50IHZh
bDsKKwlpbnQgcmV0OworCisJcmV0ID0gZGl2aWRlcl9nZXRfdmFsKHJhdGUsIHBhcmVudF9yYXRl
LCBOVUxMLCBjbGstPnNpemUsIDApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJ
dmFsID0gKHVuc2lnbmVkIGludClyZXQgPDwgY2xrLT5zaGlmdDsKKworCXJldHVybiByZWdtYXBf
dXBkYXRlX2JpdHMoY2xrLT5tYXAsIGNsay0+cmVnLCBjbGtfZGl2X21hc2soY2xrLT5zaXplKSA8
PCBjbGstPnNoaWZ0LCB2YWwpOwogfQogCitzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgenRl
X2Nsa19yZWdtYXBfZGl2aWRlcl9vcHMgPSB7CisJLnJlY2FsY19yYXRlID0genRlX2Nsa19yZWdt
YXBfZGl2X3JlY2FsY19yYXRlLAorCS5kZXRlcm1pbmVfcmF0ZSA9IHp0ZV9jbGtfcmVnbWFwX2Rp
dl9kZXRlcm1pbmVfcmF0ZSwKKwkuc2V0X3JhdGUgPSB6dGVfY2xrX3JlZ21hcF9kaXZfc2V0X3Jh
dGUsCit9OworCiBzdHJ1Y3QgY2xrX2h3ICp6eF9jbGtfcmVnaXN0ZXJfZGl2aWRlcihzdHJ1Y3Qg
ZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcCwKIAkJCQkgICAgICAgY29uc3Qgc3Ry
dWN0IHp4X2Rpdl9kZXNjICpkZXNjLAogCQkJCSAgICAgICBzdHJ1Y3QgY2xrX2h3ICogY29uc3Qg
KmNsb2NrcykKIHsKLQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKKwlzdHJ1Y3QgY2xrX3BhcmVu
dF9kYXRhIHBhcmVudCA9IHp4X2dldF9wYXJlbnQoJmRlc2MtPnBhcmVudCwgY2xvY2tzKTsKKwlz
dHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307CisJc3RydWN0IHp0ZV9jbGtfcmVnbWFwICpj
bGs7CisJaW50IHJlczsKKworCWNsayA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2xrKSwg
R0ZQX0tFUk5FTCk7CisJaWYgKCFjbGspCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJ
aW5pdC5uYW1lID0gZGVzYy0+bmFtZTsKKwlpbml0Lm9wcyA9ICZ6dGVfY2xrX3JlZ21hcF9kaXZp
ZGVyX29wczsKKwlpbml0LnBhcmVudF9kYXRhID0gJnBhcmVudDsKKwlpbml0Lm51bV9wYXJlbnRz
ID0gMTsKKwlpbml0LmZsYWdzID0gQ0xLX1NFVF9SQVRFX1BBUkVOVDsKKwljbGstPmh3LmluaXQg
PSAmaW5pdDsKKwljbGstPm1hcCA9IHJlZ21hcDsKKwljbGstPnJlZyA9IGRlc2MtPnJlZzsKKwlj
bGstPnNoaWZ0ID0gZGVzYy0+c2hpZnQ7CisJY2xrLT5zaXplID0gZGVzYy0+c2l6ZTsKKworCXJl
cyA9IGRldm1fY2xrX2h3X3JlZ2lzdGVyKGRldiwgJmNsay0+aHcpOworCWlmIChyZXMpCisJCXJl
dHVybiBFUlJfUFRSKHJlcyk7CisKKwlyZXR1cm4gJmNsay0+aHc7CiB9CiAKK3N0YXRpYyB1OCB6
dGVfY2xrX3JlZ21hcF9tdXhfZ2V0X3BhcmVudChzdHJ1Y3QgY2xrX2h3ICpodykKK3sKKwlzdHJ1
Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9IHRvX3p0ZV9jbGtfcmVnbWFwKGh3KTsKKwl1bnNpZ25l
ZCBpbnQgdmFsOworCWludCByZXQ7CisKKwlyZXQgPSByZWdtYXBfcmVhZChjbGstPm1hcCwgY2xr
LT5yZWcsICZ2YWwpOworCWlmIChyZXQpCisJCXJldHVybiAweGZmOworCisJdmFsID4+PSBjbGst
PnNoaWZ0OworCXZhbCAmPSBHRU5NQVNLKGNsay0+c2l6ZSAtIDEsIDApOworCisJcmV0dXJuIGNs
a19tdXhfdmFsX3RvX2luZGV4KGh3LCBOVUxMLCAwLCB2YWwpOworfQorCitzdGF0aWMgaW50IHp0
ZV9jbGtfcmVnbWFwX211eF9zZXRfcGFyZW50KHN0cnVjdCBjbGtfaHcgKmh3LCB1OCBpbmRleCkK
K3sKKwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9IHRvX3p0ZV9jbGtfcmVnbWFwKGh3KTsK
Kwl1bnNpZ25lZCBpbnQgdmFsID0gY2xrX211eF9pbmRleF90b192YWwoTlVMTCwgMCwgaW5kZXgp
OworCisJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhjbGstPm1hcCwgY2xrLT5yZWcsCisJCQkJ
ICBHRU5NQVNLKGNsay0+c2l6ZSAtIDEsIDApIDw8IGNsay0+c2hpZnQsCisJCQkJICB2YWwgPDwg
Y2xrLT5zaGlmdCk7Cit9CisKK3N0YXRpYyBpbnQgenRlX2Nsa19yZWdtYXBfbXV4X2RldGVybWlu
ZV9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCBzdHJ1Y3QgY2xrX3JhdGVfcmVxdWVzdCAqcmVxKQor
eworCXJldHVybiBjbGtfbXV4X2RldGVybWluZV9yYXRlX2ZsYWdzKGh3LCByZXEsIDApOworfQor
CitzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgenRlX2Nsa19yZWdtYXBfbXV4X29wcyA9IHsK
KwkuZ2V0X3BhcmVudCA9IHp0ZV9jbGtfcmVnbWFwX211eF9nZXRfcGFyZW50LAorCS5zZXRfcGFy
ZW50ID0genRlX2Nsa19yZWdtYXBfbXV4X3NldF9wYXJlbnQsCisJLmRldGVybWluZV9yYXRlID0g
enRlX2Nsa19yZWdtYXBfbXV4X2RldGVybWluZV9yYXRlLAorfTsKKwogc3RydWN0IGNsa19odyAq
enhfY2xrX3JlZ2lzdGVyX211eChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJl
Z21hcCwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgenhfbXV4X2Rlc2MgKmRlc2MsCi0JCQkJICAgc3Ry
dWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpCisJCQkgIGNvbnN0IHN0cnVjdCB6eF9tdXhfZGVz
YyAqZGVzYywgc3RydWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpCiB7Ci0JcmV0dXJuIEVSUl9Q
VFIoLUVOT0RFVik7CisJc3RydWN0IGNsa19wYXJlbnRfZGF0YSBwYXJlbnRzW0NMS19aWF9NQVhf
UEFSRU5UU107CisJc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9OworCXN0cnVjdCB6dGVf
Y2xrX3JlZ21hcCAqY2xrOworCXVuc2lnbmVkIGludCBpOworCWludCByZXM7CisKKwlpZiAoV0FS
Tl9PTihkZXNjLT5udW1fcGFyZW50cyA+IEFSUkFZX1NJWkUocGFyZW50cykpKQorCQlyZXR1cm4g
RVJSX1BUUigtRUlOVkFMKTsKKworCWZvciAoaSA9IDA7IGkgPCBkZXNjLT5udW1fcGFyZW50czsg
KytpKQorCQlwYXJlbnRzW2ldID0genhfZ2V0X3BhcmVudCgmZGVzYy0+cGFyZW50c1tpXSwgY2xv
Y2tzKTsKKworCWNsayA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2xrKSwgR0ZQX0tFUk5F
TCk7CisJaWYgKCFjbGspCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJaW5pdC5uYW1l
ID0gZGVzYy0+bmFtZTsKKwlpbml0Lm9wcyA9ICZ6dGVfY2xrX3JlZ21hcF9tdXhfb3BzOworCWlu
aXQucGFyZW50X2RhdGEgPSBwYXJlbnRzOworCWluaXQubnVtX3BhcmVudHMgPSBkZXNjLT5udW1f
cGFyZW50czsKKwljbGstPmh3LmluaXQgPSAmaW5pdDsKKwljbGstPm1hcCA9IHJlZ21hcDsKKwlj
bGstPnJlZyA9IGRlc2MtPnJlZzsKKwljbGstPnNoaWZ0ID0gZGVzYy0+c2hpZnQ7CisJY2xrLT5z
aXplID0gZGVzYy0+c2l6ZTsKKworCXJlcyA9IGRldm1fY2xrX2h3X3JlZ2lzdGVyKGRldiwgJmNs
ay0+aHcpOworCWlmIChyZXMpCisJCXJldHVybiBFUlJfUFRSKHJlcyk7CisKKwlyZXR1cm4gJmNs
ay0+aHc7CiB9CgotLSAKMi41NC4wCgoKLS0gCmxpbnV4LXBoeSBtYWlsaW5nIGxpc3QKbGludXgt
cGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt
YW4vbGlzdGluZm8vbGludXgtcGh5Cg==