mipi 屏 通过寄存器调背光

9 篇文章 0 订阅
1 篇文章 0 订阅
调试一个mipi 屏,在背光上遇到了问题,调背光的时候屏在闪,确实能把背光调暗。


调试方法是用的mipi 写寄存器。log上没有相关的东西。软件上的用法是
void rk_mipi_adjust_bl(u8 value)
{
+ u8 cmds4;

cmds0 = LPDT;
+ cmds1 = 0x15;
+ cmds2 = 0x51;
+ cmds3 = value;
+ dsi_send_packet(0, cmds, 4);
+ printk("++++++++++++++++%s:%d\n", func, value);
}
+EXPORT_SYMBOL_GPL(rk_mipi_adjust_bl);
看mipi datasheet ,调背光的寄存器确实是 0x51 ,用的ic 是 R69429


继续测试,发现只要在系统已经跑起来后写任何一个寄存器都会导致屏闪,颜色乱,于是在 写命令之前把这个加上
dsi_enable_video_mode(0, 0); 
dsi_enable_command_mode(0, 1);
,写完后再
dsi_enable_command_mode(0, 0);
dsi_enable_video_mode(0, 1);

这样写后会稳定颜色错,位置有偏移。
把 mipi 的 dsi_hs_clk 和 clock-frequency 改低后还是一样。


在网上找了资料,发现在 mtk 平台有这样写过。但是其代码来看,没什么特殊的,


如 {"lcd-backlight",     MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_LCD_ISINK,{0}}, 这些配置,跟踪代码如下。也没什么特殊。
 static void lcm_setbacklight(unsigned int level)
 {
         if(level > 255) level = 255;
        send_ctrl_cmd(0x51);
       send_data_cmd(level);
 }


最后在瑞芯微原厂的支持下,加了一句 rk_fb_poll_wait_frame_complete(); 解决了屏闪的问题,分析是在video 传输的时候不能直接传命令,不然会对video 有影响。

+  unsigned long flags;
+
+  u8 cmds[4];
+  local_irq_save(flags);
+  rk_fb_poll_wait_frame_complete();
+
+  cmds[0] = HSDT;
+  cmds[1] = 0x15;
+  cmds[2] = 0x51;
+  cmds[3] = value;
+  dsi_send_packet(0, cmds, 4);
+
+  local_irq_restore(flags);


就不会造成颜色和屏闪的问题了, 

另:local_irq_restore 的用法待查

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值