From 23298dbbca25eac99f92a6d3a62f15b37865e647 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 30 Oct 2012 12:57:43 +0200 Subject: [PATCH] --- yaml --- r: 344617 b: refs/heads/master c: 6061675b3fc83d8d190b87b54f04f0c89f605149 h: refs/heads/master i: 344615: cdd4b436808c0e001192a35207925bb62f9eb888 v: v3 --- [refs] | 2 +- trunk/drivers/video/omap2/dss/dpi.c | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 2bb17c4163ac..b9333db84dc1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8a3db406f5046dd14dff0e78cea0ba03efec3668 +refs/heads/master: 6061675b3fc83d8d190b87b54f04f0c89f605149 diff --git a/trunk/drivers/video/omap2/dss/dpi.c b/trunk/drivers/video/omap2/dss/dpi.c index ca5f49c44ece..6baeb04e60cc 100644 --- a/trunk/drivers/video/omap2/dss/dpi.c +++ b/trunk/drivers/video/omap2/dss/dpi.c @@ -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"); @@ -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;