pixel clk值是根据分辨率、porch值及fps确定出来的,pixel clk要达到global_gispc.c中dpi_clk的整数分频。分频数的具体确认方法如下:
以bpp = 24为例
当lane = 2时,为12分频;
当lane = 3时,为8分频;
当lane = 4时,为6分频;
lcd的mipi驱动能力本质上是驱动电压,一般不建议修改。LP mipi的默认值是1.2V,不用变动。若要尝试通过增强HS的驱动能力来解决干扰等问题时,可以如下操作来修改HS看效果(这里以dphy 的ip是 "sprd,megacores-sharkle"的为例,查看spec找到驱动能力对应的寄存器为0x25):
(1) 代码修改
bsp/bootloader/u-boot15/drivers/video/sprd/dphy/pll/megacores_sharkle.c
bsp/kernel/kernel4.14/drivers/gpu/drm/sprd/dphy/pll/megacores_sharkle.c
static int dphy_hop_start(struct dphy_context *ctx)
{
struct regmap *regmap = ctx->regmap;
/* start hopping */
regs._04.bits.hop_trig = !regs._04.bits.hop_trig;
regmap_write(regmap, 0x04, regs._04.val);
+ regmap_write(regmap, 0x25, 0x07);//mipi 驱动能力从默认0x04改为最大0x07
mdelay(1);
pr_info("start hopping\n");
return 0;
}
(2)修改后确认是否修改成功:
$echo 0x25 0x1 > /sys/class/display/dphy0/reg_read
$cat /sys/class/display/dphy0/reg_read
修改成最大成功时显示:
ADDR | VALUE
------+------
0x25 | 0x07
修改之后,整个data、clk 都会改变