Skip to contentSkip to conversation

drm/mediatek: dsi: Calculate horizontal_backporch_byte by itself

PATCH In review Chun-Kuang Hu 2 participants 8 messages Nov 15, 2020 – Nov 17, 2020

Subsystems (3)
lore
Share & tools
lore

Chun-Kuang Hu

author maintainer
#0 lore raw

PATCH 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.

Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panel with small hfp or hbp")
---
 drivers/gpu/drm/mediatek/mtk_dsi.c | 53 ++++++++++--------------------
 1 file changed, 18 insertions(+), 35 deletions(-)
drivers/gpu/drm/mediatek/mtk_dsi.c +18 -35
index 4a188a942c38..2a64fdaed9a7 100644
@@ -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
author maintainer
#1 lore raw

Hi, 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_porch to calculate horizontal_backporch_byte would make it negtive, so use horizontal_backporch_byte itself to make it positive.

Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panel with small hfp or hbp")
---
 drivers/gpu/drm/mediatek/mtk_dsi.c | 53 ++++++++++--------------------
 1 file changed, 18 insertions(+), 35 deletions(-)
drivers/gpu/drm/mediatek/mtk_dsi.c +18 -36
index 4a188a942c38..2a64fdaed9a7 100644
@@ -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

#2 lore raw

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_porch to calculate horizontal_backporch_byte would make it negtive, so use horizontal_backporch_byte itself to make it positive.

Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panel

with small hfp or hbp")

---
 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.c index 4a188a942c38..2a64fdaed9a7 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -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;
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 will

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;

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 will

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, FPS will under

60Hz\n"); }

Quoted 4 lines
Quoted 4 lines
        writel(horizontal_sync_active_byte, dsi->regs + DSI_HSA_WC);

--
2.17.1

Thanks,
Bilal

author maintainer
#3 lore raw

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 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.

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_porch to calculate horizontal_backporch_byte would make it negtive, so use horizontal_backporch_byte itself to make it positive.

Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panel

with small hfp or hbp")

---
 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.c index 4a188a942c38..2a64fdaed9a7 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -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;
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 will

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;

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 will

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, FPS will under

60Hz\n"); }

Quoted 7 lines
Quoted 4 lines
Quoted 4 lines
        writel(horizontal_sync_active_byte, dsi->regs + DSI_HSA_WC);

--
2.17.1

Thanks,
Bilal

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

#4 lore raw

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 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 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 final horizontal_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_porch to calculate horizontal_backporch_byte would make it negtive, so use horizontal_backporch_byte itself to make it positive.

Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panel

with small hfp or hbp")

---
 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.c index 4a188a942c38..2a64fdaed9a7 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -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;
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 will

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;

(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 will

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, FPS will

under 60Hz\n"); }

Quoted 4 lines
Quoted 4 lines
        writel(horizontal_sync_active_byte, dsi->regs +

DSI_HSA_WC); --
2.17.1

Thanks,
Bilal

author maintainer
#5 lore raw

Hi, 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 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 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 final horizontal_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: 455

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

Quoted 131 lines

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_porch to calculate horizontal_backporch_byte would make it negtive, so use horizontal_backporch_byte itself to make it positive.

Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of panel

with small hfp or hbp")

---
 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.c index 4a188a942c38..2a64fdaed9a7 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -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;
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 will

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;

(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 will

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, FPS will

under 60Hz\n"); }

Quoted 4 lines
Quoted 4 lines
        writel(horizontal_sync_active_byte, dsi->regs +

DSI_HSA_WC); --
2.17.1

Thanks,
Bilal

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

#6 lore raw

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 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 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 final horizontal_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,
Bilal

Quoted 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_porch to calculate horizontal_backporch_byte would make it negtive, so use horizontal_backporch_byte itself to make it positive.

Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of

panel with small hfp or hbp")

---
 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.c index 4a188a942c38..2a64fdaed9a7 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -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;

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

will 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, FPS

will 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, FPS

will under 60Hz\n"); }

Quoted 4 lines
Quoted 4 lines
        writel(horizontal_sync_active_byte, dsi->regs +

DSI_HSA_WC); --
2.17.1

Thanks,
Bilal

#7 lore raw
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 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 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 final horizontal_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.

Quoted 9 lines
Quoted 5 lines

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).

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,
Bilal

Quoted 136 lines
Quoted 136 lines

Thanks,
Bilal

Quoted 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_porch to calculate horizontal_backporch_byte would make it negtive, so use horizontal_backporch_byte itself to make it positive.

Fixes 35bf948f1edb ("drm/mediatek: dsi: Fix scrolling of

panel with small hfp or hbp")

---
 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.c index 4a188a942c38..2a64fdaed9a7 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -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;

(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, FPS

will 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, FPS

will 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, FPS

will under 60Hz\n"); }

Quoted 4 lines
Quoted 4 lines
        writel(horizontal_sync_active_byte, dsi->regs +

DSI_HSA_WC); --
2.17.1

Thanks,
Bilal

_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek