drm/mediatek: dsi: Calculate horizontal_backporch_byte by itself
Subsystems (3)
Chun-Kuang Hu
maintainerPATCH 1/1 drm/mediatek: dsi: Calculate horizontal_backporch_byte by itself
From: CK Hu <[email protected]>
Using vm->hfront_porch + vm->hback_porch to calculate horizontal_backporch_byte would make it negtive, so use horizontal_backporch_byte itself to make it positive.
--- drivers/gpu/drm/mediatek/mtk_dsi.c | 53 ++++++++++-------------------- 1 file changed, 18 insertions(+), 35 deletions(-)
drivers/gpu/drm/mediatek/mtk_dsi.c +18 -35
@@ -444,7 +444,10 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)u32 horizontal_sync_active_byte;u32 horizontal_backporch_byte;u32 horizontal_frontporch_byte; +u32 horizontal_front_back_byte; +u32 data_phy_cycles_byte;u32 dsi_tmp_buf_bpp, data_phy_cycles; +u32 delta;struct mtk_phy_timing *timing = &dsi->phy_timing;struct videomode *vm = &dsi->vm;
@@ -474,42 +477,22 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi) data_phy_cycles = timing->lpx + timing->da_hs_prepare + timing->da_hs_zero + timing->da_hs_exit; -if (dsi->mode_flags &MIPI_DSI_MODE_VIDEO_BURST ) { -if ((vm->hfront_porch + vm->hback_porch) * dsi_tmp_buf_bpp > - data_phy_cycles * dsi->lanes +18 ) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes +18 ) * - vm->hfront_porch / - (vm->hfront_porch + vm->hback_porch); - - horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes +18 ) * - vm->hback_porch / - (vm->hfront_porch + vm->hback_porch); - }else { -DRM_WARN ("HFP less than d-phy, FPS will under 60Hz\n" ); - horizontal_frontporch_byte = vm->hfront_porch * - dsi_tmp_buf_bpp; - } + delta = dsi->mode_flags &MIPI_DSI_MODE_VIDEO_BURST ?18 :12 ; + + horizontal_frontporch_byte = vm->hfront_porch * dsi_tmp_buf_bpp; + horizontal_front_back_byte = horizontal_frontporch_byte + horizontal_backporch_byte; + data_phy_cycles_byte = data_phy_cycles * dsi->lanes + delta; + +if (horizontal_front_back_byte > data_phy_cycles_byte) { + horizontal_frontporch_byte -= data_phy_cycles_byte * + horizontal_frontporch_byte / + horizontal_front_back_byte; + + horizontal_backporch_byte -= data_phy_cycles_byte * + horizontal_backporch_byte / + horizontal_front_back_byte; }else { -if ((vm->hfront_porch + vm->hback_porch) * dsi_tmp_buf_bpp > - data_phy_cycles * dsi->lanes +12 ) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes +12 ) * - vm->hfront_porch / - (vm->hfront_porch + vm->hback_porch); - horizontal_backporch_byte = horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes +12 ) * - vm->hback_porch / - (vm->hfront_porch + vm->hback_porch); - }else { -DRM_WARN ("HFP less than d-phy, FPS will under 60Hz\n" ); - horizontal_frontporch_byte = vm->hfront_porch * - dsi_tmp_buf_bpp; - } +DRM_WARN ("HFP + HBP less than d-phy, FPS will under 60Hz\n" ); }writel (horizontal_sync_active_byte, dsi->regs +DSI_HSA_WC );
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerHi, Bilal:
Please help to test this patch on your Chromebook elm, thanks.
Regards,
Chun-Kuang Hu
Chun-Kuang Hu <[email protected]> 於 2020年11月15日 週日 上午8:14寫道:
Quoted 89 lines
From: CK Hu <[email protected]>
Using
vm->hfront_porch+vm->hback_porchto calculatehorizontal_backporch_bytewould make it negtive, so usehorizontal_backporch_byteitself to make it positive.Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panel with small hfp or hbp")Signed-off-by CK Hu <[email protected]>Signed-off-by Chun-Kuang Hu <[email protected]>--- drivers/gpu/drm/mediatek/mtk_dsi.c | 53 ++++++++++-------------------- 1 file changed, 18 insertions(+), 35 deletions(-)drivers/gpu/drm/mediatek/mtk_dsi.c +18
-36@@ -444,7 +444,10 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)u32 horizontal_sync_active_byte;u32 horizontal_backporch_byte;u32 horizontal_frontporch_byte; +u32 horizontal_front_back_byte; +u32 data_phy_cycles_byte;u32 dsi_tmp_buf_bpp, data_phy_cycles; +u32 delta;struct mtk_phy_timing *timing = &dsi->phy_timing;struct videomode *vm = &dsi->vm;@@ -474,42 +477,22 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi) data_phy_cycles = timing->lpx + timing->da_hs_prepare + timing->da_hs_zero + timing->da_hs_exit; -if (dsi->mode_flags &MIPI_DSI_MODE_VIDEO_BURST ) { -if ((vm->hfront_porch + vm->hback_porch) * dsi_tmp_buf_bpp > - data_phy_cycles * dsi->lanes +18 ) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes +18 ) * - vm->hfront_porch / - (vm->hfront_porch + vm->hback_porch); - - horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes +18 ) * - vm->hback_porch / - (vm->hfront_porch + vm->hback_porch); - }else { -DRM_WARN ("HFP less than d-phy, FPS will under 60Hz\n" ); - horizontal_frontporch_byte = vm->hfront_porch * - dsi_tmp_buf_bpp; - } + delta = dsi->mode_flags &MIPI_DSI_MODE_VIDEO_BURST ?18 :12 ; + + horizontal_frontporch_byte = vm->hfront_porch * dsi_tmp_buf_bpp; + horizontal_front_back_byte = horizontal_frontporch_byte + horizontal_backporch_byte; + data_phy_cycles_byte = data_phy_cycles * dsi->lanes + delta; + +if (horizontal_front_back_byte > data_phy_cycles_byte) { + horizontal_frontporch_byte -= data_phy_cycles_byte * + horizontal_frontporch_byte / + horizontal_front_back_byte; + + horizontal_backporch_byte -= data_phy_cycles_byte * + horizontal_backporch_byte / + horizontal_front_back_byte; }else { -if ((vm->hfront_porch + vm->hback_porch) * dsi_tmp_buf_bpp > - data_phy_cycles * dsi->lanes +12 ) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes +12 ) * - vm->hfront_porch / - (vm->hfront_porch + vm->hback_porch); - horizontal_backporch_byte = horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes +12 ) * - vm->hback_porch / - (vm->hfront_porch + vm->hback_porch); - }else { -DRM_WARN ("HFP less than d-phy, FPS will under 60Hz\n" ); - horizontal_frontporch_byte = vm->hfront_porch * - dsi_tmp_buf_bpp; - } +DRM_WARN ("HFP + HBP less than d-phy, FPS will under 60Hz\n" ); }writel (horizontal_sync_active_byte, dsi->regs +DSI_HSA_WC ); --
Quoted 2 lines
2.17.1
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi CK,
Quoted 6 lines · On Sun, 15 Nov 2020 08:53:24 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Please help to test this patch on your Chromebook elm, thanks.
Regards,
Chun-Kuang Hu
Just tried this patch on the Chromebook Elm, and it doesn't work. The HDMI screen remains black, though the rest of the system keeps on operating normally.
Quoted 112 lines
Chun-Kuang Hu <[email protected]> 於 2020年11月15日 週日 上午8:14寫道:
Quoted 109 lines
From: CK Hu <[email protected]>
Using
vm->hfront_porch+vm->hback_porchto calculatehorizontal_backporch_bytewould make it negtive, so usehorizontal_backporch_byteitself to make it positive.Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panelwith small hfp or hbp")
Signed-off-by CK Hu <[email protected]>Signed-off-by Chun-Kuang Hu <[email protected]>--- drivers/gpu/drm/mediatek/mtk_dsi.c | 53++++++++++-------------------- 1 file changed, 18 insertions(+), 35 deletions(-)
(quoted diff) +0
-0
b/drivers/gpu/drm/mediatek/mtk_dsi.cindex4a188a942c38..2a64fdaed9a7100644 ---a/drivers/gpu/drm/mediatek/mtk_dsi.c+++b/drivers/gpu/drm/mediatek/mtk_dsi.c@@ -444,7 +444,10 @@ static voidmtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)u32horizontal_sync_active_byte; u32 horizontal_backporch_byte; u32 horizontal_frontporch_byte;drivers/gpu/drm/mediatek/mtk_dsi.c +3
-0+u32 horizontal_front_back_byte; +u32 data_phy_cycles_byte;u32 dsi_tmp_buf_bpp, data_phy_cycles; +u32 delta;struct mtk_phy_timing *timing = &dsi->phy_timing;struct videomode *vm = &dsi->vm;@@ -474,42 +477,22 @@ static void mtk_dsi_config_vdo_timing(struct
mtk_dsi*dsi)data_phy_cycles=timing->lpx+timing->da_hs_prepare
+timing->da_hs_zero+timing->da_hs_exit;(quoted diff) +0
-2- if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) { - if ((vm->hfront_porch + vm->hback_porch) *
dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-4- data_phy_cycles * dsi->lanes + 18) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes +18 )*
(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch); -drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes +18 )*
(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPS willunder 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + delta = dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST ? 18 :12; +
+horizontal_frontporch_byte=vm->hfront_porch*dsi_tmp_buf_bpp;
+horizontal_front_back_byte=horizontal_frontporch_byte+horizontal_backporch_byte;drivers/gpu/drm/mediatek/mtk_dsi.c +5
-0+ data_phy_cycles_byte = data_phy_cycles * dsi->lanes + delta; + +if (horizontal_front_back_byte > data_phy_cycles_byte) { + horizontal_frontporch_byte -= data_phy_cycles_byte * +
horizontal_frontporch_byte/
+horizontal_front_back_byte; +(quoted diff) +2
-0+ horizontal_backporch_byte -= data_phy_cycles_byte * +
horizontal_backporch_byte/
+horizontal_front_back_byte; } else {
- if ((vm->hfront_porch+vm->hback_porch) *dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-4- data_phy_cycles * dsi->lanes + 12) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes +12 )*
(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch);
-horizontal_backporch_byte=horizontal_backporch_byte-
- (data_phy_cycles*dsi->lanes+ 12)
*(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPS willunder 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + DRM_WARN("HFP + HBP less than d-phy, FPS will under60Hz\n"); }
Quoted 4 lines
Quoted 4 lines
writel(horizontal_sync_active_byte, dsi->regs + DSI_HSA_WC);--
2.17.1
Thanks,
Bilal
Chun-Kuang Hu
maintainerHi, Bilal:
Bilal Wasim <[email protected]> 於 2020年11月16日 週一 上午3:25寫道:
Quoted 8 lines
Hi CK,
Quoted 2 lines · On Sun, 15 Nov 2020 08:53:24 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Quoted 8 lines
Quoted 4 lines
Please help to test this patch on your Chromebook elm, thanks.
Regards,
Chun-Kuang HuJust tried this patch on the Chromebook Elm, and it doesn't work. The HDMI screen remains black, though the rest of the system keeps on operating normally.
Could you print this information, so I could find out the solution for both small hbp and elm.
vm->hfront_porch, vm->hback_porch, dsi_tmp_buf_bpp, data_phy_cycles_byte, and the final horizontal_frontporch_byte, horizontal_backporch_byte.
Regards,
Chun-Kuang.
Quoted 113 lines
Quoted 113 lines
Chun-Kuang Hu <[email protected]> 於 2020年11月15日 週日 上午8:14寫道:
Quoted 109 lines
From: CK Hu <[email protected]>
Using
vm->hfront_porch+vm->hback_porchto calculatehorizontal_backporch_bytewould make it negtive, so usehorizontal_backporch_byteitself to make it positive.Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panelwith small hfp or hbp")
Signed-off-by CK Hu <[email protected]>Signed-off-by Chun-Kuang Hu <[email protected]>--- drivers/gpu/drm/mediatek/mtk_dsi.c | 53++++++++++-------------------- 1 file changed, 18 insertions(+), 35 deletions(-)
(quoted diff) +0
-0
b/drivers/gpu/drm/mediatek/mtk_dsi.cindex4a188a942c38..2a64fdaed9a7100644 ---a/drivers/gpu/drm/mediatek/mtk_dsi.c+++b/drivers/gpu/drm/mediatek/mtk_dsi.c@@ -444,7 +444,10 @@ static voidmtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)u32horizontal_sync_active_byte; u32 horizontal_backporch_byte; u32 horizontal_frontporch_byte;drivers/gpu/drm/mediatek/mtk_dsi.c +3
-0+u32 horizontal_front_back_byte; +u32 data_phy_cycles_byte;u32 dsi_tmp_buf_bpp, data_phy_cycles; +u32 delta;struct mtk_phy_timing *timing = &dsi->phy_timing;struct videomode *vm = &dsi->vm;@@ -474,42 +477,22 @@ static void mtk_dsi_config_vdo_timing(struct
mtk_dsi*dsi)data_phy_cycles=timing->lpx+timing->da_hs_prepare
+timing->da_hs_zero+timing->da_hs_exit;(quoted diff) +0
-2- if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) { - if ((vm->hfront_porch + vm->hback_porch) *
dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-4- data_phy_cycles * dsi->lanes + 18) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes +18 )*
(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch); -drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes +18 )*
(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPS willunder 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + delta = dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST ? 18 :12; +
+horizontal_frontporch_byte=vm->hfront_porch*dsi_tmp_buf_bpp;
+horizontal_front_back_byte=horizontal_frontporch_byte+horizontal_backporch_byte;drivers/gpu/drm/mediatek/mtk_dsi.c +5
-0+ data_phy_cycles_byte = data_phy_cycles * dsi->lanes + delta; + +if (horizontal_front_back_byte > data_phy_cycles_byte) { + horizontal_frontporch_byte -= data_phy_cycles_byte * +
horizontal_frontporch_byte/
+horizontal_front_back_byte; +(quoted diff) +2
-0+ horizontal_backporch_byte -= data_phy_cycles_byte * +
horizontal_backporch_byte/
+horizontal_front_back_byte; } else {
- if ((vm->hfront_porch+vm->hback_porch) *dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-4- data_phy_cycles * dsi->lanes + 12) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes +12 )*
(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch);
-horizontal_backporch_byte=horizontal_backporch_byte-
- (data_phy_cycles*dsi->lanes+ 12)
*(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPS willunder 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + DRM_WARN("HFP + HBP less than d-phy, FPS will under60Hz\n"); }
Quoted 7 lines
Quoted 4 lines
Quoted 4 lines
writel(horizontal_sync_active_byte, dsi->regs + DSI_HSA_WC);--
2.17.1Thanks,
Bilal
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi CK,
Quoted 21 lines · On Mon, 16 Nov 2020 07:12:55 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Bilal Wasim <[email protected]> 於 2020年11月16日 週一 上午3:25寫道:
Quoted 8 lines
Hi CK,
Quoted 2 lines · On Sun, 15 Nov 2020 08:53:24 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Quoted 8 lines
Quoted 4 lines
Please help to test this patch on your Chromebook elm, thanks.
Regards,
Chun-Kuang HuJust tried this patch on the Chromebook Elm, and it doesn't work. The HDMI screen remains black, though the rest of the system keeps on operating normally.
Quoted 6 lines
Could you print this information, so I could find out the solution for both small hbp and elm.
vm->hfront_porch,vm->hback_porch,dsi_tmp_buf_bpp,data_phy_cycles_byte, and the finalhorizontal_frontporch_byte,horizontal_backporch_byte.
Here are the values I got,
[ 2.506400] [drm] vm->hfront_porch: 48 [ 2.506402] [drm] vm->hback_porch: 200 [ 2.506404] [drm] dsi_tmp_buf_bpp: 3 [ 2.506406] [drm] data_phy_cycles_byte: 180 [ 2.506408] [drm] horizontal_frontporch_byte: 110 [ 2.506409] [drm] horizontal_backporch_byte: 455
Please let me know if I can help debug this in any other way.
Thanks,
Bilal
Quoted 127 lines
Regards,
Chun-Kuang.Quoted 123 lines
Quoted 116 lines
Chun-Kuang Hu <[email protected]> 於 2020年11月15日 週日 上午8:14寫道:
Quoted 112 lines
From: CK Hu <[email protected]>
Using
vm->hfront_porch+vm->hback_porchto calculatehorizontal_backporch_bytewould make it negtive, so usehorizontal_backporch_byteitself to make it positive.Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panelwith small hfp or hbp")
Signed-off-by CK Hu <[email protected]>Signed-off-by Chun-Kuang Hu <[email protected]>--- drivers/gpu/drm/mediatek/mtk_dsi.c | 53++++++++++-------------------- 1 file changed, 18
insertions(+), 35 deletions(-)(quoted diff) +0
-0
b/drivers/gpu/drm/mediatek/mtk_dsi.cindex4a188a942c38..2a64fdaed9a7100644 ---a/drivers/gpu/drm/mediatek/mtk_dsi.c+++b/drivers/gpu/drm/mediatek/mtk_dsi.c@@ -444,7 +444,10 @@ static voidmtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)u32horizontal_sync_active_byte; u32 horizontal_backporch_byte; u32 horizontal_frontporch_byte;drivers/gpu/drm/mediatek/mtk_dsi.c +3
-0+u32 horizontal_front_back_byte; +u32 data_phy_cycles_byte;u32 dsi_tmp_buf_bpp, data_phy_cycles; +u32 delta;struct mtk_phy_timing *timing = &dsi->phy_timing;struct videomode *vm = &dsi->vm;@@ -474,42 +477,22 @@ static void
mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)data_phy_cycles=timing->lpx+timing->da_hs_prepare
+timing->da_hs_zero+timing->da_hs_exit;(quoted diff) +0
-2- if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) { - if ((vm->hfront_porch + vm->hback_porch) *
dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- data_phy_cycles * dsi->lanes + 18) { - horizontal_frontporch_byte = - vm->hfront_porch *
dsi_tmp_buf_bpp-
- (data_phy_cycles*dsi->lanes+
18) *(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch); -drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes +18) *
(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPS willunder 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + delta = dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST ?18 : 12; +
+horizontal_frontporch_byte=vm->hfront_porch*dsi_tmp_buf_bpp;(quoted diff) +3
-0+ horizontal_front_back_byte = horizontal_frontporch_byte + horizontal_backporch_byte; + data_phy_cycles_byte = data_phy_cycles * dsi->lanes +delta; +
(quoted diff) +2
-0+ if (horizontal_front_back_byte > data_phy_cycles_byte) { + horizontal_frontporch_byte -=
data_phy_cycles_byte* +horizontal_frontporch_byte/
+horizontal_front_back_byte; +
+horizontal_backporch_byte-=data_phy_cycles_byte* +horizontal_backporch_byte/
+horizontal_front_back_byte; } else {
- if ((vm->hfront_porch+vm->hback_porch) *dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- data_phy_cycles * dsi->lanes + 12) { - horizontal_frontporch_byte = - vm->hfront_porch *
dsi_tmp_buf_bpp-
- (data_phy_cycles*dsi->lanes+
12) *(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch);
-horizontal_backporch_byte=horizontal_backporch_byte-
- (data_phy_cycles*dsi->lanes+
12) *(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPS willunder 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + DRM_WARN("HFP + HBP less than d-phy, FPS willunder 60Hz\n"); }
Quoted 4 lines
Quoted 4 lines
writel(horizontal_sync_active_byte, dsi->regs +
DSI_HSA_WC); --
2.17.1Thanks,
Bilal
Chun-Kuang Hu
maintainerHi, Bilal:
Bilal Wasim <[email protected]> 於 2020年11月16日 週一 下午7:53寫道:
Quoted 36 lines
Hi CK,
Quoted 21 lines · On Mon, 16 Nov 2020 07:12:55 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Bilal Wasim <[email protected]> 於 2020年11月16日 週一 上午3:25寫道:
Quoted 8 lines
Hi CK,
Quoted 2 lines · On Sun, 15 Nov 2020 08:53:24 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Quoted 8 lines
Quoted 4 lines
Please help to test this patch on your Chromebook elm, thanks.
Regards,
Chun-Kuang HuJust tried this patch on the Chromebook Elm, and it doesn't work. The HDMI screen remains black, though the rest of the system keeps on operating normally.
Quoted 6 lines
Could you print this information, so I could find out the solution for both small hbp and elm.
vm->hfront_porch,vm->hback_porch,dsi_tmp_buf_bpp,data_phy_cycles_byte, and the finalhorizontal_frontporch_byte,horizontal_backporch_byte.Here are the values I got,
Quoted 9 lines
[ 2.506400] [drm] vm->hfront_porch: 48 [ 2.506402] [drm] vm->hback_porch: 200 [ 2.506404] [drm] dsi_tmp_buf_bpp: 3 [ 2.506406] [drm] data_phy_cycles_byte: 180 [ 2.506408] [drm] horizontal_frontporch_byte: 110 [ 2.506409] [drm] horizontal_backporch_byte: 455Please let me know if I can help debug this in any other way.
How about this patch [1] ?
[1] https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2536217/2
Quoted 131 lines
Thanks,
BilalQuoted 127 lines
Regards,
Chun-Kuang.Quoted 123 lines
Quoted 116 lines
Chun-Kuang Hu <[email protected]> 於 2020年11月15日 週日 上午8:14寫道:
Quoted 112 lines
From: CK Hu <[email protected]>
Using
vm->hfront_porch+vm->hback_porchto calculatehorizontal_backporch_bytewould make it negtive, so usehorizontal_backporch_byteitself to make it positive.Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panelwith small hfp or hbp")
Signed-off-by CK Hu <[email protected]>Signed-off-by Chun-Kuang Hu <[email protected]>--- drivers/gpu/drm/mediatek/mtk_dsi.c | 53++++++++++-------------------- 1 file changed, 18
insertions(+), 35 deletions(-)(quoted diff) +0
-0
b/drivers/gpu/drm/mediatek/mtk_dsi.cindex4a188a942c38..2a64fdaed9a7100644 ---a/drivers/gpu/drm/mediatek/mtk_dsi.c+++b/drivers/gpu/drm/mediatek/mtk_dsi.c@@ -444,7 +444,10 @@ static voidmtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)u32horizontal_sync_active_byte; u32 horizontal_backporch_byte; u32 horizontal_frontporch_byte;drivers/gpu/drm/mediatek/mtk_dsi.c +3
-0+u32 horizontal_front_back_byte; +u32 data_phy_cycles_byte;u32 dsi_tmp_buf_bpp, data_phy_cycles; +u32 delta;struct mtk_phy_timing *timing = &dsi->phy_timing;struct videomode *vm = &dsi->vm;@@ -474,42 +477,22 @@ static void
mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)data_phy_cycles=timing->lpx+timing->da_hs_prepare
+timing->da_hs_zero+timing->da_hs_exit;(quoted diff) +0
-2- if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) { - if ((vm->hfront_porch + vm->hback_porch) *
dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- data_phy_cycles * dsi->lanes + 18) { - horizontal_frontporch_byte = - vm->hfront_porch *
dsi_tmp_buf_bpp-
- (data_phy_cycles*dsi->lanes+
18) *(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch); -drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes +18) *
(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPS willunder 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + delta = dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST ?18 : 12; +
+horizontal_frontporch_byte=vm->hfront_porch*dsi_tmp_buf_bpp;(quoted diff) +3
-0+ horizontal_front_back_byte = horizontal_frontporch_byte + horizontal_backporch_byte; + data_phy_cycles_byte = data_phy_cycles * dsi->lanes +delta; +
(quoted diff) +2
-0+ if (horizontal_front_back_byte > data_phy_cycles_byte) { + horizontal_frontporch_byte -=
data_phy_cycles_byte* +horizontal_frontporch_byte/
+horizontal_front_back_byte; +
+horizontal_backporch_byte-=data_phy_cycles_byte* +horizontal_backporch_byte/
+horizontal_front_back_byte; } else {
- if ((vm->hfront_porch+vm->hback_porch) *dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- data_phy_cycles * dsi->lanes + 12) { - horizontal_frontporch_byte = - vm->hfront_porch *
dsi_tmp_buf_bpp-
- (data_phy_cycles*dsi->lanes+
12) *(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch);
-horizontal_backporch_byte=horizontal_backporch_byte-
- (data_phy_cycles*dsi->lanes+
12) *(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPS willunder 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + DRM_WARN("HFP + HBP less than d-phy, FPS willunder 60Hz\n"); }
Quoted 4 lines
Quoted 4 lines
writel(horizontal_sync_active_byte, dsi->regs +
DSI_HSA_WC); --
2.17.1Thanks,
Bilal
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi CK,
Quoted 47 lines · On Tue, 17 Nov 2020 00:43:44 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Bilal Wasim <[email protected]> 於 2020年11月16日 週一 下午7:53寫道:
Quoted 43 lines
Hi CK,
Quoted 21 lines · On Mon, 16 Nov 2020 07:12:55 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Bilal Wasim <[email protected]> 於 2020年11月16日 週一 上午3:25寫道:
Quoted 8 lines
Hi CK,
Quoted 2 lines · On Sun, 15 Nov 2020 08:53:24 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Quoted 8 lines
Quoted 4 lines
Please help to test this patch on your Chromebook elm, thanks.
Regards,
Chun-Kuang HuJust tried this patch on the Chromebook Elm, and it doesn't work. The HDMI screen remains black, though the rest of the system keeps on operating normally.
Quoted 6 lines
Could you print this information, so I could find out the solution for both small hbp and elm.
vm->hfront_porch,vm->hback_porch,dsi_tmp_buf_bpp,data_phy_cycles_byte, and the finalhorizontal_frontporch_byte,horizontal_backporch_byte.Here are the values I got,
[ 2.506400] [drm] vm->hfront_porch: 48 [ 2.506402] [drm] vm->hback_porch: 200 [ 2.506404] [drm] dsi_tmp_buf_bpp: 3 [ 2.506406] [drm] data_phy_cycles_byte: 180 [ 2.506408] [drm] horizontal_frontporch_byte: 110 [ 2.506409] [drm] horizontal_backporch_byte: 455
Quoted 7 lines
Quoted 2 lines
Please let me know if I can help debug this in any other way.
How about this patch [1] ?
[1]
https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2536217/2
This patch works, though it doesn't apply cleanly on 5.9-rc3 (had to manually patch the mtk_dsi.c file).
Here are the various variable values, if you're interested.
[ 2.453292] [drm] vm->hfront_porch: 48 [ 2.453293] [drm] vm->hback_porch: 200 [ 2.453295] [drm] dsi_tmp_buf_bpp: 3 [ 2.453296] [drm] data_phy_cycles_byte: 192 [ 2.453298] [drm] horizontal_frontporch_byte: 107 [ 2.453299] [drm] horizontal_backporch_byte: 436
Thanks,
Bilal
Quoted 134 lines
Quoted 134 lines
Thanks,
BilalQuoted 129 lines
Regards,
Chun-Kuang.Quoted 125 lines
Quoted 118 lines
Chun-Kuang Hu <[email protected]> 於 2020年11月15日 週日 上午8:14寫道:
Quoted 114 lines
From: CK Hu <[email protected]>
Using
vm->hfront_porch+vm->hback_porchto calculatehorizontal_backporch_bytewould make it negtive, so usehorizontal_backporch_byteitself to make it positive.Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling ofpanel with small hfp or hbp")
Signed-off-by CK Hu <[email protected]>Signed-off-by Chun-Kuang Hu <[email protected]>--- drivers/gpu/drm/mediatek/mtk_dsi.c | 53++++++++++-------------------- 1 file changed, 18 insertions(+), 35 deletions(-)
(quoted diff) +0
-0
b/drivers/gpu/drm/mediatek/mtk_dsi.cindex4a188a942c38..2a64fdaed9a7100644 ---a/drivers/gpu/drm/mediatek/mtk_dsi.c+++b/drivers/gpu/drm/mediatek/mtk_dsi.c@@ -444,7 +444,10 @@ static voidmtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)u32horizontal_sync_active_byte; u32horizontal_backporch_byte; u32horizontal_frontporch_byte;drivers/gpu/drm/mediatek/mtk_dsi.c +3
-0+u32 horizontal_front_back_byte; +u32 data_phy_cycles_byte;u32 dsi_tmp_buf_bpp, data_phy_cycles; +u32 delta;struct mtk_phy_timing *timing = &dsi->phy_timing;struct videomode *vm = &dsi->vm;@@ -474,42 +477,22 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)
data_phy_cycles=timing->lpx+timing->da_hs_prepare
+timing->da_hs_zero+timing->da_hs_exit;(quoted diff) +0
-2- if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) { - if ((vm->hfront_porch + vm->hback_porch) *
dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- data_phy_cycles * dsi->lanes + 18) { - horizontal_frontporch_byte = - vm->hfront_porch *
dsi_tmp_buf_bpp-
- (data_phy_cycles*dsi->lanes+ 18) *(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch); -drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles *
dsi->lanes+ 18) *(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPSwill under 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + delta = dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST? 18 : 12; +
+horizontal_frontporch_byte=vm->hfront_porch*dsi_tmp_buf_bpp;
+horizontal_front_back_byte=horizontal_frontporch_byte
+horizontal_backporch_byte;(quoted diff) +3
-0+ data_phy_cycles_byte = data_phy_cycles * dsi->lanes + delta; + + if (horizontal_front_back_byte >
data_phy_cycles_byte) {
+horizontal_frontporch_byte-=data_phy_cycles_byte* +horizontal_frontporch_byte/
+horizontal_front_back_byte; +
+horizontal_backporch_byte-=data_phy_cycles_byte* +horizontal_backporch_byte/
+horizontal_front_back_byte; } else {
- if ((vm->hfront_porch+vm->hback_porch) *dsi_tmp_buf_bpp>drivers/gpu/drm/mediatek/mtk_dsi.c +0
-3- data_phy_cycles * dsi->lanes + 12) { - horizontal_frontporch_byte = - vm->hfront_porch *
dsi_tmp_buf_bpp-
- (data_phy_cycles*dsi->lanes+ 12) *(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch);
-horizontal_backporch_byte=horizontal_backporch_byte-
- (data_phy_cycles*dsi->lanes+ 12) *(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPSwill under 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + DRM_WARN("HFP + HBP less than d-phy, FPSwill under 60Hz\n"); }
Quoted 4 lines
Quoted 4 lines
writel(horizontal_sync_active_byte, dsi->regs +
DSI_HSA_WC); --
2.17.1Thanks,
Bilal
Quoted 56 lines · On Tue, 17 Nov 2020 16:58:48 +0500 Bilal Wasim <[email protected]> wrote:
Hi CK,
Quoted 51 lines · On Tue, 17 Nov 2020 00:43:44 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Bilal Wasim <[email protected]> 於 2020年11月16日 週一 下午7:53寫道:
Quoted 46 lines
Hi CK,
Quoted 22 lines · On Mon, 16 Nov 2020 07:12:55 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Bilal Wasim <[email protected]> 於 2020年11月16日 週一 上午3:25寫道:
Quoted 11 lines
Hi CK,
Quoted 5 lines · On Sun, 15 Nov 2020 08:53:24 +0800 Chun-Kuang Hu <[email protected]>…
Hi, Bilal:
Please help to test this patch on your Chromebook elm, thanks.
Quoted 6 lines
Quoted 2 lines
Regards,
Chun-Kuang HuJust tried this patch on the Chromebook Elm, and it doesn't work. The HDMI screen remains black, though the rest of the system keeps on operating normally.
Quoted 6 lines
Could you print this information, so I could find out the solution for both small hbp and elm.
vm->hfront_porch,vm->hback_porch,dsi_tmp_buf_bpp,data_phy_cycles_byte, and the finalhorizontal_frontporch_byte,horizontal_backporch_byte.Here are the values I got,
[ 2.506400] [drm] vm->hfront_porch: 48 [ 2.506402] [drm] vm->hback_porch: 200 [ 2.506404] [drm] dsi_tmp_buf_bpp: 3 [ 2.506406] [drm] data_phy_cycles_byte: 180 [ 2.506408] [drm] horizontal_frontporch_byte: 110 [ 2.506409] [drm] horizontal_backporch_byte: 455Please let me know if I can help debug this in any other way.
Quoted 9 lines
Quoted 5 lines
How about this patch [1] ?
[1]
https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2536217/2This patch works, though it doesn't apply cleanly on 5.9-rc3 (had to manually patch the
mtk_dsi.cfile).
Just to clarify: I tested with 5.10-rc3, not 5.9-rc3. Apologies for the typo.
Thanks,
Bilal
Quoted 9 lines
Here are the various variable values, if you're interested.
[ 2.453292] [drm] vm->hfront_porch: 48 [ 2.453293] [drm] vm->hback_porch: 200 [ 2.453295] [drm] dsi_tmp_buf_bpp: 3 [ 2.453296] [drm] data_phy_cycles_byte: 192 [ 2.453298] [drm] horizontal_frontporch_byte: 107 [ 2.453299] [drm] horizontal_backporch_byte: 436
Quoted 140 lines
Thanks,
BilalQuoted 136 lines
Quoted 136 lines
Thanks,
BilalQuoted 131 lines
Regards,
Chun-Kuang.Quoted 127 lines
Quoted 120 lines
Chun-Kuang Hu <[email protected]> 於 2020年11月15日 週日上午8:14寫道:
Quoted 116 lines
From: CK Hu <[email protected]>
Using
vm->hfront_porch+vm->hback_porchto calculatehorizontal_backporch_bytewould make it negtive, so usehorizontal_backporch_byteitself to make it positive.Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling ofpanel with small hfp or hbp")
Signed-off-by CK Hu <[email protected]>Signed-off-by Chun-Kuang Hu <[email protected]>--- drivers/gpu/drm/mediatek/mtk_dsi.c | 53++++++++++-------------------- 1 file changed, 18 insertions(+), 35 deletions(-)
(quoted diff) +0
-0
b/drivers/gpu/drm/mediatek/mtk_dsi.cindex4a188a942c38..2a64fdaed9a7100644 ---a/drivers/gpu/drm/mediatek/mtk_dsi.c+++b/drivers/gpu/drm/mediatek/mtk_dsi.c@@ -444,7 +444,10 @@ static voidmtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)u32horizontal_sync_active_byte; u32horizontal_backporch_byte; u32horizontal_frontporch_byte;(quoted diff) +3
-0+ u32 horizontal_front_back_byte; + u32 data_phy_cycles_byte; u32 dsi_tmp_buf_bpp, data_phy_cycles; + u32 delta; struct mtk_phy_timing *timing = &dsi->phy_timing; struct videomode *vm = &dsi->vm;@@ -474,42 +477,22 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)
data_phy_cycles=timing->lpx+timing->da_hs_prepare
+timing->da_hs_zero+timing->da_hs_exit;(quoted diff) +0
-2- if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) { - if ((vm->hfront_porch + vm->hback_porch) *
dsi_tmp_buf_bpp>(quoted diff) +0
-3- data_phy_cycles * dsi->lanes + 18) { - horizontal_frontporch_byte = - vm->hfront_porch *
dsi_tmp_buf_bpp-
- (data_phy_cycles*dsi->lanes+ 18) *(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch); -(quoted diff) +0
-4- horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles *
dsi->lanes+ 18) *(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPSwill under 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + delta = dsi->mode_flags &
MIPI_DSI_MODE_VIDEO_BURST? 18 : 12; +
+horizontal_frontporch_byte=vm->hfront_porch*dsi_tmp_buf_bpp;
+horizontal_front_back_byte=horizontal_frontporch_byte
+horizontal_backporch_byte;
+data_phy_cycles_byte=data_phy_cycles*dsi->lanes
+ delta; +
+ if (horizontal_front_back_byte>data_phy_cycles_byte) {
+horizontal_frontporch_byte-=data_phy_cycles_byte* +horizontal_frontporch_byte/
+horizontal_front_back_byte; +
+horizontal_backporch_byte-=data_phy_cycles_byte* +horizontal_backporch_byte/
+horizontal_front_back_byte; } else {
- if ((vm->hfront_porch+vm->hback_porch) *dsi_tmp_buf_bpp>(quoted diff) +0
-3- data_phy_cycles * dsi->lanes + 12) { - horizontal_frontporch_byte = - vm->hfront_porch *
dsi_tmp_buf_bpp-
- (data_phy_cycles*dsi->lanes+ 12) *(quoted diff) +0
-2- vm->hfront_porch / - (vm->hfront_porch +
vm->hback_porch);
-horizontal_backporch_byte=horizontal_backporch_byte-
- (data_phy_cycles*dsi->lanes+ 12) *(quoted diff) +0
-2- vm->hback_porch / - (vm->hfront_porch +
vm->hback_porch);(quoted diff) +0
-2- } else { - DRM_WARN("HFP less than d-phy, FPSwill under 60Hz\n");
-horizontal_frontporch_byte=vm->hfront_porch*
-dsi_tmp_buf_bpp;(quoted diff) +1
-1- } + DRM_WARN("HFP + HBP less than d-phy, FPSwill under 60Hz\n"); }
Quoted 4 lines
Quoted 4 lines
writel(horizontal_sync_active_byte, dsi->regs +
DSI_HSA_WC); --
2.17.1Thanks,
Bilal
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek