From patchwork Tue Jan 12 15:38:14 2016
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Philipp Zabel
X-Patchwork-Id: 8018551
Return-Path:
X-Original-To: patchwork-linux-mediatek@patchwork.kernel.org
Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org
Received: from mail.kernel.org (mail.kernel.org [198.145.29.136])
by patchwork2.web.kernel.org (Postfix) with ESMTP id 0FCFCBEEE5
for ;
Tue, 12 Jan 2016 15:39:09 +0000 (UTC)
Received: from mail.kernel.org (localhost [127.0.0.1])
by mail.kernel.org (Postfix) with ESMTP id 306DA203DC
for ;
Tue, 12 Jan 2016 15:39:08 +0000 (UTC)
Received: from bombadil.infradead.org (bombadil.infradead.org
[198.137.202.9])
(using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by mail.kernel.org (Postfix) with ESMTPS id D1DD2203E5
for ;
Tue, 12 Jan 2016 15:39:06 +0000 (UTC)
Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org)
by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux))
id 1aJ12I-0004zG-Ed; Tue, 12 Jan 2016 15:39:06 +0000
Received: from metis.ext.pengutronix.de
([2001:67c:670:201:290:27ff:fe1d:cc33])
by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat
Linux)) id 1aJ12D-0004ro-Fu for linux-mediatek@lists.infradead.org;
Tue, 12 Jan 2016 15:39:02 +0000
Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]
helo=dude.pengutronix.de.)
by metis.ext.pengutronix.de with esmtp (Exim 4.80)
(envelope-from )
id 1aJ11i-0002XK-M2; Tue, 12 Jan 2016 16:38:30 +0100
From: Philipp Zabel
To: alsa-devel@alsa-project.org
Subject: [RFC v3 5/7] drm/mediatek: hdmi: issue notifications
Date: Tue, 12 Jan 2016 16:38:14 +0100
Message-Id: <1452613096-8116-6-git-send-email-p.zabel@pengutronix.de>
X-Mailer: git-send-email 2.6.4
In-Reply-To: <1452613096-8116-1-git-send-email-p.zabel@pengutronix.de>
References: <1452613096-8116-1-git-send-email-p.zabel@pengutronix.de>
X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7
X-SA-Exim-Mail-From: p.zabel@pengutronix.de
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
SAEximRunCond expanded to false
X-PTX-Original-Recipient: linux-mediatek@lists.infradead.org
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
X-CRM114-CacheID: sfid-20160112_073901_796191_A89280B1
X-CRM114-Status: GOOD ( 12.25 )
X-Spam-Score: -1.9 (-)
X-BeenThere: linux-mediatek@lists.infradead.org
X-Mailman-Version: 2.1.20
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Cc: Jean-Francois Moine , Koro Chen ,
Lars-Peter Clausen ,
Russell King - ARM Linux ,
Philipp Zabel ,
Arnaud Pouliquen ,
Liam Girdwood , Jyri Sarha ,
Cawa Cheng , Mark Brown ,
linux-mediatek@lists.infradead.org, kernel@pengutronix.de,
Matthias Brugger
MIME-Version: 1.0
Sender: "Linux-mediatek"
Errors-To:
linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org
X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED,
RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org
X-Virus-Scanned: ClamAV using ClamSMTP
Issue hot-plug detection, EDID update, and ELD update notifications
from the CEC and HDMI drivers.
Signed-off-by: Philipp Zabel
---
Changes since v2:
- Send an initial notification to set the correct jack state.
---
drivers/gpu/drm/mediatek/mtk_cec.c | 11 +++++++++++
drivers/gpu/drm/mediatek/mtk_drm_hdmi_drv.c | 3 +++
2 files changed, 14 insertions(+)
diff --git a/drivers/gpu/drm/mediatek/mtk_cec.c b/drivers/gpu/drm/mediatek/mtk_cec.c
index cba3647..c309920 100644
--- a/drivers/gpu/drm/mediatek/mtk_cec.c
+++ b/drivers/gpu/drm/mediatek/mtk_cec.c
@@ -13,6 +13,7 @@
*/
#include
#include
+#include
#include
#include
#include
@@ -79,6 +80,12 @@ void mtk_cec_set_hpd_event(struct device *dev,
cec->hdmi_dev = hdmi_dev;
cec->hpd_event = hpd_event;
+
+ /* Initial notification event to set jack state */
+ if (mtk_cec_hpd_high(dev))
+ hdmi_event_connect(hdmi_dev);
+ else
+ hdmi_event_disconnect(hdmi_dev);
}
bool mtk_cec_hpd_high(struct device *dev)
@@ -160,6 +167,10 @@ static irqreturn_t mtk_cec_htplg_isr_thread(int irq, void *arg)
if (cec->hpd != hpd) {
dev_info(dev, "hotplug event!,cur hpd = %d, hpd = %d\n",
cec->hpd, hpd);
+ if (hpd)
+ hdmi_event_connect(cec->hdmi_dev);
+ else
+ hdmi_event_disconnect(cec->hdmi_dev);
cec->hpd = hpd;
if (cec->hpd_event)
cec->hpd_event(hpd, cec->hdmi_dev);
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_hdmi_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_hdmi_drv.c
index 0d4a646..1a128c5 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_hdmi_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_hdmi_drv.c
@@ -17,6 +17,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -122,9 +123,11 @@ static int mtk_hdmi_conn_get_modes(struct drm_connector *conn)
hdmi->dvi_mode = !drm_detect_hdmi_monitor(edid);
drm_mode_connector_update_edid_property(conn, edid);
+ hdmi_event_new_edid(hdmi->dev, edid, sizeof(*edid));
ret = drm_add_edid_modes(conn, edid);
drm_edid_to_eld(conn, edid);
+ hdmi_event_new_eld(hdmi->dev, conn->eld);
kfree(edid);
return ret;
}