From mboxrd@z Thu Jan 1 00:00:00 1970 From: Douglas Anderson Subject: [PATCH v2 2/6] drm/panel: simple: Support panels with HPD where HPD isn't connected Date: Thu, 25 Oct 2018 15:21:30 -0700 Message-ID: <20181025222134.174583-2-dianders@chromium.org> References: <20181025222134.174583-1-dianders@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181025222134.174583-1-dianders@chromium.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul , Thierry Reding , Sandeep Panda Cc: David Airlie , linux-arm-msm@vger.kernel.org, Douglas Anderson , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, ryandcase@chromium.org, Laurent Pinchart List-Id: linux-arm-msm@vger.kernel.org U29tZSBlRFAgcGFuZWxzIHRoYXQgYXJlIGRlc2lnbmVkIHRvIGJlIGFsd2F5cyBjb25uZWN0ZWQg dG8gYSBib2FyZAp1c2UgdGhlaXIgSFBEIHNpZ25hbCB0byBzaWduYWwgdGhhdCB0aGV5J3ZlIGZp bmlzaGVkIHBvd2VyaW5nIG9uIGFuZAp0aGV5J3JlIHJlYWR5IHRvIGJlIHRhbGtlZCB0by4KCkhv d2V2ZXIsIGZvciB2YXJpb3VzIHJlYXNvbnMgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBIUEQgc2ln bmFsIGZyb20KdGhlIHBhbmVsIGlzbid0IGFjdHVhbGx5IGhvb2tlZCB1cC4gIEluIHRoZSBjYXNl IHdoZXJlIHRoZSBIUEQgaXNuJ3QKaG9va2VkIHVwIHlvdSBjYW4gbG9vayBhdCB0aGUgdGltaW5n IGRpYWdyYW0gb24gdGhlIHBhbmVsIGRhdGFzaGVldAphbmQgaW5zZXJ0IGEgZGVsYXkgZm9yIHRo ZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoYXQgdGhlIEhQRCBtaWdodAp0YWtlIHRvIGNvbWUg dXAuCgpMZXQncyBhZGQgc3VwcG9ydCBpbiBzaW1wbGUtcGFuZWwgZm9yIHRoaXMgY29uY2VwdC4K CkF0IHRoZSBtb21lbnQgd2Ugd2lsbCBjby1vcHQgdGhlIGV4aXN0aW5nICJwcmVwYXJlIiBkZWxh eSB0byBrZWVwCnRyYWNrIG9mIHRoZSBkZWxheSBhbmQgd2UnbGwgdXNlIGEgYm9vbGVhbiB0byBz cGVjaWZ5IHRoYXQgYSBnaXZlbgpwYW5lbCBzaG91bGQgb25seSBhcHBseSB0aGUgZGVsYXkgaWYg dGhlICJuby1ocGQiIHByb3BlcnR5IHdhcwpzcGVjaWZpZWQuCgpTaWduZWQtb2ZmLWJ5OiBEb3Vn bGFzIEFuZGVyc29uIDxkaWFuZGVyc0BjaHJvbWl1bS5vcmc+Ci0tLQoKQ2hhbmdlcyBpbiB2MjoK LSBVc2UgImhwZF9hYnNlbnRfZGVsYXkiIHByb3BlcnR5IGluc3RlYWQgb2YgYSBib29sICsgcHJl cGFyZSBkZWxheQoKIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zaW1wbGUuYyB8IDE0ICsr KysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2ltcGxlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2ltcGxlLmMKaW5kZXggOTc5NjRmN2YyYWNl Li42ODdmZDA4N2I5ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1z aW1wbGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2ltcGxlLmMKQEAgLTU2 LDYgKzU2LDggQEAgc3RydWN0IHBhbmVsX2Rlc2MgewogCS8qKgogCSAqIEBwcmVwYXJlOiB0aGUg dGltZSAoaW4gbWlsbGlzZWNvbmRzKSB0aGF0IGl0IHRha2VzIGZvciB0aGUgcGFuZWwgdG8KIAkg KiAgICAgICAgICAgYmVjb21lIHJlYWR5IGFuZCBzdGFydCByZWNlaXZpbmcgdmlkZW8gZGF0YQor CSAqIEBocGRfYWJzZW50X2RlbGF5OiBBZGQgdGhpcyB0byB0aGUgcHJlcGFyZSBkZWxheSBpZiB3 ZSBrbm93IEhvdAorCSAqICAgICAgICAgICAgICAgICAgICBQbHVnIERldGVjdCBpc24ndCB1c2Vk LgogCSAqIEBlbmFibGU6IHRoZSB0aW1lIChpbiBtaWxsaXNlY29uZHMpIHRoYXQgaXQgdGFrZXMg Zm9yIHRoZSBwYW5lbCB0bwogCSAqICAgICAgICAgIGRpc3BsYXkgdGhlIGZpcnN0IHZhbGlkIGZy YW1lIGFmdGVyIHN0YXJ0aW5nIHRvIHJlY2VpdmUKIAkgKiAgICAgICAgICB2aWRlbyBkYXRhCkBA IC02Niw2ICs2OCw3IEBAIHN0cnVjdCBwYW5lbF9kZXNjIHsKIAkgKi8KIAlzdHJ1Y3QgewogCQl1 bnNpZ25lZCBpbnQgcHJlcGFyZTsKKwkJdW5zaWduZWQgaW50IGhwZF9hYnNlbnRfZGVsYXk7CiAJ CXVuc2lnbmVkIGludCBlbmFibGU7CiAJCXVuc2lnbmVkIGludCBkaXNhYmxlOwogCQl1bnNpZ25l ZCBpbnQgdW5wcmVwYXJlOwpAQCAtNzksNiArODIsNyBAQCBzdHJ1Y3QgcGFuZWxfc2ltcGxlIHsK IAlzdHJ1Y3QgZHJtX3BhbmVsIGJhc2U7CiAJYm9vbCBwcmVwYXJlZDsKIAlib29sIGVuYWJsZWQ7 CisJYm9vbCBub19ocGQ7CiAKIAljb25zdCBzdHJ1Y3QgcGFuZWxfZGVzYyAqZGVzYzsKIApAQCAt MjAyLDYgKzIwNiw3IEBAIHN0YXRpYyBpbnQgcGFuZWxfc2ltcGxlX3VucHJlcGFyZShzdHJ1Y3Qg ZHJtX3BhbmVsICpwYW5lbCkKIHN0YXRpYyBpbnQgcGFuZWxfc2ltcGxlX3ByZXBhcmUoc3RydWN0 IGRybV9wYW5lbCAqcGFuZWwpCiB7CiAJc3RydWN0IHBhbmVsX3NpbXBsZSAqcCA9IHRvX3BhbmVs X3NpbXBsZShwYW5lbCk7CisJdW5zaWduZWQgaW50IGRlbGF5OwogCWludCBlcnI7CiAKIAlpZiAo cC0+cHJlcGFyZWQpCkBAIC0yMTUsOCArMjIwLDExIEBAIHN0YXRpYyBpbnQgcGFuZWxfc2ltcGxl X3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCiAKIAlncGlvZF9zZXRfdmFsdWVfY2Fu c2xlZXAocC0+ZW5hYmxlX2dwaW8sIDEpOwogCi0JaWYgKHAtPmRlc2MtPmRlbGF5LnByZXBhcmUp Ci0JCW1zbGVlcChwLT5kZXNjLT5kZWxheS5wcmVwYXJlKTsKKwlkZWxheSA9IHAtPmRlc2MtPmRl bGF5LnByZXBhcmU7CisJaWYgKHAtPm5vX2hwZCkKKwkJZGVsYXkgKz0gcC0+ZGVzYy0+ZGVsYXku aHBkX2Fic2VudF9kZWxheTsKKwlpZiAoZGVsYXkpCisJCW1zbGVlcChkZWxheSk7CiAKIAlwLT5w cmVwYXJlZCA9IHRydWU7CiAKQEAgLTMwNSw2ICszMTMsOCBAQCBzdGF0aWMgaW50IHBhbmVsX3Np bXBsZV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBwYW5lbF9kZXNjICpk ZXNjKQogCXBhbmVsLT5wcmVwYXJlZCA9IGZhbHNlOwogCXBhbmVsLT5kZXNjID0gZGVzYzsKIAor CXBhbmVsLT5ub19ocGQgPSBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LT5vZl9ub2RlLCAibm8t aHBkIik7CisKIAlwYW5lbC0+c3VwcGx5ID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRldiwgInBvd2Vy Iik7CiAJaWYgKElTX0VSUihwYW5lbC0+c3VwcGx5KSkKIAkJcmV0dXJuIFBUUl9FUlIocGFuZWwt PnN1cHBseSk7Ci0tIAoyLjE5LjEuNTY4LmcxNTJhZDhlMzM2LWdvb2cKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F4D9ECDE46 for ; Thu, 25 Oct 2018 22:22:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5BBCC2083E for ; Thu, 25 Oct 2018 22:22:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="MShnanCg" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5BBCC2083E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727567AbeJZG4j (ORCPT ); Fri, 26 Oct 2018 02:56:39 -0400 Received: from mail-pf1-f196.google.com ([209.85.210.196]:35762 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726348AbeJZG4h (ORCPT ); Fri, 26 Oct 2018 02:56:37 -0400 Received: by mail-pf1-f196.google.com with SMTP id l17-v6so4898359pff.2 for ; Thu, 25 Oct 2018 15:22:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=neUKq1cuoz4/oKiks/GsHVXngMnTcPnfmEeTBUxyFyg=; b=MShnanCg69KmxODEm+UD+bcmQMTz4pzjVCGBcXmoP7oKfcst2ZTAgw9Ubo8bm1EwpA sHjX+BoGsmck7iFweAoCrQF6pOxBmLCQTBDg46RCtvuyE9tCWfM0/TI7K9nYtxbFf5so i2RXA1fQUmDluKfru+9GuZXhokVFARfSq6zSU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=neUKq1cuoz4/oKiks/GsHVXngMnTcPnfmEeTBUxyFyg=; b=GgGkPC0yqxrZml+PZ9nUoVEvuFvqdUzIcvS0m1IMITrb8Ypc4kD5JPL3Iq1QDveuxw L7/j8xnTnLNNkBLjRkvjwe6+uSHvIYPytCRBVkU1QxKUGFn4fKwFfIHuvfs05qqD5nma ZadhwIgQVx/oEZBbBH0TrwR6r4ytgZyl7sRAXaLNvRKSJXRBtsRKHazl0u3ozg6bJy92 +HmZ8d9KfizK+dcr30svx/BJZYYihalxmlBCaWedWSfvimVRq5Y8mmoO97nSijb1zsj9 IeW7IFC85/PkD20aTuHp23fZShvQ1/wfrXUTOQjsfGhQf8eJBF76cFVJ//sH7LRTtcmG lVfw== X-Gm-Message-State: AGRZ1gIrccyRC3Jpu8t7eyGv9CFnz+q8Q/8PJCgkalZ3fPReFnl+CPol M6zQ1ye/7Vh/FMrkkZYUoTj0vg== X-Google-Smtp-Source: AJdET5dTvtSUFcfnEqsE47nbgEmd/VJ9nhPqfZeCLGcdyEot1aGHtkJlLeEzIzTqRmdWS/eqfcs07A== X-Received: by 2002:a63:9343:: with SMTP id w3-v6mr883015pgm.343.1540506129169; Thu, 25 Oct 2018 15:22:09 -0700 (PDT) Received: from tictac2.mtv.corp.google.com ([2620:15c:202:1:c8e0:70d7:4be7:a36]) by smtp.gmail.com with ESMTPSA id x73-v6sm19813778pfk.139.2018.10.25.15.22.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Oct 2018 15:22:08 -0700 (PDT) From: Douglas Anderson To: Sean Paul , Thierry Reding , Sandeep Panda Cc: linux-arm-msm@vger.kernel.org, Laurent Pinchart , jsanka@codeaurora.org, ryandcase@chromium.org, Douglas Anderson , David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/6] drm/panel: simple: Support panels with HPD where HPD isn't connected Date: Thu, 25 Oct 2018 15:21:30 -0700 Message-Id: <20181025222134.174583-2-dianders@chromium.org> X-Mailer: git-send-email 2.19.1.568.g152ad8e336-goog In-Reply-To: <20181025222134.174583-1-dianders@chromium.org> References: <20181025222134.174583-1-dianders@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some eDP panels that are designed to be always connected to a board use their HPD signal to signal that they've finished powering on and they're ready to be talked to. However, for various reasons it's possible that the HPD signal from the panel isn't actually hooked up. In the case where the HPD isn't hooked up you can look at the timing diagram on the panel datasheet and insert a delay for the maximum amount of time that the HPD might take to come up. Let's add support in simple-panel for this concept. At the moment we will co-opt the existing "prepare" delay to keep track of the delay and we'll use a boolean to specify that a given panel should only apply the delay if the "no-hpd" property was specified. Signed-off-by: Douglas Anderson --- Changes in v2: - Use "hpd_absent_delay" property instead of a bool + prepare delay drivers/gpu/drm/panel/panel-simple.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 97964f7f2ace..687fd087b9fc 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -56,6 +56,8 @@ struct panel_desc { /** * @prepare: the time (in milliseconds) that it takes for the panel to * become ready and start receiving video data + * @hpd_absent_delay: Add this to the prepare delay if we know Hot + * Plug Detect isn't used. * @enable: the time (in milliseconds) that it takes for the panel to * display the first valid frame after starting to receive * video data @@ -66,6 +68,7 @@ struct panel_desc { */ struct { unsigned int prepare; + unsigned int hpd_absent_delay; unsigned int enable; unsigned int disable; unsigned int unprepare; @@ -79,6 +82,7 @@ struct panel_simple { struct drm_panel base; bool prepared; bool enabled; + bool no_hpd; const struct panel_desc *desc; @@ -202,6 +206,7 @@ static int panel_simple_unprepare(struct drm_panel *panel) static int panel_simple_prepare(struct drm_panel *panel) { struct panel_simple *p = to_panel_simple(panel); + unsigned int delay; int err; if (p->prepared) @@ -215,8 +220,11 @@ static int panel_simple_prepare(struct drm_panel *panel) gpiod_set_value_cansleep(p->enable_gpio, 1); - if (p->desc->delay.prepare) - msleep(p->desc->delay.prepare); + delay = p->desc->delay.prepare; + if (p->no_hpd) + delay += p->desc->delay.hpd_absent_delay; + if (delay) + msleep(delay); p->prepared = true; @@ -305,6 +313,8 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc) panel->prepared = false; panel->desc = desc; + panel->no_hpd = of_property_read_bool(dev->of_node, "no-hpd"); + panel->supply = devm_regulator_get(dev, "power"); if (IS_ERR(panel->supply)) return PTR_ERR(panel->supply); -- 2.19.1.568.g152ad8e336-goog