LCD MIPI跳频:驱动层添加MIPI CLK副频
目录1.问题背景2.问题初步分析3.解决方法4.驱动验证方法5.modem验证方法6.其他问题1.问题背景射频反馈 亮屏干扰2.问题初步分析经沟通射频要求打开LCD MIPI跳频功能主频299副频316射频提供。1modem端修改2屏端驱动修改3.解决方法1modem端修改2屏端修改 kernel/kernel_device_modules-6.6/drivers/gpu/drm/panel/panel-gc7272-hdplus1600-dsi-vdo.c注意为了副频 帧率60,需配置相应porch值找LCD IC厂的fae提供static struct mtk_panel_params ext_params { …… .dyn { .switch_en 1, .pll_clk 316, //pll_clk .data_rate 632, // pll_clk*2 .hfp 96, .hbp 116, .hsa 4, .vfp 140, .vbp 28, .vsa 6, }, …… }4.驱动验证方法1打开logkernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_debug.c2使用如下命令验证功能是否ok:adb shell echo mipi_ccci:1 /d/mtkfb //跳副频 adb shell echo mipi_ccci:0 /d/mtkfb //跳主频3观察logadb shell cat /dev/kmsg | grep mipi6,110566,174377738,-,callerT404692;sh: [DISP]mtk_mipi_tx_pll_rate_switch_gce 632 //副频*2---确认ok 6,110872,186049770,-,callerT204692;sh: [DISP]mtk_mipi_tx_pll_rate_switch_gce 598 //主频*2---确认ok4输入命令切换mipi clk apk检查帧率5.modem验证方法合入modern patch后modern那边会call过来参照如下code flow追下代码看下哪里没有跑通mipi 跳频(1) /kernel_device_modules-6.6/drivers/misc/mediatek/eccci/port/port_sysmsg.c 搜索关键字MD_DISPLAY_DYNAMIC_MIPI这里会调用mtk_disp_mipi_clk_change()函数。(2)mtk_disp_mipi_clk_change()函数在这里 /kernel_device_modules-6.6/drivers/misc/mediatek/eccci/port/port_sysmsg.h extern声明一下原型在/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_debug.c中。(3) call mtk_disp_mipi_ccci_callback()-----mtk_crtc_mipi_freq_switch()(4) 在文件kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.c 中 这个函数mtk_crtc_mipi_freq_switch()会调用io cmdMIPI_HOPPING6.其他问题MIPI跳频后灭屏再亮屏频率自动恢复的问题为解决此问题可以尝试以下方法:1在drivers/gpu/drm/mediatek/mediatek_v2/mtk_dsi.c文件中添加如下代码: -990,6 990,11 unsigned int mtk_dsi_default_rate(struct mtk_dsi *dsi) dsi-ext dsi-ext-params dsi-ext-params-dyn_fps.data_rate) { data_rate dsi-ext-params-dyn_fps.data_rate; } else if (dsi-mipi_hopping_sta dsi-ext \ (dsi-ext-params-dyn) (dsi-ext-params-dyn.switch_en1)) { data_rate !!dsi-ext-params-dyn.data_rate ? dsi-ext-params-dyn.data_rate : dsi-ext-params-dyn.pll_clk * 2;2确保SSC (Spread Spectrum Clock) 配置正确:在LK中设置ssc_disable1在KERNEL中设置ssc_enable0