From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Stultz Subject: [PATCH 2/5 v3] drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event() Date: Tue, 3 Jan 2017 11:41:39 -0800 Message-ID: <1483472502-16403-3-git-send-email-john.stultz@linaro.org> References: <1483472502-16403-1-git-send-email-john.stultz@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x231.google.com (mail-pg0-x231.google.com [IPv6:2607:f8b0:400e:c05::231]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB8236E655 for ; Tue, 3 Jan 2017 19:41:53 +0000 (UTC) Received: by mail-pg0-x231.google.com with SMTP id g1so178781165pgn.0 for ; Tue, 03 Jan 2017 11:41:53 -0800 (PST) In-Reply-To: <1483472502-16403-1-git-send-email-john.stultz@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: lkml Cc: dri-devel@lists.freedesktop.org, Wolfram Sang , Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org SW4gY2hhc2luZyBkb3duIGEgcHJldmlvdXMgaXNzdWUgd2l0aCBFRElEIHByb2JpbmcgZnJvbSBj YWxsaW5nCmRybV9oZWxwZXJfaHBkX2lycV9ldmVudCgpIGZyb20gaXJxIGNvbnRleHQsIExhdXJl bnQgbm90aWNlZAp0aGF0IHRoZSBEUk0gZG9jdW1lbnRhdGlvbiBzdWdnZXN0cyB0aGF0CmRybV9r bXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgoKVGh1cyB0 aGlzIHBhdGNoIHJlcGxhY2VzIGRybV9oZWxwZXJfaHBkX2lycV9ldmVudCgpIHdpdGgKZHJtX2tt c19oZWxwZXJfaG90cGx1Z19ldmVudCgpLCB3aGljaCByZXF1aXJlcyB3ZSB1cGRhdGUgdGhlCmNv bm5lY3Rvci5zdGF0dXMgZW50cnkgYW5kIG9ubHkgY2FsbCBfaG90cGx1Z19ldmVudCgpIHdoZW4g dGhlCnN0YXR1cyBjaGFuZ2VzLgoKQ2M6IERhdmlkIEFpcmxpZSA8YWlybGllZEBsaW51eC5pZT4K Q2M6IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+CkNjOiBXb2xmcmFtIFNh bmcgPHdzYStyZW5lc2FzQHNhbmctZW5naW5lZXJpbmcuY29tPgpDYzogTGFycy1QZXRlciBDbGF1 c2VuIDxsYXJzQG1ldGFmb28uZGU+CkNjOiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNo YXJ0QGlkZWFzb25ib2FyZC5jb20+CkNjOiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn ClNpZ25lZC1vZmYtYnk6IEpvaG4gU3R1bHR6IDxqb2huLnN0dWx0ekBsaW5hcm8ub3JnPgotLS0K djM6IFVwZGF0ZSBjb25uZWN0b3Iuc3RhdHVzIHZhbHVlIGFuZCBvbmx5IGNhbGwgX19ob3RwbHVn X2V2ZW50KCkKICAgIHdoZW4gdGhhdCBzdGF0dXMgY2hhbmdlcywgYXMgc3VnZ2VzdGVkIGJ5IExh dXJlbnQuCgogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMgfCAx NiArKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9h ZHY3NTExX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2 LmMKaW5kZXggNGZjZWE0NC4uZDkzZDY2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9h ZHY3NTExL2Fkdjc1MTFfZHJ2LmMKQEAgLTQwNSw4ICs0MDUsMjIgQEAgc3RhdGljIGJvb2wgYWR2 NzUxMV9ocGQoc3RydWN0IGFkdjc1MTEgKmFkdjc1MTEpCiBzdGF0aWMgdm9pZCBhZHY3NTExX2hw ZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgYWR2NzUxMSAqYWR2 NzUxMSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYWR2NzUxMSwgaHBkX3dvcmspOworCWVu dW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzOworCXVuc2lnbmVkIGludCB2YWw7CisJaW50 IHJldDsKKworCXJldCA9IHJlZ21hcF9yZWFkKGFkdjc1MTEtPnJlZ21hcCwgQURWNzUxMV9SRUdf U1RBVFVTLCAmdmFsKTsKKwlpZiAocmV0IDwgMCkKKwkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1 c19kaXNjb25uZWN0ZWQ7CisJZWxzZSBpZiAodmFsICYgQURWNzUxMV9TVEFUVVNfSFBEKQorCQlz dGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKKwllbHNlCisJCXN0YXR1cyA9IGNv bm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOworCisJaWYgKGFkdjc1MTEtPmNvbm5lY3Rvci5z dGF0dXMgIT0gc3RhdHVzKQorCQlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGFkdjc1MTEt PmNvbm5lY3Rvci5kZXYpOwogCi0JZHJtX2hlbHBlcl9ocGRfaXJxX2V2ZW50KGFkdjc1MTEtPmNv bm5lY3Rvci5kZXYpOworCWFkdjc1MTEtPmNvbm5lY3Rvci5zdGF0dXMgPSBzdGF0dXM7CiB9CiAK IHN0YXRpYyBpbnQgYWR2NzUxMV9pcnFfcHJvY2VzcyhzdHJ1Y3QgYWR2NzUxMSAqYWR2NzUxMSwg Ym9vbCBwcm9jZXNzX2hwZCkKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934439AbdACTn1 (ORCPT ); Tue, 3 Jan 2017 14:43:27 -0500 Received: from mail-pg0-f53.google.com ([74.125.83.53]:36529 "EHLO mail-pg0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935601AbdACTlw (ORCPT ); Tue, 3 Jan 2017 14:41:52 -0500 From: John Stultz To: lkml Cc: John Stultz , David Airlie , Archit Taneja , Wolfram Sang , Lars-Peter Clausen , Laurent Pinchart , dri-devel@lists.freedesktop.org Subject: [PATCH 2/5 v3] drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event() Date: Tue, 3 Jan 2017 11:41:39 -0800 Message-Id: <1483472502-16403-3-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1483472502-16403-1-git-send-email-john.stultz@linaro.org> References: <1483472502-16403-1-git-send-email-john.stultz@linaro.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In chasing down a previous issue with EDID probing from calling drm_helper_hpd_irq_event() from irq context, Laurent noticed that the DRM documentation suggests that drm_kms_helper_hotplug_event() should be used instead. Thus this patch replaces drm_helper_hpd_irq_event() with drm_kms_helper_hotplug_event(), which requires we update the connector.status entry and only call _hotplug_event() when the status changes. Cc: David Airlie Cc: Archit Taneja Cc: Wolfram Sang Cc: Lars-Peter Clausen Cc: Laurent Pinchart Cc: dri-devel@lists.freedesktop.org Signed-off-by: John Stultz --- v3: Update connector.status value and only call __hotplug_event() when that status changes, as suggested by Laurent. drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c index 4fcea44..d93d66f 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c @@ -405,8 +405,22 @@ static bool adv7511_hpd(struct adv7511 *adv7511) static void adv7511_hpd_work(struct work_struct *work) { struct adv7511 *adv7511 = container_of(work, struct adv7511, hpd_work); + enum drm_connector_status status; + unsigned int val; + int ret; + + ret = regmap_read(adv7511->regmap, ADV7511_REG_STATUS, &val); + if (ret < 0) + status = connector_status_disconnected; + else if (val & ADV7511_STATUS_HPD) + status = connector_status_connected; + else + status = connector_status_disconnected; + + if (adv7511->connector.status != status) + drm_kms_helper_hotplug_event(adv7511->connector.dev); - drm_helper_hpd_irq_event(adv7511->connector.dev); + adv7511->connector.status = status; } static int adv7511_irq_process(struct adv7511 *adv7511, bool process_hpd) -- 2.7.4