dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Harry Wentland <harry.wentland@amd.com>
To: dri-devel@lists.freedesktop.org, Dave Airlie <airlied@gmail.com>
Subject: Re: [PATCH 5/7] [RFC] drm/amdgpu: drop DVO encoders support.
Date: Thu, 14 Apr 2016 10:08:01 -0400	[thread overview]
Message-ID: <570FA441.9080106@amd.com> (raw)
In-Reply-To: <1460602570-20641-6-git-send-email-airlied@gmail.com>

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@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@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 */

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2016-04-14 14:40 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-14  2:56 drm/amdgpu: start using graphics object ids from DAL Dave Airlie
2016-04-14  2:56 ` [PATCH 1/7] drm/amdgpu: drop apply quirks for now Dave Airlie
2016-04-14  2:56 ` [PATCH 2/7] drm/amdgpu: introduce grph object id from DAL Dave Airlie
2016-04-14  2:56 ` [PATCH 3/7] drm/amdgpu: introduce graphics object id helpers Dave Airlie
2016-04-15 18:54   ` Emil Velikov
2016-04-14  2:56 ` [PATCH 4/7] drm/amdgpu: use graphics objects for connectors Dave Airlie
2016-04-14  2:56 ` [PATCH 5/7] [RFC] drm/amdgpu: drop DVO encoders support Dave Airlie
2016-04-14 14:08   ` Harry Wentland [this message]
2016-04-14  2:56 ` [PATCH 6/7] drm/amdgpu: convert encoders to using the graphics object ids Dave Airlie
2016-04-14  2:56 ` [PATCH 7/7] drm/amdgpu: convert crtc to using " Dave Airlie
2016-04-14  8:25 ` drm/amdgpu: start using graphics object ids from DAL Christian König
2016-04-15 12:46   ` Harry Wentland

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=570FA441.9080106@amd.com \
    --to=harry.wentland@amd.com \
    --cc=airlied@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox