diff --git a/[refs] b/[refs] index 84bf1735075a..4476268da061 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bb426fc96316b20876acc3289c5115f00918c2bb +refs/heads/master: 4489823ca755dd9931d7f71e5c0a437952a6fdec diff --git a/trunk/drivers/video/omap2/dss/dss.h b/trunk/drivers/video/omap2/dss/dss.h index d614fda9275c..ff7a55b54b8e 100644 --- a/trunk/drivers/video/omap2/dss/dss.h +++ b/trunk/drivers/video/omap2/dss/dss.h @@ -509,6 +509,8 @@ static inline unsigned long hdmi_get_pixel_clock(void) #endif int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev); void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev); +int omapdss_hdmi_core_enable(struct omap_dss_device *dssdev); +void omapdss_hdmi_core_disable(struct omap_dss_device *dssdev); void omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev, struct omap_video_timings *timings); int omapdss_hdmi_display_check_timing(struct omap_dss_device *dssdev, diff --git a/trunk/drivers/video/omap2/dss/hdmi.c b/trunk/drivers/video/omap2/dss/hdmi.c index 1226044e5508..81b9fc48295f 100644 --- a/trunk/drivers/video/omap2/dss/hdmi.c +++ b/trunk/drivers/video/omap2/dss/hdmi.c @@ -759,6 +759,41 @@ void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev) mutex_unlock(&hdmi.lock); } +int omapdss_hdmi_core_enable(struct omap_dss_device *dssdev) +{ + int r = 0; + + DSSDBG("ENTER omapdss_hdmi_core_enable\n"); + + mutex_lock(&hdmi.lock); + + hdmi.ip_data.hpd_gpio = hdmi.hpd_gpio; + + r = hdmi_power_on_core(dssdev); + if (r) { + DSSERR("failed to power on device\n"); + goto err0; + } + + mutex_unlock(&hdmi.lock); + return 0; + +err0: + mutex_unlock(&hdmi.lock); + return r; +} + +void omapdss_hdmi_core_disable(struct omap_dss_device *dssdev) +{ + DSSDBG("Enter omapdss_hdmi_core_disable\n"); + + mutex_lock(&hdmi.lock); + + hdmi_power_off_core(dssdev); + + mutex_unlock(&hdmi.lock); +} + static int hdmi_get_clocks(struct platform_device *pdev) { struct clk *clk; diff --git a/trunk/drivers/video/omap2/dss/hdmi_panel.c b/trunk/drivers/video/omap2/dss/hdmi_panel.c index 3f9a4b947a54..a385b69a018e 100644 --- a/trunk/drivers/video/omap2/dss/hdmi_panel.c +++ b/trunk/drivers/video/omap2/dss/hdmi_panel.c @@ -334,7 +334,7 @@ static int hdmi_read_edid(struct omap_dss_device *dssdev, u8 *buf, int len) need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED; if (need_enable) { - r = omapdss_hdmi_display_enable(dssdev); + r = omapdss_hdmi_core_enable(dssdev); if (r) goto err; } @@ -342,7 +342,7 @@ static int hdmi_read_edid(struct omap_dss_device *dssdev, u8 *buf, int len) r = omapdss_hdmi_read_edid(buf, len); if (need_enable) - omapdss_hdmi_display_disable(dssdev); + omapdss_hdmi_core_disable(dssdev); err: mutex_unlock(&hdmi.lock); @@ -359,7 +359,7 @@ static bool hdmi_detect(struct omap_dss_device *dssdev) need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED; if (need_enable) { - r = omapdss_hdmi_display_enable(dssdev); + r = omapdss_hdmi_core_enable(dssdev); if (r) goto err; } @@ -367,7 +367,7 @@ static bool hdmi_detect(struct omap_dss_device *dssdev) r = omapdss_hdmi_detect(); if (need_enable) - omapdss_hdmi_display_disable(dssdev); + omapdss_hdmi_core_disable(dssdev); err: mutex_unlock(&hdmi.lock);