diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2014-09-09 16:49:28 +0200 | 
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2014-09-09 16:49:28 +0200 | 
| commit | 87e9d8fd26c782623b79f2968431179f29b339f2 (patch) | |
| tree | 45e2cf70f4609ee82859d28dd8a34effc750a6c5 /drivers/gpu/drm/i915/intel_display.c | |
| parent | facdb3dd378e81b8516a8faa061e0be56d2ae7be (diff) | |
| parent | 75a41826e2c5dc1dc0fd5195fc29b031c97337af (diff) | |
Merge tag 'socfpga_update_for_v3.18' of git://git.rocketboards.org/linux-socfpga-next into next/dt
Pull "arm: dts: Add Altera SDRAM EDAC bindings & devicetree entries" From Dinh Nguyen:
5 of the 6 patches are DTS updates and the 1 patch is updating
the MAINTAINERS entry with my new email address.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
* tag 'socfpga_update_for_v3.18' of git://git.rocketboards.org/linux-socfpga-next:
  arm: dts: Add Altera SDRAM EDAC bindings & devicetree entries.
  ARM: dts: socfpga: memreserve first 4KB for future system use
  ARM: dts: socfpga: Add SD card detect
  ARM: dts: socfpga: remove extra alias in the ArriaV devkit
  ARM: dts: socfpga: unuse the slot-node and deprecate the supports-highspeed for dw-mmc
  MAINTAINERS: update entries for ARM/SOCFPGA platform
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 39 | 
1 files changed, 15 insertions, 24 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 018fb7222f60..d074d704f458 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -8462,8 +8462,6 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,  		      connector->base.id, connector->name,  		      encoder->base.id, encoder->name); -	drm_modeset_acquire_init(ctx, 0); -  retry:  	ret = drm_modeset_lock(&config->connection_mutex, ctx);  	if (ret) @@ -8502,10 +8500,14 @@ retry:  		i++;  		if (!(encoder->possible_crtcs & (1 << i)))  			continue; -		if (!possible_crtc->enabled) { -			crtc = possible_crtc; -			break; -		} +		if (possible_crtc->enabled) +			continue; +		/* This can occur when applying the pipe A quirk on resume. */ +		if (to_intel_crtc(possible_crtc)->new_enabled) +			continue; + +		crtc = possible_crtc; +		break;  	}  	/* @@ -8574,15 +8576,11 @@ fail_unlock:  		goto retry;  	} -	drm_modeset_drop_locks(ctx); -	drm_modeset_acquire_fini(ctx); -  	return false;  }  void intel_release_load_detect_pipe(struct drm_connector *connector, -				    struct intel_load_detect_pipe *old, -				    struct drm_modeset_acquire_ctx *ctx) +				    struct intel_load_detect_pipe *old)  {  	struct intel_encoder *intel_encoder =  		intel_attached_encoder(connector); @@ -8606,17 +8604,12 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,  			drm_framebuffer_unreference(old->release_fb);  		} -		goto unlock;  		return;  	}  	/* Switch crtc and encoder back off if necessary */  	if (old->dpms_mode != DRM_MODE_DPMS_ON)  		connector->funcs->dpms(connector, old->dpms_mode); - -unlock: -	drm_modeset_drop_locks(ctx); -	drm_modeset_acquire_fini(ctx);  }  static int i9xx_pll_refclk(struct drm_device *dev, @@ -11700,8 +11693,8 @@ intel_cursor_plane_update(struct drm_plane *plane, struct drm_crtc *crtc,  	};  	const struct drm_rect clip = {  		/* integer pixels */ -		.x2 = intel_crtc->config.pipe_src_w, -		.y2 = intel_crtc->config.pipe_src_h, +		.x2 = intel_crtc->active ? intel_crtc->config.pipe_src_w : 0, +		.y2 = intel_crtc->active ? intel_crtc->config.pipe_src_h : 0,  	};  	bool visible;  	int ret; @@ -12659,7 +12652,7 @@ static void intel_enable_pipe_a(struct drm_device *dev)  	struct intel_connector *connector;  	struct drm_connector *crt = NULL;  	struct intel_load_detect_pipe load_detect_temp; -	struct drm_modeset_acquire_ctx ctx; +	struct drm_modeset_acquire_ctx *ctx = dev->mode_config.acquire_ctx;  	/* We can't just switch on the pipe A, we need to set things up with a  	 * proper mode and output configuration. As a gross hack, enable pipe A @@ -12676,10 +12669,8 @@ static void intel_enable_pipe_a(struct drm_device *dev)  	if (!crt)  		return; -	if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp, &ctx)) -		intel_release_load_detect_pipe(crt, &load_detect_temp, &ctx); - - +	if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp, ctx)) +		intel_release_load_detect_pipe(crt, &load_detect_temp);  }  static bool @@ -13112,7 +13103,7 @@ void intel_modeset_cleanup(struct drm_device *dev)  	 * experience fancy races otherwise.  	 */  	drm_irq_uninstall(dev); -	cancel_work_sync(&dev_priv->hotplug_work); +	intel_hpd_cancel_work(dev_priv);  	dev_priv->pm._irqs_disabled = true;  	/*  | 
