美文网首页
Android的LCM知识点(4)

Android的LCM知识点(4)

作者: 冰糖小新 | 来源:发表于2018-04-04 08:01 被阅读0次

    LCM知识点(4)

    kernel-3.18\drivers\misc\mediatek\video\mt6755\disp_dts_gpio.c路径下面,我们能看到DTS(设备树)里面定义的所有GPIO对应名称,

    /* DTS state mapping name */
    static const char *this_state_name[DTS_GPIO_STATE_MAX] = {
        "mode_te_gpio",
        "mode_te_te",
        "lcm_rst_out0_gpio",
        "lcm_rst_out1_gpio",
        "lcd_bias_enp0_gpio",
        "lcd_bias_enp1_gpio"
    };
    
    

    然后找到了long disp_dts_gpio_select_state(DTS_GPIO_STATE s)函数,这个函数前面分析流程的时候有看到过,这个函数的确是操作GPIO
    的,但是我们也可以很清楚的发现,上述的DTS mapping中lcd_bias只操作了两个口,但是硬件原理图上有很多接口,TDN1~3等。而对比硬件原理图,发"lcd_bias_enp0_gpio", "lcd_bias_enp1_gpio"这两个接口应该是操作GPIO_LCM_BIAS_EP和GPIO_LCM_BIAS_EN的。

    后查看硬件原理图和Datesheet,
    在LCD的硬件原理图上搜索TDP3,TDN2等关键子,发现的是其他平台的文件用到了这样的关键字,所以没有意义。
    在LCD的Datasheet中发现DSWAP是传输DSI数据的,对应的Interface是DSWAP,用codesearch搜索出来的内容和video没有任何关系。

    后面直接搜索DIS这样的关键字,倒是有所发现,找到了MTK_MIPI_TX_BASE这样的地址定义,所以可以按照这个线索追溯一下。
    我们能够看到在hardware/qcom/的子目录下有很多的MTK_MIPI_TX_BASE关键字,但是1不能确定这一层是干嘛的,2是不知道到底有没有用。

    在相同查看到MTK_MIPI_TX_BASE关键字的时候,还看到了#define MTK_DSI_BASE 0x1400c000这样的定义;所以顺手就查了一下,发现在mt6755.dtsi文件中有出现

    dispsys@14008000 {
    1625            compatible = "mediatek,dispsys";
    1626            reg = <0x14000000 0x1000>,  /*DISP_SYS     */
    1627                  <0x14008000 0x1000>,  /*DISP_OVL0     */
    1628                  <0x14009000 0x1000>,  /*DISP_OVL1     */
    1629                  <0x1400A000 0x1000>,  /*DISP_RDMA0     */
    1630                  <0x1400B000 0x1000>,  /*DISP_RDMA1     */
    1631                  <0x1400C000 0x1000>,  /*DISP_WDMA0     */
    1632                  <0x1400D000 0x1000>,  /*DISP_COLOR     */
    1633                  <0x1400E000 0x1000>,  /*DISP_CCORR     */
    1634                  <0x1400F000 0x1000>,  /*DISP_AAL       */
    1635                  <0x14010000 0x1000>,  /*DISP_GAMMA     */
    1636                  <0x14011000 0x1000>,  /*DISP_DITHER    */
    1637                  <0x14012000 0x1000>,  /*DISP_DSI0       */
    1638                  <0x14013000 0x1000>,  /*DISP_DPI0      */
    1639                  <0x1100E000 0x1000>,  /*DISP_PWM       */
    1640                  <0x14014000 0x1000>,  /*DISP_MUTEX     */
    1641                  <0x14015000 0x1000>,  /*DISP_SMI_LARB0 */
    1642                  <0x14016000 0x1000>,  /*DISP_SMI_COMMOM*/
    1643                  <0x14017000 0x1000>,  /*DISP_WDMA1*/
    1644                  <0x14018000 0x1000>,  /*DISP_OVL0_2L*/
    1645                  <0x14019000 0x1000>,  /*DISP_OVL1_2L*/
    1646                  <0x10215000 0x1000>;      /*MIPITX0,real chip would use this:<0x14018000 0x1000>;*/  
    

    这个时候基本可以猜测到DSI的数据接口是通过固定的地址操作的,剩下的就是如何操作的问题了。

    我们后面发现/kernel-3.18/drivers/misc/mediatek/cmdq/v2/cmdq_virtual.c文件中有

    /* Get DISP module registers range */
    1154    for (i = CMDQ_MODULE_STAT_DISP_OVL0; i <= CMDQ_MODULE_STAT_DISP_DPI0; i++) {
    1155        cmdq_dev_get_module_PA("mediatek,DISPSYS",
    1156                            (i - CMDQ_MODULE_STAT_DISP_OVL0),
    1157                            &modulePAStat->start[i], &modulePAStat->end[i]);
    1158    }   
    

    这样的函数,这个函数首先是将 "mediatek,dispsys"这个设备树给读进去了,然后怎么操作且听下回分解。

    相关文章

      网友评论

          本文标题:Android的LCM知识点(4)

          本文链接:https://www.haomeiwen.com/subject/lvihhftx.html