Message ID | 1343817088-29645-14-git-send-email-archit@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, 2012-08-01 at 16:01 +0530, Archit Taneja wrote: > Create function omapdss_sdi_set_timings(), this can be used by a SDI panel > driver without disabling/enabling the SDI interface. This is similar to the > set_timings op of the DPI interface driver. It calls sdi_set_mode() which only > configures the DISPC timings and DSS/DISPC clock dividers. I don't think this works, as the SDI PLL uses pclk-free, and if pclk changes, PLL lock probably breaks. OMAP3430 TRM explains the sequence how to configure settings on the fly, but that's not very simple. Just turning the output off and on is much easier. Tomi
On Tuesday 07 August 2012 07:50 PM, Tomi Valkeinen wrote: > On Wed, 2012-08-01 at 16:01 +0530, Archit Taneja wrote: >> Create function omapdss_sdi_set_timings(), this can be used by a SDI panel >> driver without disabling/enabling the SDI interface. This is similar to the >> set_timings op of the DPI interface driver. It calls sdi_set_mode() which only >> configures the DISPC timings and DSS/DISPC clock dividers. > > I don't think this works, as the SDI PLL uses pclk-free, and if pclk > changes, PLL lock probably breaks. > > OMAP3430 TRM explains the sequence how to configure settings on the fly, > but that's not very simple. Just turning the output off and on is much > easier. Right, I'll make set_timings() just disable and enable SDI like before. Archit -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/video/omap2/displays/panel-acx565akm.c b/drivers/video/omap2/displays/panel-acx565akm.c index eaeed43..11bdc88 100644 --- a/drivers/video/omap2/displays/panel-acx565akm.c +++ b/drivers/video/omap2/displays/panel-acx565akm.c @@ -731,18 +731,7 @@ static int acx_panel_resume(struct omap_dss_device *dssdev) static void acx_panel_set_timings(struct omap_dss_device *dssdev, struct omap_video_timings *timings) { - int r; - - if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) - omapdss_sdi_display_disable(dssdev); - - dssdev->panel.timings = *timings; - - if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) { - r = omapdss_sdi_display_enable(dssdev); - if (r) - dev_err(&dssdev->dev, "%s enable failed\n", __func__); - } + omapdss_sdi_set_timings(dssdev, timings); } static int acx_panel_check_timings(struct omap_dss_device *dssdev, diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c index f2d3f45..d88243f 100644 --- a/drivers/video/omap2/dss/sdi.c +++ b/drivers/video/omap2/dss/sdi.c @@ -155,6 +155,25 @@ void omapdss_sdi_display_disable(struct omap_dss_device *dssdev) } EXPORT_SYMBOL(omapdss_sdi_display_disable); +void omapdss_sdi_set_timings(struct omap_dss_device *dssdev, + struct omap_video_timings *timings) +{ + int r; + + dssdev->panel.timings = *timings; + + if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) { + r = dispc_runtime_get(); + if (r) + return; + + sdi_set_mode(dssdev); + + dispc_runtime_put(); + } +} +EXPORT_SYMBOL(omapdss_sdi_set_timings); + static int __init sdi_init_display(struct omap_dss_device *dssdev) { DSSDBG("SDI init\n"); diff --git a/include/video/omapdss.h b/include/video/omapdss.h index a2cd133..54ba639 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h @@ -760,6 +760,8 @@ int dpi_check_timings(struct omap_dss_device *dssdev, int omapdss_sdi_display_enable(struct omap_dss_device *dssdev); void omapdss_sdi_display_disable(struct omap_dss_device *dssdev); +void omapdss_sdi_set_timings(struct omap_dss_device *dssdev, + struct omap_video_timings *timings); int omapdss_rfbi_display_enable(struct omap_dss_device *dssdev); void omapdss_rfbi_display_disable(struct omap_dss_device *dssdev);
Create function omapdss_sdi_set_timings(), this can be used by a SDI panel driver without disabling/enabling the SDI interface. This is similar to the set_timings op of the DPI interface driver. It calls sdi_set_mode() which only configures the DISPC timings and DSS/DISPC clock dividers. Signed-off-by: Archit Taneja <archit@ti.com> --- drivers/video/omap2/displays/panel-acx565akm.c | 13 +------------ drivers/video/omap2/dss/sdi.c | 19 +++++++++++++++++++ include/video/omapdss.h | 2 ++ 3 files changed, 22 insertions(+), 12 deletions(-)