
Booting from sdmmc on RK3588 currently works because of a workaround in the device tree, clocks are reordered so that the driver use ciu-sample instead of ciu, and the BootRom initializes sdmmc clocks before SPL is loaded into DRAM.
The sdmmc clocks are normally controlled by TF-A using SCMI. However, there is a need to control these clocks in SPL, before TF-A has started.
This series adds a rk3588_scru driver to control the sdmmc clocks in SPL before TF-A has started, using scru regs. It also adds a small glue driver to bind the scmi clock node to the rk3588_scru driver in SPL. The SCMI agent and clk_scmi driver is used to control the clocks in U-Boot proper, after TF-A has started.
Patch 1 fixes an issue building SPL with clk_scmi driver enabled. Patch 2 adds drivers the scru and glue drivers. Patch 3 updates device tree and Kconfig options to use the new drivers.
I have tried to address some of the early feedback from [1].
This series is based on top of [2] and [3] and can also be found at [4].
[1] https://patchwork.ozlabs.org/project/uboot/cover/20230125222741.303259-1-jag... [2] https://patchwork.ozlabs.org/project/uboot/cover/20230314003755.512696-1-jon... [3] https://patchwork.ozlabs.org/project/uboot/patch/20230228213822.3583989-1-jo... [4] https://github.com/Kwiboo/u-boot-rockchip/commits/rk3588-sdmmc-v1
Jonas Karlman (3): clk: scmi: Add Kconfig option for SPL rockchip: rk3588: Add support for sdmmc clocks in SPL rockchip: rk3588: Sync sdmmc node from linux-next
.../dts/rk3588-edgeble-neu6a-io-u-boot.dtsi | 2 - arch/arm/dts/rk3588-rock-5b-u-boot.dtsi | 2 - arch/arm/dts/rk3588s-u-boot.dtsi | 27 ++-- arch/arm/dts/rk3588s.dtsi | 15 +++ arch/arm/include/asm/arch-rockchip/clock.h | 1 - .../include/asm/arch-rockchip/cru_rk3588.h | 19 ++- arch/arm/mach-rockchip/Kconfig | 2 + drivers/clk/Kconfig | 8 ++ drivers/clk/Makefile | 2 +- drivers/clk/rockchip/clk_rk3588.c | 125 ++++++++++++++++++ drivers/firmware/scmi/scmi_agent-uclass.c | 2 +- 11 files changed, 183 insertions(+), 22 deletions(-)