* [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode for calculating timing parameters [not found] <CGME20180503082417epcas5p19ee919d68eb5ae18f183a41881869cc1@epcas5p1.samsung.com> @ 2018-05-03 8:23 ` Satendra Singh Thakur 2018-05-03 8:39 ` [PATCH 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode " Satendra Singh Thakur 2018-05-07 13:46 ` [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode " Daniel Vetter 0 siblings, 2 replies; 11+ messages in thread From: Satendra Singh Thakur @ 2018-05-03 8:23 UTC (permalink / raw) To: linux-tegra, dri-devel, linux-arm-kernel, linux-kernel, linux-samsung-soc, linux-mediatek, linux-amlogic Cc: hemanshu.s, madhur.verma, Satendra Singh Thakur 1.There is a function in drm-core to calculate display timing parameters: horizontal front porch, back porch, sync length, vertical front porch, back porch, sync length and clock in Hz. However, some drivers are still calculating these parameters themselves. Therefore, there is a duplication of the code. This patch series replaces this redundant code with the function drm_display_mode_to_videomode. This removes nearly 100 redundant lines from the related drivers. 2.For some drivers (sun4i) the reverse helper drm_display_mode_from_videomode is used. 3.For some drivers it replaces arithmatic operators (*, /) with shifting operators (>>, <<). 4.For some drivers DRM_MODE_FLAG_* are replaced with DISPLAY_FLAGS_* flags. 5.These changes apply to following crtc and encoder drivers: atmel-hlcdc bridge-tc358767 exynos-dsi fsl-dcu gma500-mdfld_dsi_dpi hisilicon-kirin_dsi, ade meson-encoder pl111-display sun4i-tv ti lcdc tegra dc mediatek dpi dsi bridge-adv7533 Satendra Singh Thakur (13): drm/kms/mode/atmel-hlcdc: using helper func drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/bridge-tc358767: using helper func drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/fsl-dcu: using helper func drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/gma500-mdfld_dsi_dpi: using helper function drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/hisilicon-kirin-dsi-ade: using helper function drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/meson-encoder: using helper function drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/pl111-display: using helper function drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/sun4i-tv: using helper func drm_display_mode_from_videomode for calculating timing parameters drm/kms/mode/ti-lcdc: using helper func drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/tegra: using helper func drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/mtk_dpi_dsi: using helper func drm_display_mode_to_videomode for calculating timing parameters drm/kms/mode/bridge-adv7533: using helper func drm_display_mode_to_videomode for calculating timing parameters drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 28 +++-- drivers/gpu/drm/bridge/adv7511/adv7533.c | 35 +++--- drivers/gpu/drm/bridge/tc358767.c | 42 +++---- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 9 +- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 29 ++--- drivers/gpu/drm/gma500/mdfld_dsi_dpi.c | 28 ++--- drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c | 42 ++++--- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 52 +++------ drivers/gpu/drm/mediatek/mtk_dpi.c | 60 +++++----- drivers/gpu/drm/mediatek/mtk_dsi.c | 14 +-- drivers/gpu/drm/meson/meson_venc.c | 149 +++++++++++------------- drivers/gpu/drm/pl111/pl111_display.c | 40 +++---- drivers/gpu/drm/sun4i/sun4i_tv.c | 67 ++++------- drivers/gpu/drm/tegra/dc.c | 15 ++- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 60 +++++----- 15 files changed, 280 insertions(+), 390 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode for calculating timing parameters 2018-05-03 8:23 ` [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode for calculating timing parameters Satendra Singh Thakur @ 2018-05-03 8:39 ` Satendra Singh Thakur 2018-05-03 12:21 ` Robin Murphy 2018-05-07 13:46 ` [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode " Daniel Vetter 1 sibling, 1 reply; 11+ messages in thread From: Satendra Singh Thakur @ 2018-05-03 8:39 UTC (permalink / raw) To: Inki Dae, Joonyoung Shim, Seung-Woo Kim, Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski, dri-devel, linux-arm-kernel, linux-samsung-soc, linux-kernel Cc: Satendra Singh Thakur, Madhur Verma, Hemanshu Srivastava To avoid duplicate logic for the same Signed-off-by: Satendra Singh Thakur <satendra.t@samsung.com> Cc: Madhur Verma <madhur.verma@samsung.com> Cc: Hemanshu Srivastava <hemanshu.s@samsung.com> --- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 7904ffa..9397e5c 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1493,14 +1493,7 @@ static void exynos_dsi_mode_set(struct drm_encoder *encoder, struct videomode *vm = &dsi->vm; struct drm_display_mode *m = adjusted_mode; - vm->hactive = m->hdisplay; - vm->vactive = m->vdisplay; - vm->vfront_porch = m->vsync_start - m->vdisplay; - vm->vback_porch = m->vtotal - m->vsync_end; - vm->vsync_len = m->vsync_end - m->vsync_start; - vm->hfront_porch = m->hsync_start - m->hdisplay; - vm->hback_porch = m->htotal - m->hsync_end; - vm->hsync_len = m->hsync_end - m->hsync_start; + drm_display_mode_to_videomode(m, vm); } static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode for calculating timing parameters 2018-05-03 8:39 ` [PATCH 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode " Satendra Singh Thakur @ 2018-05-03 12:21 ` Robin Murphy 2018-05-04 8:15 ` [PATCH v1 " Satendra Singh Thakur 0 siblings, 1 reply; 11+ messages in thread From: Robin Murphy @ 2018-05-03 12:21 UTC (permalink / raw) To: Satendra Singh Thakur, Inki Dae, Joonyoung Shim, Seung-Woo Kim, Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski, dri-devel, linux-arm-kernel, linux-samsung-soc, linux-kernel Cc: Hemanshu Srivastava, Madhur Verma On 03/05/18 09:39, Satendra Singh Thakur wrote: > To avoid duplicate logic for the same > > Signed-off-by: Satendra Singh Thakur <satendra.t@samsung.com> > Cc: Madhur Verma <madhur.verma@samsung.com> > Cc: Hemanshu Srivastava <hemanshu.s@samsung.com> > --- > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 9 +-------- > 1 file changed, 1 insertion(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > index 7904ffa..9397e5c 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > @@ -1493,14 +1493,7 @@ static void exynos_dsi_mode_set(struct drm_encoder *encoder, > struct videomode *vm = &dsi->vm; > struct drm_display_mode *m = adjusted_mode; FWIW you could just pass &dsi->vm and adjusted_mode directly to the helper and get rid of these locals too. Robin. > > - vm->hactive = m->hdisplay; > - vm->vactive = m->vdisplay; > - vm->vfront_porch = m->vsync_start - m->vdisplay; > - vm->vback_porch = m->vtotal - m->vsync_end; > - vm->vsync_len = m->vsync_end - m->vsync_start; > - vm->hfront_porch = m->hsync_start - m->hdisplay; > - vm->hback_porch = m->htotal - m->hsync_end; > - vm->hsync_len = m->hsync_end - m->hsync_start; > + drm_display_mode_to_videomode(m, vm); > } > > static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { > _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v1 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode for calculating timing parameters 2018-05-03 12:21 ` Robin Murphy @ 2018-05-04 8:15 ` Satendra Singh Thakur 2018-05-04 11:25 ` Robin Murphy 0 siblings, 1 reply; 11+ messages in thread From: Satendra Singh Thakur @ 2018-05-04 8:15 UTC (permalink / raw) To: robin.murphy, Inki Dae, Joonyoung Shim, Seung-Woo Kim, Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski, dri-devel, linux-arm-kernel, linux-samsung-soc, linux-kernel Cc: madhur.verma, sst2005, Satendra Singh Thakur, Hemanshu Srivastava To avoid duplicate logic for the same Reviewed-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Satendra Singh Thakur <satendra.t@samsung.com> Acked-by: Madhur Verma <madhur.verma@samsung.com> Cc: Hemanshu Srivastava <hemanshu.s@samsung.com> --- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 7904ffa..7fe84fd 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1490,17 +1490,8 @@ static void exynos_dsi_mode_set(struct drm_encoder *encoder, struct drm_display_mode *adjusted_mode) { struct exynos_dsi *dsi = encoder_to_dsi(encoder); - struct videomode *vm = &dsi->vm; - struct drm_display_mode *m = adjusted_mode; - - vm->hactive = m->hdisplay; - vm->vactive = m->vdisplay; - vm->vfront_porch = m->vsync_start - m->vdisplay; - vm->vback_porch = m->vtotal - m->vsync_end; - vm->vsync_len = m->vsync_end - m->vsync_start; - vm->hfront_porch = m->hsync_start - m->hdisplay; - vm->hback_porch = m->htotal - m->hsync_end; - vm->hsync_len = m->hsync_end - m->hsync_start; + + drm_display_mode_to_videomode(adjusted_mode, &dsi->vm); } static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v1 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode for calculating timing parameters 2018-05-04 8:15 ` [PATCH v1 " Satendra Singh Thakur @ 2018-05-04 11:25 ` Robin Murphy 2018-05-07 3:32 ` [PATCH v2 " Satendra Singh Thakur 0 siblings, 1 reply; 11+ messages in thread From: Robin Murphy @ 2018-05-04 11:25 UTC (permalink / raw) To: Satendra Singh Thakur, Inki Dae, Joonyoung Shim, Seung-Woo Kim, Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski, dri-devel, linux-arm-kernel, linux-samsung-soc, linux-kernel Cc: Hemanshu Srivastava, sst2005, madhur.verma On 04/05/18 09:15, Satendra Singh Thakur wrote: > To avoid duplicate logic for the same > > Reviewed-by: Robin Murphy <robin.murphy@arm.com> Please read section 13 of Documentation/process/submitting-patches.rst for what this tag means; specifically, it is definitely not "this guy read my patch". FWIW, in my case the patches I give trivial coding style comments on tend to be the ones I'm specifically *not* in a position to review in a technical capacity - the reason I'm looking at them in the first place is out of interest to learn more about how the relevant subsystems work. Robin. > Signed-off-by: Satendra Singh Thakur <satendra.t@samsung.com> > Acked-by: Madhur Verma <madhur.verma@samsung.com> > Cc: Hemanshu Srivastava <hemanshu.s@samsung.com> > --- > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 13 ++----------- > 1 file changed, 2 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > index 7904ffa..7fe84fd 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > @@ -1490,17 +1490,8 @@ static void exynos_dsi_mode_set(struct drm_encoder *encoder, > struct drm_display_mode *adjusted_mode) > { > struct exynos_dsi *dsi = encoder_to_dsi(encoder); > - struct videomode *vm = &dsi->vm; > - struct drm_display_mode *m = adjusted_mode; > - > - vm->hactive = m->hdisplay; > - vm->vactive = m->vdisplay; > - vm->vfront_porch = m->vsync_start - m->vdisplay; > - vm->vback_porch = m->vtotal - m->vsync_end; > - vm->vsync_len = m->vsync_end - m->vsync_start; > - vm->hfront_porch = m->hsync_start - m->hdisplay; > - vm->hback_porch = m->htotal - m->hsync_end; > - vm->hsync_len = m->hsync_end - m->hsync_start; > + > + drm_display_mode_to_videomode(adjusted_mode, &dsi->vm); > } > > static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { > _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode for calculating timing parameters 2018-05-04 11:25 ` Robin Murphy @ 2018-05-07 3:32 ` Satendra Singh Thakur 2018-05-07 9:33 ` Andrzej Hajda 0 siblings, 1 reply; 11+ messages in thread From: Satendra Singh Thakur @ 2018-05-07 3:32 UTC (permalink / raw) To: robin.murphy, Inki Dae, Joonyoung Shim, Seung-Woo Kim, Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski, dri-devel, linux-arm-kernel, linux-samsung-soc, linux-kernel Cc: sst2005, madhur.verma, Satendra Singh Thakur, Hemanshu Srivastava To avoid duplicate logic for the same Signed-off-by: Satendra Singh Thakur <satendra.t@samsung.com> Acked-by: Madhur Verma <madhur.verma@samsung.com> Cc: Hemanshu Srivastava <hemanshu.s@samsung.com> --- v2: Removed Mr Robin from reviewed-by field drivers/gpu/drm/exynos/exynos_drm_dsi.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 7904ffa..7fe84fd 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1490,17 +1490,8 @@ static void exynos_dsi_mode_set(struct drm_encoder *encoder, struct drm_display_mode *adjusted_mode) { struct exynos_dsi *dsi = encoder_to_dsi(encoder); - struct videomode *vm = &dsi->vm; - struct drm_display_mode *m = adjusted_mode; - - vm->hactive = m->hdisplay; - vm->vactive = m->vdisplay; - vm->vfront_porch = m->vsync_start - m->vdisplay; - vm->vback_porch = m->vtotal - m->vsync_end; - vm->vsync_len = m->vsync_end - m->vsync_start; - vm->hfront_porch = m->hsync_start - m->hdisplay; - vm->hback_porch = m->htotal - m->hsync_end; - vm->hsync_len = m->hsync_end - m->hsync_start; + + drm_display_mode_to_videomode(adjusted_mode, &dsi->vm); } static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode for calculating timing parameters 2018-05-07 3:32 ` [PATCH v2 " Satendra Singh Thakur @ 2018-05-07 9:33 ` Andrzej Hajda 0 siblings, 0 replies; 11+ messages in thread From: Andrzej Hajda @ 2018-05-07 9:33 UTC (permalink / raw) To: Satendra Singh Thakur, robin.murphy, Inki Dae, Joonyoung Shim, Seung-Woo Kim, Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski, dri-devel, linux-arm-kernel, linux-samsung-soc, linux-kernel Cc: Hemanshu Srivastava, sst2005, madhur.verma Hi Satendra Singh Thakur, On 07.05.2018 05:32, Satendra Singh Thakur wrote: > To avoid duplicate logic for the same > > Signed-off-by: Satendra Singh Thakur <satendra.t@samsung.com> > Acked-by: Madhur Verma <madhur.verma@samsung.com> > Cc: Hemanshu Srivastava <hemanshu.s@samsung.com> Whole exynos_dsi_mode_set callback is redundant, so I have posted patch removing it [1], so this patch can be dropped. [1]: https://marc.info/?l=dri-devel&m=152568538400712 Regards Andrzej > --- > > v2: Removed Mr Robin from reviewed-by field > > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 13 ++----------- > 1 file changed, 2 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > index 7904ffa..7fe84fd 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > @@ -1490,17 +1490,8 @@ static void exynos_dsi_mode_set(struct drm_encoder *encoder, > struct drm_display_mode *adjusted_mode) > { > struct exynos_dsi *dsi = encoder_to_dsi(encoder); > - struct videomode *vm = &dsi->vm; > - struct drm_display_mode *m = adjusted_mode; > - > - vm->hactive = m->hdisplay; > - vm->vactive = m->vdisplay; > - vm->vfront_porch = m->vsync_start - m->vdisplay; > - vm->vback_porch = m->vtotal - m->vsync_end; > - vm->vsync_len = m->vsync_end - m->vsync_start; > - vm->hfront_porch = m->hsync_start - m->hdisplay; > - vm->hback_porch = m->htotal - m->hsync_end; > - vm->hsync_len = m->hsync_end - m->hsync_start; > + > + drm_display_mode_to_videomode(adjusted_mode, &dsi->vm); > } > > static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode for calculating timing parameters 2018-05-03 8:23 ` [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode for calculating timing parameters Satendra Singh Thakur 2018-05-03 8:39 ` [PATCH 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode " Satendra Singh Thakur @ 2018-05-07 13:46 ` Daniel Vetter 2018-05-08 10:58 ` Satendra Singh Thakur 1 sibling, 1 reply; 11+ messages in thread From: Daniel Vetter @ 2018-05-07 13:46 UTC (permalink / raw) To: Satendra Singh Thakur Cc: linux-samsung-soc, linux-kernel, dri-devel, madhur.verma, hemanshu.s, linux-mediatek, linux-tegra, linux-amlogic, linux-arm-kernel On Thu, May 03, 2018 at 01:53:55PM +0530, Satendra Singh Thakur wrote: > 1.There is a function in drm-core to calculate display timing parameters: > horizontal front porch, back porch, sync length, > vertical front porch, back porch, sync length and > clock in Hz. > However, some drivers are still calculating these parameters themselves. > Therefore, there is a duplication of the code. > This patch series replaces this redundant code with the function > drm_display_mode_to_videomode. > This removes nearly 100 redundant lines from the related drivers. > 2.For some drivers (sun4i) the reverse helper > drm_display_mode_from_videomode is used. > 3.For some drivers it replaces arithmatic operators (*, /) with shifting > operators (>>, <<). > 4.For some drivers DRM_MODE_FLAG_* are replaced with DISPLAY_FLAGS_* flags. > 5.These changes apply to following crtc and encoder drivers: > atmel-hlcdc > bridge-tc358767 > exynos-dsi > fsl-dcu > gma500-mdfld_dsi_dpi > hisilicon-kirin_dsi, ade > meson-encoder > pl111-display > sun4i-tv > ti lcdc > tegra dc > mediatek dpi dsi > bridge-adv7533 The drm_mode_to_videomode helper is meant for interop between drm and v4l, which have different internal structures to represent modes. For drivers that only use drm I think the better option would be to add these fields to struct drm_display_mode as another set of crtc_* values (the computed values are stored in crtc_ prefixed members). And compute front/back porch in drm_mode_set_crtcinfo. Then we can use these new drm_display_mode->crtc_h|vfront|back_porch fields in all the drivers you're changing. This way you avoid having to change all the drm drivers to use v4l #defines. Thanks, Daniel > > Satendra Singh Thakur (13): > drm/kms/mode/atmel-hlcdc: using helper func > drm_display_mode_to_videomode for calculating timing parameters > drm/kms/mode/bridge-tc358767: using helper func > drm_display_mode_to_videomode for calculating timing parameters > drm/kms/mode/exynos-dsi: using helper func > drm_display_mode_to_videomode for calculating timing parameters > drm/kms/mode/fsl-dcu: using helper func drm_display_mode_to_videomode > for calculating timing parameters > drm/kms/mode/gma500-mdfld_dsi_dpi: using helper function > drm_display_mode_to_videomode for calculating timing parameters > drm/kms/mode/hisilicon-kirin-dsi-ade: using helper function > drm_display_mode_to_videomode for calculating timing parameters > drm/kms/mode/meson-encoder: using helper function > drm_display_mode_to_videomode for calculating timing parameters > drm/kms/mode/pl111-display: using helper function > drm_display_mode_to_videomode for calculating timing parameters > drm/kms/mode/sun4i-tv: using helper func > drm_display_mode_from_videomode for calculating timing > parameters > drm/kms/mode/ti-lcdc: using helper func drm_display_mode_to_videomode > for calculating timing parameters > drm/kms/mode/tegra: using helper func drm_display_mode_to_videomode > for calculating timing parameters > drm/kms/mode/mtk_dpi_dsi: using helper func > drm_display_mode_to_videomode for calculating timing parameters > drm/kms/mode/bridge-adv7533: using helper func > drm_display_mode_to_videomode for calculating timing parameters > > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 28 +++-- > drivers/gpu/drm/bridge/adv7511/adv7533.c | 35 +++--- > drivers/gpu/drm/bridge/tc358767.c | 42 +++---- > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 9 +- > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 29 ++--- > drivers/gpu/drm/gma500/mdfld_dsi_dpi.c | 28 ++--- > drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c | 42 ++++--- > drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 52 +++------ > drivers/gpu/drm/mediatek/mtk_dpi.c | 60 +++++----- > drivers/gpu/drm/mediatek/mtk_dsi.c | 14 +-- > drivers/gpu/drm/meson/meson_venc.c | 149 +++++++++++------------- > drivers/gpu/drm/pl111/pl111_display.c | 40 +++---- > drivers/gpu/drm/sun4i/sun4i_tv.c | 67 ++++------- > drivers/gpu/drm/tegra/dc.c | 15 ++- > drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 60 +++++----- > 15 files changed, 280 insertions(+), 390 deletions(-) > > -- > 2.7.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode for calculating timing parameters 2018-05-07 13:46 ` [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode " Daniel Vetter @ 2018-05-08 10:58 ` Satendra Singh Thakur 2018-05-09 11:52 ` Satendra Singh Thakur 0 siblings, 1 reply; 11+ messages in thread From: Satendra Singh Thakur @ 2018-05-08 10:58 UTC (permalink / raw) To: daniel, linux-kernel, dri-devel, linux-tegra, linux-arm-kernel, linux-samsung-soc, linux-mediatek, linux-amlogic Cc: sst2005, Satendra Singh Thakur On Thu, May 07, 2018 at 15:46:02 +0200, Daniel Vetter wrote: > On Thu, May 03, 2018 at 01:53:55PM +0530, Satendra Singh Thakur wrote: > > 1.There is a function in drm-core to calculate display timing parameters: > > horizontal front porch, back porch, sync length, > > vertical front porch, back porch, sync length and > > clock in Hz. > > However, some drivers are still calculating these parameters themselves. > > Therefore, there is a duplication of the code. > > This patch series replaces this redundant code with the function > > drm_display_mode_to_videomode. > > This removes nearly 100 redundant lines from the related drivers. > > 2.For some drivers (sun4i) the reverse helper > > drm_display_mode_from_videomode is used. > > 3.For some drivers it replaces arithmatic operators (*, /) with shifting > > operators (>>, <<). > > 4.For some drivers DRM_MODE_FLAG_* are replaced with DISPLAY_FLAGS_* flags. > > 5.These changes apply to following crtc and encoder drivers: > > atmel-hlcdc > > bridge-tc358767 > > exynos-dsi > > fsl-dcu > > gma500-mdfld_dsi_dpi > > hisilicon-kirin_dsi, ade > > meson-encoder > > pl111-display > > sun4i-tv > > ti lcdc > > tegra dc > > mediatek dpi dsi > > bridge-adv7533 > > The drm_mode_to_videomode helper is meant for interop between drm and v4l, > which have different internal structures to represent modes. > > For drivers that only use drm I think the better option would be to add > these fields to struct drm_display_mode as another set of crtc_* values > (the computed values are stored in crtc_ prefixed members). And compute > front/back porch in drm_mode_set_crtcinfo. > > Then we can use these new drm_display_mode->crtc_h|vfront|back_porch > fields in all the drivers you're changing. This way you avoid having to > change all the drm drivers to use v4l #defines. > > Thanks, > Daniel Hi Daniel, Thanks for the comments. I will look into it. Thanks -Satendra ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode for calculating timing parameters 2018-05-08 10:58 ` Satendra Singh Thakur @ 2018-05-09 11:52 ` Satendra Singh Thakur 2018-05-13 14:12 ` Daniel Vetter 0 siblings, 1 reply; 11+ messages in thread From: Satendra Singh Thakur @ 2018-05-09 11:52 UTC (permalink / raw) To: daniel, linux-kernel, dri-devel, linux-tegra, linux-arm-kernel, linux-samsung-soc, linux-mediatek, linux-amlogic Cc: sst2005, Satendra Singh Thakur On Thu, May 08, 2018 at 16:28:30 +0530, Satendra Singh Thakur wrote: > On Thu, May 07, 2018 at 15:46:02 +0200, Daniel Vetter wrote: > > On Thu, May 03, 2018 at 01:53:55PM +0530, Satendra Singh Thakur wrote: > > > 1.There is a function in drm-core to calculate display timing parameters: > > > horizontal front porch, back porch, sync length, > > > vertical front porch, back porch, sync length and > > > clock in Hz. > > > However, some drivers are still calculating these parameters themselves. > > > Therefore, there is a duplication of the code. > > > This patch series replaces this redundant code with the function > > > drm_display_mode_to_videomode. > > > This removes nearly 100 redundant lines from the related drivers. > > > 2.For some drivers (sun4i) the reverse helper > > > drm_display_mode_from_videomode is used. > > > 3.For some drivers it replaces arithmatic operators (*, /) with shifting > > > operators (>>, <<). > > > 4.For some drivers DRM_MODE_FLAG_* are replaced with DISPLAY_FLAGS_* flags. > > > 5.These changes apply to following crtc and encoder drivers: > > > atmel-hlcdc > > > bridge-tc358767 > > > exynos-dsi > > > fsl-dcu > > > gma500-mdfld_dsi_dpi > > > hisilicon-kirin_dsi, ade > > > meson-encoder > > > pl111-display > > > sun4i-tv > > > ti lcdc > > > tegra dc > > > mediatek dpi dsi > > > bridge-adv7533 > > > > The drm_mode_to_videomode helper is meant for interop between drm and v4l, > > which have different internal structures to represent modes. > > > > For drivers that only use drm I think the better option would be to add > > these fields to struct drm_display_mode as another set of crtc_* values > > (the computed values are stored in crtc_ prefixed members). And compute > > front/back porch in drm_mode_set_crtcinfo. > > > > Then we can use these new drm_display_mode->crtc_h|vfront|back_porch > > fields in all the drivers you're changing. This way you avoid having to > > change all the drm drivers to use v4l #defines. > > > > Thanks, > > Daniel > > Hi Daniel, > Thanks for the comments. > I will look into it. > > Thanks > -Satendra Hi Daniel, Thanks for the comments. Please find below my understanding in this direction. 1. Currently struct videomode is being used in 50 drm drivers and 14 fbdev drivers. Since, it's already being used by so many drm drivers, that is the reason these fbdev objects (struct videmode and func drm_display_mode_to_videomode) were used in this patch series. 2. Anyway, if fbdev related objects (struct/func) are not encouraged in drm drivers, then we may add h/v front/back porches in struct drm_display_mode as adviced by you. 3. We can calculate these params in func drm_mode_set_crtcinfo at the end of it. int drm_mode_set_crtcinfo () { . . crtc_hfront_porch = crtc_hsync_start - crtc_hdisplay; crtc_vfront_porch = crtc_vsync_start - crtc_vdisplay; . . crtc_clock_hz = crtc_clock*1000; }; 4. Normally mode is programmed in HW in following callbacks of crtc and encoder drivers -mode_set -mode_set_nofb -atomic_enable Normally drm_mode_set_crtcinfo is used in -mode_fixup callbacks (CBs) of encoder and crtc drivers. if mode_fixup CBs are called before mode_set CBs then drm_mode_set_crtcinfo is right place to calculate sync/porch params. We can use crtc_hfront/back_porches directly and program them to HW in above mentioned callbacks. int my_mode_set () { REG_WRITE(crtc_hfront_porch); REG_WRITE(crtc_hback_porch); . . } 6. However, if these params are being modified after calling drm_set_crtcinfo as mentioned below: bool amdgpu_atombios_encoder_mode_fixup(struct drm_encoder *encoder, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode) { struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder); /* set the active encoder to connector routing */ amdgpu_encoder_set_active_device(encoder); ***drm_mode_set_crtcinfo(adjusted_mode, 0);**** /* hw bug */ if ((mode->flags & DRM_MODE_FLAG_INTERLACE) && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; Then we may need to define new func like void drm_calc_hv_porches_sync() { crtc_hfront_porch = crtc_hsync_start - crtc_hdisplay; crtc_vfront_porch = crtc_vsync_start - crtc_vdisplay; . . crtc_clock_hz = crtc_clock*1000; } and call this func in mode_set*, atomic_enable CBS before programming the HW with this mode. Should I create patches around this idea ? Please let me know your comments. Thanks -Satendra ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode for calculating timing parameters 2018-05-09 11:52 ` Satendra Singh Thakur @ 2018-05-13 14:12 ` Daniel Vetter 0 siblings, 0 replies; 11+ messages in thread From: Daniel Vetter @ 2018-05-13 14:12 UTC (permalink / raw) To: Satendra Singh Thakur Cc: linux-samsung-soc, Linux Kernel Mailing List, dri-devel, moderated list:ARM/Mediatek SoC support, linux-tegra, linux-amlogic, sst2005, Linux ARM On Wed, May 9, 2018 at 1:52 PM, Satendra Singh Thakur <satendra.t@samsung.com> wrote: > On Thu, May 08, 2018 at 16:28:30 +0530, Satendra Singh Thakur wrote: >> On Thu, May 07, 2018 at 15:46:02 +0200, Daniel Vetter wrote: >> > On Thu, May 03, 2018 at 01:53:55PM +0530, Satendra Singh Thakur wrote: >> > > 1.There is a function in drm-core to calculate display timing parameters: >> > > horizontal front porch, back porch, sync length, >> > > vertical front porch, back porch, sync length and >> > > clock in Hz. >> > > However, some drivers are still calculating these parameters themselves. >> > > Therefore, there is a duplication of the code. >> > > This patch series replaces this redundant code with the function >> > > drm_display_mode_to_videomode. >> > > This removes nearly 100 redundant lines from the related drivers. >> > > 2.For some drivers (sun4i) the reverse helper >> > > drm_display_mode_from_videomode is used. >> > > 3.For some drivers it replaces arithmatic operators (*, /) with shifting >> > > operators (>>, <<). >> > > 4.For some drivers DRM_MODE_FLAG_* are replaced with DISPLAY_FLAGS_* flags. >> > > 5.These changes apply to following crtc and encoder drivers: >> > > atmel-hlcdc >> > > bridge-tc358767 >> > > exynos-dsi >> > > fsl-dcu >> > > gma500-mdfld_dsi_dpi >> > > hisilicon-kirin_dsi, ade >> > > meson-encoder >> > > pl111-display >> > > sun4i-tv >> > > ti lcdc >> > > tegra dc >> > > mediatek dpi dsi >> > > bridge-adv7533 >> > >> > The drm_mode_to_videomode helper is meant for interop between drm and v4l, >> > which have different internal structures to represent modes. >> > >> > For drivers that only use drm I think the better option would be to add >> > these fields to struct drm_display_mode as another set of crtc_* values >> > (the computed values are stored in crtc_ prefixed members). And compute >> > front/back porch in drm_mode_set_crtcinfo. >> > >> > Then we can use these new drm_display_mode->crtc_h|vfront|back_porch >> > fields in all the drivers you're changing. This way you avoid having to >> > change all the drm drivers to use v4l #defines. >> > >> > Thanks, >> > Daniel >> >> Hi Daniel, >> Thanks for the comments. >> I will look into it. >> >> Thanks >> -Satendra > > Hi Daniel, > Thanks for the comments. > Please find below my understanding in this direction. > > 1. Currently struct videomode is being used in 50 drm drivers and 14 fbdev drivers. > Since, it's already being used by so many drm drivers, that is the reason > these fbdev objects (struct videmode and func drm_display_mode_to_videomode) were used in this patch series. The biggest contributor for that seems to be of_get_videomode. We should probably have a of_drm_get_display_mode helper, which automatically converts the of/dt video description into the drm display mode structure. And I found way less than 50 drm drivers using videomode, much less if we ignore of. > 2. Anyway, if fbdev related objects (struct/func) are not encouraged in drm drivers, then we may add > h/v front/back porches in struct drm_display_mode as adviced by you. > > 3. We can calculate these params in func drm_mode_set_crtcinfo at the end of it. > int drm_mode_set_crtcinfo () > { > . > . > crtc_hfront_porch = crtc_hsync_start - crtc_hdisplay; > crtc_vfront_porch = crtc_vsync_start - crtc_vdisplay; > . > . > crtc_clock_hz = crtc_clock*1000; > }; > > 4. Normally mode is programmed in HW in following callbacks of crtc and encoder drivers > -mode_set > -mode_set_nofb > -atomic_enable > > > Normally drm_mode_set_crtcinfo is used in > -mode_fixup callbacks (CBs) > of encoder and crtc drivers. > > if mode_fixup CBs are called before mode_set CBs then > drm_mode_set_crtcinfo is right place to calculate sync/porch params. > We can use crtc_hfront/back_porches directly and program them to HW > in above mentioned callbacks. > > int my_mode_set () > { > REG_WRITE(crtc_hfront_porch); > REG_WRITE(crtc_hback_porch); > . > . > } Agreed with your plan up to point 5 here. > 6. However, if these params are being modified after calling drm_set_crtcinfo as mentioned below: > > bool amdgpu_atombios_encoder_mode_fixup(struct drm_encoder *encoder, > const struct drm_display_mode *mode, > struct drm_display_mode *adjusted_mode) > { > struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder); > > /* set the active encoder to connector routing */ > amdgpu_encoder_set_active_device(encoder); > ***drm_mode_set_crtcinfo(adjusted_mode, 0);**** > > /* hw bug */ > if ((mode->flags & DRM_MODE_FLAG_INTERLACE) > && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) > adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; > > Then we may need to define new func like > > void drm_calc_hv_porches_sync() > { > crtc_hfront_porch = crtc_hsync_start - crtc_hdisplay; > crtc_vfront_porch = crtc_vsync_start - crtc_vdisplay; > . > . > crtc_clock_hz = crtc_clock*1000; > } and call this func in mode_set*, atomic_enable CBS before programming the HW with this mode. > > > Should I create patches around this idea ? > Please let me know your comments. I'm not sure about point 6. I think we should wait with coming up with a solution to this problem once there's a clear need for it. Most likely I think drivers who both need to adjust computed timings and who need v/hfront/back porch just need to adjust everything on their own. And we won't provide any additional helpers. Cheers, Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2018-05-13 14:12 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20180503082417epcas5p19ee919d68eb5ae18f183a41881869cc1@epcas5p1.samsung.com>
2018-05-03 8:23 ` [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode for calculating timing parameters Satendra Singh Thakur
2018-05-03 8:39 ` [PATCH 03/13] drm/kms/mode/exynos-dsi: using helper func drm_display_mode_to_videomode " Satendra Singh Thakur
2018-05-03 12:21 ` Robin Murphy
2018-05-04 8:15 ` [PATCH v1 " Satendra Singh Thakur
2018-05-04 11:25 ` Robin Murphy
2018-05-07 3:32 ` [PATCH v2 " Satendra Singh Thakur
2018-05-07 9:33 ` Andrzej Hajda
2018-05-07 13:46 ` [PATCH 00/13] drm/kms/mode: using helper func drm_display_mode_to/from_videomode " Daniel Vetter
2018-05-08 10:58 ` Satendra Singh Thakur
2018-05-09 11:52 ` Satendra Singh Thakur
2018-05-13 14:12 ` Daniel Vetter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).