双mipi屏调试问题

本帖最后由 bobo 于 2015-5-26 16:07 编辑

大家好,我是一个rk3288的新人,目前在用firefly的开发板调试一款2k的mipi屏,因为之前没有调试过mipi屏,对于配置dts中初始化命令那一块不熟悉,想问一下各位应该如何调试。对于附件中的屏幕,我应该怎么来写初始化命令?谢谢

我发的图为什么看不到?

先看看wiki:http://wiki.t-firefly.com/index.php/Firefly-RK3288/DSI

本帖最后由 bobo 于 2015-5-26 16:13 编辑

已经看过了,现在是不能确认,写的对不对我的dts文件是这样写的:

/*

  • Copyright (C) 2014 ROCKCHIP, Inc.
  • arch/arm/boot/dts/lcd-lq070m1sx01-mipi.dtsi
  • author: libing@rock-chips.com
  • create date: 2014-04-15
  • lcd model: wqxga
  • resolution: 2560 X 1600
  • mipi channel: dual
    */

/ {
/* 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 = <940>;
rockchip,mipi_dsi_num = <2>;
};
disp_mipi_power_ctr: mipi_power_ctr {
compatible = “rockchip,mipi_power_ctr”;
mipi_lcd_rst:mipi_lcd_rst{
compatible = “rockchip,lcd_rst”;
rockchip,gpios = <&gpio7 GPIO_B2 GPIO_ACTIVE_HIGH>;
rockchip,delay = <10>;
};
mipi_lcd_en:mipi_lcd_en {
compatible = “rockchip,lcd_en”;
rockchip,gpios = <&gpio6 GPIO_A7 GPIO_ACTIVE_HIGH>;
rockchip,delay = <10>;
};
};
disp_mipi_init_cmds: screen-on-cmds {
rockchip,cmd_debug = <0>;
compatible = “rockchip,screen-on-cmds”;
rockchip,on-cmds1 {
compatible = “rockchip,on-cmds”;
rockchip,cmd_type = ;
rockchip,dsi_id = <2>;
rockchip,cmd = <0x29 0xb0 0x00>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds2 {
compatible = “rockchip,on-cmds”;
rockchip,cmd_type = ;
rockchip,dsi_id = <2>;
rockchip,cmd = <0x29 0xd6 0x01>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds3 {
compatible = “rockchip,on-cmds”;
rockchip,cmd_type = ;
rockchip,dsi_id = <2>;
rockchip,cmd = <0x39 0xb3 0x08>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds4 {
compatible = “rockchip,on-cmds”;
rockchip,cmd_type = ;
rockchip,dsi_id = <2>;
rockchip,cmd = <0x39 0x51 0xff>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds5 {
compatible = “rockchip,on-cmds”;
rockchip,cmd_type = ;
rockchip,dsi_id = <2>;
rockchip,cmd = <0x39 0x53 0x0c>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds6 {
compatible = “rockchip,on-cmds”;
rockchip,cmd_type = ;
rockchip,dsi_id = <2>;
rockchip,cmd = <0x39 0x35 0x00>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds7 {
compatible = “rockchip,on-cmds”;
rockchip,cmd_type = ;
rockchip,dsi_id = <2>;
rockchip,cmd = <0x39 0x2a 0x00 0x00 0x05 0x9f>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds8 {
compatible = “rockchip,on-cmds”;
rockchip,cmd_type = ;
rockchip,dsi_id = <2>;
rockchip,cmd = <0x29 0xb0 0x03>;
rockchip,cmd_delay = <0>;
};

                rockchip,on-cmds9 {
                                compatible = "rockchip,on-cmds";
                        rockchip,cmd_type = <LPDT>;
                        rockchip,dsi_id = <2>;
                        rockchip,cmd = <0x05 dcs_set_display_on>;
                        rockchip,cmd_delay = <10>;
                };

    };

    disp_timings: display-timings {
                    native-mode = <&timing0>;
                    compatible = "rockchip,display-timings";
                    timing0: timing0 {
            screen-type = <SCREEN_DUAL_MIPI>;
            lvds-format = <LVDS_8BIT_2>;
            out-face    = <OUT_P888>;
            clock-frequency = <265000000>;
            hactive = <1440>;
            vactive = <2560>;

            hsync-len = <38>;//19
            hback-porch = <100>;//40
            hfront-porch = <46>;//123

            vsync-len = <1>;
            vback-porch = <4>;
            vfront-porch = <3>;

            hsync-active = <0>;
            vsync-active = <0>;
            de-active = <0>;
            pixelclk-active = <0>;
            swap-rb = <0>;
            swap-rg = <0>;
            swap-gb = <0>;
                     };
           };

};

这样看不出有没有问题:上电时序和屏参数需根据datasheet来确认,具体的指令需要从屏厂获取

datasheet太大,上传不了,所以只截了一部分

指令没看出问题,timing0有没有对过datasheet

升压时序应该不是问题所在,只是我的ubuntu装失败了。要不就一起学习了

bobo 发表于 2015-5-26 16:04
已经看过了,现在是不能确认,写的对不对我的dts文件是这样写的:

/*

hi bobo,不知道你屏幕点亮效果怎样?我用video mode 屏幕有波纹还有杂亮点,不知道你那边是什么情况,效果好么?

借問一下.

双mipi屏, 需要設定 rockchip,mipi_dsi_num = <2>; 共使用8 MIPI lanes.
所以會使用到DPHY TX0, 還有DPHY TX1/DPHY RX1, 但是Firefly-RK3288 目前DPHY TX1/DPHY RX1是設定為RX1, 給camera使用. 要去哪邊修改呢?

http://wiki.t-firefly.com/index.php/Firefly-RK3288/DSI 我都有看過了, lcd-xxxx-mipi.dtsi 要修改, firefly-rk3288.dts 要改, 我都知道, 但是不知道如何關掉camera DPHY RX1, 開啟DPHY TX1.

把摄像头xml配置关掉就行

dsihost1 有看到東西了.

另外有一個疑問, 在rk32_mipi_dsi.c, line 1600 附近,

if (rk_mipi_get_dsi_num() == 1) {
	if (lcdc_id == 1)
		/* 1'b1: VOP LIT output to DSI host0;1'b0: VOP BIG output to DSI host0 */
		val0 = 0x1 << 22 | 0x1 << 6;
	else
		val0 = 0x1 << 22 | 0x0 << 6;
	writel_relaxed(val0, RK_GRF_VIRT + RK3288_GRF_SOC_CON6);
} else {
	if (lcdc_id == 1) {
		val0 = 0x1 << 25 | 0x1 <<  9 | 0x1 << 22 | 0x1 <<  6;
		val1 = 0x1 << 31 | 0x1 << 30 | 0x0 << 15 | 0x1 << 14;
	} else {
		val0 = 0x1 << 25 | 0x0 <<  9 | 0x1 << 22 | 0x0 <<  14;
		val1 = 0x1 << 31 | 0x1 << 30 | 0x0 << 15 | 0x1 << 14;
	}
	writel_relaxed(val0, RK_GRF_VIRT + RK3288_GRF_SOC_CON6);
	writel_relaxed(val1, RK_GRF_VIRT + RK3288_GRF_SOC_CON14);
}

是否有錯誤, 應該改成
} else {
val0 = 0x1 << 25 | 0x0 << 9 | 0x1 << 22 | 0x0 << 6;
val1 = 0x1 << 31 | 0x1 << 30 | 0x0 << 15 | 0x1 << 14;

bit 6是grf_con_dsi0_lcdc_sel, bit 9 是grf_con_dsi1_lcdc_sel.

我也再做 驱动2K屏

glec54321 发表于 2015-12-24 19:24
dsihost1 有看到東西了.

另外有一個疑問, 在rk32_mipi_dsi.c, line 1600 附近,

不需要改动,代码驱动代码验证过双MIPI没有问题

请问如果双MIPI,是否只需使能
&dsihost1 {
status = “okay”;
};
还是一定也要把摄像头的xml配置关掉?
摄像头配置如何关呢?
谢谢~~

本帖最后由 sunlh 于 2016-5-12 10:27 编辑

小弟在搞一块 1600x2560 dual MIPI 的屏, 可画面只有一半, 有神人知道如何解决吗? 谢谢

clare1942 发表于 2016-5-11 21:15
请问如果双MIPI,是否只需使能
&dsihost1 {
status = “okay”;

经测试,双MIPI的确是这样设定即可
已成功点起AMOLED双MIPI

clare1942 发表于 2016-5-13 13:22
经测试,双MIPI的确是这样设定即可
已成功点起AMOLED双MIPI

請問您是用 4.4 PAD 版吗?

sunlh 发表于 2016-5-13 16:24
請問您是用 4.4 PAD 版吗?

是的没错

果然强大啊!
能点COMMAND MODE的不?