2016-12-14 21:32:26

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH 00/26] drm/omap: Convert to use videomode from omap_video_timings

Hi Peter,

On Thursday 01 Sep 2016 14:22:54 Peter Ujfalusi wrote:
> Hi,
>
> The following series will convert the omapdrm stack to use the generic
> videmode instead of the private omap_video_timings struct for the panel
> information.
>
> Since we have several panels under omapdrm/displays/ where the data drive
> edge is set to be different then the sync drive edge, the first three patch
> will add support to select the sync drive edge via DT.
> I was not able to locate the datasheet for all the panels and because the
> different edge was used in omapdrm and omapfb for a long time without
> complains from users - and they were written this way - I think it is a
> valid that we can have panels requiring different edge for data and sync to
> be driven.

That's very peculiar. Have you been able to locate at least one panel
datasheet that documents this requirement ?

> The rest of the patches are most mechanical ones. I have decided to split it
> up to small chunks and did one change at the time to finally remove the
> omap_video_timings from omapdrm.
>
>
> CC: Rob Herring <[email protected]>
> CC: Mark Rutland <[email protected]>
> CC: [email protected]
>
> Regards,
> Peter
> ---
> Peter Ujfalusi (26):
> dt-bindings: display: display-timing: Add property to configure sync
> drive edge
> video: display_timing: Add flags to select the edge when the sync is
> driven
> video: of: display_timing: Add support for syncclk-active property
> drm/omap: omap_display_timings: rename x_res to hactive
> drm/omap: omap_display_timings: rename y_res to vactive
> drm/omap: omap_display_timings: rename hsw to hsync_len
> drm/omap: omap_display_timings: rename hfp to hfront_porch
> drm/omap: omap_display_timings: rename hbp to hback_porch
> drm/omap: omap_display_timings: rename vsw to vsync_len
> drm/omap: omap_display_timings: rename vfp to vfront_porch
> drm/omap: omap_display_timings: rename vbp to vback_porch
> drm/omap: HDMI5: Use pointer to cfg->v_fc_config.timings in
> hdmi_core_video_config
> drm/omap: omap_display_timings: Use display_flags for interlace mode
> drm/omap: dispc: Simplify _dispc_mgr_set_lcd_timings() parameters
> drm/omap: omap_display_timings: Use display_flags for h/vsync level
> drm/omap: omap_display_timings: Use display_flags for DE level
> drm/omap: omap_display_timings: Use display_flags for double_pixel
> mode
> drm/omap: omap_display_timings: Use display_flags for pixel data edge
> drm/omap: omap_display_timings: Use display_flags for sync edge
> drm/omap: Change the types of struct omap_video_timings members
> drm/omap: Replace struct omap_video_timings with videomode
> drm/omap: Use consistent name for struct videomode
> drm/omap: panel-tpo-td043mtea1: Add note for incorrect sync drive edge
> drm/omap: panel-tpo-td028ttec1: Add note for incorrect sync drive edge
> drm/omap: panel-sharp-ls037v7dw01: Add note for incorrect data drive
> edge
> drm/omap: panel-lgphilips-lb035q02: Add note for incorrect data drive
> edge and DE level
>
> .../bindings/display/panel/display-timing.txt | 6 +
> .../gpu/drm/omapdrm/displays/connector-analog-tv.c | 47 ++---
> drivers/gpu/drm/omapdrm/displays/connector-dvi.c | 50 +++--
> drivers/gpu/drm/omapdrm/displays/connector-hdmi.c | 49 +++--
> drivers/gpu/drm/omapdrm/displays/encoder-opa362.c | 20 +-
> drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c | 31 ++-
> .../gpu/drm/omapdrm/displays/encoder-tpd12s015.c | 20 +-
> drivers/gpu/drm/omapdrm/displays/panel-dpi.c | 30 ++-
> drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c | 25 ++-
> .../omapdrm/displays/panel-lgphilips-lb035q02.c | 59 +++---
> .../drm/omapdrm/displays/panel-nec-nl8048hl11.c | 52 +++--
> .../drm/omapdrm/displays/panel-sharp-ls037v7dw01.c | 58 +++---
> .../drm/omapdrm/displays/panel-sony-acx565akm.c | 53 +++--
> .../drm/omapdrm/displays/panel-tpo-td028ttec1.c | 57 +++---
> .../drm/omapdrm/displays/panel-tpo-td043mtea1.c | 54 ++---
> drivers/gpu/drm/omapdrm/dss/dispc.c | 222 ++++++++----------
> drivers/gpu/drm/omapdrm/dss/display.c | 78 +-------
> drivers/gpu/drm/omapdrm/dss/dpi.c | 40 ++--
> drivers/gpu/drm/omapdrm/dss/dsi.c | 156 ++++++++-------
> drivers/gpu/drm/omapdrm/dss/dss.h | 5 +-
> drivers/gpu/drm/omapdrm/dss/hdmi.h | 8 +-
> drivers/gpu/drm/omapdrm/dss/hdmi4.c | 31 +--
> drivers/gpu/drm/omapdrm/dss/hdmi4_core.c | 8 +-
> drivers/gpu/drm/omapdrm/dss/hdmi5.c | 31 +--
> drivers/gpu/drm/omapdrm/dss/hdmi5_core.c | 85 ++++----
> drivers/gpu/drm/omapdrm/dss/hdmi_wp.c | 73 ++++---
> drivers/gpu/drm/omapdrm/dss/omapdss.h | 98 +++------
> drivers/gpu/drm/omapdrm/dss/output.c | 5 +-
> drivers/gpu/drm/omapdrm/dss/rfbi.c | 49 +++--
> drivers/gpu/drm/omapdrm/dss/sdi.c | 33 ++-
> drivers/gpu/drm/omapdrm/dss/venc.c | 97 +++++----
> drivers/gpu/drm/omapdrm/omap_connector.c | 87 +-------
> drivers/gpu/drm/omapdrm/omap_crtc.c | 17 +-
> drivers/gpu/drm/omapdrm/omap_drv.h | 7 +-
> drivers/gpu/drm/omapdrm/omap_encoder.c | 10 +-
> drivers/video/of_display_timing.c | 9 +
> include/video/display_timing.h | 4 +
> 37 files changed, 778 insertions(+), 986 deletions(-)

--
Regards,

Laurent Pinchart


2016-12-15 08:12:23

by Peter Ujfalusi

[permalink] [raw]
Subject: Re: [PATCH 00/26] drm/omap: Convert to use videomode from omap_video_timings



On 12/14/2016 11:32 PM, Laurent Pinchart wrote:
> Hi Peter,
>
> On Thursday 01 Sep 2016 14:22:54 Peter Ujfalusi wrote:
>> Hi,
>>
>> The following series will convert the omapdrm stack to use the generic
>> videmode instead of the private omap_video_timings struct for the panel
>> information.
>>
>> Since we have several panels under omapdrm/displays/ where the data drive
>> edge is set to be different then the sync drive edge, the first three patch
>> will add support to select the sync drive edge via DT.
>> I was not able to locate the datasheet for all the panels and because the
>> different edge was used in omapdrm and omapfb for a long time without
>> complains from users - and they were written this way - I think it is a
>> valid that we can have panels requiring different edge for data and sync to
>> be driven.
>
> That's very peculiar. Have you been able to locate at least one panel
> datasheet that documents this requirement ?

No, not really. patch 23-26 adds comments to panel drivers where the
existing implementation contradicts the information in the panel's
documentation. I was not able to locate any document for the Sony
acx565akm panel.

I opted to not change the behavior of the panel drivers regarding to
this since I don't have access to neither of the boards with the given
displays and this was the configuration they were using and I assume
they were/are working fine.

>> The rest of the patches are most mechanical ones. I have decided to split it
>> up to small chunks and did one change at the time to finally remove the
>> omap_video_timings from omapdrm.
>>
>>
>> CC: Rob Herring <[email protected]>
>> CC: Mark Rutland <[email protected]>
>> CC: [email protected]
>>
>> Regards,
>> Peter
>> ---
>> Peter Ujfalusi (26):
>> dt-bindings: display: display-timing: Add property to configure sync
>> drive edge
>> video: display_timing: Add flags to select the edge when the sync is
>> driven
>> video: of: display_timing: Add support for syncclk-active property
>> drm/omap: omap_display_timings: rename x_res to hactive
>> drm/omap: omap_display_timings: rename y_res to vactive
>> drm/omap: omap_display_timings: rename hsw to hsync_len
>> drm/omap: omap_display_timings: rename hfp to hfront_porch
>> drm/omap: omap_display_timings: rename hbp to hback_porch
>> drm/omap: omap_display_timings: rename vsw to vsync_len
>> drm/omap: omap_display_timings: rename vfp to vfront_porch
>> drm/omap: omap_display_timings: rename vbp to vback_porch
>> drm/omap: HDMI5: Use pointer to cfg->v_fc_config.timings in
>> hdmi_core_video_config
>> drm/omap: omap_display_timings: Use display_flags for interlace mode
>> drm/omap: dispc: Simplify _dispc_mgr_set_lcd_timings() parameters
>> drm/omap: omap_display_timings: Use display_flags for h/vsync level
>> drm/omap: omap_display_timings: Use display_flags for DE level
>> drm/omap: omap_display_timings: Use display_flags for double_pixel
>> mode
>> drm/omap: omap_display_timings: Use display_flags for pixel data edge
>> drm/omap: omap_display_timings: Use display_flags for sync edge
>> drm/omap: Change the types of struct omap_video_timings members
>> drm/omap: Replace struct omap_video_timings with videomode
>> drm/omap: Use consistent name for struct videomode
>> drm/omap: panel-tpo-td043mtea1: Add note for incorrect sync drive edge
>> drm/omap: panel-tpo-td028ttec1: Add note for incorrect sync drive edge
>> drm/omap: panel-sharp-ls037v7dw01: Add note for incorrect data drive
>> edge
>> drm/omap: panel-lgphilips-lb035q02: Add note for incorrect data drive
>> edge and DE level
>>
>> .../bindings/display/panel/display-timing.txt | 6 +
>> .../gpu/drm/omapdrm/displays/connector-analog-tv.c | 47 ++---
>> drivers/gpu/drm/omapdrm/displays/connector-dvi.c | 50 +++--
>> drivers/gpu/drm/omapdrm/displays/connector-hdmi.c | 49 +++--
>> drivers/gpu/drm/omapdrm/displays/encoder-opa362.c | 20 +-
>> drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c | 31 ++-
>> .../gpu/drm/omapdrm/displays/encoder-tpd12s015.c | 20 +-
>> drivers/gpu/drm/omapdrm/displays/panel-dpi.c | 30 ++-
>> drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c | 25 ++-
>> .../omapdrm/displays/panel-lgphilips-lb035q02.c | 59 +++---
>> .../drm/omapdrm/displays/panel-nec-nl8048hl11.c | 52 +++--
>> .../drm/omapdrm/displays/panel-sharp-ls037v7dw01.c | 58 +++---
>> .../drm/omapdrm/displays/panel-sony-acx565akm.c | 53 +++--
>> .../drm/omapdrm/displays/panel-tpo-td028ttec1.c | 57 +++---
>> .../drm/omapdrm/displays/panel-tpo-td043mtea1.c | 54 ++---
>> drivers/gpu/drm/omapdrm/dss/dispc.c | 222 ++++++++----------
>> drivers/gpu/drm/omapdrm/dss/display.c | 78 +-------
>> drivers/gpu/drm/omapdrm/dss/dpi.c | 40 ++--
>> drivers/gpu/drm/omapdrm/dss/dsi.c | 156 ++++++++-------
>> drivers/gpu/drm/omapdrm/dss/dss.h | 5 +-
>> drivers/gpu/drm/omapdrm/dss/hdmi.h | 8 +-
>> drivers/gpu/drm/omapdrm/dss/hdmi4.c | 31 +--
>> drivers/gpu/drm/omapdrm/dss/hdmi4_core.c | 8 +-
>> drivers/gpu/drm/omapdrm/dss/hdmi5.c | 31 +--
>> drivers/gpu/drm/omapdrm/dss/hdmi5_core.c | 85 ++++----
>> drivers/gpu/drm/omapdrm/dss/hdmi_wp.c | 73 ++++---
>> drivers/gpu/drm/omapdrm/dss/omapdss.h | 98 +++------
>> drivers/gpu/drm/omapdrm/dss/output.c | 5 +-
>> drivers/gpu/drm/omapdrm/dss/rfbi.c | 49 +++--
>> drivers/gpu/drm/omapdrm/dss/sdi.c | 33 ++-
>> drivers/gpu/drm/omapdrm/dss/venc.c | 97 +++++----
>> drivers/gpu/drm/omapdrm/omap_connector.c | 87 +-------
>> drivers/gpu/drm/omapdrm/omap_crtc.c | 17 +-
>> drivers/gpu/drm/omapdrm/omap_drv.h | 7 +-
>> drivers/gpu/drm/omapdrm/omap_encoder.c | 10 +-
>> drivers/video/of_display_timing.c | 9 +
>> include/video/display_timing.h | 4 +
>> 37 files changed, 778 insertions(+), 986 deletions(-)
>

--
P?ter

2016-12-15 11:04:32

by Tomi Valkeinen

[permalink] [raw]
Subject: Re: [PATCH 00/26] drm/omap: Convert to use videomode from omap_video_timings

On 14/12/16 23:32, Laurent Pinchart wrote:
> Hi Peter,
>
> On Thursday 01 Sep 2016 14:22:54 Peter Ujfalusi wrote:
>> Hi,
>>
>> The following series will convert the omapdrm stack to use the generic
>> videmode instead of the private omap_video_timings struct for the panel
>> information.
>>
>> Since we have several panels under omapdrm/displays/ where the data drive
>> edge is set to be different then the sync drive edge, the first three patch
>> will add support to select the sync drive edge via DT.
>> I was not able to locate the datasheet for all the panels and because the
>> different edge was used in omapdrm and omapfb for a long time without
>> complains from users - and they were written this way - I think it is a
>> valid that we can have panels requiring different edge for data and sync to
>> be driven.
>
> That's very peculiar. Have you been able to locate at least one panel
> datasheet that documents this requirement ?

I think I remember seeing some panel or encoder asking for different
edges. But it's rather vague memory =).

Interestingly, the default behavior of OMAP DSS is to have data and sync
at different edges. I don't know what was the rationale for that design.

Another, slightly related, interesting thing is that only from OMAP4
forward we have had the possibility to have hsync and vsync happen at
the same time. Earlier hsync came first, followed by vsync. This old
behavior caused problems at least on one encoder I worked on.

Tomi


Attachments:
signature.asc (819.00 B)
OpenPGP digital signature