aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2013-03-19 05:33:52 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2013-06-17 07:00:45 -0400
commit00df43b8227dbb0100625b279ccbd66d4a03110c (patch)
treeb122859359616558abc16199d2873d45828c9341 /drivers/video
parent2795f646a798767523a91c2b147c9774d0c3070f (diff)
OMAPDSS: DPI: fix regulators for DT
On some platforms DPI requires a regulator to be enabled to power up the output pins. This regulator is, for some reason, currently attached to the virtual omapdss device, instead of the DPI device. This does not work for DT, as the regulator mappings need to be described in the DT data, and the virtual omapdss device is not present there. Fix the issue by acquiring the regulator in the DPI device. To retain compatibility with the current board files, the old method of getting the regulator is kept. The old method can be removed when the board files have been changed to pass the regulator to DPI. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/dpi.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c
index 0aa396b36e7e..aa653c46d9a4 100644
--- a/drivers/video/omap2/dss/dpi.c
+++ b/drivers/video/omap2/dss/dpi.c
@@ -37,6 +37,8 @@
37#include "dss_features.h" 37#include "dss_features.h"
38 38
39static struct { 39static struct {
40 struct platform_device *pdev;
41
40 struct regulator *vdds_dsi_reg; 42 struct regulator *vdds_dsi_reg;
41 struct platform_device *dsidev; 43 struct platform_device *dsidev;
42 44
@@ -555,8 +557,11 @@ static int dpi_init_regulator(void)
555 vdds_dsi = dss_get_vdds_dsi(); 557 vdds_dsi = dss_get_vdds_dsi();
556 558
557 if (IS_ERR(vdds_dsi)) { 559 if (IS_ERR(vdds_dsi)) {
558 DSSERR("can't get VDDS_DSI regulator\n"); 560 vdds_dsi = devm_regulator_get(&dpi.pdev->dev, "vdds_dsi");
559 return PTR_ERR(vdds_dsi); 561 if (IS_ERR(vdds_dsi)) {
562 DSSERR("can't get VDDS_DSI regulator\n");
563 return PTR_ERR(vdds_dsi);
564 }
560 } 565 }
561 566
562 dpi.vdds_dsi_reg = vdds_dsi; 567 dpi.vdds_dsi_reg = vdds_dsi;
@@ -707,6 +712,8 @@ static int omap_dpi_probe(struct platform_device *pdev)
707{ 712{
708 int r; 713 int r;
709 714
715 dpi.pdev = pdev;
716
710 mutex_init(&dpi.lock); 717 mutex_init(&dpi.lock);
711 718
712 dpi_init_output(pdev); 719 dpi_init_output(pdev);