[PATCH RFC 16/40] clk: move U-Boot CCF to clk/uccf
Casey Connolly
casey.connolly at linaro.org
Thu Mar 19 21:56:38 CET 2026
Prepare for the introduction of full CCF support by moving the existing
U-Boot CCF support to a uccf subdirectory.
Due to a number of incompatibilities it won't be possible to support
existing U-Boot CCF clocks with the full CCF, this allows us to support
both. While it may make sense to remove U-Boot CCF in the future, it may
be necessary to continue supporting it to meet space/memory requirements
in SPL for some platforms.
Signed-off-by: Casey Connolly <casey.connolly at linaro.org>
---
drivers/clk/Kconfig | 51 +++++++---------------
drivers/clk/Makefile | 7 ++-
drivers/clk/uccf/Kconfig | 22 ++++++++++
drivers/clk/uccf/Makefile | 11 +++++
drivers/clk/{ => uccf}/clk-composite.c | 0
drivers/clk/{ => uccf}/clk-divider.c | 0
drivers/clk/{ => uccf}/clk-fixed-factor.c | 0
drivers/clk/{ => uccf}/clk-gate.c | 0
drivers/clk/{ => uccf}/clk-mux.c | 0
drivers/clk/{ => uccf}/clk.c | 0
.../{clk_sandbox_ccf.c => uccf/clk_sandbox_uccf.c} | 2 +-
include/sandbox-clk.h | 2 +-
12 files changed, 54 insertions(+), 41 deletions(-)
diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index c88931c8ec4d..5cc76cd55cc8 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -10,8 +10,24 @@ config CLK
a particular clock rate and check on available clocks. Clocks can
feed into other clocks in a tree structure, with multiplexers to
choose the source for each clock.
+source "drivers/clk/uccf/Kconfig"
+
+config SANDBOX_CLK_CCF
+ bool "Sandbox U-Boot Common Clock Framework [uCCF] support"
+ depends on SANDBOX && (CLK_CCF || CLK_CCF_FULL)
+ help
+ Enable this option if you want to test the Linux kernel's Common
+ Clock Framework [CCF] code in U-Boot's Sandbox clock driver.
+
+config CLK_COMPOSITE_CCF
+ bool "Common Clock Framework [CCF] composite clk support"
+ depends on CLK_CCF || CLK_CCF_FULL
+ help
+ Enable this option if you want to (re-)use the Linux kernel's Common
+ Clock Framework [CCF] composite code in U-Boot's clock driver.
+
config CLK_AUTO_ID
bool "Enable support of an unique clock id with several provider"
depends on CLK
help
@@ -66,35 +82,8 @@ config CLK_BOSTON
select SYSCON
help
Enable this to support the clocks
-config SPL_CLK_CCF
- bool "SPL Common Clock Framework [CCF] support"
- depends on SPL
- help
- Enable this option if you want to (re-)use the Linux kernel's Common
- Clock Framework [CCF] code in U-Boot's SPL.
-
-config SPL_CLK_COMPOSITE_CCF
- bool "SPL Common Clock Framework [CCF] composite clk support"
- depends on SPL_CLK_CCF
- help
- Enable this option if you want to (re-)use the Linux kernel's Common
- Clock Framework [CCF] composite code in U-Boot's SPL.
-
-config CLK_CCF
- bool "Common Clock Framework [CCF] support"
- help
- Enable this option if you want to (re-)use the Linux kernel's Common
- Clock Framework [CCF] code in U-Boot's clock driver.
-
-config CLK_COMPOSITE_CCF
- bool "Common Clock Framework [CCF] composite clk support"
- depends on CLK_CCF
- help
- Enable this option if you want to (re-)use the Linux kernel's Common
- Clock Framework [CCF] composite code in U-Boot's clock driver.
-
config CLK_GPIO
bool "GPIO-controlled clock gate driver"
depends on CLK
help
@@ -180,16 +169,8 @@ config CLK_OCTEON
default y
help
Enable this to support the clocks on Octeon MIPS platforms.
-config SANDBOX_CLK_CCF
- bool "Sandbox Common Clock Framework [CCF] support"
- depends on SANDBOX
- select CLK_CCF
- help
- Enable this option if you want to test the Linux kernel's Common
- Clock Framework [CCF] code in U-Boot's Sandbox clock driver.
-
config CLK_SCMI
bool "Enable SCMI clock driver"
depends on CLK
depends on SCMI_FIRMWARE
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index f96d57a3223a..30991e9f55d7 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -6,14 +6,14 @@
obj-$(CONFIG_$(PHASE_)CLK) += clk-uclass.o
obj-$(CONFIG_$(PHASE_)CLK) += clk_fixed_rate.o
obj-$(CONFIG_$(PHASE_)CLK) += clk_fixed_factor.o
-obj-$(CONFIG_$(PHASE_)CLK_CCF) += clk.o clk-divider.o clk-mux.o clk-gate.o
-obj-$(CONFIG_$(PHASE_)CLK_CCF) += clk-fixed-factor.o
-obj-$(CONFIG_$(PHASE_)CLK_COMPOSITE_CCF) += clk-composite.o
obj-$(CONFIG_$(PHASE_)CLK_GPIO) += clk-gpio.o
obj-$(CONFIG_$(PHASE_)CLK_STUB) += clk-stub.o
+# U-Boot/IMX "micro" CCF port
+obj-$(CONFIG_$(PHASE_)CLK_CCF) += uccf/
+
obj-y += adi/
obj-y += airoha/
obj-y += analogbits/
obj-$(CONFIG_$(PHASE_)MACH_IMX) += imx/
@@ -57,7 +57,6 @@ obj-$(CONFIG_CLK_XLNX_CLKWZRD) += clk-xlnx-clock-wizard.o
obj-$(CONFIG_CLK_ZYNQ) += clk_zynq.o
obj-$(CONFIG_CLK_ZYNQMP) += clk_zynqmp.o
obj-$(CONFIG_CLK_ICS8N3QV01) += ics8n3qv01.o
obj-$(CONFIG_MACH_PIC32) += clk_pic32.o
-obj-$(CONFIG_SANDBOX_CLK_CCF) += clk_sandbox_ccf.o
obj-$(CONFIG_SANDBOX) += clk_sandbox.o
obj-$(CONFIG_SANDBOX) += clk_sandbox_test.o
diff --git a/drivers/clk/uccf/Kconfig b/drivers/clk/uccf/Kconfig
new file mode 100644
index 000000000000..bf4a634a403f
--- /dev/null
+++ b/drivers/clk/uccf/Kconfig
@@ -0,0 +1,22 @@
+
+
+config SPL_CLK_CCF
+ bool "SPL U-Boot Common Clock Framework [uCCF] support"
+ depends on SPL
+ help
+ Enable this option if you want to (re-)use the Linux kernel's Common
+ Clock Framework [CCF] code in U-Boot's SPL.
+
+config SPL_CLK_COMPOSITE_CCF
+ bool "SPL U-Boot Common Clock Framework [uCCF] composite clk support"
+ depends on SPL_CLK_CCF
+ help
+ Enable this option if you want to (re-)use the Linux kernel's Common
+ Clock Framework [CCF] composite code in U-Boot's SPL.
+
+config CLK_CCF
+ bool "U-Boot Common Clock Framework [uCCF] support"
+ help
+ Enable this option if you want to (re-)use the Linux kernel's Common
+ Clock Framework [CCF] code in U-Boot's clock driver.
+
diff --git a/drivers/clk/uccf/Makefile b/drivers/clk/uccf/Makefile
new file mode 100644
index 000000000000..02440b5e322c
--- /dev/null
+++ b/drivers/clk/uccf/Makefile
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (c) 2015 Google, Inc
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+
+obj-$(CONFIG_$(PHASE_)CLK_CCF) += clk.o clk-divider.o clk-mux.o clk-gate.o
+obj-$(CONFIG_$(PHASE_)CLK_CCF) += clk-fixed-factor.o
+obj-$(CONFIG_$(PHASE_)CLK_COMPOSITE_CCF) += clk-composite.o
+
+obj-$(CONFIG_SANDBOX_CLK_CCF) += clk_sandbox_uccf.o
diff --git a/drivers/clk/clk-composite.c b/drivers/clk/uccf/clk-composite.c
similarity index 100%
rename from drivers/clk/clk-composite.c
rename to drivers/clk/uccf/clk-composite.c
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/uccf/clk-divider.c
similarity index 100%
rename from drivers/clk/clk-divider.c
rename to drivers/clk/uccf/clk-divider.c
diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/uccf/clk-fixed-factor.c
similarity index 100%
rename from drivers/clk/clk-fixed-factor.c
rename to drivers/clk/uccf/clk-fixed-factor.c
diff --git a/drivers/clk/clk-gate.c b/drivers/clk/uccf/clk-gate.c
similarity index 100%
rename from drivers/clk/clk-gate.c
rename to drivers/clk/uccf/clk-gate.c
diff --git a/drivers/clk/clk-mux.c b/drivers/clk/uccf/clk-mux.c
similarity index 100%
rename from drivers/clk/clk-mux.c
rename to drivers/clk/uccf/clk-mux.c
diff --git a/drivers/clk/clk.c b/drivers/clk/uccf/clk.c
similarity index 100%
rename from drivers/clk/clk.c
rename to drivers/clk/uccf/clk.c
diff --git a/drivers/clk/clk_sandbox_ccf.c b/drivers/clk/uccf/clk_sandbox_uccf.c
similarity index 98%
rename from drivers/clk/clk_sandbox_ccf.c
rename to drivers/clk/uccf/clk_sandbox_uccf.c
index 9b8036d41aac..9c74ed940acd 100644
--- a/drivers/clk/clk_sandbox_ccf.c
+++ b/drivers/clk/uccf/clk_sandbox_uccf.c
@@ -112,9 +112,9 @@ static const struct clk_ops clk_gate2_ops = {
.disable = clk_gate2_disable,
.get_rate = clk_generic_get_rate,
};
-struct clk *sandbox_clk_register_gate2(struct device *dev, const char *name,
+struct clk *sandbox_clk_register_gate2(struct udevice *dev, const char *name,
const char *parent_name,
unsigned long flags, void __iomem *reg,
u8 bit_idx, u8 cgr_val,
u8 clk_gate2_flags)
diff --git a/include/sandbox-clk.h b/include/sandbox-clk.h
index c2616c27a44a..eb02a474c741 100644
--- a/include/sandbox-clk.h
+++ b/include/sandbox-clk.h
@@ -57,9 +57,9 @@ static inline struct clk *sandbox_clk_gate(const char *name, const char *parent,
return clk_register_gate(NULL, name, parent, CLK_SET_RATE_PARENT,
reg, bit_idx, clk_gate_flags, NULL);
}
-struct clk *sandbox_clk_register_gate2(struct device *dev, const char *name,
+struct clk *sandbox_clk_register_gate2(struct udevice *dev, const char *name,
const char *parent_name,
unsigned long flags,
void __iomem *reg, u8 bit_idx,
u8 cgr_val, u8 clk_gate_flags);
--
2.51.0
More information about the U-Boot
mailing list