Re: [PATCH 00/36] clk: port Linux Common Clock Framework to U-Boot

Neil Armstrong <[email protected]>
Newsgroups gmane.comp.boot-loaders.u-boot
Organization Linaro
Message-ID <[email protected]>
Hi,

On 7/20/26 18:40, Casey Connolly wrote:
> This series introduces support for the Linux Common Clock framework in
> U-Boot, when enabled it replaces UCLASS_CLK entirely, instead offering
> the typical clock provider API from Linux. This has the significant
> advantage of allowing one "udevice" to provide an arbitrary number
> of clocks without the need to populate U-Boot driver model with dummy
> devices.
> 
> Historically, U-Boots clock support has focused on being small and
> simple, allowing platforms to configure the clocks they need to boot.
> But as we support more modern SoCs it's become clear that the existing
> API doesn't scale as we need to be able to calculate clock rates, handle
> reparenting, and other more complicated configurations. Rather than
> trying to re-invent the wheel here (which would likely never leave us
> with a truly satisfactory solution) adopting the Linux API solves a
> whole host of problems in U-Boot.
> 
> With the Linux CCF, complicated Linux clock drivers can now be adopted
> with relative ease rather than having to painfully rewrite them to work
> in U-Boots limited clock model. This also drastically simplifies the
> bringup process for new platforms.
> 
> To offer an example, the DSI PHY devices on most Qualcomm platforms
> have their own VCO, PLL, dividers, and muxes which are programmed
> based on the pixel clock of the display, if it's using D-phy or
> C-phy, display stream compression, etc. This isn't directly modelled
> in devicetree though since the PHY clock outputs are routed into the
> "dispcc" block which is what the DSI controller itself sees. Modelling
> the relationship between the pixel/byte clocks in dispcc and their
> parents in the phy must be handled by the clock framework and though
> assigned-clock-parents, something that U-Boots existing clock framework
> simply doesn't support. Additionally, dual-DSI panels are even more
> annoying since both sets of pixel/byte clocks are sourced from only one
> of the PHYs.
> 
> U-Boot did already have some very limited support for "CCF", however
> this is essentially just using the driver model to maintain the clock
> tree and registering a device for each clock. This simply doesn't
> scale well for the huge number of clocks on modern platforms and still
> requires significant effort to port drivers from Linux.
> 
> There is one notable limitation with the full CCF port, since it
> requires the entire clock tree to be modelled before it can actually
> manage any clocks it isn't feasible to run pre-relocation making it
> unsuitable for platforms that require clocks at this point. My hope is
> that we can continue to reduce the complexity of U-Boots pre-relocation
> stage to mitigate this issue, but since some platforms are already using
> CONFIG_SKIP_EARLY_DM I hope this won't be a blocking issue.
> 
> When it comes to U-Boot SPL, it likely doesn't make sense to expect to
> use CCF in that environment. Since the scope of SPL is so much smaller
> it should still be acceptable to use UCLASS_CLK here and only build with
> CCF for full U-Boot images.
> 
> -- Overview --
> 
> This series contains a few preparatory patches to align U-Boots
> existing clock API with upstream and rename clk_ops to clk_ops_uboot to
> differentiate UCLASS_CLK ops.
> 
> The generic CCF mux/div/fixed clock drivers are in drivers/clk/ccf along
> with the CCF core.
> 
> Sandbox also gets CCF_FULL support for the purposes of testing.
> 
> Lastly, the Qualcomm clock drivers from Linux are ported over with
> minimal changes to enable CCF support on the SM8650 platform, this will
> be expanded in the future to other Qualcomm platforms. This demonstrates
> the ease of porting Linux drivers and acts as a template that others
> can follow.
> 
> -- Architecture --
> 
> The CCF port is fairly straightforward, clk-uclass.c has some its common
> API split out into clk-common.c which either calls into clk-uclass or
> ccf/clk.c based on the configuration. To keep things simple, CLK_UCLASS
> is completely unsupported when CCF is enabled, by not building
> clk-uclass.c we don't provide any support for non-CCF clocks and they
> won't show up in the device model at runtime.
> 
> Devices that provide clocks can be of any uclass, they will be probed
> via ofnode lookup and should register their clocks with CCF (via the
> typical clk_register helpers) during probe.
> 
> Clock consumers still work the same way, although internal API
> differences may require changes to some drivers such as the UFS fixes in
> this series. Notably it may be necessary to actually call clk_set_rate()
> with a suitable rate, I think it's safe to say these calls being
> missing and relying on the clock driver to pick a suitable rate is a bug
> regardless of CCF.
> 
> -- Merging and maintenance --
> 
> Given the scope and complexity of this change and that it's entirely
> opt-in, I'm hopeful that we can focus on issues that are important to
> solve before this can be merged, and focus on improving any rough edges
> after the fact. This will also make it easier for others to try it out
> and investigate using CCF_FULL for their platforms.
> 
> In the short-medium term I'm happy to maintain this port and help others
> who are interested in using it. However I very much invite anyone with
> an interest in this to co-maintain it or take it over in the future.
> 
> I previously sent an RFC for this which can be found below, it has gone
> through some significant rework since then and quite a bit of testing
> locally as I've used this as the basis for Qualcomm display bringup.
> 
> https://lore.kernel.org/u-boot/[email protected]/
> 
> ---
> Casey Connolly (36):
>        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
>        dm: ofnode: fix parse_phandle_with_args API
>        clk: import full CCF from Linux
>        clk: move clock flags to common clk-provider.h
>        clk/ccf: adapt clk-conf for U-Boot
>        clk/ccf: adapt CCF core for U-Boot
>        clk/ccf: adapt CCF generic clocks for U-Boot
>        clk: split clk-uclass.c into clk-common.c
>        clk/common: add CCF_FULL support
>        clk/ccf: optimise orphan clock handling
>        clk/ccf: debug log enable/disable calls
>        cmd/clk: add CCF_FULL support
>        doc: describe Common Clock Framework
>        clk/sandbox: add a CCF_FULL port of clk_sandbox
>        clk: sandbox: fix set_rate and move to clk/basic
>        clk/ccf: add CCF_FULL port of clk_sandbox
>        test: dm: adjust clk tests for CCF_FULL
>        configs: add sandbox CCF_FULL defconfig
>        CI: add sandbox64_ccf_full
>        MAINTAINERS: add entry for CCF port
>        clk/qcom: move existing clock drivers to clk/qcom/basic
>        clk/qcom: drop in Linux Qualcomm CCF drivers
>        clk/qcom/ccf: drop in Linux rpmh clock driver
>        clk/qcom/ccf: add sm8650 GCC, dispcc and tcsrcc.
>        clk/qcom/ccf: add uboot common code
>        clk/qcom/ccf: adapt common, gdsc, and reset code for U-Boot
>        clk/qcom/ccf: adapt clocks for U-Boot
>        clk/qcom/ccf: adapt sm8650 clock drivers for U-Boot
>        ufs: qcom: use clk_prepare_enable_bulk()
>        qcom_sm8650_defconfig: enable CCF_FULL
>        ufs: qcom: fix core clk max rate setting

I tried to apply it to v2026.10-rc1 but it doesn't apply cleanly,
what are the dependencies ?

I'll probably try to port the Linux Amlogic clock drivers with the
CCF FULL, it should probably work 1:1 since we mimic the Linux
behviour with the basic U-Boot clock driver.

Also please share a branch from where to pull the changes for such large
patchsets.

Thanks,
Neil

> 
>   .gitlab-ci.yml                                     |    5 +
>   MAINTAINERS                                        |    7 +
>   arch/arm/cpu/armv7/bcm281xx/clk-core.c             |    8 +-
>   arch/arm/cpu/armv7/bcm281xx/clk-core.h             |   14 +-
>   arch/sandbox/dts/test.dts                          |    4 +-
>   arch/sandbox/include/asm/clk.h                     |    2 +-
>   cmd/clk.c                                          |   21 +-
>   configs/qcom_sm8650_defconfig                      |    1 +
>   configs/sandbox64_ccf_full_defconfig               |    5 +
>   doc/api/clk.rst                                    |   25 +
>   doc/develop/ccf.rst                                |   35 +
>   doc/develop/index.rst                              |    1 +
>   drivers/clk/Kconfig                                |   54 +-
>   drivers/clk/Makefile                               |   21 +-
>   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/aspeed/clk_ast2700.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                         |    8 +
>   drivers/clk/{ => basic}/clk_fixed_factor.c         |    2 +-
>   drivers/clk/{ => basic}/clk_fixed_rate.c           |    4 +-
>   drivers/clk/{ => basic}/clk_sandbox.c              |   12 +-
>   drivers/clk/ccf/Kconfig                            |    8 +
>   drivers/clk/ccf/Makefile                           |   19 +
>   drivers/clk/ccf/clk-composite.c                    |  495 +++
>   drivers/clk/ccf/clk-conf.c                         |  189 +
>   drivers/clk/ccf/clk-divider.c                      |  663 ++++
>   drivers/clk/ccf/clk-fixed-factor.c                 |  409 +++
>   drivers/clk/ccf/clk-fixed-rate.c                   |  217 ++
>   drivers/clk/ccf/clk-gate.c                         |  260 ++
>   drivers/clk/ccf/clk-mux.c                          |  282 ++
>   drivers/clk/ccf/clk.c                              | 3250 +++++++++++++++++
>   drivers/clk/ccf/clk.h                              |   53 +
>   drivers/clk/ccf/clk_sandbox.c                      |  281 ++
>   drivers/clk/ccf/clk_sandbox_ccf_full.c             |  220 ++
>   drivers/clk/clk-cdce9xx.c                          |    4 +-
>   drivers/clk/clk-common.c                           |  255 ++
>   drivers/clk/clk-common.h                           |   45 +
>   drivers/clk/clk-gpio.c                             |    2 +-
>   drivers/clk/clk-hsdk-cgu.c                         |    4 +-
>   drivers/clk/clk-stub.c                             |    4 +-
>   drivers/clk/clk-uclass.c                           |  202 +-
>   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_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/Kconfig                           |    1 +
>   drivers/clk/qcom/Makefile                          |   31 +-
>   drivers/clk/qcom/basic/Makefile                    |   28 +
>   drivers/clk/qcom/{ => basic}/clock-apq8016.c       |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-apq8096.c       |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-ipq4019.c       |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-ipq5424.c       |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-ipq9574.c       |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-milos.c         |    4 +-
>   drivers/clk/qcom/{ => basic}/clock-qcm2290.c       |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-qcom.c          |    4 +-
>   drivers/clk/qcom/{ => basic}/clock-qcom.h          |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-qcs404.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-qcs615.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-qcs8300.c       |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sa8775p.c       |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sc7280.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sdm845.c        |    4 +-
>   drivers/clk/qcom/{ => basic}/clock-sm6115.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sm6125.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sm6350.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sm7150.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sm8150.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sm8250.c        |    2 +-
>   drivers/clk/qcom/{ => basic}/clock-sm8550.c        |    4 +-
>   drivers/clk/qcom/{ => basic}/clock-sm8650.c        |    4 +-
>   drivers/clk/qcom/{ => basic}/clock-x1e80100.c      |    4 +-
>   drivers/clk/qcom/ccf/Makefile                      |   21 +
>   drivers/clk/qcom/ccf/clk-alpha-pll.c               | 3196 ++++++++++++++++
>   drivers/clk/qcom/ccf/clk-alpha-pll.h               |  251 ++
>   drivers/clk/qcom/ccf/clk-branch.c                  |  203 ++
>   drivers/clk/qcom/ccf/clk-branch.h                  |  125 +
>   drivers/clk/qcom/ccf/clk-rcg.h                     |  217 ++
>   drivers/clk/qcom/ccf/clk-rcg2.c                    | 1765 +++++++++
>   drivers/clk/qcom/ccf/clk-regmap-divider.c          |   90 +
>   drivers/clk/qcom/ccf/clk-regmap-divider.h          |   22 +
>   drivers/clk/qcom/ccf/clk-regmap-mux-div.c          |  232 ++
>   drivers/clk/qcom/ccf/clk-regmap-mux-div.h          |   44 +
>   drivers/clk/qcom/ccf/clk-regmap-mux.c              |   57 +
>   drivers/clk/qcom/ccf/clk-regmap-mux.h              |   23 +
>   drivers/clk/qcom/ccf/clk-regmap-phy-mux.c          |   62 +
>   drivers/clk/qcom/ccf/clk-regmap-phy-mux.h          |   33 +
>   drivers/clk/qcom/ccf/clk-regmap.c                  |  104 +
>   drivers/clk/qcom/ccf/clk-regmap.h                  |   38 +
>   drivers/clk/qcom/ccf/clk-rpmh.c                    | 1030 ++++++
>   drivers/clk/qcom/ccf/common-uboot.c                |  188 +
>   drivers/clk/qcom/ccf/common-uboot.h                |   34 +
>   drivers/clk/qcom/ccf/common.c                      |  248 ++
>   drivers/clk/qcom/ccf/common.h                      |  106 +
>   drivers/clk/qcom/ccf/dispcc-sm8550.c               | 1825 ++++++++++
>   drivers/clk/qcom/ccf/gcc-sm8650.c                  | 3846 ++++++++++++++++++++
>   drivers/clk/qcom/ccf/gdsc.c                        |  545 +++
>   drivers/clk/qcom/ccf/gdsc.h                        |  103 +
>   drivers/clk/qcom/ccf/reset.c                       |  112 +
>   drivers/clk/qcom/ccf/reset.h                       |   29 +
>   drivers/clk/qcom/ccf/tcsrcc-sm8650.c               |  174 +
>   drivers/clk/qcom/clock-sc7180.c                    |    2 +-
>   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/r8a78000-cpg.c                 |    6 +-
>   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_rk3506.c                  |    4 +-
>   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} |   12 +-
>   drivers/clk/uniphier/clk-uniphier-core.c           |    6 +-
>   drivers/core/ofnode.c                              |    4 +-
>   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 +-
>   drivers/ufs/ufs-qcom.c                             |   31 +-
>   include/clk-uclass.h                               |    6 +-
>   include/clk.h                                      |  102 +-
>   include/linux/clk-provider-ccf_full.h              | 1461 ++++++++
>   include/linux/clk-provider-uccf.h                  |  256 ++
>   include/linux/clk-provider.h                       |  253 +-
>   include/linux/clk/clk-conf.h                       |   22 +
>   include/sandbox-clk.h                              |    5 +-
>   test/dm/Makefile                                   |    3 +-
>   test/dm/clk.c                                      |   32 +-
>   test/dm/clk_ccf.c                                  |  117 +-
>   test/test-main.c                                   |    6 +
>   258 files changed, 24032 insertions(+), 997 deletions(-)
> ---
> base-commit: e0ef25054db31fee49d031ac337099b12c67e5b8
> 
> Casey Connolly <[email protected]>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.