MIPI DSI 使用 Config配置 在arch/arm/configs/fireprime_defconfig添加配置: CONFIG_LCD_MIPI=y CONFIG_MIPI_DSI=y CONFIG_RK32_MIPI_DSI=y 驱动配置 新建DTS配置文件 在arch/arm/boot/dts/目录中新建dst配置文件,如lcd-xxx-mipi.dtsi。 添加DTS文件和关闭tve使能 在arch/arm/boot/dts/rk3128-fireprime.dts中添加#include "lcd-xxx- mipi.dtsi",如果原来include了其他屏的DTS配置,注释掉它们。使用MIPI屏显 示,需要关闭tve的使能: &tve { status = "disabled"; test_mode = <0>; }; 添加背光节点信息 在lcd-xxx-mipi.dtsi中添加背光节点信息。 backlight { compatible = "pwm-backlight"; pwms = <&pwm0 0 25000>; rockchip,pwm_id= <1>; /* | dark(255-221) | light scale(220-0) | , scale_div=255*/ brightness-levels = ; default-brightness-level = <180>; enable-gpios = <&gpio1 GPIO_A7 GPIO_ACTIVE_HIGH>; }; 属性: pwms属性:配置PWM,AIO-3128C使用pwm0,范例中的25000是PWM频率, enable-gpios 是背光使能脚。 brightness-levels属性:配置背光亮度数组, 最大值为255,配置暗区和亮区,并把亮区数组做255的比例调节。比如范例中暗 区是255-221,亮区是220-0。 default-brightness-level属性:开机时默认背 光亮度,范围为0-255。 enable-gpios属性:配置背光使能引脚。 具体请参考kernel中的说明文档: Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt 配置MIPI相关信息 在lcd-xxx-mipi.dtsi中添加MIPI配置信息 disp_mipi_init: mipi_dsi_init{ compatible = "rockchip,mipi_dsi_init"; rockchip,screen_init = <1>; rockchip,dsi_lane = <4>; rockchip,dsi_hs_clk = <500>; rockchip,mipi_dsi_num = <1>; }; 属性: rockchip,screen_init属性:0表示不需要特殊指令初始化显示屏,1, 表示需要初始化指令。 rockchip,dsi_lane属性:数据lane的数量。 rockchip,dsi_hs_clk属性:配置hsclk。 rockchip,mipi_dsi_num:配置只用 DSI接口的数量,单通道MIPI屏为1,双通道MIPI屏为2(fireprime只支持单通道 MIPI屏,故配置成1即可)。 具体请参考kernel中的说明文档: Documentation/devicetree/bindings/video/rockchip_mipidsi_lcd.txt 配置LCD引脚 在lcd-xxx-mipi.dtsi中添加引脚配置信息 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_B0 GPIO_ACTIVE_LOW>; rockchip,delay = <10>; }; /* mipi_lcd_en:mipi_lcd_en { compatible = "rockchip,lcd_en"; rockchip,gpios = <&gpio0 GPIO_C1 GPIO_ACTIVE_HIGH>; rockchip,delay = <10>; };*/ }; disp_mipi_power_ctr分别有电源使能引脚mipi_lcd_en、片选引脚mipi_lcd_cs ,复位引脚mipi_lcd_rst,可以根据显示屏做修改和删减。 配置初始化命令 在lcd-xxx-mipi.dtsi中添加初始化命令信息 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 = <0>; rockchip,cmd = <0x05 0x29>; rockchip,cmd_delay = <0>; }; rockchip,on-cmds2 { compatible = "rockchip,on-cmds"; rockchip,cmd_type = ; rockchip,dsi_id = <0>; rockchip,cmd = <0x05 0x11>; rockchip,cmd_delay = <200>; }; }; 当rockchip,screen_init为1时需要配置显示屏的初始化命令,初始化命令在节 点disp_mipi_init_cmds中配置。 rockchip,cmd_debug属性:打开可输出指令调试信息。 rockchip,on-cmdsXX子节点:配置每条指令的信息。 rockchip,cmd_type:数据传输模式,LPDT或HSDT。 rockchip,dsi_id:指令传输的DSI接口,0为向DSI0(双通道MIPI屏时为左半屏 )发送指令,1为向DSI1(双通道MIPI屏时为右半屏)发送指令,2为同时向两个 DSI发送数据。 rockchip,cmd:指令序列。其中第一个字节为DSI数据类型,第二个字节为REG, 后面的字节为指令内容。 rockchip,cmd_delay:发送指令后的延时,单位为ms。 配置显示时序 在lcd-xxx-mipi.dtsi中添加显示时序信息 disp_timings: display-timings { native-mode = <&timing0>; compatible = "rockchip,display-timings"; timing0: timing0 { screen-type = ; lvds-format = ; out-face = ; color-mode = ; clock-frequency = <67000000>; hactive = <768>; vactive = <1024>; hsync-len = <64>; hback-porch = <56>; hfront-porch = <60>; vsync-len = <14>; vback-porch = <30>; vfront-porch = <36>; hsync-active = <0>; vsync-active = <0>; de-active = <0>; pixelclk-active = <1>; swap-rb = <0>; swap-rg = <0>; swap-gb = <0>; }; }; 时序的在节点disp_timings配置 screen-type属性:显示屏类型,Firefly- RK3128只支持单通道MIPI屏,配置成SCREEN_MIPI即可。 lvds-format属性:无 关选项。 out-face属性:配置颜色,可为OUT_P888(24位)、OUT_P666(18位 )或者OUT_P565(16位)。 clock-frequency属性:屏时钟,单位Hz。 其他的时序属性参考下图: dsihost配置 单MIPI屏,需要使能dsihost0,如: &dsihost0 { status = "okay"; };