summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/omapdrm/dss
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/omapdrm/dss')
-rw-r--r--drivers/gpu/drm/omapdrm/dss/hdmi4.c61
-rw-r--r--drivers/gpu/drm/omapdrm/dss/hdmi5.c46
-rw-r--r--drivers/gpu/drm/omapdrm/dss/omapdss.h25
3 files changed, 1 insertions, 131 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
index 52daae36935a..b9bcd6e681e8 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
@@ -321,47 +321,6 @@ static void hdmi_disconnect(struct omap_dss_device *src,
omapdss_device_disconnect(dst, dst->next);
}
-#define MAX_EDID 512
-
-static struct edid *hdmi_read_edid_data(struct omap_hdmi *hdmi,
- struct drm_connector *connector)
-{
- u8 *edid;
- int r;
-
- edid = kzalloc(MAX_EDID, GFP_KERNEL);
- if (!edid)
- return NULL;
-
- r = hdmi4_core_ddc_read(&hdmi->core, edid, 0, EDID_LENGTH);
- if (r)
- goto error;
-
- if (edid[0x7e] > 0) {
- char checksum = 0;
- unsigned int i;
-
- r = hdmi4_core_ddc_read(&hdmi->core, edid + EDID_LENGTH, 1,
- EDID_LENGTH);
- if (r)
- goto error;
-
- for (i = 0; i < EDID_LENGTH; ++i)
- checksum += edid[EDID_LENGTH + i];
-
- if (checksum != 0) {
- DSSERR("E-EDID checksum failed!!\n");
- goto error;
- }
- }
-
- return (struct edid *)edid;
-
-error:
- kfree(edid);
- return NULL;
-}
-
static struct edid *
hdmi_do_read_edid(struct omap_hdmi *hdmi,
struct edid *(*read)(struct omap_hdmi *hdmi,
@@ -411,28 +370,9 @@ done:
return edid;
}
-static struct edid *hdmi_read_edid(struct omap_dss_device *dssdev)
-{
- return hdmi_do_read_edid(dssdev_to_hdmi(dssdev), hdmi_read_edid_data,
- NULL);
-}
-
-static void hdmi_lost_hotplug(struct omap_dss_device *dssdev)
-{
- struct omap_hdmi *hdmi = dssdev_to_hdmi(dssdev);
-
- hdmi4_cec_set_phys_addr(&hdmi->core, CEC_PHYS_ADDR_INVALID);
-}
-
static const struct omap_dss_device_ops hdmi_ops = {
.connect = hdmi_connect,
.disconnect = hdmi_disconnect,
-
- .read_edid = hdmi_read_edid,
-
- .hdmi = {
- .lost_hotplug = hdmi_lost_hotplug,
- },
};
/* -----------------------------------------------------------------------------
@@ -804,7 +744,6 @@ static int hdmi4_init_output(struct omap_hdmi *hdmi)
out->ops = &hdmi_ops;
out->owner = THIS_MODULE;
out->of_port = 0;
- out->ops_flags = OMAP_DSS_DEVICE_OP_EDID;
r = omapdss_device_init_output(out, &hdmi->bridge);
if (r < 0) {
diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
index f07fd5c6dc39..effe4a9401ff 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
@@ -319,43 +319,6 @@ static void hdmi_disconnect(struct omap_dss_device *src,
omapdss_device_disconnect(dst, dst->next);
}
-#define MAX_EDID 512
-
-static struct edid *hdmi_read_edid_data(struct omap_hdmi *hdmi,
- struct drm_connector *connector)
-{
- struct hdmi_core_data *core = &hdmi->core;
- int max_ext_blocks = 3;
- int r, n, i;
- u8 *edid;
-
- edid = kzalloc(MAX_EDID, GFP_KERNEL);
- if (!edid)
- return NULL;
-
- r = hdmi5_core_ddc_read(core, edid, 0, EDID_LENGTH);
- if (r)
- goto error;
-
- n = edid[0x7e];
-
- if (n > max_ext_blocks)
- n = max_ext_blocks;
-
- for (i = 1; i <= n; i++) {
- r = hdmi5_core_ddc_read(core, edid + i * EDID_LENGTH, i,
- EDID_LENGTH);
- if (r)
- goto error;
- }
-
- return (struct edid *)edid;
-
-error:
- kfree(edid);
- return NULL;
-}
-
static struct edid *
hdmi_do_read_edid(struct omap_hdmi *hdmi,
struct edid *(*read)(struct omap_hdmi *hdmi,
@@ -400,17 +363,9 @@ hdmi_do_read_edid(struct omap_hdmi *hdmi,
return (struct edid *)edid;
}
-static struct edid *hdmi_read_edid(struct omap_dss_device *dssdev)
-{
- return hdmi_do_read_edid(dssdev_to_hdmi(dssdev), hdmi_read_edid_data,
- NULL);
-}
-
static const struct omap_dss_device_ops hdmi_ops = {
.connect = hdmi_connect,
.disconnect = hdmi_disconnect,
-
- .read_edid = hdmi_read_edid,
};
/* -----------------------------------------------------------------------------
@@ -763,7 +718,6 @@ static int hdmi5_init_output(struct omap_hdmi *hdmi)
out->ops = &hdmi_ops;
out->owner = THIS_MODULE;
out->of_port = 0;
- out->ops_flags = OMAP_DSS_DEVICE_OP_EDID;
r = omapdss_device_init_output(out, &hdmi->bridge);
if (r < 0) {
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index 30a12cf91cbb..cb79e05c902d 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -285,10 +285,6 @@ struct omap_dss_writeback_info {
u8 pre_mult_alpha;
};
-struct omapdss_hdmi_ops {
- void (*lost_hotplug)(struct omap_dss_device *dssdev);
-};
-
struct omapdss_dsi_ops {
void (*disable)(struct omap_dss_device *dssdev, bool disconnect_lanes,
bool enter_ulps);
@@ -356,36 +352,17 @@ struct omap_dss_device_ops {
void (*set_timings)(struct omap_dss_device *dssdev,
const struct drm_display_mode *mode);
- bool (*detect)(struct omap_dss_device *dssdev);
-
- void (*register_hpd_cb)(struct omap_dss_device *dssdev,
- void (*cb)(void *cb_data,
- enum drm_connector_status status),
- void *cb_data);
- void (*unregister_hpd_cb)(struct omap_dss_device *dssdev);
-
- struct edid *(*read_edid)(struct omap_dss_device *dssdev);
-
int (*get_modes)(struct omap_dss_device *dssdev,
struct drm_connector *connector);
- union {
- const struct omapdss_hdmi_ops hdmi;
- const struct omapdss_dsi_ops dsi;
- };
+ const struct omapdss_dsi_ops dsi;
};
/**
* enum omap_dss_device_ops_flag - Indicates which device ops are supported
- * @OMAP_DSS_DEVICE_OP_DETECT: The device supports output connection detection
- * @OMAP_DSS_DEVICE_OP_HPD: The device supports all hot-plug-related operations
- * @OMAP_DSS_DEVICE_OP_EDID: The device supports reading EDID
* @OMAP_DSS_DEVICE_OP_MODES: The device supports reading modes
*/
enum omap_dss_device_ops_flag {
- OMAP_DSS_DEVICE_OP_DETECT = BIT(0),
- OMAP_DSS_DEVICE_OP_HPD = BIT(1),
- OMAP_DSS_DEVICE_OP_EDID = BIT(2),
OMAP_DSS_DEVICE_OP_MODES = BIT(3),
};