diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-10-19 10:42:27 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-10-29 06:44:41 -0400 |
commit | 4489823ca755dd9931d7f71e5c0a437952a6fdec (patch) | |
tree | eab97b5dc96f67cb9a1bcd71c4b4d81277eaddd0 /drivers | |
parent | bb426fc96316b20876acc3289c5115f00918c2bb (diff) |
OMAPDSS: HDMI: use core power on/off with edid & detect
This patch makes use of the hdmi_power_[on|off]_core() functions added
in the previous patch. The functions are used when reading EDID or
detecting if a monitor is connected.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Ricardo Neri <ricardo.neri@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/omap2/dss/dss.h | 2 | ||||
-rw-r--r-- | drivers/video/omap2/dss/hdmi.c | 35 | ||||
-rw-r--r-- | drivers/video/omap2/dss/hdmi_panel.c | 8 |
3 files changed, 41 insertions, 4 deletions
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h index d614fda9275c..ff7a55b54b8e 100644 --- a/drivers/video/omap2/dss/dss.h +++ b/drivers/video/omap2/dss/dss.h | |||
@@ -509,6 +509,8 @@ static inline unsigned long hdmi_get_pixel_clock(void) | |||
509 | #endif | 509 | #endif |
510 | int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev); | 510 | int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev); |
511 | void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev); | 511 | void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev); |
512 | int omapdss_hdmi_core_enable(struct omap_dss_device *dssdev); | ||
513 | void omapdss_hdmi_core_disable(struct omap_dss_device *dssdev); | ||
512 | void omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev, | 514 | void omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev, |
513 | struct omap_video_timings *timings); | 515 | struct omap_video_timings *timings); |
514 | int omapdss_hdmi_display_check_timing(struct omap_dss_device *dssdev, | 516 | int omapdss_hdmi_display_check_timing(struct omap_dss_device *dssdev, |
diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c index 1226044e5508..81b9fc48295f 100644 --- a/drivers/video/omap2/dss/hdmi.c +++ b/drivers/video/omap2/dss/hdmi.c | |||
@@ -759,6 +759,41 @@ void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev) | |||
759 | mutex_unlock(&hdmi.lock); | 759 | mutex_unlock(&hdmi.lock); |
760 | } | 760 | } |
761 | 761 | ||
762 | int omapdss_hdmi_core_enable(struct omap_dss_device *dssdev) | ||
763 | { | ||
764 | int r = 0; | ||
765 | |||
766 | DSSDBG("ENTER omapdss_hdmi_core_enable\n"); | ||
767 | |||
768 | mutex_lock(&hdmi.lock); | ||
769 | |||
770 | hdmi.ip_data.hpd_gpio = hdmi.hpd_gpio; | ||
771 | |||
772 | r = hdmi_power_on_core(dssdev); | ||
773 | if (r) { | ||
774 | DSSERR("failed to power on device\n"); | ||
775 | goto err0; | ||
776 | } | ||
777 | |||
778 | mutex_unlock(&hdmi.lock); | ||
779 | return 0; | ||
780 | |||
781 | err0: | ||
782 | mutex_unlock(&hdmi.lock); | ||
783 | return r; | ||
784 | } | ||
785 | |||
786 | void omapdss_hdmi_core_disable(struct omap_dss_device *dssdev) | ||
787 | { | ||
788 | DSSDBG("Enter omapdss_hdmi_core_disable\n"); | ||
789 | |||
790 | mutex_lock(&hdmi.lock); | ||
791 | |||
792 | hdmi_power_off_core(dssdev); | ||
793 | |||
794 | mutex_unlock(&hdmi.lock); | ||
795 | } | ||
796 | |||
762 | static int hdmi_get_clocks(struct platform_device *pdev) | 797 | static int hdmi_get_clocks(struct platform_device *pdev) |
763 | { | 798 | { |
764 | struct clk *clk; | 799 | struct clk *clk; |
diff --git a/drivers/video/omap2/dss/hdmi_panel.c b/drivers/video/omap2/dss/hdmi_panel.c index 3f9a4b947a54..a385b69a018e 100644 --- a/drivers/video/omap2/dss/hdmi_panel.c +++ b/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) | |||
334 | need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED; | 334 | need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED; |
335 | 335 | ||
336 | if (need_enable) { | 336 | if (need_enable) { |
337 | r = omapdss_hdmi_display_enable(dssdev); | 337 | r = omapdss_hdmi_core_enable(dssdev); |
338 | if (r) | 338 | if (r) |
339 | goto err; | 339 | goto err; |
340 | } | 340 | } |
@@ -342,7 +342,7 @@ static int hdmi_read_edid(struct omap_dss_device *dssdev, u8 *buf, int len) | |||
342 | r = omapdss_hdmi_read_edid(buf, len); | 342 | r = omapdss_hdmi_read_edid(buf, len); |
343 | 343 | ||
344 | if (need_enable) | 344 | if (need_enable) |
345 | omapdss_hdmi_display_disable(dssdev); | 345 | omapdss_hdmi_core_disable(dssdev); |
346 | err: | 346 | err: |
347 | mutex_unlock(&hdmi.lock); | 347 | mutex_unlock(&hdmi.lock); |
348 | 348 | ||
@@ -359,7 +359,7 @@ static bool hdmi_detect(struct omap_dss_device *dssdev) | |||
359 | need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED; | 359 | need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED; |
360 | 360 | ||
361 | if (need_enable) { | 361 | if (need_enable) { |
362 | r = omapdss_hdmi_display_enable(dssdev); | 362 | r = omapdss_hdmi_core_enable(dssdev); |
363 | if (r) | 363 | if (r) |
364 | goto err; | 364 | goto err; |
365 | } | 365 | } |
@@ -367,7 +367,7 @@ static bool hdmi_detect(struct omap_dss_device *dssdev) | |||
367 | r = omapdss_hdmi_detect(); | 367 | r = omapdss_hdmi_detect(); |
368 | 368 | ||
369 | if (need_enable) | 369 | if (need_enable) |
370 | omapdss_hdmi_display_disable(dssdev); | 370 | omapdss_hdmi_core_disable(dssdev); |
371 | err: | 371 | err: |
372 | mutex_unlock(&hdmi.lock); | 372 | mutex_unlock(&hdmi.lock); |
373 | 373 | ||