twx-linux/drivers/clk
Heiko Stuebner 51ae5b7aa9 clk: check for disabled clock-provider in of_clk_get_hw_from_clkspec()
[ Upstream commit b20150d499b3ee5c2d632fbc5ac94f98dd33accf ]

of_clk_get_hw_from_clkspec() checks all available clock-providers by
comparing their of nodes to the one from the clkspec. If no matching
clock provider is found, the function returns -EPROBE_DEFER to cause a
re-check at a later date. If a matching clock provider is found, an
authoritative answer can be retrieved from it whether the clock exists
or not.

This does not take into account that the clock-provider may never
appear, because it's node is disabled. This can happen when a clock is
optional, provided by a separate block which never gets enabled.

One example of this happening is the rk3588's VOP, which has optional
additional display clocks coming from PLLs inside the hdmiphy blocks.
These can be used for better rates, but the system will also work
without them.

The problem around that is described in the followups to[1]. As we
already know the of node of the presumed clock provider, add a check via
of_device_is_available() whether this is a "valid" device node. This
prevents eternal defer loops.

Link: https://lore.kernel.org/dri-devel/20250215-vop2-hdmi1-disp-modes-v1-3-81962a7151d6@collabora.com/ [1]
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20250222223733.2990179-1-heiko@sntech.de
[sboyd@kernel.org: Reword commit text a bit]
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-05-02 07:50:53 +02:00
..
actions clk: actions: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:03 -07:00
analogbits clk: analogbits: Fix incorrect calculation of vco rate delta 2025-02-08 09:52:02 +01:00
at91 clk: at91: sama7g5: Allocate only the needed amount of memory for PLLs 2024-10-04 16:29:30 +02:00
axis
axs10x clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
baikal-t1 clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
bcm clk: bcm: bcm53573: fix OF node leak in init 2024-10-17 15:24:17 +02:00
berlin clk: berlin: div: Add a determine_rate hook 2023-06-08 18:39:26 -07:00
davinci clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use 2024-08-03 08:54:23 +02:00
hisilicon clk: hisilicon: hi3559a: Fix an erroneous devm_kfree() 2024-03-26 18:19:50 -04:00
imgtec
imx clk: clk-imx8mp-audiomix: fix dsp/ocram_a clock parents 2025-04-10 14:37:31 +02:00
ingenic clk: ingenic: tcu: Switch to determine_rate 2023-06-08 18:39:34 -07:00
keystone clk: keystone: pll: fix a couple NULL vs IS_ERR() checks 2023-11-20 11:59:06 +01:00
mediatek clk: mediatek: mt2701-mm: add missing dummy clk 2025-02-17 09:40:20 +01:00
meson clk: amlogic: g12a: fix mmc A peripheral clock 2025-04-10 14:37:31 +02:00
microchip clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
mmp clk: mmp: pxa168: Fix memory leak in pxa168_clk_init() 2024-02-05 20:14:29 +00:00
mstar
mvebu Merge branches 'clk-imx', 'clk-samsung', 'clk-annotate', 'clk-marvell' and 'clk-lmk' into clk-next 2023-08-30 14:39:19 -07:00
mxs
nuvoton clk: nuvoton: Convert to devm_platform_ioremap_resource() 2023-08-22 14:52:11 -07:00
nxp
pistachio
pxa ARM: SoC changes for 6.5 2023-06-29 15:28:33 -07:00
qcom clk: qcom: gdsc: Set retain_ff before moving to HW CTRL 2025-04-25 10:45:33 +02:00
ralink clk: ralink: mtmips: remove duplicated 'xtal' clock for Ralink SoC RT3883 2025-02-08 09:51:58 +01:00
renesas clk: renesas: r9a07g043: Fix HP clock source for RZ/Five 2025-05-02 07:50:40 +02:00
rockchip clk: rockchip: rk3328: fix wrong clk_ref_usb3otg parent 2025-04-10 14:37:30 +02:00
samsung clk: samsung: Fix UBSAN panic in samsung_clk_init() 2025-04-10 14:37:30 +02:00
sifive clk: sifive: Do not register clkdevs for PRCI clocks 2024-06-21 14:38:28 +02:00
socfpga clk: socfpga: Fix undefined behavior bug in struct stratix10_clock_data 2023-11-28 17:20:00 +00:00
spear clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
sprd clk: sprd: Fix thm_parents incorrect configuration 2023-09-11 13:50:49 -07:00
st clk: st: flexgen: Switch to determine_rate 2023-06-08 18:39:35 -07:00
starfive clk: starfive: Use pm_runtime_resume_and_get to fix pm_runtime_get_sync() usage 2024-10-04 16:29:31 +02:00
stm32 clk: stm32: Fix a signedness issue in clk_stm32_composite_determine_rate() 2023-10-12 17:30:54 -07:00
sunxi of: remove internal arguments from of_property_for_each_u32() 2025-02-08 09:51:51 +01:00
sunxi-ng clk: sunxi-ng: a100: enable MMC clock reparenting 2025-02-17 09:40:18 +01:00
tegra clk: tegra: fix error return case for recalc_rate 2023-09-12 10:56:05 -07:00
ti clk: ti: dra7-atl: Fix leak of of_nodes 2024-10-04 16:29:31 +02:00
uniphier clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
ux500 clk: ux500: sysctrl: Add a determine_rate hook 2023-06-08 18:39:30 -07:00
versatile clk: versatile: sp810: Add a determine_rate hook 2023-06-08 18:39:31 -07:00
visconti clk: visconti: Add bounds-checking coverage for struct visconti_pll_provider 2024-08-29 17:33:29 +02:00
x86
xilinx clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
zynq clk: zynq: Prevent null pointer dereference caused by kmalloc failure 2024-03-26 18:19:56 -04:00
zynqmp drivers: clk: zynqmp: update divider round rate logic 2024-01-25 15:35:37 -08:00
.kunitconfig
clk_test.c clk: test: Add a determine_rate hook 2023-06-08 18:39:25 -07:00
clk-apple-nco.c clk: clk-apple-nco: Add NULL check in applnco_probe 2024-12-09 10:32:22 +01:00
clk-asm9260.c
clk-aspeed.c Merge branches 'clk-imx', 'clk-samsung', 'clk-annotate', 'clk-marvell' and 'clk-lmk' into clk-next 2023-08-30 14:39:19 -07:00
clk-aspeed.h
clk-ast2600.c Merge branches 'clk-imx', 'clk-samsung', 'clk-annotate', 'clk-marvell' and 'clk-lmk' into clk-next 2023-08-30 14:39:19 -07:00
clk-axi-clkgen.c clk: clk-axi-clkgen: make sure to enable the AXI bus clock 2024-12-09 10:32:22 +01:00
clk-axm5516.c clk: axm5516: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:05 -07:00
clk-bd718x7.c
clk-bm1880.c clk: bm1880: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:11 -07:00
clk-bulk.c
clk-cdce706.c Merge branches 'clk-renesas', 'clk-determine-rate', 'clk-allwinner', 'clk-samsung' and 'clk-amlogic' into clk-next 2023-06-26 08:55:04 -07:00
clk-cdce925.c clk: cdce925: Remove redundant of_match_ptr() 2023-08-22 14:16:53 -07:00
clk-clps711x.c
clk-composite.c clk: composite: Fix handling of high clock rates 2023-06-12 17:42:10 -07:00
clk-conf.c of: remove internal arguments from of_property_for_each_u32() 2025-02-08 09:51:51 +01:00
clk-cs2000-cp.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-devres.c clk: Fix slab-out-of-bounds error in devm_clk_release() 2023-08-22 15:25:18 -07:00
clk-divider.c
clk-en7523.c clk: en7523: Initialize num before accessing hws in en7523_register_clocks() 2024-12-14 20:00:20 +01:00
clk-fixed-factor.c
clk-fixed-mmio.c
clk-fixed-rate.c
clk-fractional-divider.c
clk-fractional-divider.h
clk-fsl-flexspi.c
clk-fsl-sai.c clk: fsl-sai: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:15 -07:00
clk-gate_test.c
clk-gate.c
clk-gemini.c Merge branches 'clk-imx', 'clk-samsung', 'clk-annotate', 'clk-marvell' and 'clk-lmk' into clk-next 2023-08-30 14:39:19 -07:00
clk-gpio.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-hi655x.c
clk-highbank.c
clk-hsdk-pll.c clk: hsdk-pll: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:20 -07:00
clk-k210.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-lan966x.c clk: lan966x: Remove unused round_rate hook 2023-06-08 18:39:25 -07:00
clk-lmk04832.c clk: lmk04832: Support using PLL1_LD as SPI readback pin 2023-08-23 15:47:35 -07:00
clk-lochnagar.c clk: lochnagar: Add a determine_rate hook 2023-06-08 18:39:27 -07:00
clk-loongson1.c
clk-loongson2.c clk: clk-loongson2: Zero init clk_init_data 2023-06-12 18:30:46 -07:00
clk-max9485.c
clk-max77686.c
clk-milbeaut.c clk: Annotate struct clk_hw_onecell_data with __counted_by 2023-08-22 13:51:26 -07:00
clk-moxart.c
clk-multiplier.c
clk-mux.c
clk-nomadik.c
clk-npcm7xx.c clk: npcm7xx: Fix incorrect kfree 2023-11-20 11:59:06 +01:00
clk-nspire.c
clk-palmas.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-plldig.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-pwm.c
clk-qoriq.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-renesas-pcie.c clk: rs9: fix wrong default value for clock amplitude 2024-06-12 11:12:07 +02:00
clk-rk808.c
clk-s2mps11.c
clk-scmi.c clk: scmi: Free scmi_clk allocated when the clocks with invalid info are skipped 2023-11-20 11:59:16 +01:00
clk-scpi.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-si514.c
clk-si521xx.c clk: si521xx: Increase stack based print buffer size in probe 2024-01-10 17:16:55 +01:00
clk-si544.c
clk-si570.c
clk-si5341.c clk: si5341: fix an error code problem in si5341_output_clk_set_rate 2024-01-25 15:35:38 -08:00
clk-si5351.c of: remove internal arguments from of_property_for_each_u32() 2025-02-08 09:51:51 +01:00
clk-si5351.h
clk-sp7021.c clk: sp7021: fix return value check in sp7021_clk_probe() 2024-01-25 15:35:37 -08:00
clk-sparx5.c
clk-stm32f4.c clk: stm32f4: mux: Add a determine_rate hook 2023-06-08 18:39:27 -07:00
clk-stm32h7.c
clk-stm32mp1.c
clk-tps68470.c
clk-twl6040.c
clk-versaclock3.c clk: vc3: Make vc3_clk_mux enum values based on vc3_clk enum values 2023-09-11 13:50:43 -07:00
clk-versaclock5.c Merge branches 'clk-versa', 'clk-strdup', 'clk-amlogic', 'clk-allwinner' and 'clk-rockchip' into clk-next 2023-08-30 14:38:19 -07:00
clk-versaclock7.c Merge branches 'clk-versa', 'clk-strdup', 'clk-amlogic', 'clk-allwinner' and 'clk-rockchip' into clk-next 2023-08-30 14:38:19 -07:00
clk-vt8500.c
clk-wm831x.c clk: wm831x: clkout: Add a determine_rate hook 2023-06-08 18:39:28 -07:00
clk-xgene.c
clk.c clk: check for disabled clock-provider in of_clk_get_hw_from_clkspec() 2025-05-02 07:50:53 +02:00
clk.h
clkdev.c clkdev: Update clkdev id usage to allow for longer names 2024-06-21 14:38:38 +02:00
Kconfig This pull request is full of clk driver changes. In fact, there aren't any 2023-08-30 19:53:39 -07:00
Makefile Merge branches 'clk-versa', 'clk-strdup', 'clk-amlogic', 'clk-allwinner' and 'clk-rockchip' into clk-next 2023-08-30 14:38:19 -07:00