aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Salveti de Araujo <ricardo.salveti@canonical.com>2011-05-05 02:03:28 -0300
committerRicardo Salveti de Araujo <ricardo.salveti@canonical.com>2011-05-16 22:52:11 -0300
commit3e4bac2ebb2c84a4c819a024dd9a3ad175ecde32 (patch)
tree0a9b5f72da6936d8b9b93ee248539627bafffb23
parent1dfd6553195352c741a50a0a0b3b5d343547c758 (diff)
OMAP: DSS2: adding force argument to is_detected()
Force is available from (*detect) at drm_connector_funcs, and can be used by the driver to avoid expensive, destructive operations during automated probing. Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti@canonical.com>
-rw-r--r--arch/arm/plat-omap/include/plat/display.h4
-rw-r--r--drivers/gpu/drm/omap/omap_connector.c2
-rw-r--r--drivers/video/omap2/displays/panel-generic-dpi.c5
-rw-r--r--drivers/video/omap2/dss/display.c2
-rw-r--r--drivers/video/omap2/dss/dss.h2
-rw-r--r--drivers/video/omap2/dss/hdmi.c2
-rw-r--r--drivers/video/omap2/dss/hdmi_omap4_panel.c4
7 files changed, 11 insertions, 10 deletions
diff --git a/arch/arm/plat-omap/include/plat/display.h b/arch/arm/plat-omap/include/plat/display.h
index 9f30ab8d1e1..4bb60ed18ef 100644
--- a/arch/arm/plat-omap/include/plat/display.h
+++ b/arch/arm/plat-omap/include/plat/display.h
@@ -530,7 +530,7 @@ struct omap_dss_driver {
* For displays like LCD panels, this means is the display present
* on the board.
*/
- bool (*is_detected)(struct omap_dss_device *dssdev);
+ bool (*is_detected)(struct omap_dss_device *dssdev, bool force);
};
int omap_dss_register_driver(struct omap_dss_driver *);
@@ -576,7 +576,7 @@ void omapdss_default_get_timings(struct omap_dss_device *dssdev,
struct omap_video_timings *timings);
int omapdss_default_check_timings(struct omap_dss_device *dssdev,
struct omap_video_timings *timings);
-bool omapdss_default_is_detected(struct omap_dss_device *dssdev);
+bool omapdss_default_is_detected(struct omap_dss_device *dssdev, bool force);
void omapdss_default_get_resolution(struct omap_dss_device *dssdev,
u16 *xres, u16 *yres);
int omapdss_default_get_recommended_bpp(struct omap_dss_device *dssdev);
diff --git a/drivers/gpu/drm/omap/omap_connector.c b/drivers/gpu/drm/omap/omap_connector.c
index aefafd79a1f..7eaa04c3698 100644
--- a/drivers/gpu/drm/omap/omap_connector.c
+++ b/drivers/gpu/drm/omap/omap_connector.c
@@ -93,7 +93,7 @@ enum drm_connector_status omap_connector_detect(
struct omap_dss_driver *dssdrv = dssdev->driver;
enum drm_connector_status ret;
- if (dssdrv->is_detected(dssdev)) {
+ if (dssdrv->is_detected(dssdev, force)) {
ret = connector_status_connected;
} else {
ret = connector_status_disconnected;
diff --git a/drivers/video/omap2/displays/panel-generic-dpi.c b/drivers/video/omap2/displays/panel-generic-dpi.c
index e5691dd55d4..54f1884ff5b 100644
--- a/drivers/video/omap2/displays/panel-generic-dpi.c
+++ b/drivers/video/omap2/displays/panel-generic-dpi.c
@@ -438,7 +438,8 @@ out:
return -EINVAL;
}
-static bool generic_dpi_panel_is_detected(struct omap_dss_device *dssdev)
+static bool generic_dpi_panel_is_detected(struct omap_dss_device *dssdev,
+ bool force)
{
struct panel_generic_dpi_data *panel_data = get_panel_data(dssdev);
struct i2c_adapter *adapter;
@@ -446,7 +447,7 @@ static bool generic_dpi_panel_is_detected(struct omap_dss_device *dssdev)
adapter = i2c_get_adapter(panel_data->i2c_bus_num);
if (!adapter) {
- return omapdss_default_is_detected(dssdev);
+ return omapdss_default_is_detected(dssdev, force);
}
return (do_probe_ddc_edid(adapter, &out, 0, 1) == 0);
diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c
index b1466d8d388..c909d3a8bb3 100644
--- a/drivers/video/omap2/dss/display.c
+++ b/drivers/video/omap2/dss/display.c
@@ -327,7 +327,7 @@ int omapdss_default_check_timings(struct omap_dss_device *dssdev,
}
EXPORT_SYMBOL(omapdss_default_check_timings);
-bool omapdss_default_is_detected(struct omap_dss_device *dssdev)
+bool omapdss_default_is_detected(struct omap_dss_device *dssdev, bool force)
{
if (dssdev->state == OMAP_DSS_DISPLAY_SUSPENDED) {
/* show resume info for suspended displays */
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
index 8c32717b73c..a346c4b068b 100644
--- a/drivers/video/omap2/dss/dss.h
+++ b/drivers/video/omap2/dss/dss.h
@@ -483,7 +483,7 @@ void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev);
void omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev);
int omapdss_hdmi_display_check_timing(struct omap_dss_device *dssdev,
struct omap_video_timings *timings);
-bool omapdss_hdmi_is_detected(struct omap_dss_device *dssdev);
+bool omapdss_hdmi_is_detected(struct omap_dss_device *dssdev, bool force);
int omapdss_hdmi_get_edid(struct omap_dss_device *dssdev, u8 *buf, int len);
int hdmi_panel_init(void);
void hdmi_panel_exit(void);
diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c
index 13fcb99ff58..87d48ece233 100644
--- a/drivers/video/omap2/dss/hdmi.c
+++ b/drivers/video/omap2/dss/hdmi.c
@@ -1100,7 +1100,7 @@ static void hdmi_power_off(struct omap_dss_device *dssdev)
hdmi.edid_set = 0;
}
-bool omapdss_hdmi_is_detected(struct omap_dss_device *dssdev)
+bool omapdss_hdmi_is_detected(struct omap_dss_device *dssdev, bool force)
{
u32 r;
diff --git a/drivers/video/omap2/dss/hdmi_omap4_panel.c b/drivers/video/omap2/dss/hdmi_omap4_panel.c
index 9ab7f81796a..0bdca3baad4 100644
--- a/drivers/video/omap2/dss/hdmi_omap4_panel.c
+++ b/drivers/video/omap2/dss/hdmi_omap4_panel.c
@@ -143,9 +143,9 @@ err:
return r;
}
-static bool hdmi_panel_is_detected(struct omap_dss_device *dssdev)
+static bool hdmi_panel_is_detected(struct omap_dss_device *dssdev, bool force)
{
- return omapdss_hdmi_is_detected(dssdev);
+ return omapdss_hdmi_is_detected(dssdev, force);
}
static int hdmi_get_edid(struct omap_dss_device *dssdev, u8 *buf, int len)