Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp3472653ybi; Tue, 2 Jul 2019 08:21:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqyZfIiukqK8YsTYa9K8s5wSK0EEY8QHQ/DskW2uHyZpBfYfmBn2+FDrMflLF/eoPA/adeNu X-Received: by 2002:a63:f957:: with SMTP id q23mr31725078pgk.326.1562080915089; Tue, 02 Jul 2019 08:21:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562080915; cv=none; d=google.com; s=arc-20160816; b=iezCrWEgpyphMGFFG1tck+rJb47luIeGINU0PDUWDmXKNOCYCEyWn1XgddBvpDxtw8 sqasVr7Q2ZBJtzKZOebXU3hWTgdeGFLIs0pstX/PtbXNvtu7dp75n9LIVqrpTVtyeFto ed/i8LViQ1vshJnH6n60omv2f+T0/JMAXLT/jRvg+JLrRkffcA45zwoKZbv7BWsIY3k+ bgpTXZi3AVJGyNpoPBxgJg/2VnB1x2UvQhVmEyf1DVR5vFeLHz/H5XWmMvhtx8NkGmrx Hvg2zWYt+6g5Jd7RhIj7TT840ldnaBp1ATs8NWe7RV7pG8QZLx1tv8or4F7t7/n+31PE rCxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=sEsKfFneSajQfFoDwnlUe/iQJa1K8C4M431SKpBw3aM=; b=ES5EosAFmzoOUq5d8JNpWVxu0F/AosnZ1ljjXK8wKCCR/A7dADwEhUi6JVK6+29zNf jmq6ZU9i5brHcJoE8Gk/sHKoYjNXEfEG2iCBZeKI6lX0iqPGokxdISq1miiMiRwc2TJk mqea5Rv92iyI2r2cqo/scsFx1fGZAKOwcI60NjWyej2UWU2RQLy9Kb58h1HXXcDuhHdQ FCunp6lqfYF9eVtW9pwc/De6WNu7WCpyyxWqkWhjdbJQTMEX3GHDfCUPJKqUJpQJb1EM u6uaS7tv1MnE7iErYeB/igs2rTldAu/vMIqxSTQeM7Pxn4IE6Nxmf02v68+g16m7suO/ j+cA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=AjyAX71L; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 59si14035398plp.90.2019.07.02.08.21.40; Tue, 02 Jul 2019 08:21:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=AjyAX71L; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726936AbfGBPUd (ORCPT + 99 others); Tue, 2 Jul 2019 11:20:33 -0400 Received: from perceval.ideasonboard.com ([213.167.242.64]:56150 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725780AbfGBPUd (ORCPT ); Tue, 2 Jul 2019 11:20:33 -0400 Received: from pendragon.ideasonboard.com (dfj612yhrgyx302h3jwwy-3.rev.dnainternet.fi [IPv6:2001:14ba:21f5:5b00:ce28:277f:58d7:3ca4]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 83D8C255; Tue, 2 Jul 2019 17:20:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1562080830; bh=MQPbS86dIXLIzRT7cKc2d+ifqWU4LvOkgbT4PqUtUs8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=AjyAX71LRoe8eRV+OuUkmQlR9YQO/vf1ZVwhHDHWiea63RF+ToCjI1skAe8BqYFZ/ PmWK4A7hGuqGDfDm0bX9JeknSYfL9JDtJjYykDHFVlViecPn3Xsmu1jZJpC4V4Uonz xTA1y9MKIbsTw5Dc5U5MuggGLuy54MMFTBhSYe+g= Date: Tue, 2 Jul 2019 18:20:11 +0300 From: Laurent Pinchart To: Rob Clark Cc: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, aarch64-laptops@lists.linaro.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Rob Clark , Andrzej Hajda , David Airlie , Daniel Vetter , linux-kernel@vger.kernel.org Subject: Re: [PATCH 5/5] drm/bridge: ti-sn65dsi86: support booloader enabled display Message-ID: <20190702152011.GE5033@pendragon.ideasonboard.com> References: <20190630150230.7878-1-robdclark@gmail.com> <20190630150230.7878-6-robdclark@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20190630150230.7878-6-robdclark@gmail.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Rob, Thank you for the patch. On Sun, Jun 30, 2019 at 08:01:43AM -0700, Rob Clark wrote: > From: Rob Clark > > Request the enable gpio ASIS to avoid disabling bridge during probe, if > already enabled. And if already enabled, defer enabling runpm until > attach to avoid cutting off the power to the bridge. > > Once we get to attach, we know panel and drm driver are probed > successfully, so at this point it i s safe to enable runpm and reset the > bridge. If we do it earlier, we kill efifb (in the case that panel or > drm driver do not probe successfully, giving the user no way to see what > is going on. > > Signed-off-by: Rob Clark > --- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c > index 7a046bcdd81b..8bdc33576992 100644 > --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c > @@ -257,6 +257,12 @@ static int ti_sn_bridge_attach(struct drm_bridge *bridge) > .node = NULL, > }; > > + if (gpiod_get_value(pdata->enable_gpio)) { > + pm_runtime_enable(pdata->dev); Does this need to be balanced with a pm_runtime_disable() call ? Bridges can be attached and detached at runtime when reloading the display controller drivers, so you need to ensure that detach/re-attach cycles work. > + ti_sn_bridge_resume(pdata->dev); > + ti_sn_bridge_suspend(pdata->dev); > + } > + > ret = drm_connector_init(bridge->dev, &pdata->connector, > &ti_sn_bridge_connector_funcs, > DRM_MODE_CONNECTOR_eDP); > @@ -813,7 +819,7 @@ static int ti_sn_bridge_probe(struct i2c_client *client, > dev_set_drvdata(&client->dev, pdata); > > pdata->enable_gpio = devm_gpiod_get(pdata->dev, "enable", > - GPIOD_OUT_LOW); > + GPIOD_ASIS); > if (IS_ERR(pdata->enable_gpio)) { > DRM_ERROR("failed to get enable gpio from DT\n"); > ret = PTR_ERR(pdata->enable_gpio); > @@ -843,7 +849,9 @@ static int ti_sn_bridge_probe(struct i2c_client *client, > if (ret) > return ret; > > - pm_runtime_enable(pdata->dev); > + if (!gpiod_get_value(pdata->enable_gpio)) { > + pm_runtime_enable(pdata->dev); > + } If I understand the issue correctly, this is part of an effort to avoid disabling a potentially display output until we get as close as possible to display handover, right ? Is there a drawback in always enabling runtime PM when the bridge is attached instead of at probe time ? I think we need to come up with a set of rules for bridge driver authors, otherwise we'll end up with incompatible expectations of bridge drivers and display controller drivers. > > i2c_set_clientdata(client, pdata); > -- Regards, Laurent Pinchart