RK3288 5.10内核无法点亮LVDS显示
调试RK3288 5.10版本内核发现,RK提供的代码dts中未定义lvds_panel,但却在其它地方进行引用修改,不晓得是不是官方提交代码时遗漏了。所以添加lvds_panel定义如下:
lvds_panel: lvds-panel {status = "disabled";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;panel_in_lvds: endpoint {remote-endpoint = <&lvds_out_panel>;};};};};
并修改lvds_panel内容如下:
&lvds_panel {status = "okay";compatible ="simple-panel";backlight = <&backlight>;power-supply = <&vcc_lvds>;
// enable-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;enable-delay-ms = <20>;prepare-delay-ms = <20>;unprepare-delay-ms = <20>;disable-delay-ms = <20>;/** MEDIA_BUS_FMT_RGB666_1X7X3_SPWG - "jeida-18"* MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA - "jeida-24"* MEDIA_BUS_FMT_RGB888_1X7X4_SPWG - "vesa-24"*/bus-format = <MEDIA_BUS_FMT_RGB888_1X7X4_SPWG>;width-mm = <217>;height-mm = <136>;display-timings {native-mode = <&timing0>;timing0: timing0 {clock-frequency = <74250000>;hactive = <1920>;vactive = <1080>;hback-porch = <80>;hfront-porch = <40>;vback-porch = <25>;vfront-porch = <10>;hsync-len = <20>;vsync-len = <10>;hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;};};
};
其它相关DTS配置按正常套路使能即可。但是重新编译内核烧写后,发现仅在启动时uboot logo可正常显示,后面就在无法点亮屏幕。出现该问题的原因是内核中关闭了"drivers/phy/rockchip/phy-rockchip-inno-video-phy.c"驱动,需要将其编译到内核即可,需要添加如下patch:
diff --git a/drivers/phy/rockchip/Kconfig b/drivers/phy/rockchip/Kconfig
index 0a41b89d82fc..2695ec30ed42 100644
--- a/drivers/phy/rockchip/Kconfig
+++ b/drivers/phy/rockchip/Kconfig
@@ -91,6 +91,14 @@ config PHY_ROCKCHIP_MIPI_RXhelpEnable this to support the Rockchip MIPI D-PHY with Synopsys or Innosilicon IP block.+config PHY_ROCKCHIP_INNO_VIDEO_PHY
+ tristate "Rockchip INNO LVDS/TTL PHY driver"
+ depends on ARCH_ROCKCHIP && OF
+ select GENERIC_PHY
+ help
+ Enable this to support the Rockchip LVDS/TTL PHY with
+ Innosilicon IP block.
+config PHY_ROCKCHIP_NANENG_COMBO_PHYtristate "Rockchip NANENG COMBO PHY Driver"depends on ARCH_ROCKCHIP && OF
diff --git a/drivers/phy/rockchip/Kconfig b/drivers/phy/rockchip/Kconfig
index 0a41b89d82fc..2695ec30ed42 100644
--- a/drivers/phy/rockchip/Kconfig
+++ b/drivers/phy/rockchip/Kconfig
@@ -91,6 +91,14 @@ config PHY_ROCKCHIP_MIPI_RXhelpEnable this to support the Rockchip MIPI D-PHY with Synopsys or Innosilicon IP block.+config PHY_ROCKCHIP_INNO_VIDEO_PHY
+ tristate "Rockchip INNO LVDS/TTL PHY driver"
+ depends on ARCH_ROCKCHIP && OF
+ select GENERIC_PHY
+ help
+ Enable this to support the Rockchip LVDS/TTL PHY with
+ Innosilicon IP block.
+config PHY_ROCKCHIP_NANENG_COMBO_PHYtristate "Rockchip NANENG COMBO PHY Driver"depends on ARCH_ROCKCHIP && OF
liujie@rocktech-OMEN-by-HP-Desktop-PC-880-p1xx:~/projects/Linux/tmp/rk3288_linux5.10_release_v1.2.0_20240620-SDK/kernel$ git diff drivers/phy/rockchip/Makefile
diff --git a/drivers/phy/rockchip/Makefile b/drivers/phy/rockchip/Makefile
index 9858a3730828..e60dc45c9e89 100644
--- a/drivers/phy/rockchip/Makefile
+++ b/drivers/phy/rockchip/Makefile
@@ -10,6 +10,7 @@ obj-$(CONFIG_PHY_ROCKCHIP_INNO_HDMI) += phy-rockchip-inno-hdmi-phy.oobj-$(CONFIG_PHY_ROCKCHIP_INNO_USB2) += phy-rockchip-inno-usb2.oobj-$(CONFIG_PHY_ROCKCHIP_INNO_USB3) += phy-rockchip-inno-usb3.oobj-$(CONFIG_PHY_ROCKCHIP_MIPI_RX) += phy-rockchip-mipi-rx.o
+obj-$(CONFIG_PHY_ROCKCHIP_INNO_VIDEO_PHY) += phy-rockchip-inno-video-phy.oobj-$(CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY) += phy-rockchip-naneng-combphy.oobj-$(CONFIG_PHY_ROCKCHIP_NANENG_EDP) += phy-rockchip-naneng-edp.oobj-$(CONFIG_PHY_ROCKCHIP_NANENG_USB2) += phy-rockchip-naneng-usb2.o
下面patch解决编译报错。
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-video-phy.c b/drivers/phy/rockchip/phy-rockchip-inno-video-phy.c
index 22d26f1413d9..061fd7df5e5e 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-video-phy.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-video-phy.c
@@ -136,7 +136,7 @@ static int inno_video_phy_power_off(struct phy *phy)return 0;}-static int inno_video_phy_set_mode(struct phy *phy, enum phy_mode mode)
+static int inno_video_phy_set_mode(struct phy *phy, enum phy_mode mode, int submode){return 0;}
最后’make menuconfig’中勾选’CONFIG_PHY_ROCKCHIP_INNO_VIDEO_PHY’,重新编译烧写后lvds显示正常。