DVO was mainly used for crossfire pre-DCE 8, and possibly on some DCE 8 
(Tonga) SKUs as well. On newer ASICs crossfire uses XDMA so there's no 
longer a need for DVO.

It's probably safe to drop it for amdgpu. Radeon driver might still want 
to keep it if there's support for it.

Harry


On 2016-04-13 10:56 PM, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> I'm a bit confused whether this is needed so it would be good to
> confirm if hw shipped with it.
>
> DAL as currently is doesn't have any support for this, it doesn't
> have any encoder ids for DVO that I can see.
>
> So before porting to DAL graphics objects, I'm removing this code,
> so we can see if any regressions land here.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/atombios_crtc.c     |   3 -
>   drivers/gpu/drm/amd/amdgpu/atombios_encoders.c | 100 
> -------------------------
>   drivers/gpu/drm/amd/amdgpu/dce_v10_0.c         |   8 --
>   drivers/gpu/drm/amd/amdgpu/dce_v11_0.c         |   8 --
>   drivers/gpu/drm/amd/amdgpu/dce_v8_0.c          |   8 --
>   5 files changed, 127 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_crtc.c 
> b/drivers/gpu/drm/amd/amdgpu/atombios_crtc.c
> index 49aa350..072a729 100644
> --- a/drivers/gpu/drm/amd/amdgpu/atombios_crtc.c
> +++ b/drivers/gpu/drm/amd/amdgpu/atombios_crtc.c
> @@ -344,9 +344,6 @@ static u32 amdgpu_atombios_crtc_adjust_pll(struct 
> drm_crtc *crtc,
>               }
>       }
>   
> -     /* DVO wants 2x pixel clock if the DVO chip is in 12 bit mode */
> -     if (amdgpu_encoder->encoder_id == 
> ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1)
> -             adjusted_clock = mode->clock * 2;
>       if (amdgpu_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT))
>               amdgpu_crtc->pll_flags |= AMDGPU_PLL_PREFER_CLOSEST_LOWER;
>       if (amdgpu_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT))
> diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c 
> b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c
> index 4367941..7ef93c6 100644
> --- a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c
> +++ b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c
> @@ -272,7 +272,6 @@ bool amdgpu_atombios_encoder_is_digital(struct 
> drm_encoder *encoder)
>   {
>       struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
>       switch (amdgpu_encoder->encoder_id) {
> -     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
> @@ -369,79 +368,8 @@ static u8 amdgpu_atombios_encoder_get_bpc(struct 
> drm_encoder *encoder)
>       }
>   }
>   
> -union dvo_encoder_control {
> -     ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION ext_tmds;
> -     DVO_ENCODER_CONTROL_PS_ALLOCATION dvo;
> -     DVO_ENCODER_CONTROL_PS_ALLOCATION_V3 dvo_v3;
> -     DVO_ENCODER_CONTROL_PS_ALLOCATION_V1_4 dvo_v4;
> -};
> -
> -static void
> -amdgpu_atombios_encoder_setup_dvo(struct drm_encoder *encoder, int action)
> -{
> -     struct drm_device *dev = encoder->dev;
> -     struct amdgpu_device *adev = dev->dev_private;
> -     struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
> -     union dvo_encoder_control args;
> -     int index = GetIndexIntoMasterTable(COMMAND, DVOEncoderControl);
> -     uint8_t frev, crev;
> -
> -     memset(&args, 0, sizeof(args));
> -
> -     if (!amdgpu_atom_parse_cmd_header(adev->mode_info.atom_context, index, 
> &frev, &crev))
> -             return;
> -
> -     switch (frev) {
> -     case 1:
> -             switch (crev) {
> -             case 1:
> -                     /* R4xx, R5xx */
> -                     args.ext_tmds.sXTmdsEncoder.ucEnable = action;
> -
> -                     if (amdgpu_dig_monitor_is_duallink(encoder, 
> amdgpu_encoder->pixel_clock))
> -                             args.ext_tmds.sXTmdsEncoder.ucMisc |= 
> PANEL_ENCODER_MISC_DUAL;
> -
> -                     args.ext_tmds.sXTmdsEncoder.ucMisc |= 
> ATOM_PANEL_MISC_888RGB;
> -                     break;
> -             case 2:
> -                     /* RS600/690/740 */
> -                     args.dvo.sDVOEncoder.ucAction = action;
> -                     args.dvo.sDVOEncoder.usPixelClock = 
> cpu_to_le16(amdgpu_encoder->pixel_clock / 10);
> -                     /* DFP1, CRT1, TV1 depending on the type of port */
> -                     args.dvo.sDVOEncoder.ucDeviceType = 
> ATOM_DEVICE_DFP1_INDEX;
> -
> -                     if (amdgpu_dig_monitor_is_duallink(encoder, 
> amdgpu_encoder->pixel_clock))
> -                             
> args.dvo.sDVOEncoder.usDevAttr.sDigAttrib.ucAttribute |= 
> PANEL_ENCODER_MISC_DUAL;
> -                     break;
> -             case 3:
> -                     /* R6xx */
> -                     args.dvo_v3.ucAction = action;
> -                     args.dvo_v3.usPixelClock = 
> cpu_to_le16(amdgpu_encoder->pixel_clock / 10);
> -                     args.dvo_v3.ucDVOConfig = 0; /* XXX */
> -                     break;
> -             case 4:
> -                     /* DCE8 */
> -                     args.dvo_v4.ucAction = action;
> -                     args.dvo_v4.usPixelClock = 
> cpu_to_le16(amdgpu_encoder->pixel_clock / 10);
> -                     args.dvo_v4.ucDVOConfig = 0; /* XXX */
> -                     args.dvo_v4.ucBitPerColor = 
> amdgpu_atombios_encoder_get_bpc(encoder);
> -                     break;
> -             default:
> -                     DRM_ERROR("Unknown table version %d, %d\n", frev, crev);
> -                     break;
> -             }
> -             break;
> -     default:
> -             DRM_ERROR("Unknown table version %d, %d\n", frev, crev);
> -             break;
> -     }
> -
> -     amdgpu_atom_execute_table(adev->mode_info.atom_context, index, 
> (uint32_t *)&args);
> -}
> -
>   int amdgpu_atombios_encoder_get_encoder_mode(struct drm_encoder *encoder)
>   {
> -     struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
>       struct drm_connector *connector;
>       struct amdgpu_connector *amdgpu_connector;
>       struct amdgpu_connector_atom_dig *dig_connector;
> @@ -450,11 +378,6 @@ int amdgpu_atombios_encoder_get_encoder_mode(struct 
> drm_encoder *encoder)
>       if (amdgpu_encoder_get_dp_bridge_encoder_id(encoder) != 
> ENCODER_OBJECT_ID_NONE)
>               return ATOM_ENCODER_MODE_DP;
>   
> -     /* DVO is always DVO */
> -     if ((amdgpu_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DVO1) ||
> -         (amdgpu_encoder->encoder_id == 
> ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1))
> -             return ATOM_ENCODER_MODE_DVO;
> -
>       connector = amdgpu_get_connector_for_encoder(encoder);
>       /* if we don't have an active device yet, just use one of
>        * the connectors tied to the encoder.
> @@ -768,9 +691,6 @@ amdgpu_atombios_encoder_setup_dig_transmitter(struct 
> drm_encoder *encoder, int a
>       memset(&args, 0, sizeof(args));
>   
>       switch (amdgpu_encoder->encoder_id) {
> -     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
> -             index = GetIndexIntoMasterTable(COMMAND, DVOOutputControl);
> -             break;
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
> @@ -1332,18 +1252,6 @@ amdgpu_atombios_encoder_dpms(struct drm_encoder 
> *encoder, int mode)
>                       break;
>               }
>               break;
> -     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
> -             switch (mode) {
> -             case DRM_MODE_DPMS_ON:
> -                     amdgpu_atombios_encoder_setup_dvo(encoder, ATOM_ENABLE);
> -                     break;
> -             case DRM_MODE_DPMS_STANDBY:
> -             case DRM_MODE_DPMS_SUSPEND:
> -             case DRM_MODE_DPMS_OFF:
> -                     amdgpu_atombios_encoder_setup_dvo(encoder, 
> ATOM_DISABLE);
> -                     break;
> -             }
> -             break;
>       case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
>               switch (mode) {
>               case DRM_MODE_DPMS_ON:
> @@ -1402,9 +1310,7 @@ amdgpu_atombios_encoder_set_crtc_source(struct 
> drm_encoder *encoder)
>                               else
>                                       args.v1.ucDevice = 
> ATOM_DEVICE_DFP3_INDEX;
>                               break;
> -                     case ENCODER_OBJECT_ID_INTERNAL_DVO1:
>                       case ENCODER_OBJECT_ID_INTERNAL_DDI:
> -                     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
>                               args.v1.ucDevice = ATOM_DEVICE_DFP2_INDEX;
>                               break;
>                       case ENCODER_OBJECT_ID_INTERNAL_DAC1:
> @@ -1474,9 +1380,6 @@ amdgpu_atombios_encoder_set_crtc_source(struct 
> drm_encoder *encoder)
>                                       break;
>                               }
>                               break;
> -                     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
> -                             args.v2.ucEncoderID = ASIC_INT_DVO_ENCODER_ID;
> -                             break;
>                       case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
>                               if (amdgpu_encoder->active_device & 
> (ATOM_DEVICE_TV_SUPPORT))
>                                       args.v2.ucEncoderID = 
> ASIC_INT_TV_ENCODER_ID;
> @@ -1543,9 +1446,6 @@ amdgpu_atombios_encoder_set_crtc_source(struct 
> drm_encoder *encoder)
>                                       break;
>                               }
>                               break;
> -                     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
> -                             args.v3.ucEncoderID = ASIC_INT_DVO_ENCODER_ID;
> -                             break;
>                       case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
>                               if (amdgpu_encoder->active_device & 
> (ATOM_DEVICE_TV_SUPPORT))
>                                       args.v3.ucEncoderID = 
> ASIC_INT_TV_ENCODER_ID;
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c 
> b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> index 6de2ce53..90dc73b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> @@ -3733,7 +3733,6 @@ static void dce_v10_0_encoder_add(struct amdgpu_device 
> *adev,
>                                DRM_MODE_ENCODER_DAC, NULL);
>               drm_encoder_helper_add(encoder, &dce_v10_0_dac_helper_funcs);
>               break;
> -     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
> @@ -3754,13 +3753,6 @@ static void dce_v10_0_encoder_add(struct amdgpu_device 
> *adev,
>               }
>               drm_encoder_helper_add(encoder, &dce_v10_0_dig_helper_funcs);
>               break;
> -     case ENCODER_OBJECT_ID_SI170B:
> -     case ENCODER_OBJECT_ID_CH7303:
> -     case ENCODER_OBJECT_ID_EXTERNAL_SDVOA:
> -     case ENCODER_OBJECT_ID_EXTERNAL_SDVOB:
> -     case ENCODER_OBJECT_ID_TITFP513:
> -     case ENCODER_OBJECT_ID_VT1623:
> -     case ENCODER_OBJECT_ID_HDMI_SI1930:
>       case ENCODER_OBJECT_ID_TRAVIS:
>       case ENCODER_OBJECT_ID_NUTMEG:
>               /* these are handled by the primary encoders */
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c 
> b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> index 89aab0a..d3c9fb7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> @@ -3674,7 +3674,6 @@ static void dce_v11_0_encoder_add(struct amdgpu_device 
> *adev,
>                                DRM_MODE_ENCODER_DAC, NULL);
>               drm_encoder_helper_add(encoder, &dce_v11_0_dac_helper_funcs);
>               break;
> -     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
> @@ -3695,13 +3694,6 @@ static void dce_v11_0_encoder_add(struct amdgpu_device 
> *adev,
>               }
>               drm_encoder_helper_add(encoder, &dce_v11_0_dig_helper_funcs);
>               break;
> -     case ENCODER_OBJECT_ID_SI170B:
> -     case ENCODER_OBJECT_ID_CH7303:
> -     case ENCODER_OBJECT_ID_EXTERNAL_SDVOA:
> -     case ENCODER_OBJECT_ID_EXTERNAL_SDVOB:
> -     case ENCODER_OBJECT_ID_TITFP513:
> -     case ENCODER_OBJECT_ID_VT1623:
> -     case ENCODER_OBJECT_ID_HDMI_SI1930:
>       case ENCODER_OBJECT_ID_TRAVIS:
>       case ENCODER_OBJECT_ID_NUTMEG:
>               /* these are handled by the primary encoders */
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c 
> b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> index e56b55d..ddb8eba 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> @@ -3663,7 +3663,6 @@ static void dce_v8_0_encoder_add(struct amdgpu_device 
> *adev,
>                                DRM_MODE_ENCODER_DAC, NULL);
>               drm_encoder_helper_add(encoder, &dce_v8_0_dac_helper_funcs);
>               break;
> -     case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
>       case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
> @@ -3684,13 +3683,6 @@ static void dce_v8_0_encoder_add(struct amdgpu_device 
> *adev,
>               }
>               drm_encoder_helper_add(encoder, &dce_v8_0_dig_helper_funcs);
>               break;
> -     case ENCODER_OBJECT_ID_SI170B:
> -     case ENCODER_OBJECT_ID_CH7303:
> -     case ENCODER_OBJECT_ID_EXTERNAL_SDVOA:
> -     case ENCODER_OBJECT_ID_EXTERNAL_SDVOB:
> -     case ENCODER_OBJECT_ID_TITFP513:
> -     case ENCODER_OBJECT_ID_VT1623:
> -     case ENCODER_OBJECT_ID_HDMI_SI1930:
>       case ENCODER_OBJECT_ID_TRAVIS:
>       case ENCODER_OBJECT_ID_NUTMEG:
>               /* these are handled by the primary encoders */

Reply via email to