On Tue, Feb 22, 2022 at 05:40:35PM +0100, Maxime Ripard wrote: > 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@xxxxxxxxxx/ > > 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@xxxxxxxxxx/ > > 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@xxxxxxxxxxxxxxxxxxx/ > > 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, High level view looks fine to me. No clue about the low level hw bits. Acked-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Maxime > > --- > > Changes from v5: > - Renamed pixel_rate to tmds_char_rate > - used do_div when necessary > - Used limited range YUV matrixes > - Rebased on current drm-misc-next > > 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 (7): > drm/vc4: hdmi: Rename pixel_rate variable > 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 | 429 +++++++++++++++++++++++++--- > drivers/gpu/drm/vc4/vc4_hdmi.h | 23 +- > drivers/gpu/drm/vc4/vc4_hdmi_phy.c | 2 +- > drivers/gpu/drm/vc4/vc4_hdmi_regs.h | 6 + > drivers/gpu/drm/vc4/vc4_regs.h | 16 ++ > 5 files changed, 427 insertions(+), 49 deletions(-) > > -- > 2.35.1 > -- Ville Syrjälä Intel