diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_lvds.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 19 | 
1 files changed, 10 insertions, 9 deletions
| diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 4324a326f98e..f79327fc6653 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c @@ -837,7 +837,7 @@ static bool intel_lvds_ddc_probe(struct drm_device *dev, u8 pin)   * Create the connector, register the LVDS DDC bus, and try to figure out what   * modes we can display on the LVDS panel (if present).   */ -void intel_lvds_init(struct drm_device *dev) +bool intel_lvds_init(struct drm_device *dev)  {  	struct drm_i915_private *dev_priv = dev->dev_private;  	struct intel_lvds *intel_lvds; @@ -853,37 +853,37 @@ void intel_lvds_init(struct drm_device *dev)  	/* Skip init on machines we know falsely report LVDS */  	if (dmi_check_system(intel_no_lvds)) -		return; +		return false;  	pin = GMBUS_PORT_PANEL;  	if (!lvds_is_present_in_vbt(dev, &pin)) {  		DRM_DEBUG_KMS("LVDS is not present in VBT\n"); -		return; +		return false;  	}  	if (HAS_PCH_SPLIT(dev)) {  		if ((I915_READ(PCH_LVDS) & LVDS_DETECTED) == 0) -			return; +			return false;  		if (dev_priv->edp.support) {  			DRM_DEBUG_KMS("disable LVDS for eDP support\n"); -			return; +			return false;  		}  	}  	if (!intel_lvds_ddc_probe(dev, pin)) {  		DRM_DEBUG_KMS("LVDS did not respond to DDC probe\n"); -		return; +		return false;  	}  	intel_lvds = kzalloc(sizeof(struct intel_lvds), GFP_KERNEL);  	if (!intel_lvds) { -		return; +		return false;  	}  	intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL);  	if (!intel_connector) {  		kfree(intel_lvds); -		return; +		return false;  	}  	if (!HAS_PCH_SPLIT(dev)) { @@ -1026,7 +1026,7 @@ out:  	/* keep the LVDS connector */  	dev_priv->int_lvds_connector = connector;  	drm_sysfs_connector_add(connector); -	return; +	return true;  failed:  	DRM_DEBUG_KMS("No LVDS modes found, disabling.\n"); @@ -1034,4 +1034,5 @@ failed:  	drm_encoder_cleanup(encoder);  	kfree(intel_lvds);  	kfree(intel_connector); +	return false;  } | 
