修改了CLKSEL_LCDC_PIXEL_CLK寄存器的值,在=1或者2的时候,最后LCD_CLK的值与设置参数设想的输出值一致;可是在=0的情况下,输出值就不符了。DISP DPLL的设置是参考数据页的说明编制的程序如下
clkmode = __raw_readl(CM_CLKMODE_DPLL_DISP);
clksel = __raw_readl(CM_CLKSEL_DPLL_DISP);
div_m2 = __raw_readl(CM_DIV_M2_DPLL_DISP);
clkmode = (clkmode & 0xfffffff8) | 0x00000004;
__raw_writel(clkmode, CM_CLKMODE_DPLL_DISP);
while ((__raw_readl(CM_IDLEST_DPLL_DISP) & 0x00000100) != 0x00000100);
clksel = clksel & (~0x7ffff);
clksel = clksel | ((DISPPLL_M << 0x8) | DISPPLL_N);
__raw_writel(clksel, CM_CLKSEL_DPLL_DISP);
div_m2 = div_m2 & 0xFFFFFFE0;
div_m2 = div_m2 | DISPPLL_M2;
__raw_writel(div_m2, CM_DIV_M2_DPLL_DISP);
clkmode = (clkmode & 0xfffffff8) | 0x7;
__raw_writel(clkmode, CM_CLKMODE_DPLL_DISP);
while ((__raw_readl(CM_IDLEST_DPLL_DISP) & 0x00000001) != 0x1);
出现的问题是:无论怎么改DISPPLL_M的值,其输出结果不变,就是DISP的频率是300000000HZ,即DISPPLL_M无效;DISPPLL_M2是有效的,不知道是什么原因
liqin xiao:
已找到disp_dpll固定为300M的原因了
Steven Liu1:
回复 liqin xiao:
之前有做过一些测试,Share做参考好了:
AM335x关于LCD屏幕的配置
liqin xiao:
回复 Steven Liu1:
谢谢,已经解决了