drm/i915: Enable eDP panel power during I2C initialization sequence
authorKeith Packard <keithp@keithp.com>
Wed, 28 Sep 2011 23:41:05 +0000 (16:41 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 6 Oct 2011 02:56:51 +0000 (19:56 -0700)
The DP i2c initialization code does a couple of i2c transactions,
which means that an eDP panel must be powered up.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_dp.c

index 320c379..2b4acfd 100644 (file)
@@ -595,10 +595,15 @@ intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode,
        return -EREMOTEIO;
 }
 
+static void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp);
+static void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp);
+
 static int
 intel_dp_i2c_init(struct intel_dp *intel_dp,
                  struct intel_connector *intel_connector, const char *name)
 {
+       int     ret;
+
        DRM_DEBUG_KMS("i2c_init %s\n", name);
        intel_dp->algo.running = false;
        intel_dp->algo.address = 0;
@@ -612,7 +617,10 @@ intel_dp_i2c_init(struct intel_dp *intel_dp,
        intel_dp->adapter.algo_data = &intel_dp->algo;
        intel_dp->adapter.dev.parent = &intel_connector->base.kdev;
 
-       return i2c_dp_aux_add_bus(&intel_dp->adapter);
+       ironlake_edp_panel_vdd_on(intel_dp);
+       ret = i2c_dp_aux_add_bus(&intel_dp->adapter);
+       ironlake_edp_panel_vdd_off(intel_dp);
+       return ret;
 }
 
 static bool