linux/drivers/clk
Linus Torvalds 522ba450b5 There's a bunch of patches here across drivers/clk/ to migrate drivers to use
struct clk_ops::determine_rate() instead of the round_rate() one so that we can
 remove the round_rate clk_op entirely. Brian has taken up that task which
 nobody else has wanted to do for close to a decade. Thanks Brian! This is all
 prerequisite work to get to the real task of improving the clk rate setting
 process. Once we have determine_rate() used everywhere, we'll be able to do
 things like chain the rate request structs in linked lists to order the rate
 setting operations or add more parameters without having to change every clk
 driver in existence. It's also nice to not have multiple ways to do something
 which just causes confusion for clk driver authors. Overall I'm glad this is
 getting done.
 
 Beyond this change we also have a tweak to the clk_lookup() function in the
 core framework to use hashing on the clk name instead of a clk tree walk with
 string comparisons. We _still_ rely on the clk name to be unique, because
 historically we've used globally unique strings to describe the clk tree
 topology. This tree walk becomes increasingly slow as more clks are added to
 the system. Searching from the roots for a duplicate is simple but pretty dumb
 and it wastes boot time so we're using a hash table as an improvement. Ideally
 we wouldn't rely on the strings to be unique at all, relegating them to simply
 debug information, but that is future work that will likely require some sort
 of Kconfig knob indicating strings aren't used for topology description.
 
 Outside of the core framework changes we have the usual new SoC support and
 fixes to clk drivers for things that were discovered once the clks were used by
 consumer drivers. Nothing in particular is jumping out at me in the "misc"
 pile, except maybe the Amlogic driver that has gone through a refactoring. That
 series got a fix from testing in -next though so it seems likely that things
 have been getting good test coverage for a couple weeks already.
 -----BEGIN PGP SIGNATURE-----
 
 iQJIBAABCAAyFiEE9L57QeeUxqYDyoaDrQKIl8bklSUFAmjkoQAUHHN3Ym95ZEBj
 aHJvbWl1bS5vcmcACgkQrQKIl8bklSWfWBAA3cjpOX/qOBDPmYPvV+WgiTPcmnw+
 PaMiGNqIWctnJiuYYUNVCfBIvTk9i1vYSgEosHAOqjXQV+7Ee31420xn5RYr6Zen
 cfeD58SJwZ1JVidvxwWclC5pnfTVXBC3wlHILCFHhckaGOT2k3d0ryN2io2TYuRx
 t9JsoW73YW+bmOWoFDHPMp4ow5Q87aa8k3/srhIP67tw2mzJp8Wp+EG0t0PVFF7Z
 aboz+QPwyT2YOLFKJxm6nTLb9FRVq3QLSO3Ek0+0TYXfRqkfegvGR+M82P4Jq2Y3
 osmTsumWeI170iAETmx2Py+uUV8MmnvPFQ6mxrGoXYyOx9SclN+SC86cOsi+RsgD
 830CHupZ/TrN3+DGyX6WVx1j7XKCplKhFXrXiFbkPnj4nJwi5UgiJrjAjPy78+iX
 LyvKfeT9ooAAVBVRMyZIWGF3kuQf5qHFMps5fwJk/j3R9yMiI10SVhruhYij1qAi
 EEisj955xqdyZV2gq85E7zHbjySA0nvNABn3NVUQOKPYQqtpglqXKGJuXZ1//9pa
 fZM2a3fH7w4fwH1x06FKut9zf1AZUgyasJPtgyCT9dpN+pcoNmJfoH3T42MCItbm
 XKEYgnv/kQT+M+GokBUfg8bJY5uPnPLa/f6aAAIAKGZV0HXAqz2q73SDlW7KUQmr
 vhgA4MRH4Vqviic=
 =fjY4
 -----END PGP SIGNATURE-----

Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux

Pull clk updates from Stephen Boyd:
 "There's a bunch of patches here across drivers/clk/ to migrate drivers
  to use struct clk_ops::determine_rate() instead of the round_rate()
  one so that we can remove the round_rate clk_op entirely. Brian has
  taken up that task which nobody else has wanted to do for close to a
  decade. Thanks Brian!

  This is all prerequisite work to get to the real task of improving the
  clk rate setting process. Once we have determine_rate() used
  everywhere, we'll be able to do things like chain the rate request
  structs in linked lists to order the rate setting operations or add
  more parameters without having to change every clk driver in
  existence. It's also nice to not have multiple ways to do something
  which just causes confusion for clk driver authors. Overall I'm glad
  this is getting done.

  Beyond this change we also have a tweak to the clk_lookup() function
  in the core framework to use hashing on the clk name instead of a clk
  tree walk with string comparisons. We _still_ rely on the clk name to
  be unique, because historically we've used globally unique strings to
  describe the clk tree topology. This tree walk becomes increasingly
  slow as more clks are added to the system. Searching from the roots
  for a duplicate is simple but pretty dumb and it wastes boot time so
  we're using a hash table as an improvement. Ideally we wouldn't rely
  on the strings to be unique at all, relegating them to simply debug
  information, but that is future work that will likely require some
  sort of Kconfig knob indicating strings aren't used for topology
  description.

  Outside of the core framework changes we have the usual new SoC
  support and fixes to clk drivers for things that were discovered once
  the clks were used by consumer drivers. Nothing in particular is
  jumping out at me in the "misc" pile, except maybe the Amlogic driver
  that has gone through a refactoring. That series got a fix from
  testing in -next though so it seems likely that things have been
  getting good test coverage for a couple weeks already"

* tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (299 commits)
  clk: microchip: core: remove duplicate roclk_determine_rate()
  reset: aspeed: register AST2700 reset auxiliary bus device
  dt-bindings: clock: ast2700: modify soc0/1 clock define
  clk: tegra: do not overallocate memory for bpmp clocks
  clk: ep93xx: Use int type to store negative error codes
  clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver
  clk: loongson2: Add clock definitions for Loongson-2K0300 SoC
  clk: loongson2: Avoid hardcoding firmware name of the reference clock
  clk: loongson2: Allow zero divisors for dividers
  clk: loongson2: Support scale clocks with an alternative mode
  clk: loongson2: Allow specifying clock flags for gate clock
  dt-bindings: clock: loongson2: Add Loongson-2K0300 compatible
  clk: clocking-wizard: Fix output clock register offset for Versal platforms
  clk: xilinx: Optimize divisor search in clk_wzrd_get_divisors_ver()
  clk: mmp: pxa1908: Instantiate power driver through auxiliary bus
  clk: s2mps11: add support for S2MPG10 PMIC clock
  dt-bindings: clock: samsung,s2mps11: add s2mpg10
  dt-bindings: stm32: cosmetic fixes for STM32MP25 clock and reset bindings
  clk: stm32: introduce clocks for STM32MP21 platform
  dt-bindings: stm32: add STM32MP21 clocks and reset bindings
  ...
2025-10-07 09:28:37 -07:00
..
actions Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
analogbits clk: analogbits: Fix incorrect calculation of vco rate delta 2025-01-16 13:43:49 -08:00
at91 Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
axis
axs10x clk: axs10x: pll_clock: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
baikal-t1 clk: baikal-t1: ccu-pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:26 -04:00
bcm Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
berlin clk: Fix typos 2025-07-26 23:49:18 -07:00
davinci clk: Fix typos 2025-07-26 23:49:18 -07:00
hisilicon clk: hisilicon: hi6220-stub: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
imgtec clk: imgtec: use %pe for better readability of errors while printing 2025-03-04 12:15:25 -08:00
imx clk: imx95-blk-ctl: Save/restore registers when RPM routines are called 2025-09-12 17:28:29 +03:00
ingenic clk: ingenic: x1000-cgu: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
keystone clk: keystone: sci-clk: use devm_kmemdup_array() 2025-09-19 22:30:01 -07:00
mediatek Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
meson clk: amlogic: fix recent code refactoring 2025-09-19 21:58:50 -07:00
microchip clk: microchip: core: remove duplicate roclk_determine_rate() 2025-09-30 21:54:29 -07:00
mmp Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
mstar clk: mstar: msc313-cpupll: convert from round_rate() to determine_rate() 2025-09-08 09:41:30 -04:00
mvebu clk: mvebu: dove-divider: convert from round_rate() to determine_rate() 2025-09-08 09:41:30 -04:00
mxs clk: mxs: ref: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
nuvoton clk: nuvoton: ma35d1-pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
nxp Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
pistachio clk: pistachio: pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
pxa
qcom Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
ralink clk: ralink: mtmips: remove duplicated 'xtal' clock for Ralink SoC RT3883 2025-01-13 13:35:38 -08:00
renesas clk: renesas: r9a09g05[67]: Reduce differences 2025-09-12 09:53:37 +02:00
rockchip Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
samsung clk: samsung: exynos990: Add PERIC0 and PERIC1 clock support 2025-09-07 11:12:45 +02:00
sifive clk: sifive: sifive-prci: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
socfpga clk: socfpga: stratix10: Optimize local variables 2025-04-24 17:38:07 -05:00
sophgo clk: sophgo: cv18xx-ip: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
spacemit clk: spacemit: fix i2s clock 2025-09-19 22:54:46 -07:00
spear clk: spear: vco-pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:31 -04:00
sprd clk: sprd: pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
st Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
starfive clk: Fix typos 2025-07-26 23:49:18 -07:00
stm32 Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
sunxi clk: sunxi: Do not enable by default during compile testing 2025-04-27 13:49:18 +08:00
sunxi-ng There's a bunch of patches here across drivers/clk/ to migrate drivers to use 2025-10-07 09:28:37 -07:00
tegra Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
thead Merge branches 'clk-bindings', 'clk-cleanup', 'clk-renesas', 'clk-thead' and 'clk-spacemit' into clk-next 2025-10-06 12:56:23 -05:00
ti Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
uniphier
ux500 clk: ux500: prcmu: convert from round_rate() to determine_rate() 2025-09-08 09:41:31 -04:00
versatile clk: versatile: vexpress-osc: convert from round_rate() to determine_rate() 2025-09-08 09:41:31 -04:00
visconti clk: visconti: pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:31 -04:00
x86 clk: x86: cgu: convert from round_rate() to determine_rate() 2025-09-08 09:41:25 -04:00
xilinx Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
zynq clk: zynq: pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
zynqmp clk: zynqmp: pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
.kunitconfig clk: Allow kunit tests to run without OF_OVERLAY enabled 2024-10-22 14:09:20 -07:00
clk-apple-nco.c clk: apple-nco: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
clk-asm9260.c clk: Fix typos 2025-07-26 23:49:18 -07:00
clk-aspeed.c
clk-aspeed.h
clk-ast2600.c clk: Fix typos 2025-07-26 23:49:18 -07:00
clk-axi-clkgen.c clk: clk-axi-clkgen: remove unneeded semicolon 2025-08-14 13:27:00 -07:00
clk-axm5516.c clk: remove unneeded 'fast_io' parameter in regmap_config 2025-08-14 12:50:35 -07:00
clk-bd718x7.c
clk-bm1880.c clk: bm1880: convert from round_rate() to determine_rate() 2025-09-08 09:41:30 -04:00
clk-bulk.c
clk-cdce706.c clk: cdce706: convert from round_rate() to determine_rate() 2025-09-08 09:41:30 -04:00
clk-cdce925.c clk: cdce925: convert from round_rate() to determine_rate() 2025-09-08 09:41:26 -04:00
clk-clps711x.c clk: Fix typos 2025-07-26 23:49:18 -07:00
clk-composite.c
clk-conf.c clk: clk-conf: support assigned-clock-rates-u64 2024-08-16 15:21:19 -07:00
clk-cs2000-cp.c clk: cs2000-cp: convert from round_rate() to determine_rate() 2025-09-08 09:41:26 -04:00
clk-devres.c clk: Provide devm_clk_bulk_get_all_enabled() helper 2024-10-22 13:55:22 -07:00
clk-divider.c clk: divider: remove round_rate() in favor of determine_rate() 2025-09-08 09:41:31 -04:00
clk-en7523.c pci-v6.14-changes 2025-01-25 16:03:40 -08:00
clk-ep93xx.c Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
clk-eyeq.c clk: Fix typos 2025-07-26 23:49:18 -07:00
clk-fixed-factor.c clk: fixed-factor: drop round_rate() clk ops 2025-09-08 09:41:31 -04:00
clk-fixed-mmio.c clk: Switch back to struct platform_driver::remove() 2024-09-21 14:12:05 -07:00
clk-fixed-rate.c clk: Switch back to struct platform_driver::remove() 2024-09-21 14:12:05 -07:00
clk-fixed-rate_test.c clk: Add KUnit tests for clk fixed rate basic type 2024-07-29 15:33:13 -07:00
clk-fixed-rate_test.h clk: Add KUnit tests for clk fixed rate basic type 2024-07-29 15:33:13 -07:00
clk-fractional-divider.c clk: fractional-divider: convert from round_rate() to determine_rate() 2025-09-08 09:41:26 -04:00
clk-fractional-divider.h
clk-fractional-divider_test.c
clk-fsl-flexspi.c
clk-fsl-sai.c
clk-gate.c clk: Fix typos 2025-07-26 23:49:18 -07:00
clk-gate_test.c
clk-gemini.c clk: gemini: convert from round_rate() to determine_rate() 2025-09-08 09:41:26 -04:00
clk-gpio.c clk: clk-gpio: add driver for gated-fixed-clocks 2024-10-16 11:20:42 -07:00
clk-hi655x.c
clk-highbank.c clk: highbank: convert from round_rate() to determine_rate() 2025-09-08 09:41:26 -04:00
clk-hsdk-pll.c clk: hsdk-pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:30 -04:00
clk-k210.c
clk-lan966x.c clk: lan966x: add support for lan969x SoC clock driver 2024-10-13 19:21:11 +03:00
clk-lmk04832.c clk: lmk04832: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
clk-lochnagar.c
clk-loongson1.c clk: loongson1: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
clk-loongson2.c clk: loongson2: Add clock definitions for Loongson-2K0300 SoC 2025-09-21 12:48:51 -07:00
clk-max9485.c clk: max9485: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
clk-max77686.c
clk-milbeaut.c clk: milbeaut: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
clk-moxart.c
clk-multiplier.c clk: multiplier: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
clk-mux.c
clk-nomadik.c clk: Use str_enable_disable-like helpers 2025-01-15 12:27:04 -08:00
clk-npcm7xx.c
clk-npcm8xx.c clk: npcm8xx: add clock controller 2024-10-17 15:17:51 -07:00
clk-nspire.c
clk-palmas.c clk: Switch back to struct platform_driver::remove() 2024-09-21 14:12:05 -07:00
clk-plldig.c
clk-pwm.c clk: pwm: Make use of non-sleeping PWMs 2025-06-19 18:09:58 -07:00
clk-qoriq.c clk: clk-qoriq: Replace of_node_put() with __free() 2024-10-09 16:01:00 -07:00
clk-renesas-pcie.c
clk-rk808.c
clk-rp1.c clk: rp1: convert from round_rate() to determine_rate() 2025-09-03 14:58:19 -07:00
clk-rpmi.c clk: Add clock driver for the RISC-V RPMI clock service group 2025-09-25 13:16:48 -06:00
clk-s2mps11.c clk: s2mps11: add support for S2MPG10 PMIC clock 2025-09-21 10:43:18 -07:00
clk-scmi.c Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
clk-scpi.c clk: scpi: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
clk-si514.c clk: si514: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
clk-si521xx.c clk: si521xx: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
clk-si544.c clk: si544: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
clk-si570.c clk: si570: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
clk-si5341.c clk: si5341: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
clk-si5351.c clk: Fix typos 2025-07-26 23:49:18 -07:00
clk-si5351.h
clk-sp7021.c There's a bunch of patches here across drivers/clk/ to migrate drivers to use 2025-10-07 09:28:37 -07:00
clk-sparx5.c clk: sparx5: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
clk-stm32f4.c clk: stm32f4: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
clk-stm32h7.c
clk-tps68470.c clk: tps68470: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
clk-twl.c clk: twl: add TWL6030 support 2024-10-17 12:02:42 -07:00
clk-twl6040.c
clk-versaclock3.c clk: versaclock3: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
clk-versaclock5.c clk: versaclock5: convert from round_rate() to determine_rate() 2025-09-08 09:41:31 -04:00
clk-versaclock7.c clk: versaclock7: convert from round_rate() to determine_rate() 2025-09-08 09:41:31 -04:00
clk-vt8500.c clk: vt8500: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
clk-wm831x.c clk: wm831x: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
clk-xgene.c clk: xgene: convert from round_rate() to determine_rate() 2025-09-08 09:41:29 -04:00
clk.c clk: Use hashtable for global clk lookups 2025-09-21 10:15:43 -07:00
clk.h
clk_kunit_helpers.c clk: test: Add test managed of_clk_add_hw_provider() 2024-10-09 16:25:32 -07:00
clk_parent_data_test.h clk: Add KUnit tests for clks registered with struct clk_parent_data 2024-07-29 15:33:13 -07:00
clk_test.c Merge branches 'clk-bindings', 'clk-cleanup', 'clk-pwm', 'clk-hw-device', 'clk-xilinx' and 'clk-adi' into clk-next 2025-07-29 15:18:13 -07:00
clkdev.c ARM: 9445/1: clkdev: Mark some functions with __printf() attribute 2025-03-26 13:31:49 +00:00
Kconfig There's a bunch of patches here across drivers/clk/ to migrate drivers to use 2025-10-07 09:28:37 -07:00
kunit_clk_assigned_rates.h clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_multiple.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_multiple_consumer.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_null.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_null_consumer.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_one.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_one_consumer.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_u64_multiple.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_u64_multiple_consumer.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_u64_one.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_u64_one_consumer.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_without.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_without_consumer.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_zero.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_assigned_rates_zero_consumer.dtso clk: test: Add KUnit tests for clock-assigned-rates{-u64} DT properties 2024-10-09 16:25:32 -07:00
kunit_clk_fixed_rate_test.dtso clk: Add KUnit tests for clk fixed rate basic type 2024-07-29 15:33:13 -07:00
kunit_clk_hw_get_dev_of_node.dtso clk: tests: add clk_hw_get_dev() and clk_hw_get_of_node() tests 2025-06-20 00:15:39 -07:00
kunit_clk_parent_data_test.dtso clk: Add KUnit tests for clks registered with struct clk_parent_data 2024-07-29 15:33:13 -07:00
Makefile clk: Add clock driver for the RISC-V RPMI clock service group 2025-09-25 13:16:48 -06:00