rk3588 mipi屏幕初始化参数下发失败

项目:

 2023年11月。客户有个板子更换mipi屏幕,之前已经调试好了,可以正常显示。后面发现屏幕有点暗,需要改动初始化参数。为啥之前不用写也可以做正常显示:因为出厂时候屏幕厂商已经写好一次。但是有一个问题,只能写一次,后面不能再写。所以现在需要初始化屏幕时候,写入屏幕初始化参数。


问题描述

 屏幕初始化参数
在这里插入图片描述
  验证时候 屏幕是可以正常显示的。但是没有看到想要的变化,这组参数在别的板子(非rk)上是正常的。怀疑是没有正常写入。

原因分析:

  出现了问题 我先看看代码。我分析这个函数static int panel_simple_prepare(struct drm_panel *panel) 因为这个函数是下发屏幕初始化参数开始。

查看代码

ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi,
				  const void *data, size_t len)
{
	struct mipi_dsi_msg msg = {
		.channel = dsi->channel,
		.tx_buf = data,
		.tx_len = len
	};

	switch (len) {
	case 0:
		return -EINVAL;

	case 1:
		msg.type = MIPI_DSI_DCS_SHORT_WRITE;
		break;

	case 2:
		msg.type = MIPI_DSI_DCS_SHORT_WRITE_PARAM;
		break;

	default:
		msg.type = MIPI_DSI_DCS_LONG_WRITE;
		break;
	}

	return mipi_dsi_device_transfer(dsi, &msg);
}

加入debug打印 mipi_dsi_device_transfer函数是有执行写入。但是就是不能看到变化。

上电时序分析

启动时序问题 供电脚、enable脚、reset脚 电位是否正常,是否满足datasheet上的时序要求?

	gpiod_direction_output(p->reset_gpio, 0);

	if (p->desc->delay.reset)
		msleep(p->desc->delay.reset);

	gpiod_direction_output(p->reset_gpio, 1);

用万用表量reset引脚也可以看到正常变化,供电也有。

继续看到代码 发现一处地方我是没有进行msleep(p->desc->delay.init)

if (p->desc->delay.init)
		msleep(p->desc->delay.init);

复位完成后,马上写入参数,可能会造成写入不成功。

解决方案:

在dts文件里面加入init-delay-ms = <50>;
添加后的样子

dsi0_panel: panel@0 {
		status = "okay";
		compatible = "simple-panel-dsi";
		reg = <0>;
		backlight = <&backlight_mipi>;
		power-supply = <&vcc3v3_mipi_lcd>;
		reset-gpios =  <&gpio2 RK_PA1 GPIO_ACTIVE_HIGH>; 
		enable-gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;
		reset-delay-ms = <100>;
		enable-delay-ms = <10>;
		init-delay-ms = <50>;
		prepare-delay-ms = <50>;
		unprepare-delay-ms = <10>;
		disable-delay-ms = <60>;
		dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
			MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
		dsi,format = <MIPI_DSI_FMT_RGB888>;
		dsi,lanes  = <4>;
		panel-init-sequence = 
		..............

也不知道是什么时候少了init-delay-ms 配置。添加后烧录,发现屏幕有明显变化了。说明写入成功。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值