diff options
| author | Francisco Jerez <currojerez@riseup.net> | 2010-10-26 02:17:56 +0200 | 
|---|---|---|
| committer | Ben Skeggs <bskeggs@redhat.com> | 2010-11-18 14:38:49 +1000 | 
| commit | 84b8081c2baf84b52ac9bf79f07edcea975ab0b5 (patch) | |
| tree | 8cf6f9c6e6cea86869c7ac7826bf551459b7a2cb | |
| parent | 63d6fd32889c46fa40cd1631fb2a0162187311ab (diff) | |
drm/nouveau: Don't use load detection for connector polling.
Analog output polling makes GL programs jerky when pageflip is being
used because it's carried out with the mode_config mutex held.
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_connector.c | 25 | 
1 files changed, 2 insertions, 23 deletions
| diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c index 1dd52dbfad46..52c356e9a3d1 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.c +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c @@ -213,24 +213,6 @@ nouveau_connector_set_encoder(struct drm_connector *connector,  	}  } -static bool -nouveau_connector_poll_allowed(struct drm_connector *connector) -{ -	struct drm_device *dev = connector->dev; -	struct drm_nouveau_private *dev_priv = dev->dev_private; -	struct drm_crtc *crtc; -	bool spare_crtc = false; - -	if (dev_priv->card_type >= NV_50) { -		return true; -	} else { -		list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) -			spare_crtc |= !crtc->enabled; - -		return spare_crtc; -	} -} -  static enum drm_connector_status  nouveau_connector_detect(struct drm_connector *connector, bool force)  { @@ -299,8 +281,7 @@ detect_analog:  	nv_encoder = find_encoder_by_type(connector, OUTPUT_ANALOG);  	if (!nv_encoder && !nouveau_tv_disable)  		nv_encoder = find_encoder_by_type(connector, OUTPUT_TV); -	if (nv_encoder && -	    (force || nouveau_connector_poll_allowed(connector))) { +	if (nv_encoder && force) {  		struct drm_encoder *encoder = to_drm_encoder(nv_encoder);  		struct drm_encoder_helper_funcs *helper =  						encoder->helper_private; @@ -868,14 +849,12 @@ nouveau_connector_create(struct drm_device *dev, int index)  					dev->mode_config.scaling_mode_property,  					nv_connector->scaling_mode);  		} +		connector->polled = DRM_CONNECTOR_POLL_CONNECT;  		/* fall-through */  	case DCB_CONNECTOR_TV_0:  	case DCB_CONNECTOR_TV_1:  	case DCB_CONNECTOR_TV_3:  		nv_connector->scaling_mode = DRM_MODE_SCALE_NONE; - -		if (nv_gf4_disp_arch(dev)) -			connector->polled = DRM_CONNECTOR_POLL_CONNECT;  		break;  	default:  		nv_connector->scaling_mode = DRM_MODE_SCALE_FULLSCREEN; | 
