blob: 8e99377dd050c2b5f0f2865ab466322608c201a8 [file] [log] [blame]
;create clocks area
local &pll_reg
local &foutvco
local &fout2
local &fout3
area.create clocks 200 300
area.clear clocks
area.select clocks
area.view clocks
if state.run()
(
break
)
;disable mmu
&cr=data.long(c15:0x1)
&tmp=&cr&(~0x1)
per.s c15:0x1 %LONG &tmp
print "*********************PLL********************************************"
&pll_reg=0x0013b008
&fref=26000000.
print "check mpll..."
Gosub calc_pll
&pll_reg=0x0013b010
&fref=26000000.
print "check upll..."
Gosub calc_pll
&pll_reg=0x0013B018
&tmp=data.long(D:0x0013B018)
&tmp=(&tmp>>25)&0x3
if (&tmp==1)
(
&fref=30720000.
)
else
(
&fref=26000000.
)
print "check dpll..."
Gosub calc_pll
&pll_reg=0x0013b110
&fref=26000000.
print "check gpll..."
Gosub calc_pll
print "*********************M0 CLK********************************************"
&tmp=data.long(D:0x0013b038)
&tmp=&tmp&0x3
if (&tmp==0)
(
print "M0 clk sel main_clk"
)
if (&tmp==1)
(
print "M0 clk sel 104M"
)
if (&tmp==2)
(
print "M0 clk sel 78M"
)
if (&tmp==3)
(
print "M0 clk sel 32K"
)
print "*********************A53 CLK********************************************"
&tmp=data.long(D:0x01306040)
&tmp=&tmp&0x3
if (&tmp==0)
(
print "ufi clk sel main_clk"
)
if (&tmp==1)
(
print "ufi clk sel 624M"
)
if (&tmp==2)
(
print "ufi clk sel 312M"
)
if (&tmp==3)
(
print "ufi clk sel 156M"
)
print "*********************PS CLK********************************************"
&tmp=data.long(D:0x01306020)
&tmp=&tmp&0x3
if (&tmp==0)
(
print "pscpu clk sel main_clk"
)
if (&tmp==1)
(
print "pscpu clk sel 624M"
)
if (&tmp==2)
(
print "pscpu clk sel 312M"
)
if (&tmp==3)
(
print "pscpu clk sel 156M"
)
print "*********************PHY CLK********************************************"
&tmp=data.long(D:0x01306030)
&tmp=&tmp&0x3
if (&tmp==0)
(
print "phycpu clk sel main_clk"
)
if (&tmp==1)
(
print "phycpu clk sel 491M"
)
if (&tmp==2)
(
print "phycpu clk sel 312M"
)
if (&tmp==3)
(
print "phycpu clk sel 156M"
)
print "*********************AXI CLK********************************************"
&tmp=data.long(D:0x01306000)
&tmp=&tmp&0x7
if (&tmp==0)
(
print "axi clk sel main_clk"
)
if (&tmp==1)
(
print "axi clk sel 156M"
)
if (&tmp==2)
(
print "axi clk sel 124.8M"
)
if (&tmp==3)
(
print "axi clk sel 104M"
)
if (&tmp==4)
(
print "axi clk sel 78M"
)
if (&tmp==5)
(
print "axi clk sel 52M"
)
if (&tmp==6)
(
print "axi clk sel 39M"
)
if (&tmp==7)
(
print "axi clk sel 6.5M"
)
print "*********************DDR CLK********************************************"
&tmp=data.long(D:0x01306050)
&tmp=&tmp&0x3
if (&tmp==0)
(
print "ddr io clk sel 312M"
)
if (&tmp==1)
(
print "ddr io clk sel 400M"
)
if (&tmp==2)
(
print "ddr io clk sel 208M"
)
if (&tmp==3)
(
print "ddr io clk sel 156M"
)
;restore mmu config
per.s c15:0x1 %LONG &cr
ENDDO
;*****************************************************************
calc_pll:
local &tmp1
local &tmp2
&tmp1=data.long(D:&pll_reg)
&tmp2=data.long(D:&pll_reg+0x4)
&power=(&tmp1>>0x1f)&0x1
if (&power==1)
(
print "pll is power down"
)
else
(
print "pll is power up"
)
&lock=(&tmp1>>0x1e)&0x1
if (&lock==1)
(
print "pll is locked"
)
else
(
print "pll is unlocked"
)
&refdiv=(&tmp1>>0x12)&((0x1<<0x6)-1)
&fbdiv=(&tmp1>>0x6)&((0x1<<0xc)-1)
&frac=(&tmp2)&((0x1<<0x18)-1)
&foutvco=(&fref/&refdiv)*(&fbdiv+&frac)
print "pll foutvco="+"&foutvco"
&postdiv1=(&tmp1>>0x3)&((0x1<<0x3)-0x1)
&postdiv2=(&tmp1)&((0x1<<0x3)-0x1)
&foutpostdiv=&foutvco/&postdiv1/&postdiv2
&fout2=&foutpostdiv/0x2
&fout3=&foutpostdiv/0x3
&fout4=&foutpostdiv/0x4
print "pll foutpostdiv="+"&foutpostdiv"
print "pll fout2="+"&fout2"
print "pll fout3="+"&fout3"
print "pll fout4="+"&fout4"
RETURN