1. 配置display的dtsi文件:
@arch/arm/boot/dts/dsi-wukong-panel.dtsi
&mdss_mdp { //包含两种display,具体用那个可以选择
dsi_novatek_720p_lgd: somc,novatek_lgd_panel{//第三方的display panel setting
qcom,mdss-dsi-panel-name="NT35521 LGD 720p Video Mode panel";
...
}
dsi_himax_720p_ctc: somc,himax_ctc_panel{//第三方的display panel setting
qcom,mdss-dsi-panel-name="HX8394 CTC 720p Video Mode panel";
.....
}
}
@arch/arm/boot/dts/msm8226-mdss.dtsi
&soc {
mdss_mdp: qcom,mdss_mdp@fd900000 { //包含mdss_mdp
compatible = "qcom,mdss_mdp";
...
}
mdss_dsi0: qcom,mdss_dsi@fd922800 { //包含mdss_dsi0
compatible = "qcom,mdss-dsi-ctrl";
...
}
}
@/kernel/arch/arm/boot/dts/msm8226-wukong.dtsi
&mdss_dsi0 {
qcom,dsi-pref-prim-pan = <&dsi_novatek_720p_lgd>; //表示使用的是第一个display panel
};
至此,dtsi文件的相互关系分析完了,如果需要porting第三方的display panel, 则只在 &mdss_mdp 添加具体的setting 即可, 然后再 &mdss_dsi0 具体引用
2. 具体.c文件流程分析
@kernel/drivers/video/msm/mdss/mdss_dsi.c
mdss_dsi_ctrl_probe --> mdss_dsi_find_panel_of_node --> mdss_dsi_pref_prim_panel //得到对应的display panel node
--> mdss_dsi_panel_init --> mdss_panel_parse_dt //根据node的setting, 设置display panel的参数
--> dsi_panel_device_register //注册该display panel device
3. 小结: 因为高通高度集成了display的代码,所以一般只需要在dtsi 中修改display panel setting 即可。