android lcm,<Android> MTK LCM DSI MIPI 读写

LCM中的MIPI读写

我的环境是: Helio X20, kernel 3.18

kernel-3.18\drivers\misc\mediatek\video\mt6797\videox\primary_display.c:void DSI_set_cmdq_V2_Wrapper_DSI0(unsigned cmd, unsigned char count, unsigned char *para_list, unsigned char force_update); #define read_reg_v2(cmd, buffer, buffer_size) DSI_dcs_read_lcm_reg_v2(DISP_MODULE_DSI0, NULL, cmd, buffer, buffer_size) #define dsi_set_cmdq_V2(cmd, size, data) DSI_set_cmdq_V2_Wrapper_DSI0(cmd, size, data, 1) /* * mtk_dsi_write_regs: mipi write registers * @cmd: operate command * @data: data buffer to write, can be null * @size: data buffer size, can be 0 * * Return: 0 success, otherwise fail */ int mtk_dsi_write_regs(char cmd, char *data, int size) { dsi_set_cmdq_V2(cmd, size, data); return 0; } /* * mtk_dsi_read_regs: mipi read registers * @cmd: operate command * @buffer: buffer to save return values, cannot be null * @size: buffer size, cannot be 0 * * Return: 0 success, otherwise fail */ int mtk_dsi_read_regs(char cmd, char *buffer, int size) { int ret = 0; _primary_path_lock(__func__); if (pgc->state == DISP_SLEPT) { pr_err("[mtk]primary display path is slept?? -- skip esd check\n"); _primary_path_unlock(__func__); goto done; } /* 1: stop path */ _cmdq_stop_trigger_loop(); if (dpmgr_path_is_busy(pgc->dpmgr_handle)) pr_debug("[mtk]wait frame done ret:%d\n", ret); dpmgr_path_stop(pgc->dpmgr_handle, CMDQ_DISABLE); if (dpmgr_path_is_busy(pgc->dpmgr_handle)) DISPCHECK("[ESD]wait frame done ret:%d\n", ret); dpmgr_path_reset(pgc->dpmgr_handle, CMDQ_DISABLE); ret = read_reg_v2(cmd, buffer, size); if (ret != size) { ret = -EIO; } else { ret = 0; } dpmgr_path_start(pgc->dpmgr_handle, CMDQ_DISABLE); if (primary_display_is_video_mode()) { /* for video mode, we need to force trigger here */ /* for cmd mode, just set DPREC_EVENT_CMDQ_SET_EVENT_ALLOW when trigger loop start */ dpmgr_path_trigger(pgc->dpmgr_handle, NULL, CMDQ_DISABLE); } _cmdq_start_trigger_loop(); /* when we stop trigger loop * if no other thread is running, cmdq may disable its clock * all cmdq event will be cleared after suspend */ cmdqCoreSetEvent(CMDQ_EVENT_DISP_WDMA0_EOF); _primary_path_unlock(__func__); done: return ret; }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值