http://blog.csdn.net/qq413187589
原始代码中Pclk设置为8M但对于320*480的lcd需要提高到10M左右。
于是直接修改bootloader和kernel中的两处
lcdc_clock_init(8000000);
pinfo->clk_rate = 8000000;
下载后开机失败,打印log显示:
Can't set MDP LCDC pixel clock to rate 10000000
ret = clk_set_rate(pixel_mdp_clk, mfd->fbi->var.pixclock);
if (ret) {
pr_err("%s: Can't set MDP LCDC pixel clock to rate %u\n",
__func__, mfd->fbi->var.pixclock);
goto out;
}
查找pixel_mdp_clk后显示
pixel_mdp_clk = clk_get(NULL, "mdp_lcdc_pclk_clk");
CLK_PCOM("mdp_lcdc_pclk_clk", MDP_LCDC_PCLK_CLK, NULL, 0),
查到此处后发现clk是通过RPC共享内存的方式来调用ARM9端的设置。
再arm9段查找 MDP_LCDC_PCLK_CLK 可得到是使用此 clk_regime_sel_mdp_lcdc_clk()函数来设置pclk
一路查找(这代码找得真郁闷)
boolean clk_regime_bsp_init (void) //pclk的赋值
clkrgm_bsp = &clkrgm_bsp_data; //值传递
clk_regime_bsp_load_mdp_lcdc_cfgs //传递数组的值
最后找到clkrgm_bsp_7627.c文件的
clkrgm_bsp_msm_clk_cfg_type clkrgm_bsp_msm_cfg_mdp_lcdc[]
{
//在此函数中添加你想要的pclk即可,尼吗的,这代码找得真蛋痛!
}