提交 00df43b8 编写于 作者: T Tomi Valkeinen

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: NTomi Valkeinen <tomi.valkeinen@ti.com>
上级 2795f646
...@@ -37,6 +37,8 @@ ...@@ -37,6 +37,8 @@
#include "dss_features.h" #include "dss_features.h"
static struct { static struct {
struct platform_device *pdev;
struct regulator *vdds_dsi_reg; struct regulator *vdds_dsi_reg;
struct platform_device *dsidev; struct platform_device *dsidev;
...@@ -555,8 +557,11 @@ static int dpi_init_regulator(void) ...@@ -555,8 +557,11 @@ static int dpi_init_regulator(void)
vdds_dsi = dss_get_vdds_dsi(); vdds_dsi = dss_get_vdds_dsi();
if (IS_ERR(vdds_dsi)) { if (IS_ERR(vdds_dsi)) {
DSSERR("can't get VDDS_DSI regulator\n"); vdds_dsi = devm_regulator_get(&dpi.pdev->dev, "vdds_dsi");
return PTR_ERR(vdds_dsi); if (IS_ERR(vdds_dsi)) {
DSSERR("can't get VDDS_DSI regulator\n");
return PTR_ERR(vdds_dsi);
}
} }
dpi.vdds_dsi_reg = vdds_dsi; dpi.vdds_dsi_reg = vdds_dsi;
...@@ -707,6 +712,8 @@ static int omap_dpi_probe(struct platform_device *pdev) ...@@ -707,6 +712,8 @@ static int omap_dpi_probe(struct platform_device *pdev)
{ {
int r; int r;
dpi.pdev = pdev;
mutex_init(&dpi.lock); mutex_init(&dpi.lock);
dpi_init_output(pdev); dpi_init_output(pdev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册