64aa7008e9
The Meson8/Meson8b/Meson8m2 SoCs embed a DDR clock controller in the MMCBUS registers. There is no public documentation, but the u-boot GPL sources from the Amlogic BSP show that the DDR clock controller is identical on all three SoCs: #define CFG_DDR_CLK 792 #define CFG_PLL_M (((CFG_DDR_CLK/12)*12)/24) #define CFG_PLL_N 1 #define CFG_PLL_OD 1 // from set_ddr_clock: t_ddr_pll_cntl= (CFG_PLL_OD << 16)|(CFG_PLL_N<<9)|(CFG_PLL_M<<0) writel(timing_reg->t_ddr_pll_cntl|(1<<29),AM_DDR_PLL_CNTL); writel(readl(AM_DDR_PLL_CNTL) & (~(1<<29)),AM_DDR_PLL_CNTL); // from hx_ddr_power_down_enter: shut down DDR PLL writel(readl(AM_DDR_PLL_CNTL)|(1<<30),AM_DDR_PLL_CNTL); do { ... } while((readl(AM_DDR_PLL_CNTL)&(1<<31))==0) This translates to: - AM_DDR_PLL_CNTL[29] is the reset bit - AM_DDR_PLL_CNTL[30] is the enable bit - AM_DDR_PLL_CNTL[31] is the lock bit - AM_DDR_PLL_CNTL[8:0] is the m value (assuming the width is 9 bits based on the start of the n value) - AM_DDR_PLL_CNTL[13:9] is the n value (assuming the width is 5 bits based on the start of the od) - AM_DDR_PLL_CNTL[17:16] is the od (assuming the width is 2 bits based on other PLLs on this SoC) Add a driver for this PLL setup because it's used as one of the inputs of the audio clocks. There may be more clocks inside that clock controller - those can be added in subsequent patches. Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> |
||
---|---|---|
.. | ||
axg-aoclk.c | ||
axg-aoclk.h | ||
axg-audio.c | ||
axg-audio.h | ||
axg.c | ||
axg.h | ||
clk-cpu-dyndiv.c | ||
clk-cpu-dyndiv.h | ||
clk-dualdiv.c | ||
clk-dualdiv.h | ||
clk-mpll.c | ||
clk-mpll.h | ||
clk-phase.c | ||
clk-phase.h | ||
clk-pll.c | ||
clk-pll.h | ||
clk-regmap.c | ||
clk-regmap.h | ||
g12a-aoclk.c | ||
g12a-aoclk.h | ||
g12a.c | ||
g12a.h | ||
gxbb-aoclk.c | ||
gxbb-aoclk.h | ||
gxbb.c | ||
gxbb.h | ||
Kconfig | ||
Makefile | ||
meson8-ddr.c | ||
meson8b.c | ||
meson8b.h | ||
meson-aoclk.c | ||
meson-aoclk.h | ||
meson-eeclk.c | ||
meson-eeclk.h | ||
parm.h | ||
sclk-div.c | ||
sclk-div.h | ||
vid-pll-div.c | ||
vid-pll-div.h |