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.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 3f3043b4ff26..fecff3c2b9e1 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -899,6 +899,7 @@ void intel_lvds_init(struct drm_device *dev)
899 struct drm_encoder *encoder; 899 struct drm_encoder *encoder;
900 struct drm_display_mode *scan; /* *modes, *bios_mode; */ 900 struct drm_display_mode *scan; /* *modes, *bios_mode; */
901 struct drm_display_mode *fixed_mode = NULL; 901 struct drm_display_mode *fixed_mode = NULL;
902 struct drm_display_mode *downclock_mode = NULL;
902 struct edid *edid; 903 struct edid *edid;
903 struct drm_crtc *crtc; 904 struct drm_crtc *crtc;
904 u32 lvds; 905 u32 lvds;
@@ -957,6 +958,7 @@ void intel_lvds_init(struct drm_device *dev)
957 intel_encoder->get_hw_state = intel_lvds_get_hw_state; 958 intel_encoder->get_hw_state = intel_lvds_get_hw_state;
958 intel_encoder->get_config = intel_lvds_get_config; 959 intel_encoder->get_config = intel_lvds_get_config;
959 intel_connector->get_hw_state = intel_connector_get_hw_state; 960 intel_connector->get_hw_state = intel_connector_get_hw_state;
961 intel_connector->unregister = intel_connector_unregister;
960 962
961 intel_connector_attach_encoder(intel_connector, intel_encoder); 963 intel_connector_attach_encoder(intel_connector, intel_encoder);
962 intel_encoder->type = INTEL_OUTPUT_LVDS; 964 intel_encoder->type = INTEL_OUTPUT_LVDS;
@@ -1032,15 +1034,14 @@ void intel_lvds_init(struct drm_device *dev)
1032 1034
1033 fixed_mode = drm_mode_duplicate(dev, scan); 1035 fixed_mode = drm_mode_duplicate(dev, scan);
1034 if (fixed_mode) { 1036 if (fixed_mode) {
1035 intel_connector->panel.downclock_mode = 1037 downclock_mode =
1036 intel_find_panel_downclock(dev, 1038 intel_find_panel_downclock(dev,
1037 fixed_mode, connector); 1039 fixed_mode, connector);
1038 if (intel_connector->panel.downclock_mode != 1040 if (downclock_mode != NULL &&
1039 NULL && i915.lvds_downclock) { 1041 i915.lvds_downclock) {
1040 /* We found the downclock for LVDS. */ 1042 /* We found the downclock for LVDS. */
1041 dev_priv->lvds_downclock_avail = true; 1043 dev_priv->lvds_downclock_avail = true;
1042 dev_priv->lvds_downclock = 1044 dev_priv->lvds_downclock =
1043 intel_connector->panel.
1044 downclock_mode->clock; 1045 downclock_mode->clock;
1045 DRM_DEBUG_KMS("LVDS downclock is found" 1046 DRM_DEBUG_KMS("LVDS downclock is found"
1046 " in EDID. Normal clock %dKhz, " 1047 " in EDID. Normal clock %dKhz, "
@@ -1116,7 +1117,7 @@ out:
1116 } 1117 }
1117 drm_sysfs_connector_add(connector); 1118 drm_sysfs_connector_add(connector);
1118 1119
1119 intel_panel_init(&intel_connector->panel, fixed_mode); 1120 intel_panel_init(&intel_connector->panel, fixed_mode, downclock_mode);
1120 intel_panel_setup_backlight(connector); 1121 intel_panel_setup_backlight(connector);
1121 1122
1122 return; 1123 return;
@@ -1125,8 +1126,6 @@ failed:
1125 DRM_DEBUG_KMS("No LVDS modes found, disabling.\n"); 1126 DRM_DEBUG_KMS("No LVDS modes found, disabling.\n");
1126 drm_connector_cleanup(connector); 1127 drm_connector_cleanup(connector);
1127 drm_encoder_cleanup(encoder); 1128 drm_encoder_cleanup(encoder);
1128 if (fixed_mode)
1129 drm_mode_destroy(dev, fixed_mode);
1130 kfree(lvds_encoder); 1129 kfree(lvds_encoder);
1131 kfree(lvds_connector); 1130 kfree(lvds_connector);
1132 return; 1131 return;