linux/drivers/clk
Suraj Gupta 820ce0c8e9 clk: Add devm_clk_bulk_get_optional_enable() helper
Add a new managed clock framework helper function that combines getting
optional bulk clocks and enabling them in a single operation.

The devm_clk_bulk_get_optional_enable() function simplifies the common
pattern where drivers need to get optional bulk clocks, prepare and enable
them, and have them automatically disabled/unprepared and freed when the
device is unbound.

This new API follows the established pattern of
devm_clk_bulk_get_all_enabled() and reduces boilerplate code in drivers
that manage multiple optional clocks.

Suggested-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Suraj Gupta <suraj.gupta2@amd.com>
Reviewed-by: Brian Masney <bmasney@redhat.com>
Acked-by: Stephen Boyd <sboyd@kernel.org>
Link: https://patch.msgid.link/20260116192725.972966-2-suraj.gupta2@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-01-21 18:57:07 -08:00
..
actions clk: actions: Fix discarding const qualifier by 'container_of' macro 2025-11-20 19:23:43 -08:00
analogbits
at91 bitmap updates for v6.19 2025-12-06 09:01:27 -08: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
davinci clk: davinci: psc: drop unused reset lookup 2025-11-18 17:52:54 +01:00
hisilicon clk: hisilicon: hi6220-stub: convert from round_rate() to determine_rate() 2025-09-08 09:41:27 -04:00
imgtec
imx This pull request is entirely SoC clk drivers, not for lack of trying to modify 2025-12-08 09:38:52 +09:00
ingenic syscore: Pass context data to callbacks 2025-11-14 10:01:52 +01:00
keystone clk: keystone: syscon-clk: fix regmap leak on probe failure 2025-11-30 12:05:45 -08: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 reset: mpfs: add non-auxiliary bus probing 2025-11-11 16:47:24 +00: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 soc: driver updates for 6.19 2025-12-05 17:29:04 -08: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 clk: qcom: Mark camcc_sm7150_hws static 2025-11-30 12:04:10 -08:00
ralink
renesas This pull request is entirely SoC clk drivers, not for lack of trying to modify 2025-12-08 09:38:52 +09:00
rockchip This pull request is entirely SoC clk drivers, not for lack of trying to modify 2025-12-08 09:38:52 +09:00
samsung This pull request is entirely SoC clk drivers, not for lack of trying to modify 2025-12-08 09:38:52 +09:00
sifive clk: sifive: sifive-prci: convert from round_rate() to determine_rate() 2025-09-08 09:41:28 -04:00
socfpga clk: socfpga: agilex5: add clock driver for Agilex5 2025-10-22 22:52:58 -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: Set clk_hw_onecell_data::num before using flex array 2025-11-20 19:02:16 -08:00
spear clk: spear: vco-pll: convert from round_rate() to determine_rate() 2025-09-08 09:41:31 -04:00
sprd clk: sprd: sc9860: Simplify with of_device_get_match_data() 2025-11-10 17:02:12 -08:00
st Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
starfive
stm32 Merge branch 'clk-determine-rate' into clk-next 2025-10-06 13:02:50 -05:00
sunxi
sunxi-ng clk: sunxi-ng: sun55i-a523-ccu: Lower audio0 pll minimum rate 2025-10-23 02:06:47 +08:00
tegra syscore: Pass context data to callbacks 2025-11-14 10:01:52 +01: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: Add VIIF clocks 2025-11-20 18:53:32 -08: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
Kconfig There's a bunch of patches here across drivers/clk/ to migrate drivers to use 2025-10-07 09:28:37 -07:00
Makefile clk: keystone: fix compile testing 2025-11-30 12:06:21 -08: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-aspeed.c
clk-aspeed.h
clk-ast2600.c
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-composite.c
clk-conf.c
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: Add devm_clk_bulk_get_optional_enable() helper 2026-01-21 18:57:07 -08: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 clk: en7523: Add reset-controller support for EN7523 SoC 2025-11-13 20:05:13 -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-fixed-factor.c clk: fixed-factor: drop round_rate() clk ops 2025-09-08 09:41:31 -04:00
clk-fixed-mmio.c
clk-fixed-rate.c
clk-fixed-rate_test.c
clk-fixed-rate_test.h
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-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-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: remove unused dt-bindings include 2025-11-08 12:01:01 +02: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-npcm7xx.c
clk-npcm8xx.c
clk-nspire.c
clk-palmas.c
clk-plldig.c
clk-pwm.c
clk-qoriq.c
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-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-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_parent_data_test.h
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
kunit_clk_assigned_rates.h
kunit_clk_assigned_rates_multiple.dtso
kunit_clk_assigned_rates_multiple_consumer.dtso
kunit_clk_assigned_rates_null.dtso
kunit_clk_assigned_rates_null_consumer.dtso
kunit_clk_assigned_rates_one.dtso
kunit_clk_assigned_rates_one_consumer.dtso
kunit_clk_assigned_rates_u64_multiple.dtso
kunit_clk_assigned_rates_u64_multiple_consumer.dtso
kunit_clk_assigned_rates_u64_one.dtso
kunit_clk_assigned_rates_u64_one_consumer.dtso
kunit_clk_assigned_rates_without.dtso
kunit_clk_assigned_rates_without_consumer.dtso
kunit_clk_assigned_rates_zero.dtso
kunit_clk_assigned_rates_zero_consumer.dtso
kunit_clk_fixed_rate_test.dtso
kunit_clk_hw_get_dev_of_node.dtso
kunit_clk_parent_data_test.dtso