[PATCH v2 0/7] clk: prepare for adding Linux CCF port
Casey Connolly <[email protected]> Wed, 01 Apr 2026 16:34:01 +0200
| Newsgroups | io.groups.u-boot-amlogic,org.u-boot-project.lists.u-boot |
|---|---|
| Message-ID | <[email protected]> |
This series adjusts the clock framework in preparation for the addition of full Linux CCF support. Most of the changes here are standalone improvements which is why this is a separate series. Patch 1 fixes the clk Makefile so that some IMX specific drivers don't get built when CLK_CCF is enabled for a different platform. Patch 2 moves the existing U-Boot CCF port to clk/uccf so it's easier to keep track of once the Linux CCF versions of the drivers are added. Patch 3 then moves the basic (not CCF specific) fixed factor/rate clocks to clk/basic, these may also be used with U-Boot CCF but are incompatible with Linux CCF. Patch 4 renames struct clk_ops to clk_ops_uboot, unfortunately these ops are totally incompatible with Linux CCF. I went with this approach rather than using a different name for the Linux clk_ops mostly because it reduces the diff for ported Linux clock drivers. Patches 5/6 deal with some tech debt by fixing the function prototypes for clk_set_rate() and clk_get_parent_rate(), both of these can return a negative errno (and some drivers do this) but the prototype is an unsigned long. This should help encourage better error checking. Patch 7 introduces clk_prepare/unprepare and associated functions. These are stubs for UCLASS_CLK but will be enabled for CCF_FULL. Most drivers should use clk_prepare_enable() but CCF will automatically prepare unprepared clocks to aid in the transition. While it might be convenient to remove support for prepare/unprepare, there are relevant usecases for it for clocks that can't necessarily be enabled or that need things like PLL tuning which only needs to be done once. --- Changes since v1: * Added prepare/unprepare stubs for clk-uclass * v1: https://lore.kernel.org/u-boot/[email protected]/ To: Tom Rini <[email protected]> To: Lukasz Majewski <[email protected]> To: Marek Vasut <[email protected]> Cc: Casey Connolly <[email protected]> Cc: Neil Armstrong <[email protected]> Cc: Quentin Schulz <[email protected]> Cc: Mattijs Korpershoek <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] --- Casey Connolly (7): clk: restrict clk/imx to MACH_IMX clk: move U-Boot CCF to clk/uccf clk: rename clk_ops to clk_ops_uboot clk: move fixed clocks to clk/basic clk: make clk_set_rate() return signed long clk: make clk_get_parent_rate return signed long clk: compat: add clk (un)prepare and associated functions arch/arm/cpu/armv7/bcm281xx/clk-core.c | 8 +-- arch/arm/cpu/armv7/bcm281xx/clk-core.h | 14 ++--- cmd/clk.c | 2 +- drivers/clk/Kconfig | 51 +++++---------- drivers/clk/Makefile | 17 ++--- drivers/clk/adi/clk-adi-pll.c | 2 +- drivers/clk/adi/clk-shared.c | 4 +- drivers/clk/adi/clk.h | 2 +- drivers/clk/airoha/clk-airoha.c | 4 +- drivers/clk/altera/clk-agilex.c | 2 +- drivers/clk/altera/clk-agilex5.c | 2 +- drivers/clk/altera/clk-arria10.c | 2 +- drivers/clk/altera/clk-mem-n5x.c | 2 +- drivers/clk/altera/clk-n5x.c | 2 +- drivers/clk/aspeed/clk_ast2500.c | 4 +- drivers/clk/aspeed/clk_ast2600.c | 4 +- drivers/clk/at91/clk-generic.c | 4 +- drivers/clk/at91/clk-main.c | 8 +-- drivers/clk/at91/clk-master.c | 8 +-- drivers/clk/at91/clk-peripheral.c | 6 +- drivers/clk/at91/clk-programmable.c | 4 +- drivers/clk/at91/clk-sam9x60-pll.c | 10 +-- drivers/clk/at91/clk-sam9x60-usb.c | 4 +- drivers/clk/at91/clk-system.c | 2 +- drivers/clk/at91/clk-utmi.c | 4 +- drivers/clk/at91/compat.c | 30 ++++----- drivers/clk/at91/pmc.c | 2 +- drivers/clk/at91/pmc.h | 2 +- drivers/clk/at91/sckc.c | 4 +- drivers/clk/basic/Makefile | 7 +++ drivers/clk/{ => basic}/clk_fixed_factor.c | 2 +- drivers/clk/{ => basic}/clk_fixed_rate.c | 4 +- drivers/clk/clk-cdce9xx.c | 4 +- drivers/clk/clk-gpio.c | 2 +- drivers/clk/clk-hsdk-cgu.c | 4 +- drivers/clk/clk-stub.c | 4 +- drivers/clk/clk-uclass.c | 33 ++++++---- drivers/clk/clk-xlnx-clock-wizard.c | 4 +- drivers/clk/clk_bcm6345.c | 2 +- drivers/clk/clk_boston.c | 2 +- drivers/clk/clk_k210.c | 8 +-- drivers/clk/clk_octeon.c | 2 +- drivers/clk/clk_pic32.c | 4 +- drivers/clk/clk_sandbox.c | 4 +- drivers/clk/clk_sandbox_test.c | 2 +- drivers/clk/clk_scmi.c | 6 +- drivers/clk/clk_versaclock.c | 22 +++---- drivers/clk/clk_versal.c | 4 +- drivers/clk/clk_vexpress_osc.c | 4 +- drivers/clk/clk_zynq.c | 8 +-- drivers/clk/clk_zynqmp.c | 6 +- drivers/clk/exynos/clk-exynos7420.c | 6 +- drivers/clk/exynos/clk-pll.c | 4 +- drivers/clk/exynos/clk.h | 2 +- drivers/clk/ics8n3qv01.c | 4 +- drivers/clk/imx/clk-composite-8m.c | 6 +- drivers/clk/imx/clk-composite-93.c | 2 +- drivers/clk/imx/clk-fracn-gppll.c | 4 +- drivers/clk/imx/clk-gate-93.c | 4 +- drivers/clk/imx/clk-gate2.c | 4 +- drivers/clk/imx/clk-imx6q.c | 2 +- drivers/clk/imx/clk-imx6ul.c | 2 +- drivers/clk/imx/clk-imx8.c | 4 +- drivers/clk/imx/clk-imx8.h | 2 +- drivers/clk/imx/clk-imx8qm.c | 2 +- drivers/clk/imx/clk-imx8qxp.c | 2 +- drivers/clk/imx/clk-imxrt1020.c | 2 +- drivers/clk/imx/clk-imxrt1170.c | 4 +- drivers/clk/imx/clk-pfd.c | 4 +- drivers/clk/imx/clk-pll14xx.c | 8 +-- drivers/clk/imx/clk-pllv3.c | 18 +++--- drivers/clk/intel/clk_intel.c | 2 +- drivers/clk/mediatek/clk-mtk.c | 14 ++--- drivers/clk/mediatek/clk-mtk.h | 10 +-- drivers/clk/meson/a1.c | 8 +-- drivers/clk/meson/axg-ao.c | 2 +- drivers/clk/meson/axg.c | 2 +- drivers/clk/meson/clk-measure.c | 2 +- drivers/clk/meson/g12a-ao.c | 2 +- drivers/clk/meson/g12a.c | 10 +-- drivers/clk/meson/gxbb.c | 8 +-- drivers/clk/microchip/mpfs_clk_cfg.c | 4 +- drivers/clk/microchip/mpfs_clk_msspll.c | 2 +- drivers/clk/microchip/mpfs_clk_periph.c | 2 +- drivers/clk/mpc83xx_clk.c | 2 +- drivers/clk/mtmips/clk-mt7620.c | 2 +- drivers/clk/mtmips/clk-mt7621.c | 2 +- drivers/clk/mtmips/clk-mt7628.c | 2 +- drivers/clk/mvebu/armada-37xx-periph.c | 4 +- drivers/clk/mvebu/armada-37xx-tbg.c | 2 +- drivers/clk/nuvoton/clk_npcm.c | 4 +- drivers/clk/nuvoton/clk_npcm.h | 2 +- drivers/clk/owl/clk_owl.c | 6 +- drivers/clk/qcom/clock-apq8016.c | 2 +- drivers/clk/qcom/clock-apq8096.c | 2 +- drivers/clk/qcom/clock-ipq4019.c | 2 +- drivers/clk/qcom/clock-ipq5424.c | 2 +- drivers/clk/qcom/clock-ipq9574.c | 2 +- drivers/clk/qcom/clock-qcm2290.c | 2 +- drivers/clk/qcom/clock-qcom.c | 4 +- drivers/clk/qcom/clock-qcom.h | 2 +- drivers/clk/qcom/clock-qcs404.c | 2 +- drivers/clk/qcom/clock-qcs615.c | 2 +- drivers/clk/qcom/clock-qcs8300.c | 2 +- drivers/clk/qcom/clock-sa8775p.c | 2 +- drivers/clk/qcom/clock-sc7280.c | 2 +- drivers/clk/qcom/clock-sdm845.c | 4 +- drivers/clk/qcom/clock-sm6115.c | 2 +- drivers/clk/qcom/clock-sm6350.c | 2 +- drivers/clk/qcom/clock-sm7150.c | 2 +- drivers/clk/qcom/clock-sm8150.c | 2 +- drivers/clk/qcom/clock-sm8250.c | 2 +- drivers/clk/qcom/clock-sm8550.c | 4 +- drivers/clk/qcom/clock-sm8650.c | 4 +- drivers/clk/qcom/clock-x1e80100.c | 4 +- drivers/clk/renesas/clk-rcar-gen2.c | 4 +- drivers/clk/renesas/clk-rcar-gen3.c | 4 +- drivers/clk/renesas/compound-clock.c | 4 +- drivers/clk/renesas/r9a06g032-clocks.c | 6 +- drivers/clk/renesas/rcar-gen2-cpg.h | 2 +- drivers/clk/renesas/rcar-gen3-cpg.h | 2 +- drivers/clk/renesas/rzg2l-cpg.c | 8 +-- drivers/clk/rockchip/clk_px30.c | 12 ++-- drivers/clk/rockchip/clk_rk3036.c | 4 +- drivers/clk/rockchip/clk_rk3066.c | 4 +- drivers/clk/rockchip/clk_rk3128.c | 4 +- drivers/clk/rockchip/clk_rk3188.c | 4 +- drivers/clk/rockchip/clk_rk322x.c | 4 +- drivers/clk/rockchip/clk_rk3288.c | 4 +- drivers/clk/rockchip/clk_rk3308.c | 4 +- drivers/clk/rockchip/clk_rk3328.c | 4 +- drivers/clk/rockchip/clk_rk3368.c | 4 +- drivers/clk/rockchip/clk_rk3399.c | 8 +-- drivers/clk/rockchip/clk_rk3528.c | 10 +-- drivers/clk/rockchip/clk_rk3568.c | 14 ++--- drivers/clk/rockchip/clk_rk3576.c | 8 +-- drivers/clk/rockchip/clk_rk3588.c | 12 ++-- drivers/clk/rockchip/clk_rv1108.c | 4 +- drivers/clk/rockchip/clk_rv1126.c | 12 ++-- drivers/clk/sifive/sifive-prci.c | 4 +- drivers/clk/sophgo/clk-cv1800b.c | 4 +- drivers/clk/sophgo/clk-ip.c | 30 ++++----- drivers/clk/sophgo/clk-ip.h | 18 +++--- drivers/clk/sophgo/clk-pll.c | 8 +-- drivers/clk/sophgo/clk-pll.h | 4 +- drivers/clk/starfive/clk-jh7110-pll.c | 4 +- drivers/clk/starfive/clk.h | 2 +- drivers/clk/stm32/clk-stm32-core.c | 22 +++---- drivers/clk/stm32/clk-stm32-core.h | 2 +- drivers/clk/stm32/clk-stm32f.c | 4 +- drivers/clk/stm32/clk-stm32h7.c | 2 +- drivers/clk/stm32/clk-stm32mp1.c | 4 +- drivers/clk/sunxi/clk_sun6i_rtc.c | 2 +- drivers/clk/sunxi/clk_sunxi.c | 2 +- drivers/clk/tegra/tegra-car-clk.c | 4 +- drivers/clk/tegra/tegra186-clk.c | 4 +- drivers/clk/thead/clk-th1520-ap.c | 8 +-- drivers/clk/ti/clk-am3-dpll-x2.c | 2 +- drivers/clk/ti/clk-am3-dpll.c | 4 +- drivers/clk/ti/clk-ctrl.c | 2 +- drivers/clk/ti/clk-divider.c | 4 +- drivers/clk/ti/clk-gate.c | 2 +- drivers/clk/ti/clk-k3-pll.c | 4 +- drivers/clk/ti/clk-k3.c | 6 +- drivers/clk/ti/clk-mux.c | 4 +- drivers/clk/ti/clk-sci.c | 4 +- drivers/clk/uccf/Kconfig | 22 +++++++ drivers/clk/uccf/Makefile | 11 ++++ drivers/clk/{ => uccf}/clk-composite.c | 20 +++--- drivers/clk/{ => uccf}/clk-divider.c | 4 +- drivers/clk/{ => uccf}/clk-fixed-factor.c | 2 +- drivers/clk/{ => uccf}/clk-gate.c | 2 +- drivers/clk/{ => uccf}/clk-mux.c | 2 +- drivers/clk/{ => uccf}/clk.c | 4 +- .../{clk_sandbox_ccf.c => uccf/clk_sandbox_uccf.c} | 8 +-- drivers/clk/uniphier/clk-uniphier-core.c | 6 +- drivers/phy/cadence/phy-cadence-sierra.c | 2 +- drivers/phy/cadence/phy-cadence-torrent.c | 2 +- drivers/phy/phy-stm32-usbphyc.c | 2 +- drivers/phy/phy-ti-am654.c | 2 +- drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 2 +- drivers/phy/ti/phy-j721e-wiz.c | 6 +- drivers/power/domain/imx8mp-hsiomix.c | 2 +- include/clk-uclass.h | 6 +- include/clk.h | 72 +++++++++++++++++++++- include/clk/sunxi.h | 2 +- include/linux/clk-provider.h | 24 ++++---- include/sandbox-clk.h | 2 +- 188 files changed, 596 insertions(+), 497 deletions(-) --- base-commit: c704af3c8b0f37929bce8c2a4bba27d6e89919c7 // Casey (she/they)