aboutsummaryrefslogtreecommitdiff
path: root/drivers/video/omap2/dss/dsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/omap2/dss/dsi.c')
-rw-r--r--drivers/video/omap2/dss/dsi.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
index e9b734ccb1a..97ad21bf7a2 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -309,6 +309,20 @@ static inline u32 dsi_read_reg(const struct dsi_reg idx)
return __raw_readl(dsi.base + idx.idx);
}
+static struct regulator *dsi_get_vdds_dsi(void)
+{
+ struct regulator *reg;
+
+ if (dsi.vdds_dsi_reg != NULL)
+ return dsi.vdds_dsi_reg;
+
+ reg = regulator_get(&dsi.pdev->dev, "vdds_dsi");
+ if (!IS_ERR(reg))
+ dsi.vdds_dsi_reg = reg;
+
+ return reg;
+}
+
void dsi_save_context(void)
{
@@ -3723,6 +3737,12 @@ static int dsi_init(struct platform_device *pdev)
DSSERR("request_irq failed\n");
goto err2;
}
+ dsi.vdds_dsi_reg = dsi_get_vdds_dsi();
+ if (IS_ERR(dsi.vdds_dsi_reg)) {
+ DSSERR("can't get VDDS_DSI regulator\n");
+ r = PTR_ERR(dsi.vdds_dsi_reg);
+ goto err2;
+ }
/* DSI VCs initialization */
for (i = 0; i < ARRAY_SIZE(dsi.vc); i++) {