获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中:
【RK3576】Android 14 驱动开发实战指南
简介
硬件接口
驱动开发
显示数据流:
VP1视频源 → DSI控制器 → MIPI PHY → 显示面板
DTS配置
/* 显示路由配置:定义显示输出路径 */
&route_dsi {
status = "okay"; // 启用DSI显示路由
logo,uboot = "logo.bmp"; // U-Boot阶段显示logo
logo,kernel = "logo_kernel.bmp"; // 内核启动阶段显示logo
logo,mode = "center"; // logo居中显示
connect = <&vp1_out_dsi>; // 连接VP1视频处理器输出
};/* MIPI-DSI控制器核心配置 */
&dsi {
status = "okay"; // 启用DSI控制器
compatible = "rockchip,rk3576-mipi-dsi2";
reg = <0x0 0x27d80000 0x0 0x10000>; // 寄存器物理地址
clocks = <&cru 411>, <&cru 412>; // PCLK和系统时钟
clock-names = "pclk", "sys_clk";
phys = <&mipidcphy0>; // 物理层PHY连接
phy-names = "dcphy";
rockchip,grf = <&vo0_grf>; // 通用寄存器文件/* 输入端口:连接视频处理器 */
ports {
port@0 {
dsi_in_vp1: endpoint@1 { // 使用VP1作为输入源
status = "okay";
remote-endpoint = <&vp1_out_dsi>; // 对接VP1输出
};
// 禁用其他未使用的输入源
dsi_in_vp0: endpoint@0 { status = "disabled"; };
dsi_in_vp2: endpoint@2 { status = "disabled"; };
dsi_in_vopl: endpoint@3 { status = "disabled"; };
};
/* 输出端口:连接显示面板 */
port@1 {
dsi_out_panel: endpoint {
remote-endpoint = <&panel_in_dsi>; // 对接面板输入
};
};
};
};/* 显示面板配置 */
&dsi_panel {
status = "okay";
compatible = "simple-panel-dsi";
backlight = <&backlight>; // 背光控制
power-supply = <&vcc3v3_lcd_n>; // 面板电源
reset-delay-ms = <10>; // 复位后延迟
enable-delay-ms = <10>; // 使能后延迟
/* 物理尺寸 */
width-mm = <68>; // 面板宽度(毫米)
height-mm = <121>; // 面板高度(毫米)
/* DSI协议参数 */
dsi,flags = <((1 << 0) | (1 << 1) | (1 << 11) | (1 << 9))>; // 工作模式标志,[0]:TE反转, [1]:刷新技术, [2]:HS模式
dsi,format = <0>; // 像素格式:0:RGB888, 1:RGB666, 2:RGB565
dsi,lanes = <4>; // 使用4条数据通道
/* 面板初始化序列(厂商提供) */
panel-init-sequence = [
// 省略具体初始化命令...
05 78 01 11 // SLEEP OUT命令 + 120ms延迟
05 00 01 29 // DISPLAY ON命令
];
/* 面板关闭序列 */
panel-exit-sequence = [
05 00 01 28 // DISPLAY OFF命令
05 00 01 10 // SLEEP IN命令
];
/* 显示时序参数 */
disp_timings0: display-timings {
native-mode = <&dsi_timing0>; // 默认使用时序0
dsi_timing0: timing0 {
clock-frequency = <132000000>; // 像素时钟132MHz
hactive = <1080>; // 水平有效像素
vactive = <1920>; // 垂直有效像素
hfront-porch = <15>; // 水平前廊
hsync-len = <4>; // 水平同步脉冲
hback-porch = <30>; // 水平后廊
vfront-porch = <15>; // 垂直前廊
vsync-len = <2>; // 垂直同步脉冲
vback-porch = <15>; // 垂直后廊
// 同步信号极性 (0:正常, 1:反转)
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>; // 数据使能极性
pixelclk-active = <0>; // 像素时钟极性
};
};
/* 面板输入端口 */
ports {
port@0 {
panel_in_dsi: endpoint {
remote-endpoint = <&dsi_out_panel>; // 连接DSI输出
};
};
};
};/* 显示子系统时钟配置 */
&display_subsystem {
clocks = <&hdptxphy_hdmi>; // HDMI PHY时钟
clock-names = "hdmi0_phy_pll";
};