Skip to content

移植-显示

1. MIPI 转 eDP

以 LT8911EXB 桥接芯片为例。

1.1 添加驱动

将驱动添加到内核目录:

src/kernel-5.15/kernel_platform/msm-kernel/drivers/misc/lt8911exb

修改 Kconfig 和 Makefile 以包含到内核编译中:

# Kconfig
source "drivers/misc/lt8911exb/Kconfig"

# Makefile
+obj-y += lt8911exb/

最终编译产物位于 rootfs:

build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/kalama-oe-linux/qti-ubuntu-robotics-image/1.0-r0/rootfs/lib/modules/5.15.189-qki-consolidate-android13-8-g6a323a18c8d8-dirty/lt8911exb.ko

1.2 修改设备树

添加 Panel 配置到显示设备树目录:

src/display/vendor/qcom/proprietary/display-devicetree/display/dsi-panel-lt8911-1080p-edp-video.dtsi

kalama-sde-display-common.dtsi 中引用面板设备树:

#include "dsi-panel-lt8911-1080p-edp-video.dtsi"

kalama-sde-display-rb5-gen2.dtsi 中使能 sde_dsi1,配置供电、面板、背光等参数:

&dsi_lt8911_edp_1080p_video {
    qcom,mdss-dsi-sec-bl-pmic-control-type = "bl_ctrl_pwm";
    pwms = <&pm8550_pwm_2 0 50000>;
    qcom,bl-pmic-pwm-period-usecs = <200>;
    qcom,mdss-dsi-bl-min-level = <128>;
    qcom,mdss-dsi-bl-max-level = <255>;
    qcom,mdss-brightness-max-level = <255>;
    qcom,platform-bklight-en-gpio = <&tlmm 49 0>;
};

&mdss_mdp {
    connectors = <&sde_dsi &sde_dsi1 &smmu_sde_unsec &sde_rscc &sde_wb1 &sde_dp>;
};

&sde_dsi1 {
    /delete-property/ qcom,platform-te-gpio;
    /delete-property/ qcom,panel-te-source;
    status = "ok";
    qcom,dsi-default-panel = <&dsi_lt8911_edp_1080p_video>;
    pinctrl-names = "pwm_pin", "panel_active", "panel_suspend";
    pinctrl-0 = <&pwm_gpio09_default>;
    pinctrl-1 = <&edp_active &edp_bl_active>;
    pinctrl-2 = <&edp_suspend &edp_bl_suspend>;
};

添加 LT8911EXB 的设备树节点:

&qupv3_hub_i2c2 {
    lt8911exb: lt8911exb@29 {
        compatible = "lontium,lt8911exb";
        reg = <0x29>;
        power-gpios = <&tlmm 85 0>;
    };
};

1.3 使用 modetest 测试

检查 DSI-2 状态:

bash
sh-5.1# modetest -M msm_drm
73      0       disconnected    DSI-2           0x0             1       71
modes:
index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
#0 1920x1080x60vid 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: ; type: preferred

在 DSI-2 上进行显示测试,观察屏幕是否出现彩条:

bash
modetest -M msm_drm -s 73:1920x1080x60vid

2. MIPI

以 GM8775C 面板为例。

2.1 修改设备树

添加 Panel 配置到显示设备树目录:

src/display/vendor/qcom/proprietary/display-devicetree/display/dsi-panel-gm8775c-1080p-video.dtsi

kalama-sde-display-common.dtsi 中引用面板设备树:

#include "dsi-panel-gm8775c-1080p-video.dtsi"

kalama-sde-display-rb5-gen2.dtsi 中使能 sde_dsi,配置供电、面板、背光等参数:

&dsi_gm8775c_1080p_video {
    qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
    qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";
    qcom,5v-boost-gpio = <&tlmm 69 0>;
    qcom,platform-reset-gpio = <&tlmm 68 0>;
    qcom,platform-bklight-en-gpio = <&tlmm 60 0>;
    qcom,mdss-dsi-mode-sel-gpio-state = "high";
    qcom,panel-mode-gpio = <&tlmm 61 0>;
};

&mdss_mdp {
    connectors = <&sde_dsi &sde_dsi1 &smmu_sde_unsec &sde_rscc &sde_wb1 &sde_dp>;
};

&sde_dsi {
    /delete-property/ qcom,platform-te-gpio;
    /delete-property/ qcom,panel-te-source;
    pinctrl-names = "panel_active", "panel_suspend";
    pinctrl-0 = <&sde_dsi_active>;
    pinctrl-1 = <&sde_dsi_suspend>;
    qcom,dsi-default-panel = <&dsi_gm8775c_1080p_video>;
};