This series adds support for analog connectors to DC for DCE6-10.
There are two reasons to add this support:

1. GPUs that already use DC by default and have analog connectors.
Some Tonga and Hawaii graphics cards in fact have DVI-I connectors,
and their analog part doesn't work with DC. This functionality
regressed when switching from the amdgpu legacy display code to DC.

2. GPUs that don't use amdgpu by default yet.
Currently, SI (GFX6) and CIK (GFX7) don't use amdgpu by default
yet, and missing analog connector support in DC is cited as one
of the main reasons why not.

Before starting this work, I asked Harry and Alex about how best
to do it and we agreed that we'd like to use the VBIOS to set up
the DAC. So I used the amdgpu legacy display code as a reference.
The first few commits add some minor changes to DC to prepare for
supporting analog stream and link encoders, then analog link
detection is added along with polling, and finally DAC load
detection support, which is useful for old displays and adapters.

With this analog support added to DC, we could already fully switch
CIK discrete GPUs to use DC and switch them to the amdgpu driver
by default. This series switches Bonaire to DC by default, we
can do the switch to amdgpu in a later series.

For SI dGPUs, there are other pending patches to make DC work
well, afterwards we could switch to DC by default, but missing
VCE1 support is the blocker from using amdgpu by default.

For GFX7 APUs, further work is needed before enabling DC by
default, specifically with regards to the TRAVIS and NUTMEG
external encoders which are not supported by DC at all.

Changes in v2 of the series:
Fixed regression on RDNA2 and newer APUs.
Fixed flickering caused by polling analog connectors.
Fixed crash on Kaveri.
Fixed bug when HPD was high without a connected display.
Reduced code churn by reusing same link encoder.
Addressed other feedback from the review of v1.

Timur Kristóf (23):
  drm/amd/display: Determine DVI-I connector type (v2)
  drm/amd/display: Add analog bit to edid_caps (v2)
  drm/amd/display: Introduce MAX_LINK_ENCODERS (v2)
  drm/amd/display: Hook up DAC to bios_parser_encoder_control
  drm/amd/display: Add SelectCRTC_Source to BIOS parser
  drm/amd/display: Get maximum pixel clock from VBIOS
  drm/amd/display: Don't use stereo sync and audio on RGB signals (v2)
  drm/amd/display: Don't try to enable/disable HPD when unavailable
  drm/amd/display: Determine early if a link has supported encoders (v2)
  drm/amd/display: Add concept of analog encoders (v2)
  drm/amd/display: Implement DCE analog stream encoders
  drm/amd/display: Implement DCE analog link encoders (v2)
  drm/amd/display: Support DAC in dce110_hwseq
  drm/amd/display: Add analog link detection (v2)
  drm/amd/display: Refactor amdgpu_dm_connector_detect (v2)
  drm/amd/display: Poll analog connectors (v2)
  drm/amd/display: Add DCE BIOS_SCRATCH_0 register
  drm/amd/display: Make get_support_mask_for_device_id reusable
  drm/amd/display: Add DAC_LoadDetection to BIOS parser (v2)
  drm/amd/display: Use DAC load detection on analog connectors (v2)
  drm/amd/display: Add common modes to analog displays without EDID
  drm/amd/display: Don't add freesync modes to analog displays (v2)
  drm/amdgpu: Use DC by default for Bonaire

 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    |   1 -
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 173 ++++++++---
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c |   5 +-
 .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c |   1 +
 .../drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c |  20 ++
 .../gpu/drm/amd/display/dc/bios/bios_parser.c |  95 +++++-
 .../drm/amd/display/dc/bios/command_table.c   | 286 ++++++++++++++++++
 .../drm/amd/display/dc/bios/command_table.h   |   6 +
 .../drm/amd/display/dc/core/dc_link_enc_cfg.c |   4 +-
 .../gpu/drm/amd/display/dc/core/dc_resource.c |   8 +
 .../gpu/drm/amd/display/dc/dc_bios_types.h    |   9 +
 drivers/gpu/drm/amd/display/dc/dc_types.h     |   8 +-
 .../drm/amd/display/dc/dce/dce_link_encoder.c |  85 ++++++
 .../drm/amd/display/dc/dce/dce_link_encoder.h |  16 +-
 .../amd/display/dc/dce/dce_stream_encoder.c   |  14 +
 .../amd/display/dc/dce/dce_stream_encoder.h   |   5 +
 .../amd/display/dc/hwss/dce110/dce110_hwseq.c |  75 ++++-
 .../gpu/drm/amd/display/dc/inc/core_types.h   |   8 +-
 .../gpu/drm/amd/display/dc/inc/hw/hw_shared.h |  24 ++
 .../drm/amd/display/dc/inc/hw/link_encoder.h  |   2 +
 drivers/gpu/drm/amd/display/dc/inc/resource.h |   1 +
 .../amd/display/dc/link/hwss/link_hwss_dio.c  |  19 +-
 .../drm/amd/display/dc/link/link_detection.c  | 147 ++++++++-
 .../gpu/drm/amd/display/dc/link/link_dpms.c   |   9 +-
 .../drm/amd/display/dc/link/link_factory.c    |  60 +++-
 .../dc/resource/dce100/dce100_resource.c      |  31 +-
 .../dc/resource/dce110/dce110_resource.c      |   2 +
 .../dc/resource/dce112/dce112_resource.c      |   2 +
 .../dc/resource/dce120/dce120_resource.c      |   1 +
 .../dc/resource/dce60/dce60_resource.c        |  29 +-
 .../dc/resource/dce80/dce80_resource.c        |  26 +-
 .../amd/display/include/bios_parser_types.h   |  11 +-
 .../display/include/grph_object_ctrl_defs.h   |   1 +
 .../drm/amd/display/include/grph_object_id.h  |   7 +
 .../drm/amd/display/include/signal_types.h    |  12 +
 35 files changed, 1117 insertions(+), 86 deletions(-)

-- 
2.51.0

Reply via email to