linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jon Hunter <jonathanh@nvidia.com>
To: Thierry Reding <thierry.reding@gmail.com>,
	David Airlie <airlied@linux.ie>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	Wolfram Sang <wsa@the-dreams.de>,
	Linus Walleij <linus.walleij@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>
Cc: dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org,
	linux-i2c@vger.kernel.org, linux-gpio@vger.kernel.org,
	devicetree@vger.kernel.org, Jon Hunter <jonathanh@nvidia.com>
Subject: [RFC PATCH 05/13] drm/tegra: Prepare DPAUX for supporting generic PM domains
Date: Fri, 17 Jun 2016 13:03:39 +0100	[thread overview]
Message-ID: <1466165027-17917-6-git-send-email-jonathanh@nvidia.com> (raw)
In-Reply-To: <1466165027-17917-1-git-send-email-jonathanh@nvidia.com>

To utilise the DPAUX on Tegra, the SOR power partition must be enabled.
Now that Tegra supports the generic PM domain framework we manage the
SOR power partition via this framework for DPAUX. However, the sequence
for gating/ungating the SOR power partition requires that the DPAUX
reset is asserted/de-asserted at the time the SOR power partition is
gated/ungated, respectively. Now that the reset control core assumes
that resets are exclusive, the Tegra generic PM domain code and the
DPAUX driver cannot request the same reset unless we mark the resets as
shared. Sharing resets we will not work in this case because we cannot
guarantee that the reset is asserted/de-asserted at the appropriate
time. Therefore, given that the Tegra generic PM domain code will handle
the DPAUX reset, do not request the reset in the DPAUX driver if the
DPAUX device has a PM domain associated.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
 drivers/gpu/drm/tegra/dpaux.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/tegra/dpaux.c b/drivers/gpu/drm/tegra/dpaux.c
index d696a7e45935..289bb064ca1e 100644
--- a/drivers/gpu/drm/tegra/dpaux.c
+++ b/drivers/gpu/drm/tegra/dpaux.c
@@ -334,11 +334,14 @@ static int tegra_dpaux_probe(struct platform_device *pdev)
 		return -ENXIO;
 	}
 
-	dpaux->rst = devm_reset_control_get(&pdev->dev, "dpaux");
-	if (IS_ERR(dpaux->rst)) {
-		dev_err(&pdev->dev, "failed to get reset control: %ld\n",
-			PTR_ERR(dpaux->rst));
-		return PTR_ERR(dpaux->rst);
+	if (!pdev->dev.pm_domain) {
+		dpaux->rst = devm_reset_control_get(&pdev->dev, "dpaux");
+		if (IS_ERR(dpaux->rst)) {
+			dev_err(&pdev->dev,
+				"failed to get reset control: %ld\n",
+				PTR_ERR(dpaux->rst));
+			return PTR_ERR(dpaux->rst);
+		}
 	}
 
 	if (of_device_is_compatible(pdev->dev.of_node,
@@ -374,7 +377,8 @@ static int tegra_dpaux_probe(struct platform_device *pdev)
 		goto disable_sor_clk;
 	}
 
-	reset_control_deassert(dpaux->rst);
+	if (dpaux->rst)
+		reset_control_deassert(dpaux->rst);
 
 	dpaux->clk_parent = devm_clk_get(&pdev->dev, "parent");
 	if (IS_ERR(dpaux->clk_parent)) {
@@ -452,7 +456,8 @@ static int tegra_dpaux_probe(struct platform_device *pdev)
 disable_parent_clk:
 	clk_disable_unprepare(dpaux->clk_parent);
 assert_reset:
-	reset_control_assert(dpaux->rst);
+	if (dpaux->rst)
+		reset_control_assert(dpaux->rst);
 	clk_disable_unprepare(dpaux->clk);
 disable_sor_clk:
 	if (dpaux->clk_sor)
@@ -477,7 +482,8 @@ static int tegra_dpaux_remove(struct platform_device *pdev)
 	cancel_work_sync(&dpaux->work);
 
 	clk_disable_unprepare(dpaux->clk_parent);
-	reset_control_assert(dpaux->rst);
+	if (dpaux->rst)
+		reset_control_assert(dpaux->rst);
 	clk_disable_unprepare(dpaux->clk);
 	if (dpaux->clk_sor)
 		clk_disable_unprepare(dpaux->clk_sor);
-- 
2.1.4

  parent reply	other threads:[~2016-06-17 12:03 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-17 12:03 [RFC PATCH 00/13] Add support for Tegra DPAUX pinctrl Jon Hunter
2016-06-17 12:03 ` [RFC PATCH 02/13] drm/tegra: Add helper functions for setting up DPAUX pads Jon Hunter
2016-06-17 16:11   ` Thierry Reding
2016-06-20  7:59     ` Jon Hunter
2016-06-17 12:03 ` [RFC PATCH 04/13] drm/tegra: Add sor-safe clock for DPAUX on Tegra210 Jon Hunter
2016-06-17 16:18   ` Thierry Reding
2016-06-20  8:43     ` Jon Hunter
2016-06-20 16:33       ` Thierry Reding
2016-06-17 12:03 ` Jon Hunter [this message]
     [not found] ` <1466165027-17917-1-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-06-17 12:03   ` [RFC PATCH 01/13] drm/tegra: Clean-up if probing DPAUX fails Jon Hunter
2016-06-17 12:03   ` [RFC PATCH 03/13] dt-bindings: drm/tegra: Update DPAUX documentation Jon Hunter
2016-06-17 16:13     ` Thierry Reding
     [not found]       ` <20160617161306.GD27475-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2016-06-20  8:02         ` Jon Hunter
2016-06-17 12:03   ` [RFC PATCH 06/13] pinctrl: pinconf: Add generic helper function for freeing mappings Jon Hunter
     [not found]     ` <1466165027-17917-7-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-06-18  9:04       ` Linus Walleij
2016-06-20  9:26         ` Jon Hunter
2016-06-17 12:03   ` [RFC PATCH 13/13] arm64: tegra: Add DPAUX pinctrl bindings Jon Hunter
2016-06-17 16:50     ` Thierry Reding
2016-06-23  7:46     ` Linus Walleij
2016-06-17 16:56   ` [RFC PATCH 00/13] Add support for Tegra DPAUX pinctrl Thierry Reding
     [not found]     ` <20160617165611.GO27475-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2016-06-17 16:58       ` Thierry Reding
     [not found]         ` <20160617165842.GP27475-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2016-06-23  7:49           ` Linus Walleij
2016-06-23  8:04             ` Thierry Reding
     [not found]               ` <20160623080400.GA8136-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2016-06-23  9:21                 ` Linus Walleij
2016-06-17 12:03 ` [RFC PATCH 07/13] dt-bindings: i2c: Add support for 'i2c-bus' subnode Jon Hunter
2016-06-17 16:23   ` Thierry Reding
     [not found]   ` <1466165027-17917-8-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-06-17 16:30     ` Mark Rutland
2016-06-17 16:45       ` Thierry Reding
     [not found]         ` <20160617164525.GL27475-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2016-06-20 11:15           ` Jon Hunter
2016-06-17 12:03 ` [RFC PATCH 08/13] i2c: core: " Jon Hunter
2016-06-17 16:24   ` Thierry Reding
2016-06-20  8:57     ` Jon Hunter
2016-06-17 12:03 ` [RFC PATCH 09/13] dt-bindings: drm/tegra: Add DPAUX pinctrl documentation Jon Hunter
2016-06-17 16:31   ` Thierry Reding
2016-06-20  9:10     ` Jon Hunter
2016-06-17 12:03 ` [RFC PATCH 10/13] drm/tegra: Add pinctrl support for DPAUX Jon Hunter
     [not found]   ` <1466165027-17917-11-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-06-17 12:42     ` Jon Hunter
2016-06-17 16:37   ` Thierry Reding
2016-06-20 10:45     ` Jon Hunter
2016-06-17 12:03 ` [RFC PATCH 11/13] arm64: tegra: Add SOR power-domain node Jon Hunter
2016-06-17 16:42   ` Thierry Reding
2016-06-20  9:18     ` Jon Hunter
2016-06-20 16:37       ` Thierry Reding
2016-06-17 16:44   ` Thierry Reding
2016-06-20  9:20     ` Jon Hunter
2016-06-17 12:03 ` [RFC PATCH 12/13] arm64: tegra: Add sor-safe clock to DPAUX binding Jon Hunter
     [not found]   ` <1466165027-17917-13-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-06-17 16:47     ` Thierry Reding
2016-06-20  9:23       ` Jon Hunter
2016-06-20 16:38         ` Thierry Reding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1466165027-17917-6-git-send-email-jonathanh@nvidia.com \
    --to=jonathanh@nvidia.com \
    --cc=airlied@linux.ie \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gnurou@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=swarren@wwwdotorg.org \
    --cc=thierry.reding@gmail.com \
    --cc=wsa@the-dreams.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).