Received: by 10.223.185.116 with SMTP id b49csp96349wrg; Thu, 8 Mar 2018 13:32:44 -0800 (PST) X-Google-Smtp-Source: AG47ELt3GRgpUDupswBqAwiDj+EcnZr8mxmRedDkonfKeX1uqMny2ywU6c/sM8Fp0CodZgLRTfNI X-Received: by 2002:a17:902:7885:: with SMTP id q5-v6mr17025695pll.207.1520544764592; Thu, 08 Mar 2018 13:32:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520544764; cv=none; d=google.com; s=arc-20160816; b=S43BWBN+T9+bqib3Yrl7sp91r008dO7PhteJXGbMXZRMcYGSOmLHD3aR9gblhW5Y+x /VEYh1MwsSSN57Ojt5pa9dfhY5yMu7ILk+/p4F2ddhLmszJ3lsiNYc0FZcbcfXF7/FAL FWWLDSdLuDzLZtZJ2CR7blO1H8AHusi6e6MsAhccTtsjOf3tHHVLj0waApxV/FoSu+AR FwJREEB3Nvmx3gm6XSASNskYZhT7TIGUEPytkE82GfNE8Ay9TLZ615jD2u3rTMaBdhcq xMCUOLMxD7l8clYrfUGDuUG7FEfxxcTedprVfZouoJVcNzIhVVGBCixAwsom6azilC9A 7scA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=TzQrw+MlCfzz6ukT7zT96vT08tnBQ0KDsVeL8I1IRak=; b=SIDdzp087EmuUyq3ahD4ss2AHy/QuRJtPhBDLtrwO26WnO0qVlyMhmuG/BT6jJB0K3 rAL6t++cBcN+qFKBQEMfEf1qTdPyuL+h7ft4kE3BUxUAQruiR2bwkmOX9twiAQxA61zA PO1kXZ+793J3SlBmkzfjjQIbvDTwmJMJSs+IkmRvftcqrtegK4OdQqBzC3qbD5opViz3 KYHVd8tCiW0S7DgQ+6DH3ataUEw+iSPQ/im36WCfIZnmTp/ZHjeZKCzggVGcyDpeAa0o UANs+GyxxpAyEmUTHeAs+hRC5oZCvzNMUdxGyFwMauvW9SAelIpoxdMOTTvZTFB0SDUA 3+JA== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m3-v6si15407827plb.480.2018.03.08.13.32.29; Thu, 08 Mar 2018 13:32:44 -0800 (PST) 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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751083AbeCHVbO convert rfc822-to-8bit (ORCPT + 99 others); Thu, 8 Mar 2018 16:31:14 -0500 Received: from hqemgate16.nvidia.com ([216.228.121.65]:8947 "EHLO hqemgate16.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750728AbeCHVbM (ORCPT ); Thu, 8 Mar 2018 16:31:12 -0500 Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate16.nvidia.com id ; Thu, 08 Mar 2018 13:31:10 -0800 Received: from HQMAIL104.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Thu, 08 Mar 2018 13:31:11 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Thu, 08 Mar 2018 13:31:11 -0800 Received: from UKMAIL101.nvidia.com (10.26.138.13) by HQMAIL104.nvidia.com (172.18.146.11) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 8 Mar 2018 21:31:10 +0000 Received: from [10.26.11.23] (10.26.11.23) by UKMAIL101.nvidia.com (10.26.138.13) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 8 Mar 2018 21:31:07 +0000 Subject: Re: [PATCH 2/3] usb: xhci: tegra: Add runtime PM support To: Mathias Nyman , Mathias Nyman , Greg Kroah-Hartman , Thierry Reding CC: , , References: <1518626085-29102-1-git-send-email-jonathanh@nvidia.com> <1518626085-29102-2-git-send-email-jonathanh@nvidia.com> <54bd00b7-2835-a253-0399-370e8c8203b8@linux.intel.com> From: Jon Hunter Message-ID: Date: Thu, 8 Mar 2018 21:31:07 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <54bd00b7-2835-a253-0399-370e8c8203b8@linux.intel.com> X-Originating-IP: [10.26.11.23] X-ClientProxiedBy: UKMAIL102.nvidia.com (10.26.138.15) To UKMAIL101.nvidia.com (10.26.138.13) Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/03/18 14:18, Mathias Nyman wrote: > On 14.02.2018 18:34, Jon Hunter wrote: >> Add runtime PM support to the Tegra XHCI driver and move the function >> calls to enable/disable the clocks, regulators and PHY into the runtime >> PM callbacks. >> >> Signed-off-by: Jon Hunter >> --- >>   drivers/usb/host/xhci-tegra.c | 80 >> ++++++++++++++++++++++++++++++------------- >>   1 file changed, 56 insertions(+), 24 deletions(-) >> >> diff --git a/drivers/usb/host/xhci-tegra.c >> b/drivers/usb/host/xhci-tegra.c >> index 02b0b24faa58..42aa67858b53 100644 >> --- a/drivers/usb/host/xhci-tegra.c >> +++ b/drivers/usb/host/xhci-tegra.c >> @@ -18,6 +18,7 @@ >>   #include >>   #include >>   #include >> +#include >>   #include >>   #include >>   #include >> @@ -1067,22 +1068,12 @@ static int tegra_xusb_probe(struct >> platform_device *pdev) >>        */ >>       platform_set_drvdata(pdev, tegra); >>   -    err = tegra_xusb_clk_enable(tegra); >> -    if (err) { >> -        dev_err(&pdev->dev, "failed to enable clocks: %d\n", err); >> -        goto put_usb2; >> -    } >> - >> -    err = regulator_bulk_enable(tegra->soc->num_supplies, >> tegra->supplies); >> -    if (err) { >> -        dev_err(&pdev->dev, "failed to enable regulators: %d\n", err); >> -        goto disable_clk; >> -    } >> +    pm_runtime_enable(&pdev->dev); >>   -    err = tegra_xusb_phy_enable(tegra); >> +    err = pm_runtime_get_sync(&pdev->dev); >>       if (err < 0) { > > Does this mean that if runtime PM is disabled then clocks and regulator > will never be enabled > for Tegra xhci? > > How about keeping the clock and regualtor enabling in probe, and instead > add something like: > > pm_runtime_set_active(&pdev->dev); > pm_runtime_enable(&pdev->dev); > pm_runtime_get_noresume(&pdev->dev); For 64-bit Tegra there is a dependency on CONFIG_PM, but for 32-bit AFAIK there is not and so yes we should handle the case when PM_RUNTIME is disabled. Typically we do something like ... pm_runtime_enable(&pdev->dev); if (!pm_runtime_enabled(&pdev->dev)) ret = tegra_xusb_runtime_resume(&pdev->dev); else ret = pm_runtime_get_sync(&pdev->dev); That way we can keep the regulator and clock stuff in the handler. I will update this series. Cheers Jon -- nvpublic