From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: Re: [PATCH V2 2/3] usb: xhci: tegra: Add runtime PM support Date: Fri, 27 Apr 2018 12:10:16 +0200 Message-ID: <20180427101016.GQ30388@ulmo> References: <1524754750-3633-1-git-send-email-jonathanh@nvidia.com> <1524754750-3633-2-git-send-email-jonathanh@nvidia.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="Mh8CTEa8Ax54aLHp" Return-path: Content-Disposition: inline In-Reply-To: <1524754750-3633-2-git-send-email-jonathanh@nvidia.com> Sender: linux-kernel-owner@vger.kernel.org To: Jon Hunter Cc: Mathias Nyman , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-tegra@vger.kernel.org --Mh8CTEa8Ax54aLHp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Apr 26, 2018 at 03:59:09PM +0100, 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. >=20 > Signed-off-by: Jon Hunter > --- >=20 > Changes since V1: > - Re-worked change to handle case where runtime PM is disabled. >=20 > drivers/usb/host/xhci-tegra.c | 89 ++++++++++++++++++++++++++++++-------= ------ > 1 file changed, 63 insertions(+), 26 deletions(-) >=20 > diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c > index 02b0b24faa58..85f2381883ad 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 > @@ -761,6 +762,50 @@ static void tegra_xusb_phy_disable(struct tegra_xusb= *tegra) > } > } > =20 > +static int tegra_xusb_runtime_suspend(struct device *dev) > +{ > + struct tegra_xusb *tegra =3D dev_get_drvdata(dev); > + > + tegra_xusb_phy_disable(tegra); > + regulator_bulk_disable(tegra->soc->num_supplies, tegra->supplies); > + tegra_xusb_clk_disable(tegra); > + > + return 0; > +} > + > +static int tegra_xusb_runtime_resume(struct device *dev) > +{ > + struct tegra_xusb *tegra =3D dev_get_drvdata(dev); > + int err; > + > + err =3D tegra_xusb_clk_enable(tegra); > + if (err) { > + dev_err(dev, "failed to enable clocks: %d\n", err); > + return err; > + } > + > + err =3D regulator_bulk_enable(tegra->soc->num_supplies, tegra->supplies= ); > + if (err) { > + dev_err(dev, "failed to enable regulators: %d\n", err); > + goto disable_clk; > + } > + > + err =3D tegra_xusb_phy_enable(tegra); > + if (err < 0) { > + dev_err(dev, "failed to enable PHYs: %d\n", err); > + goto disable_regulator; > + } > + > + return 0; > + > +disable_regulator: > + regulator_bulk_disable(tegra->soc->num_supplies, tegra->supplies); > +disable_clk: > + tegra_xusb_clk_disable(tegra); > + return err; > +} > + > + There's an extra blank line here. Other than that, this looks very nice. Reviewed-by: Thierry Reding Acked-by: Thierry Reding --Mh8CTEa8Ax54aLHp Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAlri9wgACgkQ3SOs138+ s6FCfA/+NIIPUPLO3LD+ESfrgxl8t2zBE2yH/a8k3Kp5eiW4oJ69Jt1ZAeHjjqPq 9F3BisdjSWQjYqML2ap8eQFP+b6F7qPjFQN6e3u2V782762UJ4Xq1uJjBC2Z5inw StepwEfvw1c9FmfXx6DXPghGcwrAyYY1aGztLI/5JeoEl2J/fyMcPTX5KKjvTDSw SLAQvlh2LEaMhaym20JZWMTREyuzdRkhNpJGc0d61jk+hDr97tmaNF+Ad3WsX4o2 Hk3Y0clnwqnoN9+DZ0dGj7thIMGsxoLfhs+1Yl1m77/IYXXfRtXfeoEvqLbdvN6c EH6AgJUpQ+hrcYhmd6q9mGROmp8OHEwruhlHNA9cfDwl6ZQlCNdhUJVUM8msBHBl cEnRI0qdSUHhQtjuEXCn//YOmeEX6iBtwsvZJBeqdhNUEQc2RFrKVRYfUlRzX2QC I58WFQYKP+n7q+b3qsWccXDXVsx5Xgb9ffxIzbbq6NLj9qgygL1La0BFnZxrfi8r iNtYW6ZYwHDHbjPHuSxWg/ilGR56WGQ41uEl81def3fEIe/W0ta6YLxN8OrB8r6W Eop3MFWG6HqqNbuROdLkPXq18seQUaB9je9O/n0lQADwMMXY278hLA2HVXGla9qO lCqkwTPCQC2Jx5RKq5lr8jVR8nBElriEmq4X+d7LRFZrMJjlZcI= =m7h4 -----END PGP SIGNATURE----- --Mh8CTEa8Ax54aLHp-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [V2,2/3] usb: xhci: tegra: Add runtime PM support From: Thierry Reding Message-Id: <20180427101016.GQ30388@ulmo> Date: Fri, 27 Apr 2018 12:10:16 +0200 To: Jon Hunter Cc: Mathias Nyman , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: T24gVGh1LCBBcHIgMjYsIDIwMTggYXQgMDM6NTk6MDlQTSArMDEwMCwgSm9uIEh1bnRlciB3cm90 ZToKPiBBZGQgcnVudGltZSBQTSBzdXBwb3J0IHRvIHRoZSBUZWdyYSBYSENJIGRyaXZlciBhbmQg bW92ZSB0aGUgZnVuY3Rpb24KPiBjYWxscyB0byBlbmFibGUvZGlzYWJsZSB0aGUgY2xvY2tzLCBy ZWd1bGF0b3JzIGFuZCBQSFkgaW50byB0aGUgcnVudGltZQo+IFBNIGNhbGxiYWNrcy4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBKb24gSHVudGVyIDxqb25hdGhhbmhAbnZpZGlhLmNvbT4KPiAtLS0KPiAK PiBDaGFuZ2VzIHNpbmNlIFYxOgo+IC0gUmUtd29ya2VkIGNoYW5nZSB0byBoYW5kbGUgY2FzZSB3 aGVyZSBydW50aW1lIFBNIGlzIGRpc2FibGVkLgo+IAo+ICBkcml2ZXJzL3VzYi9ob3N0L3hoY2kt dGVncmEuYyB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0K PiAgMSBmaWxlIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktdGVncmEuYyBiL2RyaXZlcnMvdXNi L2hvc3QveGhjaS10ZWdyYS5jCj4gaW5kZXggMDJiMGIyNGZhYTU4Li44NWYyMzgxODgzYWQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvaG9zdC94aGNpLXRlZ3JhLmMKPiArKysgYi9kcml2ZXJz L3VzYi9ob3N0L3hoY2ktdGVncmEuYwo+IEBAIC0xOCw2ICsxOCw3IEBACj4gICNpbmNsdWRlIDxs aW51eC9waHkvdGVncmEveHVzYi5oPgo+ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wbS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGlt ZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4gICNpbmNsdWRl IDxsaW51eC9yZXNldC5oPgo+ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+IEBAIC03NjEsNiAr NzYyLDUwIEBAIHN0YXRpYyB2b2lkIHRlZ3JhX3h1c2JfcGh5X2Rpc2FibGUoc3RydWN0IHRlZ3Jh X3h1c2IgKnRlZ3JhKQo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IHRlZ3JhX3h1c2JfcnVu dGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IHRlZ3JhX3h1 c2IgKnRlZ3JhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJdGVncmFfeHVzYl9waHlf ZGlzYWJsZSh0ZWdyYSk7Cj4gKwlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKHRlZ3JhLT5zb2MtPm51 bV9zdXBwbGllcywgdGVncmEtPnN1cHBsaWVzKTsKPiArCXRlZ3JhX3h1c2JfY2xrX2Rpc2FibGUo dGVncmEpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRlZ3JhX3h1 c2JfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgdGVn cmFfeHVzYiAqdGVncmEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCWludCBlcnI7Cj4gKwo+ ICsJZXJyID0gdGVncmFfeHVzYl9jbGtfZW5hYmxlKHRlZ3JhKTsKPiArCWlmIChlcnIpIHsKPiAr CQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgY2xvY2tzOiAlZFxuIiwgZXJyKTsKPiAr CQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiArCWVyciA9IHJlZ3VsYXRvcl9idWxrX2VuYWJsZSh0 ZWdyYS0+c29jLT5udW1fc3VwcGxpZXMsIHRlZ3JhLT5zdXBwbGllcyk7Cj4gKwlpZiAoZXJyKSB7 Cj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIHJlZ3VsYXRvcnM6ICVkXG4iLCBl cnIpOwo+ICsJCWdvdG8gZGlzYWJsZV9jbGs7Cj4gKwl9Cj4gKwo+ICsJZXJyID0gdGVncmFfeHVz Yl9waHlfZW5hYmxlKHRlZ3JhKTsKPiArCWlmIChlcnIgPCAwKSB7Cj4gKwkJZGV2X2VycihkZXYs ICJmYWlsZWQgdG8gZW5hYmxlIFBIWXM6ICVkXG4iLCBlcnIpOwo+ICsJCWdvdG8gZGlzYWJsZV9y ZWd1bGF0b3I7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtkaXNhYmxlX3JlZ3VsYXRv cjoKPiArCXJlZ3VsYXRvcl9idWxrX2Rpc2FibGUodGVncmEtPnNvYy0+bnVtX3N1cHBsaWVzLCB0 ZWdyYS0+c3VwcGxpZXMpOwo+ICtkaXNhYmxlX2NsazoKPiArCXRlZ3JhX3h1c2JfY2xrX2Rpc2Fi bGUodGVncmEpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArCgpUaGVyZSdzIGFuIGV4dHJh IGJsYW5rIGxpbmUgaGVyZS4gT3RoZXIgdGhhbiB0aGF0LCB0aGlzIGxvb2tzIHZlcnkgbmljZS4K ClJldmlld2VkLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgpBY2tlZC1i eTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4K