本帖最后由 bobo 于 2015-5-26 16:07 编辑
大家好,我是一个rk3288的新人,目前在用firefly的开发板调试一款2k的mipi屏,因为之前没有调试过mipi屏,对于配置dts中初始化命令那一块不熟悉,想问一下各位应该如何调试。对于附件中的屏幕,我应该怎么来写初始化命令?谢谢
本帖最后由 bobo 于 2015-5-26 16:07 编辑
大家好,我是一个rk3288的新人,目前在用firefly的开发板调试一款2k的mipi屏,因为之前没有调试过mipi屏,对于配置dts中初始化命令那一块不熟悉,想问一下各位应该如何调试。对于附件中的屏幕,我应该怎么来写初始化命令?谢谢
我发的图为什么看不到?
本帖最后由 bobo 于 2015-5-26 16:13 编辑
已经看过了,现在是不能确认,写的对不对我的dts文件是这样写的:
/*
/ {
/* 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配置关掉?
摄像头配置如何关呢?
谢谢~~
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的不?