diff options
author | Jason Chen <b02280@freescale.com> | 2011-02-23 18:13:43 +0800 |
---|---|---|
committer | Andy Voltz <andy.voltz@timesys.com> | 2011-06-01 13:20:56 -0400 |
commit | 2f62821621b87bce897c4a35e03ad4c090c4a0f8 (patch) | |
tree | 3896043f3671c1194220c1ba23ae9852567fa70d /drivers | |
parent | dcb1bc96e11fc79ed4b0f627e97417a265a4d036 (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.c | 10 |
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; } |