summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJason Chen <b02280@freescale.com>2011-02-23 18:13:43 +0800
committerAndy Voltz <andy.voltz@timesys.com>2011-06-01 13:20:56 -0400
commit2f62821621b87bce897c4a35e03ad4c090c4a0f8 (patch)
tree3896043f3671c1194220c1ba23ae9852567fa70d /drivers
parentdcb1bc96e11fc79ed4b0f627e97417a265a4d036 (diff)
ENGR00139643-3 mxc edid: can not read edid at probe for first power on
Need enable analog regulator. Signed-off-by: Jason Chen <b02280@freescale.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/mxc/mxc_edid.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/video/mxc/mxc_edid.c b/drivers/video/mxc/mxc_edid.c
index c64b7f85b809..c57b5945dadc 100644
--- a/drivers/video/mxc/mxc_edid.c
+++ b/drivers/video/mxc/mxc_edid.c
@@ -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"
@@ -52,6 +53,7 @@ struct mxc_ddc_data {
u32 di;
void (*init)(void);
int (*update)(void);
+ struct regulator *analog_reg;
} mxc_ddc;
static bool g_enable_ddc;
@@ -485,6 +487,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();
@@ -533,6 +541,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;
}