Android的lcm知识点(5)

LCM知识点(5)

上篇分析到mediatek,dispsys这里,这个设备树节点里面包含了很多关于disp的寄存器,我们重点寻找替代TDP0,TDN0等引脚功能的寄存器。

我从各种各样的代码中发现了一些蛛丝马迹,比如在kernel-3.18\drivers\misc\mediatek\video\mt6755\ddp_dsi.c里面就有一个int ddp_dsi_init(DISP_MODULE_ENUM module, void *cmdq)函数,此函数中有一段

        clock_lane = (INREG32(MIPI_TX_REG_BASE + 0x4));/*MIPITX_DSI_CLOCK_LANE*/
        data_lane3 = (INREG32(MIPI_TX_REG_BASE + 0x14));/*MIPITX_DSI_DATA_LANE3*/
        data_lane2 = (INREG32(MIPI_TX_REG_BASE + 0x10));/*MIPITX_DSI_DATA_LANE2*/
        data_lane1 = (INREG32(MIPI_TX_REG_BASE + 0xc));/*MIPITX_DSI_DATA_LANE1*/
        data_lane0 = (INREG32(MIPI_TX_REG_BASE + 0x8));/*MIPITX_DSI_DATA_LANE0*/

这应该是寄存器地址,而且正是数据传输寄存器的地址;

而后继续追溯,可以看到在kernel-3.18/drivers/misc/mediatek/video/mt6755/ddp_reg.h有定义#define MIPI_TX_REG_BASE (mipi_tx_reg) 而后mipi_tx_reg = dispsys_reg[DISP_REG_MIPI];则出现在kernel-3.18/drivers/misc/mediatek/video/mt6755/ddp_drv.c当中。继续追溯则可以发现kernel-3.18/drivers/misc/mediatek/video/mt6755/ddp_drv.c中出现了volatile unsigned long dispsys_reg[DISP_REG_NUM] = { 0 };这样的代码,继续->kernel-3.18/drivers/misc/mediatek/video/mt6755/ddp_drv.c中可以看到dispsys_reg[i] = (unsigned long)dispsys_dev->regs[i];读取了寄存器的代码。

所以这到底读取的寄存器基地址是多少还需要深究。

另外发现这样看代码的方式有点蜻蜓点水,没有架构;所以决定将这几个目录都列出来再看。video,ddp什么的


从vido的目录上看有四个
common
include
mt6755
mtdummy

我首先发现mt6755比较重要,里面的文件开头有比较多的ddp开头的,也有比较多的mtk开头的。所以驱动层主要函数应该在这里才对。

能够确定的是lcm驱动里面是没有读取过dsi显示数据的。像素等东西的。

这里写一个与主题无关的mark,在编译userdebug的时候出现了tp无法被加载,但是我在mtk_tpd的tpd_probe加载函数的位置加了200ms延迟,就能找到了;eng和user版本都没有这个问题。所以这可能和mtk的进程调度有关系,加载是按照死顺序进行的呢还是怎样?当然,我也在driver里面加了锁试过,没有效果,所以后面继续。

这次更新先到此,其他事情的确太多了,而且项目上也不让我做LCM,所以写这些都很吃力的。

(最近个人任务太多,有其他事必须all in,所以lcm这块停更。希望事情能成,祝武运昌隆)

你可能感兴趣的:(Android的lcm知识点(5))