Some GPUs use external DP bridge encoders NUTMEG and TRAVIS
to implement analog and/or LVDS connections. Typically found in
CIK APU based laptops or on FM2 motherboards that have analog
connectors. These were necessary at the time because Kaveri
didn't have a built-in DAC nor LVDS support.

These devices sadly don't work transparently and need to be
controlled by the driver. This series implements that.

The first half of the series contains some minor fixes and
refactoring necessary for these external encoders to work.
The second half then adds the actual external encoder support.

When we query connector information from the VBIOS and
discover a connector using such an encoder, let's find the
real DisplayPort encoder and use that. Set the connector
signal type to DP, so the pre-existing DP code paths can
work with it without refactoring every signal type check
in the DC code base.

With that, we can now enable DC by default on CIK APUs too.
DC brings proper support for DP/HDMI audio, DP MST, VRR,
10-bit colors, some HDR features, atomic modesetting, etc.
without any loss of functionality.

Timur Kristóf (14):
  drm/amd/display: Use DCE 6 link encoder for DCE 6 analog connectors
  drm/amd/display: Only use analog link encoder with analog engine
  drm/amd/display: Only use analog stream encoder with analog engine
  drm/amd/display: Add color depth helper function to BIOS parser
  drm/amd/display: Refactor DAC load detection, move to HWSS
  drm/amd/display: Implement BIOS parser external encoder control
  drm/amd/display: Implement DDC probe over AUX channel
  drm/amd/display: Add ability for HWSS to prepare the DDC before use
  drm/amd/display: Use preferred DP link rate if specified
  drm/amd/display: Add DCE HWSS support for external DP bridge encoders
  drm/amd/display: Link detection for external DP bridge encoders
  drm/amd/display: Use external DP bridge encoders
  drm/amd/display: Implement DAC load detection on external DP bridge
    encoders
  drm/amdgpu: Use DC by default on CIK APUs

 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    |  11 --
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |   9 +-
 .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c |   3 +
 .../gpu/drm/amd/display/dc/bios/bios_parser.c |  46 +++++--
 .../drm/amd/display/dc/bios/command_table.c   | 124 ++++++------------
 drivers/gpu/drm/amd/display/dc/dc.h           |   4 +
 .../gpu/drm/amd/display/dc/dc_bios_types.h    |   6 +-
 .../amd/display/dc/hwss/dce110/dce110_hwseq.c |  67 ++++++++++
 .../drm/amd/display/dc/hwss/hw_sequencer.h    |   2 +
 .../drm/amd/display/dc/link/link_detection.c  |  56 ++++----
 .../drm/amd/display/dc/link/link_factory.c    |  29 +++-
 .../dc/link/protocols/link_dp_capability.c    |   2 +
 .../link/protocols/link_edp_panel_control.c   |   8 +-
 .../dc/resource/dce100/dce100_resource.c      |   8 +-
 .../dc/resource/dce60/dce60_resource.c        |   5 +-
 .../dc/resource/dce80/dce80_resource.c        |   3 +-
 .../amd/display/include/bios_parser_types.h   |   2 +
 17 files changed, 228 insertions(+), 157 deletions(-)

-- 
2.52.0

Reply via email to