aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_lvds.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_lvds.c')
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c19
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)
837 * Create the connector, register the LVDS DDC bus, and try to figure out what 837 * Create the connector, register the LVDS DDC bus, and try to figure out what
838 * modes we can display on the LVDS panel (if present). 838 * modes we can display on the LVDS panel (if present).
839 */ 839 */
840void intel_lvds_init(struct drm_device *dev) 840bool intel_lvds_init(struct drm_device *dev)
841{ 841{
842 struct drm_i915_private *dev_priv = dev->dev_private; 842 struct drm_i915_private *dev_priv = dev->dev_private;
843 struct intel_lvds *intel_lvds; 843 struct intel_lvds *intel_lvds;
@@ -853,37 +853,37 @@ void intel_lvds_init(struct drm_device *dev)
853 853
854 /* Skip init on machines we know falsely report LVDS */ 854 /* Skip init on machines we know falsely report LVDS */
855 if (dmi_check_system(intel_no_lvds)) 855 if (dmi_check_system(intel_no_lvds))
856 return; 856 return false;
857 857
858 pin = GMBUS_PORT_PANEL; 858 pin = GMBUS_PORT_PANEL;
859 if (!lvds_is_present_in_vbt(dev, &pin)) { 859 if (!lvds_is_present_in_vbt(dev, &pin)) {
860 DRM_DEBUG_KMS("LVDS is not present in VBT\n"); 860 DRM_DEBUG_KMS("LVDS is not present in VBT\n");
861 return; 861 return false;
862 } 862 }
863 863
864 if (HAS_PCH_SPLIT(dev)) { 864 if (HAS_PCH_SPLIT(dev)) {
865 if ((I915_READ(PCH_LVDS) & LVDS_DETECTED) == 0) 865 if ((I915_READ(PCH_LVDS) & LVDS_DETECTED) == 0)
866 return; 866 return false;
867 if (dev_priv->edp.support) { 867 if (dev_priv->edp.support) {
868 DRM_DEBUG_KMS("disable LVDS for eDP support\n"); 868 DRM_DEBUG_KMS("disable LVDS for eDP support\n");
869 return; 869 return false;
870 } 870 }
871 } 871 }
872 872
873 if (!intel_lvds_ddc_probe(dev, pin)) { 873 if (!intel_lvds_ddc_probe(dev, pin)) {
874 DRM_DEBUG_KMS("LVDS did not respond to DDC probe\n"); 874 DRM_DEBUG_KMS("LVDS did not respond to DDC probe\n");
875 return; 875 return false;
876 } 876 }
877 877
878 intel_lvds = kzalloc(sizeof(struct intel_lvds), GFP_KERNEL); 878 intel_lvds = kzalloc(sizeof(struct intel_lvds), GFP_KERNEL);
879 if (!intel_lvds) { 879 if (!intel_lvds) {
880 return; 880 return false;
881 } 881 }
882 882
883 intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); 883 intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL);
884 if (!intel_connector) { 884 if (!intel_connector) {
885 kfree(intel_lvds); 885 kfree(intel_lvds);
886 return; 886 return false;
887 } 887 }
888 888
889 if (!HAS_PCH_SPLIT(dev)) { 889 if (!HAS_PCH_SPLIT(dev)) {
@@ -1026,7 +1026,7 @@ out:
1026 /* keep the LVDS connector */ 1026 /* keep the LVDS connector */
1027 dev_priv->int_lvds_connector = connector; 1027 dev_priv->int_lvds_connector = connector;
1028 drm_sysfs_connector_add(connector); 1028 drm_sysfs_connector_add(connector);
1029 return; 1029 return true;
1030 1030
1031failed: 1031failed:
1032 DRM_DEBUG_KMS("No LVDS modes found, disabling.\n"); 1032 DRM_DEBUG_KMS("No LVDS modes found, disabling.\n");
@@ -1034,4 +1034,5 @@ failed:
1034 drm_encoder_cleanup(encoder); 1034 drm_encoder_cleanup(encoder);
1035 kfree(intel_lvds); 1035 kfree(intel_lvds);
1036 kfree(intel_connector); 1036 kfree(intel_connector);
1037 return false;
1037} 1038}