IMX8MP LVDS display on 6.1 is not working which is working on 5.15

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

IMX8MP LVDS display on 6.1 is not working which is working on 5.15

95件の閲覧回数
Chandrasekhar1
Contributor I

Hi Team, we are able to bring-up the LVDS display on 5.15 kernel, but when we are porting from 5.15 to 6.1 LVDS display is not working.

Below are the panel modifcations added:

With the same below modfications display is working in 5.15 kernel. So need supoort to bringup the display.

drivers/gpu/drm/panel/panel-simple.c | 97 ++++++++++++++++++++++++++++
1 file changed, 97 insertions(+)

diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index b73669808347..605dce99d1ab 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -2128,6 +2128,94 @@ static const struct panel_desc hitachi_tx23d38vm0caa = {
},
};

+static const struct display_timing auo_g156han04_0_timings = {
+ .pixelclock = { 141000000, 141000000, 141000000 },
+ .hactive = { 1920, 1920, 1920 },
+ .hfront_porch = { 60, 60, 60 },
+ .hback_porch = { 60, 60, 60 },
+ .hsync_len = { 64, 64, 64 },
+ .vactive = { 1080, 1080, 1080 },
+ .vfront_porch = { 12, 12, 12 },
+ .vback_porch = { 12, 12, 12 },
+ .vsync_len = { 12, 12, 12 },
+};
+
+static const struct panel_desc auo_g156han04_0 = {
+ .timings = &auo_g156han04_0_timings,
+ .num_timings = 1,
+ .bpc = 8,
+ .size = {
+ .width = 344,
+ .height = 194,
+ },
+ .delay = {
+ .prepare = 10,
+ .enable = 50,
+ .disable = 50,
+ .unprepare = 200,
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+};
+
+static const struct display_timing lxd_m773a_timings = {
+ .pixelclock = { 60000000, 60000000, 60000000 },
+ .hactive = { 1024, 1024, 1024 },
+ .hfront_porch = { 40, 40, 40 },
+ .hback_porch = { 40, 40, 40 },
+ .hsync_len = { 20, 20, 20 },
+ .vactive = { 600, 600, 600 },
+ .vfront_porch = { 20, 20, 20 },
+ .vback_porch = { 20, 20, 20 },
+ .vsync_len = { 10, 10, 10 },
+};
+
+static const struct panel_desc lxd_m773a = {
+ .timings = &lxd_m773a_timings,
+ .num_timings = 1,
+ .bpc = 8,
+ .size = {
+ .width = 154,
+ .height = 85,
+ },
+ .delay = {
+ .prepare = 10,
+ .enable = 50,
+ .disable = 50,
+ .unprepare = 200,
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+};
+
+static const struct display_timing lxd_m776a_timings = {
+ .pixelclock = { 60000000, 60000000, 60000000 },
+ .hactive = { 1024, 1024, 1024 },
+ .hfront_porch = { 40, 40, 40 },
+ .hback_porch = { 40, 40, 40 },
+ .hsync_len = { 20, 20, 20 },
+ .vactive = { 600, 600, 600 },
+ .vfront_porch = { 20, 20, 20 },
+ .vback_porch = { 20, 20, 20 },
+ .vsync_len = { 10, 10, 10 },
+};
+
+static const struct panel_desc lxd_m776a = {
+ .timings = &lxd_m776a_timings,
+ .num_timings = 1,
+ .bpc = 8,
+ .size = {
+ .width = 222,
+ .height = 125,
+ },
+ .delay = {
+ .prepare = 10,
+ .enable = 50,
+ .disable = 50,
+ .unprepare = 200,
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+};
+
+
static const struct drm_display_mode innolux_at043tn24_mode = {
.clock = 9000,
.hdisplay = 480,
@@ -4201,6 +4289,15 @@ static const struct of_device_id platform_of_match[] = {
.compatible = "hit,tx23d38vm0caa",
.data = &hitachi_tx23d38vm0caa
}, {
+ .compatible = "lxd,m773a",
+ .data = &lxd_m773a,
+ }, {
+ .compatible = "lxd,m776a",
+ .data = &lxd_m776a,
+ }, {
+ .compatible = "auo,g156han04_0",
+ .data = &auo_g156han04_0,
+ }, {
.compatible = "innolux,at043tn24",
.data = &innolux_at043tn24,
}, {
--
2.34.1

 

Here is the DTS file used:

/ {
lvds0_panel {
status = "okay";
compatible = "lxd,m776a";
backlight = <&lvds_backlight>;
enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
port {
panel_lvds_in: endpoint {
remote-endpoint = <&lvds_out>;
};
};
};
lvds_backlight {
enable-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
};
// gpio3_IO23 on lec-imx8mp is display mux
reg_mipi_lvds_select: regulator-mipi-lvds {
compatible = "regulator-fixed";
regulator-name = "mipi_lvds_select_vbus";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_disp_select>;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
gpio = <&gpio3 23 GPIO_ACTIVE_HIGH>;
enable-active-low;
regulator-always-on;
};
};


&ldb {
status = "okay";
//fsl,dual-channel;
lvds-channel@0 {
fsl,data-mapping = "spwg";
fsl,data-width = <24>;
status = "okay";
/delete-node/ port@1;
port@1 {
reg = <1>;
lvds_out: endpoint {
remote-endpoint = <&panel_lvds_in>;
};
};
};
};
&ldb_phy {
status = "okay";
};
&i2c3 {
touchscreen@41 {
compatible = "ilitek,ili251x";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_touch_en &pinctrl_touch_rst>;
reg = <0x41>;
interrupt-parent = <&gpio1>;
interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
touchscreen-inverted-x;
touchscreen-inverted-y;
};
};

0 件の賞賛
返信
1 返信

64件の閲覧回数
brian14
NXP TechSupport
NXP TechSupport

Hi @Chandrasekhar1

Thank you for contacting NXP Support!

From Linux kernel 5 to 6 there are some changes that you can check on the Linux kernel documentation.
Regards, changes on Linux IMX you can follow the driver for that Linux Kernel version and take as a reference for your porting:
linux-imx/drivers/gpu/drm/panel/panel-simple.c at lf-6.1.y · nxp-imx/linux-imx · GitHub

0 件の賞賛
返信