stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lyude <cpaul@redhat.com>
To: xorg-driver-ati@lists.freedesktop.org, amd-gfx@lists.freedesktop.org
Cc: stable@vger.kernel.org,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Christian König" <christian.koenig@amd.com>,
	"David Airlie" <airlied@linux.ie>,
	"open list:RADEON and AMDGPU DRM DRIVERS"
	<dri-devel@lists.freedesktop.org>,
	"open list" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/2] drm/radeon: Poll for both connect/disconnect on analog connectors
Date: Fri, 24 Jun 2016 17:52:34 -0400	[thread overview]
Message-ID: <1466805154.4361.2.camel@redhat.com> (raw)
In-Reply-To: <1466804762-14526-1-git-send-email-cpaul@redhat.com>

Whoops, very sorry about this! I ran git send-email, and it looks like
I had forgotten to remove some other patches in my patches/ folder.
Going to resend this to avoid confusing anyone trying to review this.

On Fri, 2016-06-24 at 17:45 -0400, Lyude wrote:
> DRM_CONNECTOR_POLL_CONNECT only enables polling for connections, not
> disconnections. Because of this, we end up losing hotplug polling for
> analog connectors once they get connected.
> 
> Easy way to reproduce:
>  - Grab a machine with a radeon GPU and a VGA port
>  - Plug a monitor into the VGA port, wait for it to update the
> connector
>    from disconnected to connected
>  - Disconnect the monitor on VGA, a hotplug event is never sent for
> the
>    removal of the connector.
> 
> Originally, only using DRM_CONNECTOR_POLL_CONNECT might have been a
> good
> idea since doing VGA polling can sometimes result in having to mess
> with
> the DAC voltages to figure out whether or not there's actually
> something
> there since VGA doesn't have HPD. Doing this would have the potential
> of
> showing visible artifacts on the screen every time we ran a poll
> while a
> VGA display was connected. Luckily, radeon_vga_detect() only resorts
> to
> this sort of polling if the poll is forced, and DRM's polling helper
> doesn't force it's polls.
> 
> Additionally, this removes some assignments to connector->polled that
> weren't actually doing anything.
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Lyude <cpaul@redhat.com>
> ---
>  drivers/gpu/drm/radeon/radeon_connectors.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c
> b/drivers/gpu/drm/radeon/radeon_connectors.c
> index 81a63d7..b79f3b0 100644
> --- a/drivers/gpu/drm/radeon/radeon_connectors.c
> +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
> @@ -2064,7 +2064,6 @@ radeon_add_atom_connector(struct drm_device
> *dev,
>  							   RADEON_OU
> TPUT_CSC_BYPASS);
>  			/* no HPD on analog connectors */
>  			radeon_connector->hpd.hpd = RADEON_HPD_NONE;
> -			connector->polled =
> DRM_CONNECTOR_POLL_CONNECT;
>  			connector->interlace_allowed = true;
>  			connector->doublescan_allowed = true;
>  			break;
> @@ -2314,8 +2313,10 @@ radeon_add_atom_connector(struct drm_device
> *dev,
>  	}
>  
>  	if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) {
> -		if (i2c_bus->valid)
> -			connector->polled =
> DRM_CONNECTOR_POLL_CONNECT;
> +		if (i2c_bus->valid) {
> +			connector->polled =
> DRM_CONNECTOR_POLL_CONNECT |
> +			                    DRM_CONNECTOR_POLL_DISCO
> NNECT;
> +		}
>  	} else
>  		connector->polled = DRM_CONNECTOR_POLL_HPD;
>  
> @@ -2391,7 +2392,6 @@ radeon_add_legacy_connector(struct drm_device
> *dev,
>  					      1);
>  		/* no HPD on analog connectors */
>  		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
> -		connector->polled = DRM_CONNECTOR_POLL_CONNECT;
>  		connector->interlace_allowed = true;
>  		connector->doublescan_allowed = true;
>  		break;
> @@ -2476,10 +2476,13 @@ radeon_add_legacy_connector(struct drm_device
> *dev,
>  	}
>  
>  	if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) {
> -		if (i2c_bus->valid)
> -			connector->polled =
> DRM_CONNECTOR_POLL_CONNECT;
> +		if (i2c_bus->valid) {
> +			connector->polled =
> DRM_CONNECTOR_POLL_CONNECT |
> +			                    DRM_CONNECTOR_POLL_DISCO
> NNECT;
> +		}
>  	} else
>  		connector->polled = DRM_CONNECTOR_POLL_HPD;
> +
>  	connector->display_info.subpixel_order = subpixel_order;
>  	drm_connector_register(connector);
>  }
-- 

Cheers,
	Lyude

      parent reply	other threads:[~2016-06-24 21:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-24 21:45 [PATCH 1/2] drm/radeon: Poll for both connect/disconnect on analog connectors Lyude
2016-06-24 21:45 ` [PATCH 2/2] drm/amdgpu: " Lyude
2016-06-24 21:45 ` [PATCH v6 1/4] drm/i915/vlv: Make intel_crt_reset() per-encoder Lyude
2016-06-24 21:46 ` [PATCH v6 2/4] drm/i915/vlv: Reset the ADPA in vlv_display_power_well_init() Lyude
2016-06-24 21:52 ` Lyude [this message]

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=1466805154.4361.2.camel@redhat.com \
    --to=cpaul@redhat.com \
    --cc=airlied@linux.ie \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=xorg-driver-ati@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;
as well as URLs for NNTP newsgroup(s).