mbox series

[v2,00/22] omapdrm: Rework the timing-related operations

Message ID 20180806203702.16961-1-laurent.pinchart@ideasonboard.com (mailing list archive)
Headers show
Series omapdrm: Rework the timing-related operations | expand

Message

Laurent Pinchart Aug. 6, 2018, 8:36 p.m. UTC
Hello,

This patch series reworks all the timing-related operations (.get_timings(),
.set_timings() and .check_timings()) as a step toward moving from
omap_dss_device to drm_bridge.

All timing-related operations are called by the omapdrm driver on the
omap_dss_device at the end of display pipeline, and the operations are then
handled directly or forwarded to the previous omap_dss_device in the pipeline.
This causes an issue in our quest to move to drm_bridge: the drm_bridge
equivalent to the timing operations, .mode_valid(), .mode_fixup() and
.mode_set(), are called in the source to sink direction.

Furthermore, timing handling in the omapdrm driver is very complicated, with
timings getting mangled, stored in random places, retrieved back by unrelated
code, mangled again, stored in different places, and modified across objects.
Simplifying that is crucial to move to drm_bridge.

This patch series simplifies the timings operation and reverse the direction
in which they're called. The driver still uses the videomode structure instead
of the drm_display_mode structure to store timing information, this will be
fixed in a second step.

The series is really a succession of cleanups interleaved with the real
changes, with a total of 406 lines of code removed overall. It starts with
small changes, cleanups and code removal in patches 01/22 to 07/22. Patches
08/22 and 09/22 start reworking the .check_timings() operation by making use
of the bus flags. Patches 10/22 to 12/22 rework the .get_timings() operation,
and patches 13/22 to 20/22 complete the .check_timings() rework. Patches 21/22
and 22/22 finally rework the .set_timings() operation.

The series is based on top of the previously submitted "[PATCH v2 00/21]
omapdrm: Rework the HPD-related operations" patch series. For convenience I've
pushed it to my tree at

	git://linuxtv.org/pinchartl/media.git omapdrm/bridge/timings

Since v1 patch "drm: Add display info bus flags to specify sync signals clock
edges" has been dropped as a competing implementation has been merged in the
DRM tree.

Laurent Pinchart (22):
  drm/omap: Pass both output and display omap_dss_device to connector
    init
  drm/omap: Determine connector type directly in omap_connector.c
  drm/omap: dss: hdmi: Rename hdmi_display_(set|check)_timing()
    functions
  drm/omap: Make the video_mode pointer to .set_timings() const
  drm/omap: Remove duplicate calls to .set_timings() operation
  drm/omap: Remove unneeded fallback for missing .check_timings()
  drm/omap: Don't store video mode internally for external encoders
  drm/omap: Store bus flags in the omap_dss_device structure
  drm/omap: Don't call .check_timings() operation recursively
  drm/omap: Query timing information from analog TV encoder
  drm/omap: Remove .get_timings() operation from display connectors
  drm/omap: panels: Don't modify fixed timings
  drm/omap: Move bus flag hack to encoder implementation
  drm/omap: Split mode fixup and mode set from encoder enable
  drm/omap: Call dispc timings check operation directly
  drm/omap: dpi: Don't fixup video mode in dpi_set_mode()
  drm/omap: dsi: Fixup video mode in .set_config() operation
  drm/omap: hdmi: Constify video mode and related pointers
  drm/omap: sdi: Fixup video mode in .check_timings() operation
  drm/omap: venc: Fixup video mode in .check_timings() operation
  drm/omap: Store CRTC timings in .set_timings() operation
  drm/omap: Don't call .set_timings() operation recursively

 .../gpu/drm/omapdrm/displays/connector-analog-tv.c |  52 --------
 drivers/gpu/drm/omapdrm/displays/connector-dvi.c   |  57 ---------
 drivers/gpu/drm/omapdrm/displays/connector-hdmi.c  |  51 --------
 drivers/gpu/drm/omapdrm/displays/encoder-opa362.c  |  29 -----
 drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c  |  37 +-----
 .../gpu/drm/omapdrm/displays/encoder-tpd12s015.c   |  26 ----
 drivers/gpu/drm/omapdrm/displays/panel-dpi.c       |  23 ----
 .../omapdrm/displays/panel-lgphilips-lb035q02.c    |  40 ++----
 .../drm/omapdrm/displays/panel-nec-nl8048hl11.c    |  29 +----
 .../drm/omapdrm/displays/panel-sharp-ls037v7dw01.c |  38 ++----
 .../drm/omapdrm/displays/panel-sony-acx565akm.c    |  29 +----
 .../drm/omapdrm/displays/panel-tpo-td028ttec1.c    |  38 ++----
 .../drm/omapdrm/displays/panel-tpo-td043mtea1.c    |  38 ++----
 drivers/gpu/drm/omapdrm/dss/dispc.c                |  18 +--
 drivers/gpu/drm/omapdrm/dss/dpi.c                  |  20 +--
 drivers/gpu/drm/omapdrm/dss/dsi.c                  |  42 +++----
 drivers/gpu/drm/omapdrm/dss/dss.h                  |   3 -
 drivers/gpu/drm/omapdrm/dss/hdmi.h                 |   8 +-
 drivers/gpu/drm/omapdrm/dss/hdmi4.c                |  23 +---
 drivers/gpu/drm/omapdrm/dss/hdmi5.c                |  23 +---
 drivers/gpu/drm/omapdrm/dss/hdmi5_core.c           |   6 +-
 drivers/gpu/drm/omapdrm/dss/hdmi_wp.c              |   8 +-
 drivers/gpu/drm/omapdrm/dss/omapdss.h              |   6 +-
 drivers/gpu/drm/omapdrm/dss/sdi.c                  |  46 ++++---
 drivers/gpu/drm/omapdrm/dss/venc.c                 |  39 +++---
 drivers/gpu/drm/omapdrm/omap_connector.c           | 140 +++++++++++++--------
 drivers/gpu/drm/omapdrm/omap_connector.h           |   5 +-
 drivers/gpu/drm/omapdrm/omap_crtc.c                |  20 ---
 drivers/gpu/drm/omapdrm/omap_drv.c                 |  26 +---
 drivers/gpu/drm/omapdrm/omap_encoder.c             | 124 ++++++++++++------
 30 files changed, 314 insertions(+), 730 deletions(-)

Comments

Tomi Valkeinen Aug. 13, 2018, 11:12 a.m. UTC | #1
On 06/08/18 23:36, Laurent Pinchart wrote:

> The series is based on top of the previously submitted "[PATCH v2 00/21]
> omapdrm: Rework the HPD-related operations" patch series. For convenience I've
> pushed it to my tree at
> 
> 	git://linuxtv.org/pinchartl/media.git omapdrm/bridge/timings

Does this branch contain all the latest patches, from all three
serieses, including the v2.1 style fixes?

I've been going through these three serieses and, well, it's a huge
amount of code and I'm sure I haven't gone through all the code with
100% concentration. That said, it works for me (although more testing is
needed), and looks very good. So, aside the few small comments I made,
for all three serieses:

Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>

Good work! And a special thanks for Sebastian for doing review.

Sebastian, did you happen to test these with the DSI command mode
patches on top?

 Tomi
Sebastian Reichel Aug. 13, 2018, 7:24 p.m. UTC | #2
Hi,

On Mon, Aug 13, 2018 at 02:12:44PM +0300, Tomi Valkeinen wrote:
> On 06/08/18 23:36, Laurent Pinchart wrote:
> 
> > The series is based on top of the previously submitted "[PATCH v2 00/21]
> > omapdrm: Rework the HPD-related operations" patch series. For convenience I've
> > pushed it to my tree at
> > 
> > 	git://linuxtv.org/pinchartl/media.git omapdrm/bridge/timings
> 
> Does this branch contain all the latest patches, from all three
> serieses, including the v2.1 style fixes?
> 
> I've been going through these three serieses and, well, it's a huge
> amount of code and I'm sure I haven't gone through all the code with
> 100% concentration. That said, it works for me (although more testing is
> needed), and looks very good. So, aside the few small comments I made,
> for all three serieses:
> 
> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> 
> Good work! And a special thanks for Sebastian for doing review.
> 
> Sebastian, did you happen to test these with the DSI command mode
> patches on top?

No, I did not test this on Droid 4. I only reviewed them. I'm very
busy this week, but I can try merging this with the DSI CM patches
next week.

-- Sebastian
Laurent Pinchart Aug. 19, 2018, 10:53 a.m. UTC | #3
Hi Tomi,

On Monday, 13 August 2018 14:12:44 EEST Tomi Valkeinen wrote:
> On 06/08/18 23:36, Laurent Pinchart wrote:
> > The series is based on top of the previously submitted "[PATCH v2 00/21]
> > omapdrm: Rework the HPD-related operations" patch series. For convenience
> > I've pushed it to my tree at
> > 
> > 	git://linuxtv.org/pinchartl/media.git omapdrm/bridge/timings
> 
> Does this branch contain all the latest patches, from all three
> serieses, including the v2.1 style fixes?

Yes, it does. Latest and greatest code :-)
 
> I've been going through these three serieses and, well, it's a huge
> amount of code and I'm sure I haven't gone through all the code with
> 100% concentration. That said, it works for me (although more testing is
> needed), and looks very good. So, aside the few small comments I made,
> for all three serieses:
> 
> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>

Thank you. Do you plan to take this in your tree for v4.20 ?

> Good work! And a special thanks for Sebastian for doing review.
> 
> Sebastian, did you happen to test these with the DSI command mode
> patches on top?
Tomi Valkeinen Aug. 20, 2018, 11:24 a.m. UTC | #4
On 19/08/18 13:53, Laurent Pinchart wrote:
> Hi Tomi,
> 
> On Monday, 13 August 2018 14:12:44 EEST Tomi Valkeinen wrote:
>> On 06/08/18 23:36, Laurent Pinchart wrote:
>>> The series is based on top of the previously submitted "[PATCH v2 00/21]
>>> omapdrm: Rework the HPD-related operations" patch series. For convenience
>>> I've pushed it to my tree at
>>>
>>> 	git://linuxtv.org/pinchartl/media.git omapdrm/bridge/timings
>>
>> Does this branch contain all the latest patches, from all three
>> serieses, including the v2.1 style fixes?
> 
> Yes, it does. Latest and greatest code :-)

Alright.

>> I've been going through these three serieses and, well, it's a huge
>> amount of code and I'm sure I haven't gone through all the code with
>> 100% concentration. That said, it works for me (although more testing is
>> needed), and looks very good. So, aside the few small comments I made,
>> for all three serieses:
>>
>> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> 
> Thank you. Do you plan to take this in your tree for v4.20 ?

That's the plan. I think I can just take your branch as a base, and
apply other omapdrm patches on top. Although perhaps we should rebase
first after drm-next has been updated to v4.19-rc1.

 Tomi
Laurent Pinchart Aug. 20, 2018, 11:33 a.m. UTC | #5
Hi Tomi,

On Monday, 20 August 2018 14:24:23 EEST Tomi Valkeinen wrote:
> On 19/08/18 13:53, Laurent Pinchart wrote:
> > On Monday, 13 August 2018 14:12:44 EEST Tomi Valkeinen wrote:
> >> On 06/08/18 23:36, Laurent Pinchart wrote:
> >>> The series is based on top of the previously submitted "[PATCH v2 00/21]
> >>> omapdrm: Rework the HPD-related operations" patch series. For
> >>> convenience I've pushed it to my tree at
> >>> 
> >>> 	git://linuxtv.org/pinchartl/media.git omapdrm/bridge/timings
> >> 
> >> Does this branch contain all the latest patches, from all three
> >> serieses, including the v2.1 style fixes?
> > 
> > Yes, it does. Latest and greatest code :-)
> 
> Alright.

And of course this is superseded by v3... I've updated the branch.

> >> I've been going through these three serieses and, well, it's a huge
> >> amount of code and I'm sure I haven't gone through all the code with
> >> 100% concentration. That said, it works for me (although more testing is
> >> needed), and looks very good. So, aside the few small comments I made,
> >> for all three serieses:
> >> 
> >> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> > 
> > Thank you. Do you plan to take this in your tree for v4.20 ?
> 
> That's the plan. I think I can just take your branch as a base, and
> apply other omapdrm patches on top. Although perhaps we should rebase
> first after drm-next has been updated to v4.19-rc1.

Sounds like a good plan. I can handle that and update my branches. I will 
however repost patches only if changes are needed.