Skip to content

Commit

Permalink
OMAPDSS: DPI: verify if DSI PLL is operational
Browse files Browse the repository at this point in the history
The SoCs that have DSI module should have a working DSI PLL. However,
some rare boards have not connected the powers to the DSI PLL.

This patch adds a function that tries to power up the DSI PLL, and
reports if that doesn't succeed. DPI uses this function to fall back to
PRCM clocks if DSI PLL doesn't work.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Tomi Valkeinen committed Nov 5, 2012
1 parent 8a3db40 commit 6061675
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions drivers/video/omap2/dss/dpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,28 @@ void omapdss_dpi_set_data_lines(struct omap_dss_device *dssdev, int data_lines)
}
EXPORT_SYMBOL(omapdss_dpi_set_data_lines);

static int __init dpi_verify_dsi_pll(struct platform_device *dsidev)
{
int r;

/* do initial setup with the PLL to see if it is operational */

r = dsi_runtime_get(dsidev);
if (r)
return r;

r = dsi_pll_init(dsidev, 0, 1);
if (r) {
dsi_runtime_put(dsidev);
return r;
}

dsi_pll_uninit(dsidev, true);
dsi_runtime_put(dsidev);

return 0;
}

static int __init dpi_init_display(struct omap_dss_device *dssdev)
{
DSSDBG("init_display\n");
Expand All @@ -383,6 +405,11 @@ static int __init dpi_init_display(struct omap_dss_device *dssdev)
enum omap_dss_clk_source dispc_fclk_src =
dssdev->clocks.dispc.dispc_fclk_src;
dpi.dsidev = dpi_get_dsidev(dispc_fclk_src);

if (dpi_verify_dsi_pll(dpi.dsidev)) {
dpi.dsidev = NULL;
DSSWARN("DSI PLL not operational\n");
}
}

return 0;
Expand Down

0 comments on commit 6061675

Please sign in to comment.