RK平台mipi屏初始化序列配置

RK平台mipi屏初始化序列都是在dts中进行配置,有两种方式,下面分别介绍两种方式的配置方法。

方式一

RK平台较老的SDK采用下面方式配置mipi参数,如:RK3128 5.1 SDK中就是采用的下面方式。

示例:

/ {
    /* about mipi */
    disp_mipi_init: mipi_dsi_init{
        compatible = "rockchip,mipi_dsi_init";
        rockchip,screen_init    = <1>;
        rockchip,dsi_lane       = <4>;
        rockchip,dsi_hs_clk     = <550>;
        rockchip,mipi_dsi_num   = <1>;
    };
    
    disp_mipi_power_ctr: mipi_power_ctr {
        compatible = "rockchip,mipi_power_ctr";
        
        /*
        mipi_lcd_rst:mipi_lcd_rst{
            compatible = "rockchip,lcd_rst";
            rockchip,gpios = <&gpio2 GPIO_D1 GPIO_ACTIVE_HIGH>;
            rockchip,delay = <20>;
        };
        
        mipi_lcd_en:mipi_lcd_en {
            compatible = "rockchip,lcd_en";
            rockchip,gpios = <&gpio2 GPIO_D0 GPIO_ACTIVE_LOW>;
            rockchip,delay = <100>;
        };
        */
    };
    
    disp_mipi_init_cmds: screen-on-cmds {
        compatible = "rockchip,screen-on-cmds";
        rockchip,cmd_debug = <1>;
        
        rockchip,on-cmds1 {
            compatible = "rockchip,on-cmds";
            rockchip,cmd_type = <LPDT>;
            rockchip,dsi_id = <0>;
            rockchip,cmd = <0x15 0xE0 0x00>;
            rockchip,cmd_delay = <0>;
        };
        
        rockchip,on-cmds2 {
            compatible = "rockchip,on-cmds";
            rockchip,cmd_type = <LPDT>;
            rockchip,dsi_id = <0>;
            rockchip,cmd = <0x39 0x55 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10>;
            rockchip,cmd_delay = <0>;
        };

        //SLP OUT
        rockchip,on-cmds3 {
            compatible = "rockchip,on-cmds";
            rockchip,cmd_type = <LPDT>;
            rockchip,dsi_id = <0>;
            rockchip,cmd = <0x05 0x11>;
            rockchip,cmd_delay = <120>;
        };

        //DISP ON
        rockchip,on-cmds4 {
            compatible = "rockchip,on-cmds";
            rockchip,cmd_type = <LPDT>;
            rockchip,dsi_id = <0>;
            rockchip,cmd = <0x05 0x29>;
            rockchip,cmd_delay = <5>;
        };
    };

    disp_timings: display-timings {
        native-mode = <&timing0>;
        compatible = "rockchip,display-timings";
        timing0: timing0 {
            screen-type = <SCREEN_MIPI>;
            lvds-format = <LVDS_8BIT_2>;
            out-face    = <OUT_P888>;
            
            clock-frequency = <67330000>;
            hactive = <800>;             
            vactive = <1280>;       
            hback-porch = <18>;           
            hfront-porch = <18>;          
            vback-porch = <10>;         
            vfront-porch = <20>;          
            hsync-len = <18>;            
            vsync-len = <4>;
            
            hsync-active = <0>;
            vsync-active = <0>;
            de-active = <0>;
            pixelclk-active = <0>;
            swap-rb = <0>;
            swap-rg = <0>;
            swap-gb = <0>;
        };
    };
};

这里只分析disp_mipi_init_cmds的配置规则,disp_mipi_init、disp_mipi_power_ctl、disp_timings不分析,其中disp_timings可以参考另一篇文章:《如何确定lcd timing参数》

下面代码段为一条mipi初始化数据,主要关心的参数有“rockchip,cmd”和“rockchip,cmd_delay”。

rockchip,on-cmds1 {
    compatible = "rockchip,on-cmds";
    rockchip,cmd_type = <LPDT>;
    rockchip,dsi_id = <0>;
    rockchip,cmd = <0x15 0xE0 0x00>;
    rockchip,cmd_delay = <0>;
};
rockchip,cmd

命令格式如下:

0x15 0xE0 0x00
 |     |   |
 |     |   数据
 |     寄存器地址
 命令类型(0x05: 单字节数据 0x15: 双字节数据 0x39: 多字节数据)

单字节数据举例:

rockchip,on-cmds3 {
    compatible = "rockchip,on-cmds";
    rockchip,cmd_type = <LPDT>;
    rockchip,dsi_id = <0>;
    rockchip,cmd = <0x05 0x11>;
    rockchip,cmd_delay = <120>;
};

双字节数据举例:

rockchip,on-cmds1 {
    compatible = "rockchip,on-cmds";
    rockchip,cmd_type = <LPDT>;
    rockchip,dsi_id = <0>;
    rockchip,cmd = <0x15 0xE0 0x00>;
    rockchip,cmd_delay = <0>;
};

多字节数据举例:

rockchip,on-cmds2 {
    compatible = "rockchip,on-cmds";
    rockchip,cmd_type = <LPDT>;
    rockchip,dsi_id = <0>;
    rockchip,cmd = <0x39 0x55 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10>;
    rockchip,cmd_delay = <0>;
};
rockchip,cmd_delay

此字段定义发送完命令后延时时长,单位毫秒(ms),大部分命令无须延时。

方式二

RK平台新的SDK已经统一采用下面方式配置mipi参数,如:RK3288 8.1 SDK中就是采用的下面方式。

示例:

&dsi0 {
    status = "okay";
    rockchip,lane-rate = <600>;

    panel: panel {
        compatible = "simple-panel-dsi";
        reg = <0>;
        backlight = <&backlight>;
        enable-gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>;
        //reset-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;
        power-supply = <&vcc_lcd>;
        dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST)>;
        dsi,format = <MIPI_DSI_FMT_RGB888>;
        dsi,lanes = <4>;
        reset-delay-ms = <20>;
        init-delay-ms = <20>;
        enable-delay-ms = <120>;
        prepare-delay-ms = <120>;
        status = "okay";
    
        panel-init-sequence = [
            15 00 02 80 77
            15 00 02 81 77
            15 00 02 82 77
            15 00 02 83 77
            15 00 02 84 77
            15 00 02 85 77
            15 00 02 86 77
            05 64 01 11
            05 14 01 29
        ];

        panel-exit-sequence = [
            05 64 01 28
            05 96 01 10
        ];

        disp_timings: display-timings {
            native-mode = <&timing2>;
            timing2: timing0 {
                clock-frequency = <52000000>;
                hactive = <1024>;
                vactive = <600>;
                hback-porch = <160>;
                hfront-porch = <160>;
                vback-porch = <23>;
                vfront-porch = <12>;
                hsync-len = <10>;
                vsync-len = <10>;
                hsync-active = <0>;
                vsync-active = <0>;
                de-active = <0>;
                pixelclk-active = <0>;
            };
        };
    };
};

这里依然只分析panel-init-sequence和panel-exit-sequence的配置规则,其它配置可以参考另一篇文章:《如何确定lcd timing参数》

新的mipi初始化序列配置规则与老方法其实是一致的,只是改写了表达方式,如下:

panel-init-sequence = [
    15 00 02 80 77
    15 00 02 81 77
    15 00 02 82 77
    15 00 02 83 77
    15 00 02 84 77
    15 00 02 85 77
    15 00 02 86 77
    39 00 0D C3 01 66 13 23 00 66 85 33 20 38 38 00
    05 64 01 11
    05 14 01 29
];

中括号里的内容,每一行表示一串命令字,规则如下:

15 00 02 80 77
 |  |  | |  |
 |  |  | |  数据
 |  |  | | 寄存器地址
 |  |  数据长度
 |  延时
 命令类型(0x05: 单字节数据 0x15: 双字节数据 0x39: 多字节数据)

单字节数据举例:

05 64 01 11

双字节数据举例:

15 00 02 86 77

多字节数据举例:

39 00 0D C3 01 66 13 23 00 66 85 33 20 38 38 00
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,746评论 0 10
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,849评论 0 5
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,970评论 6 13
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,761评论 0 15
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,381评论 0 5