All of 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.