隆太威电子网欢迎您!
新闻资讯

BSP调试#05:MIPI DSI(RK3588)

作者:    发布时间:2026-05-13 14:44:30    浏览量:

本合集的是我当初调试 RK3588 平台时的原始笔记——只保留了那些踩过坑的问题接口,没出过问题的内容全删掉了。文章框架如下:

wKgZPGng4gKATcmoAABzsIrFu8s708.png

其中,“调试过程”章节可能有点意思(记录了我踩过的坑),其他章节无关紧要。

硬件设计

wKgZPGng4gKAJU62AAKHdHM1Z2g666.png

软件配置

显示配置

&dsi0 {    status ="okay";    //rockchip,lane-rate= <1000>;    dsi0_panel: panel@0{        status ="okay";//       pinctrl-names="default";//       pinctrl-0= <&mipi0_enable_gpio>;        compatible ="simple-panel-dsi";        reg = <0>;        backlight = <&backlight_dsi0>;       reset-delay-ms= <10>;       enable-delay-ms= <10>;        prepare-delay-ms= <10>;        unprepare-delay-ms= <10>;       disable-delay-ms= <60>;        dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |            MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET)>;        dsi,format = ;        dsi,lanes = <4>;        //enable-gpios= <&gpio3 RK_PB2 GPIO_ACTIVE_HIGH>;       reset-gpios= <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;        panel-init-sequence= [           350002808B           3500028178           3500028284           3500028388           35000284A8           35000285E3           3500028688           05780111           051E0129          ];        panel-exit-sequence= [           05000128           05000110        ];        panel0_disp_timings0: display-timings{            native-mode= <&panel0_7_1024x600>;            panel0_7_1024x600: timings {                hback-porch  = <48>;                hfront-porch  = <40>;                hactive     = <1024>;               hsync-len   = <48>;                vback-porch  = <48>;                vfront-porch  = <40>;                vactive     = <600>;                vsync-len   = <4>;                clock-frequency= <45000000>;                vsync-active  = <0>;               hsync-active  = <0>;                de-active   = <0>;                pixelclk-active= <0>;            };        };        ports {           #address-cells = <1>;           #size-cells = <0>;            port@0{                reg = <0>;                panel_in_dsi0: endpoint {                    remote-endpoint= <&dsi0_out_panel>;                };            };        };    };    ports {       #address-cells = <1>;       #size-cells = <0>;        port@1{            reg = <1>;            dsi0_out_panel: endpoint {                remote-endpoint= <&panel_in_dsi0>;            };        };    };};
wKgZPGng4gKAGjNrAAAg0KXh6qE893.pngwKgZPGng4gKARbvdAABtb5pf-oY421.png

触摸配置

wKgZPGng4gKAd2NwAAFKi0Ya08g751.png调试过程

问题 1:驱动 probe 失败

【问题描述】:触摸驱动加载报错,probe 探测失败。

wKgZPGng4gKABUxbAAAVmVF7dzQ148.png

【问题分析】:从log 可以看出,设备树缺少max-x/max-y参数导致驱动 probe 失败。

【问题解决】:在设备树文件中增加max-x、max-y 与tp-size 节点后,驱动 probe 成功,问题解决!

问题 2:触摸坐标 X/Y 轴反了

【问题描述】:触摸屏幕发现,X/Y 坐标正好相反。

【问题分析】:没啥好分析,啃驱动!

【问题解决】:修改驱动源码(gt9xx.c),将 X/Y 轴坐标互换。

wKgZPGng4gKAbFMkAAD_mFe449E149.png

功能验证

接屏幕测试就行。

(完)


本人专注 Linux 驱动 & Linux/Android BSP 开发调试,可接外包项目/技术支持/问题定位。有需求或交个朋友可加微信:【Chen_WeChat2025】。