From: Jason Chen Date: Fri, 15 Apr 2011 08:09:59 +0000 (+0800) Subject: ENGR00139643 mxc edid: can not read edid at probe for first power on X-Git-Tag: v3.0.35-fsl~2411 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=4867ad0c91ac8f14b1a0358a254ce9c451d02c49;p=karo-tx-linux.git ENGR00139643 mxc edid: can not read edid at probe for first power on Need enable analog regulator. Signed-off-by: Jason Chen (cherry picked from commit ff2c76f8204555ae789dfc12e8e06f6ba188e7fe) --- diff --git a/drivers/video/mxc/mxc_edid.c b/drivers/video/mxc/mxc_edid.c index 1102a640ed71..4ed9ab6bf36c 100644 --- a/drivers/video/mxc/mxc_edid.c +++ b/drivers/video/mxc/mxc_edid.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #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; }