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