On IMX8MP LVDS display with 6.1 kernel is not working which is working on 5.15 kernel

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

On IMX8MP LVDS display with 6.1 kernel is not working which is working on 5.15 kernel

ソリューションへジャンプ
2,125件の閲覧回数
Chandrasekhar-carrier
Contributor II

Hi Team, we are able to bring-up the LVDS display on 5.15 kernel on imx8mp custom board, but when we are porting from 5.15 to 6.1 kernel 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;
};
};

@griffin.peterson@nxp.com, @JainthKumar.B@Carrier.com

0 件の賞賛
返信
1 解決策
1,392件の閲覧回数
Chandrasekhar-carrier
Contributor II

after adding the below flags in the panel_desc then display is working as expected

 

.bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
.bus_flags = DRM_BUS_FLAG_DE_HIGH,
.connector_type = DRM_MODE_CONNECTOR_LVDS,

元の投稿で解決策を見る

0 件の賞賛
返信
7 返答(返信)
1,393件の閲覧回数
Chandrasekhar-carrier
Contributor II

after adding the below flags in the panel_desc then display is working as expected

 

.bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
.bus_flags = DRM_BUS_FLAG_DE_HIGH,
.connector_type = DRM_MODE_CONNECTOR_LVDS,

0 件の賞賛
返信
2,081件の閲覧回数
Chandrasekhar-carrier
Contributor II

There are no error messages, but display is not coming as expected

Chandrasekharcarrier_0-1719937688455.png


Is there any clock related changes we need to add in 6.1 Kernel?? or any other suggestions.

0 件の賞賛
返信
2,095件の閲覧回数
Chandrasekhar-carrier
Contributor II

hi @joanxie 

The Display backlight is initializing but on the display output is coming like below

Chandrasekharcarrier_0-1719933913035.png



So unable to figure out what modifications went wrong 



0 件の賞賛
返信
2,079件の閲覧回数
joanxie
NXP TechSupport
NXP TechSupport

did you change any source code in the 5.15? did you just use the default lvds driver? as I known, current bsp couldn't support 60Mhz lvds display(single channel) as default, you need change the source code, if you change the 5.15 bsp, did you change corresponding to the 6.1?

0 件の賞賛
返信
2,068件の閲覧回数
Chandrasekhar-carrier
Contributor II
We didn't do any bsp changes except the panel detail structures are added in 5.15 kernel. So did the same modifications in the 6.1 kernel as well
0 件の賞賛
返信
2,034件の閲覧回数
joanxie
NXP TechSupport
NXP TechSupport

do you mind dumping the clock to check? could you get the correct clock for your lvds panel, I checked the ldb driver, I don't find anything change would affect your display

0 件の賞賛
返信
2,100件の閲覧回数
joanxie
NXP TechSupport
NXP TechSupport

what do you mean "not working"?do you get anything error messages?

0 件の賞賛
返信