原始代碼中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即可,尼嗎的,這代碼找得真蛋痛!
}
作者“qq413187589的專欄”