This adds a refactoring of the MediaTek Smart Voltage Scaling (SVS)
driver and the addition of support for MT8186 and MT8195 in it, and
adds support for the MT8188 VDOSYS and resets in the MMSYS driver.
-----BEGIN PGP SIGNATURE-----
iJ4EABYKAEYWIQQn3Xxr56ypAcSHzXSaNgTPrZeEeAUCZXhDfCgcYW5nZWxvZ2lv
YWNjaGluby5kZWxyZWdub0Bjb2xsYWJvcmEuY29tAAoJEJo2BM+tl4R4OrMA/1mb
WUMKzPfmPNQ6aARR1laOJYPC3RaXPJMnt5OloSD7AQDkQV2XqqleSvKrhl6JcoYa
3UfhW/oGLx+dPQ+2+pKsDw==
=rGbq
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmWFbzcACgkQYKtH/8kJ
Uie7hg//ZrPvNdvSNbqJLEuteK/U72HnJpPE5vfNif+JMVYc7qxRX/JPy+M1n2aA
xcmWrlTo6SiR4ML9Fh7EFCMzPYDNweIaVOQTxSGhLkrLEgj7kZtSkB+hvpdkqnxB
GbFEZW/g68S/z0nTI80iBxTr0p0v8AlADWEUYtBkyZ2JIex6cw3GsQ7WZiBRRCgj
Y89BOT+/ct3cg8CLzQ45ooEDSk8alh/Bd4lj1i+utomyA6M+GckVHKcUsLt5Mg+T
JwLf70g6Wb/HyX6Hsgq8obbRXdk7oGVqaCzbRwpYU++DPiFuG0YGJ9FZLBOdm9E9
Hb0vLLGmQhQvmxbOqzvQj2HozQQvEARRzhWO/2QeARDfNVnBRPsMfTM4G48B9tz6
Lz+3qn/j5034YEDfai5eSNWRYinP4/fPwK49L5mkVuHEomz7KrP9t8AdHHCxxgfd
7GPMntCRPFDQxKBYKk59wCmPYttteNmevtiorn/KJejdwDWmiO3X/x1Vl+KkxY3F
VnPXjlrtcFqiVBrlyggviCGaEfSOzzgLRiNSHNDrHHFwQZJ2SHLuWxtPasY4MiZ9
TZz741J7UncrtTDT9HEPq3BJTg1n/inJ01JdHjLD1QtmEpMBL6bn8WzlwCOafr3Q
9K0NmdMXZNvVlkesHadP9zep19tb8WpAfRiqYVOWiMQElqF/rg4=
=Q6Fw
-----END PGP SIGNATURE-----
Merge tag 'mtk-soc-for-v6.8' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/drivers
MediaTek soc driver updates for v6.8
This adds a refactoring of the MediaTek Smart Voltage Scaling (SVS)
driver and the addition of support for MT8186 and MT8195 in it, and
adds support for the MT8188 VDOSYS and resets in the MMSYS driver.
* tag 'mtk-soc-for-v6.8' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux: (24 commits)
soc: mediatek: mtk-svs: Constify runtime-immutable members of svs_bank
soc: mediatek: mtk-svs: Use ULONG_MAX to compare floor frequency
soc: mediatek: mtk-svs: Check if SVS mode is available in the beginning
soc: mediatek: mtk-svs: Cleanup of svs_probe() function
soc: mediatek: mtk-svs: Compress of_device_id entries
soc: mediatek: mtk-svs: Remove redundant print in svs_get_efuse_data
soc: mediatek: mtk-svs: Commonize MT8192 probe function for MT8186
soc: mediatek: mtk-svs: Drop supplementary svs per-bank pointer
soc: mediatek: mtk-svs: Commonize efuse parse function for most SoCs
soc: mediatek: mtk-svs: Move t-calibration-data retrieval to svs_probe()
soc: mediatek: mtk-svs: Add SVS-Thermal coefficient to SoC platform data
soc: mediatek: mtk-svs: Add a map to retrieve fused values
soc: mediatek: mtk-svs: Change the thermal sensor device name
soc: mediatek: mtk-svs: Reduce memory footprint of struct svs_bank
soc: mediatek: mtk-svs: Build bank name string dynamically
soc: mediatek: mtk-svs: Convert sw_id and type to enumerations
soc: mediatek: mtk-svs: Subtract offset from regs_v2 to avoid conflict
soc: mediatek: Add MT8188 VDOSYS reset bit map
soc: mediatek: Support reset bit mapping in mmsys driver
soc: mediatek: Support MT8188 VDOSYS1 Padding in mtk-mmsys
...
Link: https://lore.kernel.org/r/20231212114515.121695-2-angelogioacchino.delregno@collabora.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This pull request contains updates to prepare the support for the QMC
HDLC driver.
- Perform some fixes
- Add support for child devices
- Add QMC dynamic timeslot support
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
-----BEGIN PGP SIGNATURE-----
iQFNBAABCAA3FiEEBHbCIl6+iJcbAxNBaqTG8aY4pMAFAmV4KCYZHGhlcnZlLmNv
ZGluYUBib290bGluLmNvbQAKCRBqpMbxpjikwAYOCAC9kUX8FFiWc0YzpY+ddv72
8xYAiCiKKZvS0PyDlQB+KF/iKMhdTKNAzBgTA4eNTNIwsOlk0xHNMULeFQqtia2+
dwuIDqWTitdkaz/JY+0+lsFQR6qzhaxbTErQWur++c53ojARc8HAJhW3d+xMfMuO
qreq2KFkXbrhf87PvSvMkYquxO97Gen06mQHO7PCMnV6LXYAc8yViFHrQrOHUpXe
a8vrMkPTWccgFSC4DyE8xiVVhTS5X4EjS9qQKOCbMdSe2h16yKmvPqnzR8HWh3HF
daKnGbB85h1P3QODU/m+FDg0oZ6Pa1EJ5jvvTxn/S54rMbWr2LLAiWM9PthAu9t0
=RSbU
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmWFaaEACgkQYKtH/8kJ
UieyARAA4znDL0VVNHbSCiPgxnXQ7ALFh4RSDiHxhBk588PR2bG84WktWGET+QJZ
Wbu7cC8dkyHT8MZpwOQOmmXKTH99CcTnJtbcmZUciKyoa7bj2SQNPqkXDRzAMUrU
8USBT8+taVq1J4cuG7bwKNq9QrKyQrNR5rxPnhlmXxLq/Xo/BnxfKR6WORkD2zJ/
diHjdi6PoKcYLElwhQOJtqMRjRT39CCOKoSEbznX5nhm/xkXYSHuz1WfT3XeumGO
RF1wytXxvSOQeeBGbD4eJCZAWj5Pab71/ni6Nve8B4lMM9vowdg4MxYhr/73BPof
tqy1XEhGM6KyKyp6eBxxyvZz1dIXySyCbXi7i+XOGbqXRii4WJWhlj5FP0SeCCOn
Pgxru+QCGqnArC6Qi9+bre9ZaRl+Hl5HXPobjN44zZoI7Iz1RL9JxoSHidUAen8S
ps7oKPFXXzNbetdJZyWMA3MYkrQaIdol3qTw/adfSoDycIWqJ/Wt1qt6PST3WQkY
ZrHeHK8ksAArhUM4oehRY7iup4nhGS/ZvU3OMuZ3KdZ8fMVM7PooGUxD1TQ0yuea
g0pTHEszl1c2gu3pkAKegO0g9CDfUDcElIxrIWk/OrELnH11cZG9nfHcpKMDgVtD
5n07Umcnd82XF+3WHgp2Ff38UmwALZVL5VQfY7fOfcgdg3rSLgQ=
=4c7C
-----END PGP SIGNATURE-----
Merge tag 'fsl_qmc_tsa_v6.8' of https://github.com//hcodina/linux into soc/drivers
PowerQUICC QMC and TSA drivers updates for v6.8
This pull request contains updates to prepare the support for the QMC
HDLC driver.
- Perform some fixes
- Add support for child devices
- Add QMC dynamic timeslot support
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Add support for asynchronous notifications in the OP-TEE FF-A driver. This
is the FF-A counterpart to the asynchronous notifications already
available in the OP-TEE SMC ABI.
-----BEGIN PGP SIGNATURE-----
iQJOBAABCgA4FiEEFV+gSSXZJY9ZyuB5LinzTIcAHJcFAmV25p0aHGplbnMud2lr
bGFuZGVyQGxpbmFyby5vcmcACgkQLinzTIcAHJefFRAA0BUWmcfYMQdvcy+4FIJw
9X5RwnEscVXN3UxFCmL06aZXcrsz+O9qIP2ZGksAadI7EhN+V/RO+gBF1yXO/jWA
GLv5LTDB1fYnKDYlEFkAqya8hVlsBS6DiNEwWm50lTyQlrYIMofa+sRuGsIFz2U3
QZnDK4ZWc5DTrBMp7Y3untdmirp8qLmRcO0QI6q3tpFgqZjj6DB8no4AAMlRdvB+
MLhC0Fz9jZffpSDxoE67fHMKDCS2mnZImleYLqkfDCWkZh1GCDgCxrd7PRw+p5eF
Hy+XtKI2Le83OPXTKjY/rzUhq2r7HcYiGlwqwJe68+Owz1HZReTT3WTG7ocuMyHq
YkSxbfzD7ug7k0YrUN/wUmtDMp87t4Q8wmx7/goH9ZSZ66SKJJvNVIN8uPWMc/eD
85MWFik5/EIcZYWgPg291Cay82mAqFU2RTJmA559pLylSx37/I6mwAXIKoQ/uI+P
q9+3XM2pnSBmI2qQt4s+49rCLcwYeDvc7aEo2NUxauC5tU5yhJXK7WR/qiPqZBIW
00+BZJdF1PUpjEloajfiRyFaS1X6M0zOzC5KABddmJYj+DVQRs/9wEZ+ROxpqu1G
nekOPODzN1vJVEKGuWOHQaieGYdHXariP4jckabYMFj6Blt28XPcebqFJjlnhFu/
lDRrWMfXfhLp+N+Iyf9ayZQ=
=xdbP
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmWFaEcACgkQYKtH/8kJ
Uifwsg//dx7fg3xdy7K0Ec92cWlvg2JTIOgTW5+qDrrAO8if+zZeLhAY/xiTtqKH
gTYbQ1GEgqVK7GEGwxXQEZt2wt22Vt7evRC2G/68I1PI6Kzhfr/DyU/9ITX0IfiJ
coCSTcD3q9sOgvY5NPiqTNXyY6MCYnpHXCYciPC96NccWyN5JaL14amRN3CVWntN
y9imCzVEIEeVkt3rPuckrmYZldZLtsUC30XHXjRPdkK2dC+6+vmpk93tI/fAGh01
DEpezN3X6ot+sZnRhY646gR2D6hkxL250A4Fd2REXdLojZJOyB3vye8wCBOSqpjN
PR6x0in2FkkIqzTGVoeOjzkIfvLPHAg5hImTjaXTl1380+hp+LWetGJsQT+WF4I5
f3xadidwEf/L8im1EHNw6DTHZb/bUWDbAob7Xk7qARi/r1tHWmFLbYrJ27kUjTVN
zMMirrA5B7Ucot9nmebGZfx1G6oVoeJdyr3+AuOG4uI1+xaJgJi/w8Q1siGZZGju
yTp6oO8VAf47rNhGNLIXOIHMG6cSUwFvuJmOmJs/HLvboCFeOR3UEPx/btz4Z6kd
WaAHWJAvS0iVHd5GjzkWJo28wukupS4QMxQVbLMBmZQ+8gV7u5UZNnCWiXjROpU+
EkTNr0qHUCKyzAdZCszT6KUpYDP9vqOP+EKFOSJKgchnL9wPhM0=
=UC68
-----END PGP SIGNATURE-----
Merge tag 'ffa-notif-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee into soc/drivers
OP-TEE: asynchronous notifications with FF-A
Add support for asynchronous notifications in the OP-TEE FF-A driver. This
is the FF-A counterpart to the asynchronous notifications already
available in the OP-TEE SMC ABI.
* tag 'ffa-notif-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee:
optee: ffa_abi: add asynchronous notifications
optee: provide optee_do_bottom_half() as a common function
Link: https://lore.kernel.org/r/20231211105249.GA587253@rayden
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Add support for a reserved system thread in the SMC-ABI of the OP-TEE driver.
SCMI with OP-TEE transport uses this to guarantee that it will always have
a thread available in the secure world.
-----BEGIN PGP SIGNATURE-----
iQJOBAABCgA4FiEEFV+gSSXZJY9ZyuB5LinzTIcAHJcFAmV23KsaHGplbnMud2lr
bGFuZGVyQGxpbmFyby5vcmcACgkQLinzTIcAHJeEbBAAi5QNyLc9G6jhnix/QdeU
s3kYLH4Vm0BeE3a+6iY3sxsfMQe+sGaAet5tBYGujJv4f1AzKjoCSysaCnekcJNQ
JNph6nwCdg8DrohVvTiIq571uYv0pV43WQ+CWTnVl4H0qOtdiqrlUuxJ/ER/kKOo
HdluX0HU22b6N9QllImjNQM5jEGzTJZNRxe2ruClxvEbcbbWAvYy4QW3XSeRt/dU
mBeJslPydY5IexbTGhElbpRxAG1zSGPZYPEFKaVFQ+Cs3DBc3JpVwjOWrHoix8P+
vln/WlKUoyesGssdqOT9nKxFG6lCKh+66TPi12F//7PN1fG2TsDcy3DTNLL0N/kk
+msi/01QBSCBZs3zXIQT1TZ5ICPN1VMaKaHZ89zi/cL0cKpbe/j4IryDsl95HF3W
QBkpTpYBbx1ehlL0y6Fdpv3Syx7z/1Uk/+oOqlF0dTPOv0aOBjGRyjZK/p3cZFAJ
qyB6CI17UGzc8s8mPdxc2KjQMw+IZD+qPWPkNGutm3mto/mtc91cwjOKuj/k/x1j
FkcKm+nm1nyrLGkkyvMa/HyWbFY/MG7oB0q+BquVKnjp2LXisWH/mKbhzr/h2Qjw
y8yH6SYipDbJAY/WhwM5+wkJqTp5q7CyFv7P0ZTCTH0Ku5vxzvk2pLO/aTaeoyab
APHDXEoBE8nj57wnNy7t6qI=
=0+RD
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmWFaAsACgkQYKtH/8kJ
UieeRg/+KDdh712emkEv8LCfTkS5mddPdx8MjLs/pUWmSV/OxA1qHDz1P7dEDU6t
YEFFhN9vcQDcy5asJkgBkerjOqU4riJAWC/iEm3p/EAB6WTEBk5L/5txYAeTJBly
4kDoCABkMaGbSTpqLC5QWHrOStWFrTqx742wUivJtdceCLJQ1bHBloB5e96mXm9M
P0a4QSaAD+kWDZVsgaJWVNh54FcFERkvqSHtE/CES3UrHQZ6iKU2aOyNjw278DVO
dX81Shm7N2OXy9s6CaDzry274/4Cc3lcw6Ey+TO5/h/QlzldBOu6t5seaG/AX2vV
aboGvlZ81x6tw3CHhji3wz5nMPl99mOPOB0JMRZReZAFbFxXDAhl1KI8tzCruAnJ
OhiIQIiz90JAyUcE+5OMLdYbu2RITHNl4JWwUzUKl+BLOWv7yF+tN3+hLVSiZPAZ
FjSYWBbZaPktChA0v93Jxfqfenqr4p+MXuOqV7DT9cEU5KDAQ4qB+4dcXcm5yDJR
Lqw6O9BazpfrwyXSpl1yMtZUHOmQjLHCj+08tjig/AZNWONFkPckaVRPLA6u2Sxi
tujM738gE+kMr1DD0G98TUrJh70qo8gQOUz16VNfFlzwgTf26LbFb2QIFnuqgzQz
8vu2z8P75xx5dU9255ZF4yqmodmGhjZ29BqzlAu+L0CBmFqhFKI=
=IrSQ
-----END PGP SIGNATURE-----
Merge tag 'system-thread-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee into soc/drivers
OP-TEE add reserved system thread
Add support for a reserved system thread in the SMC-ABI of the OP-TEE driver.
SCMI with OP-TEE transport uses this to guarantee that it will always have
a thread available in the secure world.
* tag 'system-thread-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee:
firmware: arm_scmi: optee: use optee system invocation
tee: optee: support tracking system threads
tee: system session
tee: optee: system thread call property
Link: https://lore.kernel.org/r/20231211102600.GA571787@rayden
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
- Add support for the platform with PCC type3 and interrupt ack
- Few cleanups and improvements: correct the format of some strings and domain typo,
add failure log
-----BEGIN PGP SIGNATURE-----
iQJJBAABCgAzFiEEQeMYD8qOQTc1R/snC8hXbtmJZlwFAmVxdIEVHHh1d2VpNUBo
aXNpbGljb24uY29tAAoJEAvIV27ZiWZczqoQALBHanmpdkiXcI6ylgaJ6F88Lq7P
p8mGYQojwWBU7X68bQax98CN8dHYD/v2xA1+3cCZrtW5+ZoasTlmF3WS8H8CrauQ
8Kz5Tgvltd1dLRmEX7/vtWoktnMbDZ6CotC4GDsOicyC0l8R03z01CLZHXbqK0Hl
d98n5h+GeoUiryzgzRfomqrpCDj7+zeOhSCcQxnLi7U9WGSjJk7hPciVqZ/dTeG8
++gieImv0CVEhi9PIl4el2468YuMtoP0HNItLmlsOdtH84Vs7SwUNhg89O3pPHVH
uQX7IfJHovRR1iK1PscX8h8ZQGIIcrxTq57S7mknJonOQYgwCoaEIBSWORpoQo5H
QddRZ4bv5XXUYl4cOum+eCj2ZUB58eawqL1q+t5d7Nf0awiZver8lrdgSPA51n5j
Iu/V0oU6il3us+ZXSO9RA5Zzlu6sblB1G+/NKragQnjtn0CcIQAb/gf0AXhg04ug
/JCZv19UEKBQ6yLS+1qtMQmLm7G5NqzbhPVhX0YtX/WySYn47f0AEvKeZFGnckia
Yn/bcdJ6PJqSxU0lFLrluBESb35NCXpzQDkfxbjAyfIlhDyp/0JStED/TTtd3c8Q
eBVo1aDb+CNjvl+17xZ6udD5j/0Y+kf2z8h9+x0tvmHOuz/4zFY7/0jip34u/v/1
M+bxo3wE3Z/91QXc
=hJz1
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmWFZ+AACgkQYKtH/8kJ
UicjMhAAqNSLRbXjQ1z9b0IpZYrQ5+VBUgoSLKYSA7u0ae20sh7B1fdW7xlejDK+
lrwg1/EICLxSPbJU1oLC8ExuIWpCcgQB//4Bjd24sVb6NIw9QwktPwcJPt2RX0be
/nIgImEfbiwRJF+xJRaCeuNf7lauaMZTfj6kShT3OEY5osC4Jq+SM1k3VUQ67jsP
h1HoOArbx9tHzsunvVtiucyXLS26l53cMjOIUvpTJi3+rbbJ7Tuvwi51sJMbGUAg
vl0b5Zf+rlhlLOcEX53PkheYeXiFDlACc1FTyeaN8f2t3XFHhzV05TIUcUFbYnGb
NrQw3eKvnMvZu2wOp4i0E0SJ5gb4inSMVgkDPfqmkXIpX9c3p8rQDxdtOotvOYkD
aooe38cv4BiwFL2DK2qLGF7yh1jVvZ+P6ASWZ6Ub7SNZhvuOxqno97+2qpMiBrhw
EGEW26vAgxixXhIsWS8YgGLAUNG3VCdzUQO9SK+jMUJodV4H6XP0CD4phBn9/2wx
lSO29aA6hi0R52O2lJjq1Y/wqh8/FGoluMWAVsLa2f+o9UeABxeu9T5lblatuwJ/
FDQo01F/HcDAiJfudKsNEb5xHglCRi4I3xCsLogbVEoIJOT7jaYpZ26h0xIX9lhc
wVVjjVggfjiPJVkipotNg6zoRbQrz3o+i41GJIyI0NBzXO+AzwI=
=cjVE
-----END PGP SIGNATURE-----
Merge tag 'hisi-drivers-for-6.8' of https://github.com/hisilicon/linux-hisi into soc/drivers
HiSilicon driver updates for v6.8
- Add support for the platform with PCC type3 and interrupt ack
- Few cleanups and improvements: correct the format of some strings and domain typo,
add failure log
* tag 'hisi-drivers-for-6.8' of https://github.com/hisilicon/linux-hisi:
soc: hisilicon: kunpeng_hccs: Support the platform with PCC type3 and interrupt ack
doc: kunpeng_hccs: Fix incorrect email domain name
soc: hisilicon: kunpeng_hccs: Remove an unused blank line
soc: hisilicon: kunpeng_hccs: Add failure log for no _CRS method
soc: hisilicon: kunpeng_hccs: Fix some incorrect format strings
Link: https://lore.kernel.org/r/6572C41B.6050703@hisilicon.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Randy reported yet another build issue with randconfigs on rv32:
WARNING: unmet direct dependencies detected for DMA_GLOBAL_POOL
Depends on [n]: !ARCH_HAS_DMA_SET_UNCACHED [=n] && !DMA_DIRECT_REMAP [=y]
Selected by [y]:
- ARCH_R9A07G043 [=y] && SOC_RENESAS [=y] && RISCV [=y] && NONPORTABLE [=y] && RISCV_ALTERNATIVE [=y] && !RISCV_ISA_ZICBOM [=n] && RISCV_SBI [=y]
This happens when DMA_DIRECT_REMAP is selected by the T-Head CMO erratum
option and DMA_GLOBAL_POOL is selected by the Andes CMO erratum. Block
selecting the RZ/Five config option, and by extension DMA_GLOBAL_POOL,
if DMA_DIRECT_REMAP has already been enabled.
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Closes: https://lore.kernel.org/all/24942b4d-d16a-463f-b39a-f9dfcb89d742@infradead.org/
Tested-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231211-primate-arbitrate-fbcd307a0b00@spud
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Introduce qmc_chan_{get,set}_ts_info() function to allow timeslots
modification at runtime.
The modification is provided using qmc_chan_set_ts_info() and will be
applied on next qmc_chan_start().
qmc_chan_set_ts_info() must be called with the channel rx and/or tx
stopped.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-18-herve.codina@bootlin.com
Timeslots setting is done at channel start() and stop().
There is no more need to do that during setup_chan().
Simply remove timeslot setting from setup_chan().
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-17-herve.codina@bootlin.com
In order to support runtime timeslot route changes, enable the
channel timeslot entries at channel start() and disable them at
channel stop().
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-16-herve.codina@bootlin.com
In order to support runtime timeslot route changes, some operations will
be different according the routing table used (common Rx and Tx table or
one table for Rx and one for Tx).
The is_tsa_64rxtx flag is introduced to avoid extra computation to
determine the table format each time we need it.
It is set once at initialization.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-15-herve.codina@bootlin.com
The Tx and Rx entries for a given channel are set in one function.
In order to modify Rx entries and Tx entries independently of one other,
split this function in one for the Rx part and one for the Tx part.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-14-herve.codina@bootlin.com
In order to allow runtime timeslot route changes, disabling channel TSA
entries needs to be supported.
Add support for this new feature.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-13-herve.codina@bootlin.com
The timeslots checked in qmc_check_chans() are the timeslots used.
With the introduction of the available timeslots, the used timeslots
are a subset of the available timeslots. The timeslots checked during
the qmc_check_chans() call should be the available ones.
Simply update and check the available timeslots instead of the used
timeslots in qmc_check_chans().
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-12-herve.codina@bootlin.com
The newly introduced qmc_chan_setup_tsa* functions check that the
channel entries are not already used.
These checks are also performed by qmc_check_chans() and are no more
needed.
Remove them from qmc_check_chans().
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-11-herve.codina@bootlin.com
Introduce the qmc_chan_setup_tsa* functions to setup entries related
to the given channel.
Use them during QMC channels setup.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-10-herve.codina@bootlin.com
qmc_setup_tsa* are called once at initialisation.
They initialize the QMC TSA table.
In order to introduce setup function later on for dynamic timeslots
management, rename the function to avoid later confusion.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-9-herve.codina@bootlin.com
Available timeslots masks define timeslots available for the related
channel. These timeslots are defined by the QMC binding.
Timeslots used are initialized to available timeslots but can be a
subset of available timeslots.
This prepares the dynamic timeslots management (ie. changing timeslots
at runtime).
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-8-herve.codina@bootlin.com
QMC child devices support is needed to avoid orphan DT nodes that use a
simple DT phandle to reference a QMC channel.
Allow to instantiate child devices and also extend the API to get the
qmc_chan using a child device.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Link: https://lore.kernel.org/r/20231205152116.122512-7-herve.codina@bootlin.com
The inline function specifier is present on some functions but it is
better to let the compiler decide inlining or not these functions.
Remove inline specifiers.
Fixes: 3178d58e0b ("soc: fsl: cpm1: Add support for QMC")
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Suggested-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-6-herve.codina@bootlin.com
In HDLC mode, some status flags related to the data read transfer can be
set by the hardware and need to be known by a QMC consumer for further
analysis.
Extend the API in order to provide these transfer status flags at the
read complete() call.
In TRANSPARENT mode, these flags have no meaning. Keep only one read
complete() API and update the consumers working in transparent mode.
In this case, the newly introduced flags parameter is simply unused.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-5-herve.codina@bootlin.com
The qmc_chan_reset_rx() set the is_rx_stopped flag. This leads to an
inconsistent state in the following sequence.
qmc_chan_stop()
qmc_chan_reset()
Indeed, after the qmc_chan_reset() call, the channel must still be
stopped. Only a qmc_chan_start() call can move the channel from stopped
state to started state.
Fix the issue removing the is_rx_stopped flag setting from
qmc_chan_reset()
Fixes: 3178d58e0b ("soc: fsl: cpm1: Add support for QMC")
Cc: stable@vger.kernel.org
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-4-herve.codina@bootlin.com
Running sparse (make C=1) on qmc.c raises a lot of warning such as:
...
warning: incorrect type in assignment (different address spaces)
expected struct cpm_buf_desc [usertype] *[noderef] __iomem bd
got struct cpm_buf_desc [noderef] [usertype] __iomem *txbd_free
...
Indeed, some variable were declared 'type *__iomem var' instead of
'type __iomem *var'.
Use the correct declaration to remove these warnings.
Fixes: 3178d58e0b ("soc: fsl: cpm1: Add support for QMC")
Cc: stable@vger.kernel.org
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-3-herve.codina@bootlin.com
Running sparse (make C=1) on tsa.c raises a lot of warning such as:
--- 8< ---
warning: incorrect type in assignment (different address spaces)
expected void *[noderef] si_regs
got void [noderef] __iomem *
--- 8< ---
Indeed, some variable were declared 'type *__iomem var' instead of
'type __iomem *var'.
Use the correct declaration to remove these warnings.
Fixes: 1d4ba0b81c ("soc: fsl: cpm1: Add support for TSA")
Cc: stable@vger.kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202312051959.9YdRIYbg-lkp@intel.com/
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-2-herve.codina@bootlin.com
Some members of struct svs_bank are not changed during runtime, so those
are not variables but constants: move all of those to a new structure
called svs_bank_pdata and refactor the code to make use of that and
reorder members by size where possible.
This effectively moves at least 50 bytes to the text segment.
While at it, also uniform the thermal zone names across the banks.
Link: https://lore.kernel.org/r/20231121125044.78642-19-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
The `freq` variable is of type unsigned long and, even though it does
currently work with u32 because no frequency is higher than U32_MAX,
it is not guaranteed that in the future we will see one.
Initialize the freq variable with ULONG_MAX instead of U32_MAX.
Link: https://lore.kernel.org/r/20231121125044.78642-18-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
The svs_init01() and svs_init02() functions are already checking if the
INIT01 and INIT02 modes are available - but that's done in for loops and
for each SVS bank.
Give those a shortcut to get out early if no SVS bank features the
desired init mode: this is especially done to avoid some locking in
the svs_init01(), but also to avoid multiple for loops to check the
same, when no bank supports a specific mode.
Link: https://lore.kernel.org/r/20231121125044.78642-17-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Cleanup the svs_probe() function: use dev_err_probe() where possible,
change some efuse read failure gotos and then remove now impossible
IS_ERR_OR_NULL() checks (as they will never return true) for nvmem
(efuse read) failures.
Also remove some unnecessary blank lines.
Link: https://lore.kernel.org/r/20231121125044.78642-16-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Drop the "pbank" pointer from struct svs_bank: this was used to simply
pass a pointer to the SVS bank that the flow was working on.
That for instance needs more locking, and it's avoidable by adding one
more parameter to functions working on specific banks, either a bank
index number, or passing the svs_bank pointer directly from the caller.
Even if the locking can now be reduced, for now, it was still left in
place for the sake of making sure to not introduce any stability and/or
reliability regression.
Link: https://lore.kernel.org/r/20231121125044.78642-12-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Remove almost all of the per-SoC .efuse_parsing() callbacks and replace
them with one common callback svs_common_parse_efuse(): to do that, also
change the function signature of the callback to add the newly required
pointer to struct svs_platform_data, containing the SVS-global fuse map.
This is done for MT8186, MT8188, MT8192, MT8195.
As for MT8183, the efuse parse function was simplified by using the new
fuse maps.
Link: https://lore.kernel.org/r/20231121125044.78642-11-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
The t-calibration-data (SVS-Thermal calibration data) shall exist for
all SoCs or SVS won't work anyway: move it to the common svs_probe()
function and remove it from all of the per-SoC efuse_parsing() probe
callbacks.
Link: https://lore.kernel.org/r/20231121125044.78642-10-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
In preparation for commonizing the efuse parsing function, add the
SVS-Thermal coefficients for all SoCs for which said function can be
commonized (MT8186, MT8188, MT8192, MT8195) and assign those to their
platform data structure.
That will be used to calculate the MTS parameter with the equation
MTS = (ts_coeff * 2) / 1000
This commit brings no functional changes.
Link: https://lore.kernel.org/r/20231121125044.78642-9-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
In preparation for adding a common efuse parsing function which will
greatly reduce code duplication, add a SoC-specific mapping that will
be used to retrieve the right SVS calibration values from the fuses.
The maps are two: one is a Global Map used for reading parameters that
are SVS-global, and one is a Bank Map for reading calibrations for
each SVS Bank.
While at it, also populate the map in the platform data for each SoC.
Being this a preparation commit, there are no functional changes.
Link: https://lore.kernel.org/r/20231121125044.78642-8-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
This driver tries to create a device link to the thermal sensor device:
change all instances of "lvts" and "thermal" to "thermal-sensor", as
that's what the devicetree node name must be.
Note for MT8183: As specified in a previous commit, this SoC never got
SVS probing, so this is not a breaking change and it does not require
fallback for older device trees.
Link: https://lore.kernel.org/r/20231121125044.78642-7-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Many 32-bit members of this struct can be size reduced to either 16-bit
or even 8-bit, for a total saving of ~61 bytes per bank. Keeping in mind
that one SoC declares at least two banks, this brings a minimum of ~122
bytes saving (depending on compiler optimization).
Link: https://lore.kernel.org/r/20231121125044.78642-6-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
In svs_bank_resource_setup() there is a "big" switch assigning different
names depending on sw_id and type and this will surely grow: for example
MT8186 has got a two-line type (high/low) SVS bank for CPU_BIG, and this
would require more switch nesting.
Simplify all of this by changing that to a devm_kasprintf() call that
will concatenate the SW_ID string (e.g. SVSB_CPU_LITTLE) with the Type
string (e.g. _LOW), resulting in the expected full bank name (e.g.
SVSB_CPU_LITTLE_LOW).
This being a dynamic allocation can be slower, but this happens only
once in the life of this driver and it's not a performance path, so it's
totally acceptable.
Link: https://lore.kernel.org/r/20231121125044.78642-5-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
The sw_id and type specifiers currently are defined as BIT(x) for
unknown reasons: nothing in this code makes any AND/OR check for
those, and that would never happen anyway because both sw_id and
type are exclusive, as in:
- There will never be a bank that is for both CPU and GPU, or
for CPU and CCI together;
- A bank cannot be contemporarily of one-line and two-line type,
as much as it cannot contemporarily have both HIGH and LOW roles
Change those definitions to enumerations and also add some kerneldoc
to better describe what they are for and what they indicate.
While at it, also change the names adding _SWID or _TYPE to increase
human readability.
Link: https://lore.kernel.org/r/20231121125044.78642-4-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
The svs_regs_v2 array of registers was offsetted by 0xc00 because the
SVS node was supposed to have the same iostart as the thermal sensors.
That's wrong for two reasons:
1. Two different devices cannot have the same iostart in devicetree,
as those would technically be the same device otherwise; and
2. SVS and Thermal Sensor (be it LVTS or AUXADC thermal) are not the
same IP, and those two do obviously have a different iospace.
Even though there already are users of this register array, the only
one that declares a devicetree node for SVS is MT8183 - but it never
actually worked because the "tzts1" thermal zone missed thermal trips,
hence this driver's probe always failed on that SoC.
Knowing this - it is safe to say that keeping compatibility with older
device trees is pointless, hence simply subtract the 0xc00 offset from
the register offset array.
Link: https://lore.kernel.org/r/20231121125044.78642-3-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Add MT8188 reset bit map for VDOSYS0 and VDOSYS1.
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
- Reset ID must starts from 0 and be consecutive, but
the reset bits in our hardware design is not continuous,
some bits are left unused, we need a map to solve the problem
- Use old style 1-to-1 mapping if .rst_tb is not defined
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
- Add register definitions for MT8188
- Add VDOSYS1 routing table
- Update MUTEX definitions accordingly
- Set VSYNC length from 0x40 (default) to 1 since ETHDR is bypassed
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Add MT8188 VPPSYS0 and VPPSYS1 driver data.
Signed-off-by: yu-chang.lee <yu-chang.lee@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
MT8186 svs has a number of banks which used as optimization of opp
voltage table for corresponding dvfs drivers.
MT8186 svs big core uses 2-line high bank and low bank to optimize the
voltage of opp table for higher and lower frequency respectively.
Signed-off-by: Mark Tseng <chun-jen.tseng@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>