@@ -92,10 +92,32 @@ struct imx_ldb {
#define imx_ldb_entry_dbg(ch) \
imx_ldb_dbg((ch), "%s\n", __func__)
+/*
+ * Use the result of ddc probe to detect LVDS display presence
+ * if a ddc DT node was specified.
+ */
static enum drm_connector_status imx_ldb_connector_detect(
struct drm_connector *connector, bool force)
{
- return connector_status_connected;
+ struct imx_ldb_channel *imx_ldb_ch = con_to_imx_ldb_ch(connector);
+ enum drm_connector_status status;
+
+ if (imx_ldb_ch->ddc) {
+ if (drm_probe_ddc(imx_ldb_ch->ddc)) {
+ status = connector_status_connected;
+ imx_ldb_dbg(imx_ldb_ch,
+ "ddc probe success, connected\n");
+ } else {
+ status = connector_status_disconnected;
+ imx_ldb_dbg(imx_ldb_ch,
+ "ddc probe failed, disconnected\n");
+ }
+ } else {
+ status = connector_status_connected;
+ imx_ldb_dbg(imx_ldb_ch, "no ddc, assuming connected\n");
+ }
+
+ return status;
}
static int imx_ldb_connector_get_modes(struct drm_connector *connector)
If a ddc node was specified in the device tree, use it in imx_ldb_connector_detect() to probe the ddc with drm_probe_ddc(), if the result is success, we know there is a display connected so return connected status. Otherwise (no ddc specified in DT) we just have to assume connected status. Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com> --- drivers/staging/imx-drm/imx-ldb.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-)