mirror of https://github.com/armbian/build.git
remove mainlined patch in 6.14.5 (#8148)
This commit is contained in:
parent
0e1e0dbbda
commit
de99717c68
|
@ -1,52 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Heiko Stuebner <heiko@sntech.de>
|
||||
Date: Thu, 20 Feb 2025 23:54:48 +0100
|
||||
Subject: clk: check for disabled clock-provider in of_clk_get_hw_from_clkspec
|
||||
|
||||
of_clk_get_hw_from_clkspec checks all available clock-providers by
|
||||
compairing 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, a 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 for example when a clock
|
||||
is optional, provided by a separate block which just never gets enabled.
|
||||
|
||||
One example of this happening is the rk3588's VOP, which has optional
|
||||
additional display-clock-supplies 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:
|
||||
https://lore.kernel.org/dri-devel/20250215-vop2-hdmi1-disp-modes-v1-3-81962a7151d6@collabora.com/
|
||||
|
||||
As we already know the of-node of the presumed clock-provider, just add
|
||||
a check via of_device_is_available whether this is a "valid" device node.
|
||||
This prevents ethernal defer-loops.
|
||||
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/clk.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/clk/clk.c
|
||||
+++ b/drivers/clk/clk.c
|
||||
@@ -5258,6 +5258,10 @@ of_clk_get_hw_from_clkspec(struct of_phandle_args *clkspec)
|
||||
if (!clkspec)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
+ /* Check if node in clkspec is in disabled/fail state */
|
||||
+ if (!of_device_is_available(clkspec->np))
|
||||
+ return ERR_PTR(-ENOENT);
|
||||
+
|
||||
mutex_lock(&of_clk_mutex);
|
||||
list_for_each_entry(provider, &of_clk_providers, link) {
|
||||
if (provider->node == clkspec->np) {
|
||||
--
|
||||
Armbian
|
||||
|
Loading…
Reference in New Issue