Mipi 如何配置 Command mode 和 video mode

目前手上有一个屏需要用 mipi 的 command 模式显示,系统源码该如何配置或修改?
同时在发送图像数据包结束后,需要发送控制命令该如何修改。

求大神指教!!!!

先联系所调试屏的FAE获取技术支持。

firefly_zhongw 发表于 2022-2-15 18:01
先联系所调试屏的FAE获取技术支持。

我问的这部分和屏没多少关系,这是系统设置的显示模式,因为看到官方给出的资料支持这种操作;我们准备自己做一款屏幕,但屏幕的刷新率要求不是很高,需要 Command mode ;但我不知道源码中怎么修改,求指教

本帖最后由 firefly_zhongw 于 2022-2-16 16:23 编辑

  1. 如果mipi屏需要发初始化指令的,可以参考 kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-aioj-mipi101_M101014_BE45_A1.dts 里的
    panel-init-sequence属性
  2. 调试屏可以参考RKDocs/common/display/目录下的文档

firefly_zhongw 发表于 2022-2-16 16:20

  1. 如果mipi屏需要发初始化指令的,可以参考 kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-aioj-mi …

我做过实验在显示过程中将mipi接口模式改变然后发送命令再将模式还原是可行的,但是发送命令的数据大小不能大于10字节;我现在的问题是怎么才能在这个过程中发送一个大于10字节的数据包(比如img数据包)(因为我们自己做的屏有些特殊需要这样操作)

这是我自己写的代码

static int panel_send_cmd(struct drm_panel *panel, u8 *data)
{
struct panel_simple *p = to_panel_simple(panel);
struct device *dev = p->base.dev;
struct mipi_dsi_device *dsi = p->dsi;
int err;
int ret;

printk("panel_send_cmd \n");

dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
err = mipi_dsi_dcs_set_display_off(dsi);
err = mipi_dsi_dcs_enter_sleep_mode(dsi);

dsi->mode_flags |= MIPI_DSI_MODE_LPM;
err = mipi_dsi_dcs_exit_sleep_mode(dsi);
msleep(125);

ret = mipi_dsi_generic_write(dsi, data, strlen(data));
if (ret < 0) {
	printk("failed to send data: %d\n", ret);
	return ret;
}
mdelay(100);

err = mipi_dsi_dcs_set_display_on(dsi);
msleep(20);

printk("panel_send_cmd : mipi_dsi_generic_write ret = %d \n", ret);

p->prepared = true;

return 0;

}

依据:RKDocs\common\display\Rockchip_Developer_Guide_DRM_Panel_Porting_CN&EN.pdf 修改

求教有没有什么办法可以解决这个问题。