[PATCH v5 0/6] drm/vc4: hdmi: Yet Another Approach to HDMI YUV output

Maxime Ripard maxime at cerno.tech
Thu Jan 27 14:10:15 UTC 2022


Hi,

This is another attempt at supporting the HDMI YUV output in the vc4 HDMI
driver.

This is a follow-up of
https://lore.kernel.org/dri-devel/20210317154352.732095-1-maxime@cerno.tech/

And the discussions that occured recently on the mailing lists and IRC about
this.

The series mentioned above had multiple issues, the main one being that it was
a bit too much complicated for what we wanted to achieve. This series is taking
a much simpler approach with an ad-hoc solution.

I think some parts of it could still be moved to KMS helpers (notably, the
output format enum, and the helper to set the infoframe for it) and structures
(the output format stored in drm_connector_state). This would also interact
nicely with the work done here:

https://lore.kernel.org/dri-devel/20211118103814.524670-1-maxime@cerno.tech/

This can come as a second step though.

The other issues with the first attempt was that nothing was reported to
userspace about the decision we made about the format, and that this decision
was essentially policy, without any way for the userspace to influence it.

Those two points however are being worked on by Werner in a cross-driver
effort:

https://lore.kernel.org/dri-devel/e452775c-5b95-bbfd-e818-f1480f556336@tuxedocomputers.com/

Since it's a KMS decision, I don't think we should hold off any driver as long
as it's consistent with what the other drivers are doing.

Let me know what you think,
Maxime

---

Changes from v4:
  - Fix a clock calculation
  - Rebased on latest drm-misc-next tag

Changes from v3:
  - Rebased on latest next
  - Fixed build error

Changes from v2:
  - Rename the output format enum
  - Split the edid_hdmi_dc_modes in two for RGB444 and YUV444
  - Remove color_formats modifications from _parse_deep_color entirely
  - Fixed comment formatting
  - Fixed mode_valid that would always return true
  - Fixed max_tmds_clock handling

Changes from v1:
  - Fixed an EDID parsing error for YUV422
  - Fixed the scrambling setup when using a bpc > 8
  - Added some logging
  - Fixed some build-bot warnings
  - Fixed a number of HDMI specifications and EDID issues
  - Try to max out the bpc every time

Maxime Ripard (6):
  drm/vc4: hdmi: Move clock validation to its own function
  drm/vc4: hdmi: Move clock calculation into its own function
  drm/vc4: hdmi: Take the sink maximum TMDS clock into account
  drm/vc4: hdmi: Take bpp into account for the scrambler
  drm/vc4: hdmi: Always try to have the highest bpc
  drm/vc4: hdmi: Support HDMI YUV output

 drivers/gpu/drm/vc4/vc4_hdmi.c      | 401 +++++++++++++++++++++++++---
 drivers/gpu/drm/vc4/vc4_hdmi.h      |  21 ++
 drivers/gpu/drm/vc4/vc4_hdmi_regs.h |   6 +
 drivers/gpu/drm/vc4/vc4_regs.h      |  16 ++
 4 files changed, 409 insertions(+), 35 deletions(-)

-- 
2.34.1



More information about the dri-devel mailing list