• MDDI接口简单了解


    分类: framebuffer-lcd驱动2011-08-12 16:30 1293人阅读 评论(1) 收藏 举报

    一:背景

    高通MDP下面可以接三种屏的接口:LCDC,MDDI,EBI2.之前所接触的都是LCDC接口的,MDDI没有做过,也没有分析过。公司MDDI接口的屏也有,看了看MDDI接口的pin脚比LCDC少多了,很可能以后会经常用。在网上找了些资料,看了一下还是有点感觉。

    二:资料

    MDDI__Protocol_Introduction.pdf

    MDDI_Introduce(ILItek).pdf

    80-VM299-2 MSM7227-MSM7227-1 MOBILE STATION MODEM SOFTWARE INTERFACE.pdf

    屏的spec

    例子code.(这里最好看bootloader下面的代码比较精干)

    有了这些东西那就自己看了。

    三:

    MDDI高通自己搞的一套屏的接口,既然是他搞出来的,那么它的操作方法他也在他所给的文档里说了。上面的MDDI__Protocol_Introduction.pdf看其名字就知道看了这个文档你肯定就知道了MDDI是如何工作的。再结合已有的例子代码,其具体的实现也就出现在眼前了。这里我自己也简单的总结一下:



    看看上面的连线,其实最主要的就是MDDI Data+/-;MDDI Strobe+/-;TE。 所有的数据都是通过这个两对差分数据线来传输。

    对于一块屏来说主要对其做两方面数据传输:
    1.初始化序列。对屏进行一些设置,像其它LCDC的屏一般是通过SPI接口,而这里的MDDI接口里,则是由MDDI 主控制器来发。

    在文档MDDI__Protocol_Introduction.pdf中描述的有一个packet,register access packet.在代码中用一个结构体来描述就是:

    struct __attribute__((packed)) mddi_register_access

    {

        unsigned short length;

        unsigned short type;

        unsigned short client_id;

        unsigned short rw_info;    /* flag below | count of reg_data */

    #define MDDI_WRITE     (0 << 14)

    #define MDDI_READ      (2 << 14)

    #define MDDI_READ_RESP (3 << 14)

        unsigned reg_addr;

        unsigned short crc;        /* 16 bit crc of the above */

        unsigned reg_data;         /* "list" of 3byte data values */

    };

    它这个意思就是把你想要设置的寄储器的信息埴在这个结构体里面,然后再把这个结构体又填到另外一个结构体

    struct __attribute__((packed)) mddi_llentry {

        unsigned short flags;

        unsigned short header_count;

        unsigned short data_count;

        void *data;

        mddi_llentry *next;

        unsigned short reserved;

        union {

            mddi_video_stream v;

            mddi_register_access r;

            unsigned _[12];

        } u;

    };

    把后面这个结构体的地址填到MDDI HOSTMDDI_PRI_PTR_REG寄储器里面,MDDI HOST就开始向屏发送你要设置的数据了。

    2.图像数据的传输。

    图像数据的传输和上面寄储器的传输是一样的,它又是另外一个结构体

    struct __attribute__((packed)) mddi_video_stream 

    {

        unsigned short length;      /* length in bytes excluding this field */

        unsigned short type;        /* MDDI_TYPE_VIDEO_STREAM */

        unsigned short client_id;   /* set to zero */

        

        unsigned short format;

        unsigned short pixattr;

        unsigned short left;

        unsigned short top;

        unsigned short right;

        unsigned short bottom;

        unsigned short start_x;

        unsigned short start_y;

        unsigned short pixels;

        unsigned short crc;

        unsigned short reserved;

    };

    差不多就这样,更具体还得看代码,目前还没有具体的项目用到这个MDDI的接口,先简单的了解一下,等到有MDDI接口的屏要调的时候,再作详细了解。


  • 相关阅读:
    记录Windows下文件操作记录
    线程太多导致socket连接池爆满,进程启动不了
    【转载】windbg 常用命令详解
    比较两个CSV的方法的探索
    【转载】java.util.ServiceConfigurationError: com.sun.tools.attach.spi.AttachProvider
    [转载]sql server死锁
    moco搭建json api网站用于接口测试
    Httprequest 获取url 常用方法
    test文件伪装
    微信小程序开发历程
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124155.html
Copyright © 2020-2023  润新知