]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00139643 mxc edid: can not read edid at probe for first power on
authorJason Chen <b02280@freescale.com>
Fri, 15 Apr 2011 08:09:59 +0000 (16:09 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:32:46 +0000 (08:32 +0200)
Need enable analog regulator.

Signed-off-by: Jason Chen <b02280@freescale.com>
(cherry picked from commit ff2c76f8204555ae789dfc12e8e06f6ba188e7fe)

drivers/video/mxc/mxc_edid.c

index 1102a640ed71b3aba0626581d7b925b4558d988d..4ed9ab6bf36c125907750f0cd0137f67b9b1f173 100644 (file)
@@ -35,6 +35,7 @@
 #include <linux/fsl_devices.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
+#include <linux/regulator/consumer.h>
 #include <mach/mxc_edid.h>
 #include "../edid.h"
 
@@ -60,6 +61,7 @@ struct mxc_ddc_data {
        u32 di;
        void (*init)(void);
        int (*update)(void);
+       struct regulator *analog_reg;
 } mxc_ddc;
 
 static bool g_enable_ddc;
@@ -288,6 +290,12 @@ static int __devinit mxc_ddc_probe(struct i2c_client *client,
        if (!mxc_ddc.update)
                return -EINVAL;
 
+       mxc_ddc.analog_reg = regulator_get(&mxc_ddc.pdev->dev, plat->analog_regulator);
+       if (!IS_ERR(mxc_ddc.analog_reg)) {
+               regulator_set_voltage(mxc_ddc.analog_reg, 2775000, 2775000);
+               regulator_enable(mxc_ddc.analog_reg);
+       }
+
        if (mxc_ddc.init)
                mxc_ddc.init();
 
@@ -336,6 +344,8 @@ err:
 static int __devexit mxc_ddc_remove(struct i2c_client *client)
 {
        fb_unregister_client(&nb);
+       if (!IS_ERR(mxc_ddc.analog_reg))
+               regulator_disable(mxc_ddc.analog_reg);
        return 0;
 }