mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-27 12:55:04 +07:00
a29ae8600d
Not all u-boot versions initialize the HHI_GP_PLL_CNTL[2-5] registers.
In that case all HHI_GPLL_PLL_CNTL[1-5] registers are 0x0 and when
booting Linux the PLL fails to lock.
The initialization sequence from u-boot is:
- put the PLL into reset
- write 0x59C88000 to HHI_GP_PLL_CNTL2
- write 0xCA463823 to HHI_GP_PLL_CNTL3
- write 0x0286A027 to HHI_GP_PLL_CNTL4
- write 0x00003000 to HHI_GP_PLL_CNTL5
- set M, N, OD and the enable bit
- take the PLL out of reset
- check if it has locked
- disable the PLL
In Linux we already initialize M, N, OD, the enable and the reset bits.
Also the HHI_GP_PLL_CNTL[2-5] registers with these magic values (the
exact meaning is unknown) so the PLL can lock when the vendor u-boot did
not initialize these registers yet.
Fixes:
|
||
---|---|---|
.. | ||
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 |