diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-08-29 18:10:20 +0300 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-09-30 16:16:47 +0300 |
commit | 759593ffa7e05ebea9b21135cad179982331f5d8 (patch) | |
tree | 3162f08919d9f6e6ca94b8124c2ff9e5f25d5d98 /drivers/video/omap2/dss/hdmi_panel.c | |
parent | 468c1b934c0367d15f90314ae316cd33551f70a5 (diff) | |
download | talos-op-linux-759593ffa7e05ebea9b21135cad179982331f5d8.tar.gz talos-op-linux-759593ffa7e05ebea9b21135cad179982331f5d8.zip |
OMAP: DSS2: HDMI: implement detect()
Implement detect() by checking the hot plug detect status.
The implementation is not very good, as it always turns on the HDMI
output to get the detection working. HDMI driver needs improvements so
that we could enable only core parts of it.
Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/hdmi_panel.c')
-rw-r--r-- | drivers/video/omap2/dss/hdmi_panel.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/hdmi_panel.c b/drivers/video/omap2/dss/hdmi_panel.c index 71aa8134f4fb..533d5dc634d2 100644 --- a/drivers/video/omap2/dss/hdmi_panel.c +++ b/drivers/video/omap2/dss/hdmi_panel.c @@ -25,6 +25,7 @@ #include <linux/mutex.h> #include <linux/module.h> #include <video/omapdss.h> +#include <linux/slab.h> #include "dss.h" @@ -198,6 +199,29 @@ err: return r; } +static bool hdmi_detect(struct omap_dss_device *dssdev) +{ + int r; + + mutex_lock(&hdmi.hdmi_lock); + + if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) { + r = omapdss_hdmi_display_enable(dssdev); + if (r) + goto err; + } + + r = omapdss_hdmi_detect(); + + if (dssdev->state == OMAP_DSS_DISPLAY_DISABLED || + dssdev->state == OMAP_DSS_DISPLAY_SUSPENDED) + omapdss_hdmi_display_disable(dssdev); +err: + mutex_unlock(&hdmi.hdmi_lock); + + return r; +} + static struct omap_dss_driver hdmi_driver = { .probe = hdmi_panel_probe, .remove = hdmi_panel_remove, @@ -209,6 +233,7 @@ static struct omap_dss_driver hdmi_driver = { .set_timings = hdmi_set_timings, .check_timings = hdmi_check_timings, .read_edid = hdmi_read_edid, + .detect = hdmi_detect, .driver = { .name = "hdmi_panel", .owner = THIS_MODULE, |