drm/i915: Pick one HDMI port for infoframe/audio transmission on g4x
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 7 Nov 2022 19:46:04 +0000 (21:46 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 5 May 2023 16:52:35 +0000 (19:52 +0300)
commitdafa65d185fa0e946e602b53cb7f9694b7584456
tree8fd18832d6bc92e16ce3a04ba82aa654f3bbe581
parent34682d6006ca31e8a4961104dba15d556db533b4
drm/i915: Pick one HDMI port for infoframe/audio transmission on g4x

On g4x the hardware has only one audio/video DIP block. Thus
only one HDMI port can transmit audio/infoframes at a time.
Currently we pretend that multiple ports can do it at the same
time, but that doesn't actually work for two reasons:
- the state of the single hw block will get clobbered by
  the multiple ports, leading to state checker failures
- the hardware will automagically disable audio/infoframe
  transmission when enabled on multiple ports

To fix this let's allow only one of the ports to transmit
audio/infoframes at a time. We'll just go over all the HDMI
ports and pick the first one that is otherwise capable of
audio/infoframes. Further HDMI ports will be treated as if
they had a DVI sink connected.

In order to compute this consistently we'll also need to
always add all HDMI ports to the atomic state.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221107194604.15227-6-ville.syrjala@linux.intel.com
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
drivers/gpu/drm/i915/display/g4x_hdmi.c
drivers/gpu/drm/i915/display/g4x_hdmi.h
drivers/gpu/drm/i915/display/intel_hdmi.c