clk: sunxi-ng: h3/h5: Model H3 CLK_DRAM as a fixed clock
authorSamuel Holland <samuel@sholland.org>
Thu, 29 Dec 2022 04:22:30 +0000 (22:22 -0600)
committerJernej Skrabec <jernej.skrabec@gmail.com>
Sun, 8 Jan 2023 20:54:09 +0000 (21:54 +0100)
commit5ee541ae712e74c842a324e946ef91cb19140cab
tree6f149cf50a2a3a9241c17914e2d50ca3022b3943
parent5dc6470273063418b5409154336a447e6d8fa880
clk: sunxi-ng: h3/h5: Model H3 CLK_DRAM as a fixed clock

The DRAM controller clock is only allowed to change frequency while the
DRAM chips are in self-refresh. To support this, changes to the CLK_DRAM
mux and divider have no effect until acknowledged by the memory dynamic
frequency scaling (MDFS) hardware inside the DRAM controller. (There is
a SDRCLK_UPD bit in DRAM_CFG_REG which should serve a similar purpose,
but this bit actually does nothing.)

However, the MDFS hardware in H3 appears to be broken. Triggering a
frequency change using the procedure from similar SoCs (A64/H5) hangs
the hardware. Additionally, the vendor BSP specifically avoids using the
MDFS hardware on H3, instead performing all DRAM PHY parameter updates
and resets in software.

Thus, it is effectively impossible to change the CLK_DRAM mux/divider,
so those features should not be modeled. Add CLK_SET_RATE_PARENT so
frequency changes apply to PLL_DDR instead.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/20221229042230.24532-1-samuel@sholland.org
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
drivers/clk/sunxi-ng/ccu-sun8i-h3.c