summaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss/sdi.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-02-22 15:53:46 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-03-11 15:46:23 +0200
commit5f42f2ce63f5ecbd9bc744b9c25d9786e9a8e3b4 (patch)
tree8ed7158d7e8b39cb184ade1bed6794963f44b9fc /drivers/video/omap2/dss/sdi.c
parentac425ed5fb0b6564d4eeee9fb13ef0c1f6da8e8f (diff)
downloadblackbird-op-linux-5f42f2ce63f5ecbd9bc744b9c25d9786e9a8e3b4.tar.gz
blackbird-op-linux-5f42f2ce63f5ecbd9bc744b9c25d9786e9a8e3b4.zip
OMAP: DSS2: Delay regulator_get() calls
DSS submodules DPI/SDI/DSI/VENC require a regulator to function. However, if the board doesn't use, say, SDI, the board shouldn't need to configure vdds_sdi regulator required by the SDI module. Currently the regulators are acquired when the DSS driver is loaded. This means that if the kernel is configured with SDI, vdds_sdi regulator is needed for all boards. This patch changes the DSS driver to acquire the regulators only when a display of particular type is initialized. For example, vdds_sdi is acquired when sdi_init_display() is called. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/sdi.c')
-rw-r--r--drivers/video/omap2/dss/sdi.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c
index 8272fc1f3279..9f10a0d9e760 100644
--- a/drivers/video/omap2/dss/sdi.c
+++ b/drivers/video/omap2/dss/sdi.c
@@ -157,6 +157,19 @@ int sdi_init_display(struct omap_dss_device *dssdev)
{
DSSDBG("SDI init\n");
+ if (sdi.vdds_sdi_reg == NULL) {
+ struct regulator *vdds_sdi;
+
+ vdds_sdi = dss_get_vdds_sdi();
+
+ if (IS_ERR(vdds_sdi)) {
+ DSSERR("can't get VDDS_SDI regulator\n");
+ return PTR_ERR(vdds_sdi);
+ }
+
+ sdi.vdds_sdi_reg = vdds_sdi;
+ }
+
return 0;
}
@@ -165,11 +178,6 @@ int sdi_init(bool skip_init)
/* we store this for first display enable, then clear it */
sdi.skip_init = skip_init;
- sdi.vdds_sdi_reg = dss_get_vdds_sdi();
- if (IS_ERR(sdi.vdds_sdi_reg)) {
- DSSERR("can't get VDDS_SDI regulator\n");
- return PTR_ERR(sdi.vdds_sdi_reg);
- }
/*
* Enable clocks already here, otherwise there would be a toggle
* of them until sdi_display_enable is called.
OpenPOWER on IntegriCloud