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=-2.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,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 45EA4C433F5 for ; Sat, 1 Sep 2018 09:55:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E81612083C for ; Sat, 1 Sep 2018 09:55:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E81612083C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=i2se.com 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 S1727429AbeIAOG5 (ORCPT ); Sat, 1 Sep 2018 10:06:57 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:59041 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725973AbeIAOG5 (ORCPT ); Sat, 1 Sep 2018 10:06:57 -0400 Received: from localhost.localdomain ([37.4.249.97]) by mrelayeu.kundenserver.de (mreue005 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MWvfk-1gRrGS011o-00VvQg; Sat, 01 Sep 2018 11:55:24 +0200 From: Stefan Wahren To: Minas Harutyunyan Cc: Grigor Tovmasyan , Doug Anderson , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Stefan Wahren Subject: [PATCH RFC] usb: dwc2: power off during shutdown Date: Sat, 1 Sep 2018 11:54:43 +0200 Message-Id: <1535795683-3788-1-git-send-email-stefan.wahren@i2se.com> X-Mailer: git-send-email 2.7.4 X-Provags-ID: V03:K1:lhWb0c7tRDlcd5BUqoleY7Hm7WY8JzIMmtTEZGl82jExTQ1iLMg h9lp6N0x2vWgppAE/GZpnwmXvuBLo4pY9pVD+iZtzbzNP9OqHAS+5RnIcQDTqg06bODx8Zn EIaARlgBZGGEsof/I4ogQE1YrgWE7ezNgh8z+snWVRqiAxu9dyqmnpFkO0Tb2iOYdDrzz4J sQQ2ywp+ztdFwfQO3YJ1Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:xu9gm5u9V/s=:2hQu1ob2D9LIlkrPUxlJWv eauCUBfcGgmSJx74WOKvqNplDBwyhQS2Xq4zasulkC8KyR8jg9w1ihJVSRU4f+q+XeUJESbjt fQ3LyAT5/zuQJNmY2ZPYcxIu/QFe64dAwYuK68Bc1OWFI7BoiviofcBPnHeg1f93vxqON+kne de3FcI+krsRNYXdXok3kSy0FV51Y21cfSg4cM7nD5BJd17qy0q6Zjp61XIkha47f3DtD6EnjD KdPmyyaj5hLddp626I+xudUCeKu8yt0YAxPWX1BQ43C93/vkwJP+PjO26oBVgqGBx352+v49m wPLaBQJcgiTJB2/zfmOAdAqY67mQCIY1hwZwwK6ygvQ2KZcFwEAhD2DdiD9uuKuO4sK+52T/B N30gmek6SqfpgrgD9FTXADRQOP6oDF/18FLMp5e99dSzmQLtWolNtzv9Raiq4UObTwGFoJr4s OJ87YSof6ndoG9ugrn9aFF/mY3jEz8GJ7prWuD28+3LwyWDDffVGDVOqCn0YNK58s1OYck3T9 5uET9R9fG9/GmmVAGgitdegIDeLNJbX1Tv5mPqblP4bBrVig/004d2GUk4kV0lCafwefc4FUY oGKjxSju1N/nw9ygm7QK74sC1SgrH3k0rDZggCYIZCGDaiBsUlRJx57tRqhNUKeFlAjmrYizG RFsXCpeT7h5PEBU/bzxF/SzYPRbbRUYV+ORSudDx2K4JtlPQ3qfM7YYd6Zy/Kk/Nvd4U= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently USB consumes a lot of power after shutting down a Raspberry Pi 3 (example setup with Ethernet and a keyboard connected). So power off USB on shutdown. Measured on Raspberry Pi 3B with 4.19rc1/multi_v7_defconfig (HDMI, Ethernet and a keyboard connected) Before patch: 2.450 W After patch: 2.090 W Signed-off-by: Stefan Wahren --- drivers/usb/dwc2/platform.c | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c index 9a53a58..eeba40a 100644 --- a/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c @@ -304,17 +304,11 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg) } /** - * dwc2_driver_remove() - Called when the DWC_otg core is unregistered with the - * DWC_otg driver + * dwc2_driver_shutdown() - Called on device shutdown * * @dev: Platform device - * - * This routine is called, for example, when the rmmod command is executed. The - * device may or may not be electrically present. If it is present, the driver - * stops device processing. Any resources used on behalf of this device are - * freed. */ -static int dwc2_driver_remove(struct platform_device *dev) +static void dwc2_driver_shutdown(struct platform_device *dev) { struct dwc2_hsotg *hsotg = platform_get_drvdata(dev); @@ -329,27 +323,24 @@ static int dwc2_driver_remove(struct platform_device *dev) reset_control_assert(hsotg->reset); reset_control_assert(hsotg->reset_ecc); - - return 0; } /** - * dwc2_driver_shutdown() - Called on device shutdown + * dwc2_driver_remove() - Called when the DWC_otg core is unregistered with the + * DWC_otg driver * * @dev: Platform device * - * In specific conditions (involving usb hubs) dwc2 devices can create a - * lot of interrupts, even to the point of overwhelming devices running - * at low frequencies. Some devices need to do special clock handling - * at shutdown-time which may bring the system clock below the threshold - * of being able to handle the dwc2 interrupts. Disabling dwc2-irqs - * prevents reboots/poweroffs from getting stuck in such cases. + * This routine is called, for example, when the rmmod command is executed. The + * device may or may not be electrically present. If it is present, the driver + * stops device processing. Any resources used on behalf of this device are + * freed. */ -static void dwc2_driver_shutdown(struct platform_device *dev) +static int dwc2_driver_remove(struct platform_device *dev) { - struct dwc2_hsotg *hsotg = platform_get_drvdata(dev); + dwc2_driver_shutdown(dev); - disable_irq(hsotg->irq); + return 0; } /** -- 2.7.4 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: [RFC] usb: dwc2: power off during shutdown From: Stefan Wahren Message-Id: <1535795683-3788-1-git-send-email-stefan.wahren@i2se.com> Date: Sat, 1 Sep 2018 11:54:43 +0200 To: Minas Harutyunyan Cc: Grigor Tovmasyan , Doug Anderson , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Stefan Wahren List-ID: Q3VycmVudGx5IFVTQiBjb25zdW1lcyBhIGxvdCBvZiBwb3dlciBhZnRlciBzaHV0dGluZyBkb3du IGEgUmFzcGJlcnJ5IFBpIDMKKGV4YW1wbGUgc2V0dXAgd2l0aCBFdGhlcm5ldCBhbmQgYSBrZXli b2FyZCBjb25uZWN0ZWQpLiBTbyBwb3dlciBvZmYKVVNCIG9uIHNodXRkb3duLgoKTWVhc3VyZWQg b24gUmFzcGJlcnJ5IFBpIDNCIHdpdGggNC4xOXJjMS9tdWx0aV92N19kZWZjb25maWcgKEhETUks IEV0aGVybmV0CmFuZCBhIGtleWJvYXJkIGNvbm5lY3RlZCkKCkJlZm9yZSBwYXRjaDogMi40NTAg VwpBZnRlciBwYXRjaDogIDIuMDkwIFcKClNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBXYWhyZW4gPHN0 ZWZhbi53YWhyZW5AaTJzZS5jb20+Ci0tLQogZHJpdmVycy91c2IvZHdjMi9wbGF0Zm9ybS5jIHwg MzEgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDExIGlu c2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3 YzIvcGxhdGZvcm0uYyBiL2RyaXZlcnMvdXNiL2R3YzIvcGxhdGZvcm0uYwppbmRleCA5YTUzYTU4 Li5lZWJhNDBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9kd2MyL3BsYXRmb3JtLmMKKysrIGIv ZHJpdmVycy91c2IvZHdjMi9wbGF0Zm9ybS5jCkBAIC0zMDQsMTcgKzMwNCwxMSBAQCBzdGF0aWMg aW50IGR3YzJfbG93bGV2ZWxfaHdfaW5pdChzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcpCiB9CiAK IC8qKgotICogZHdjMl9kcml2ZXJfcmVtb3ZlKCkgLSBDYWxsZWQgd2hlbiB0aGUgRFdDX290ZyBj b3JlIGlzIHVucmVnaXN0ZXJlZCB3aXRoIHRoZQotICogRFdDX290ZyBkcml2ZXIKKyAqIGR3YzJf ZHJpdmVyX3NodXRkb3duKCkgLSBDYWxsZWQgb24gZGV2aWNlIHNodXRkb3duCiAgKgogICogQGRl djogUGxhdGZvcm0gZGV2aWNlCi0gKgotICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCwgZm9yIGV4 YW1wbGUsIHdoZW4gdGhlIHJtbW9kIGNvbW1hbmQgaXMgZXhlY3V0ZWQuIFRoZQotICogZGV2aWNl IG1heSBvciBtYXkgbm90IGJlIGVsZWN0cmljYWxseSBwcmVzZW50LiBJZiBpdCBpcyBwcmVzZW50 LCB0aGUgZHJpdmVyCi0gKiBzdG9wcyBkZXZpY2UgcHJvY2Vzc2luZy4gQW55IHJlc291cmNlcyB1 c2VkIG9uIGJlaGFsZiBvZiB0aGlzIGRldmljZSBhcmUKLSAqIGZyZWVkLgogICovCi1zdGF0aWMg aW50IGR3YzJfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpCitzdGF0 aWMgdm9pZCBkd2MyX2RyaXZlcl9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYp CiB7CiAJc3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEoZGV2 KTsKIApAQCAtMzI5LDI3ICszMjMsMjQgQEAgc3RhdGljIGludCBkd2MyX2RyaXZlcl9yZW1vdmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogCiAJcmVzZXRfY29udHJvbF9hc3NlcnQoaHNv dGctPnJlc2V0KTsKIAlyZXNldF9jb250cm9sX2Fzc2VydChoc290Zy0+cmVzZXRfZWNjKTsKLQot CXJldHVybiAwOwogfQogCiAvKioKLSAqIGR3YzJfZHJpdmVyX3NodXRkb3duKCkgLSBDYWxsZWQg b24gZGV2aWNlIHNodXRkb3duCisgKiBkd2MyX2RyaXZlcl9yZW1vdmUoKSAtIENhbGxlZCB3aGVu IHRoZSBEV0Nfb3RnIGNvcmUgaXMgdW5yZWdpc3RlcmVkIHdpdGggdGhlCisgKiBEV0Nfb3RnIGRy aXZlcgogICoKICAqIEBkZXY6IFBsYXRmb3JtIGRldmljZQogICoKLSAqIEluIHNwZWNpZmljIGNv bmRpdGlvbnMgKGludm9sdmluZyB1c2IgaHVicykgZHdjMiBkZXZpY2VzIGNhbiBjcmVhdGUgYQot ICogbG90IG9mIGludGVycnVwdHMsIGV2ZW4gdG8gdGhlIHBvaW50IG9mIG92ZXJ3aGVsbWluZyBk ZXZpY2VzIHJ1bm5pbmcKLSAqIGF0IGxvdyBmcmVxdWVuY2llcy4gU29tZSBkZXZpY2VzIG5lZWQg dG8gZG8gc3BlY2lhbCBjbG9jayBoYW5kbGluZwotICogYXQgc2h1dGRvd24tdGltZSB3aGljaCBt YXkgYnJpbmcgdGhlIHN5c3RlbSBjbG9jayBiZWxvdyB0aGUgdGhyZXNob2xkCi0gKiBvZiBiZWlu ZyBhYmxlIHRvIGhhbmRsZSB0aGUgZHdjMiBpbnRlcnJ1cHRzLiBEaXNhYmxpbmcgZHdjMi1pcnFz Ci0gKiBwcmV2ZW50cyByZWJvb3RzL3Bvd2Vyb2ZmcyBmcm9tIGdldHRpbmcgc3R1Y2sgaW4gc3Vj aCBjYXNlcy4KKyAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQsIGZvciBleGFtcGxlLCB3aGVuIHRo ZSBybW1vZCBjb21tYW5kIGlzIGV4ZWN1dGVkLiBUaGUKKyAqIGRldmljZSBtYXkgb3IgbWF5IG5v dCBiZSBlbGVjdHJpY2FsbHkgcHJlc2VudC4gSWYgaXQgaXMgcHJlc2VudCwgdGhlIGRyaXZlcgor ICogc3RvcHMgZGV2aWNlIHByb2Nlc3NpbmcuIEFueSByZXNvdXJjZXMgdXNlZCBvbiBiZWhhbGYg b2YgdGhpcyBkZXZpY2UgYXJlCisgKiBmcmVlZC4KICAqLwotc3RhdGljIHZvaWQgZHdjMl9kcml2 ZXJfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQorc3RhdGljIGludCBkd2My X2RyaXZlcl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogewotCXN0cnVjdCBk d2MyX2hzb3RnICpoc290ZyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKGRldik7CisJZHdjMl9kcml2 ZXJfc2h1dGRvd24oZGV2KTsKIAotCWRpc2FibGVfaXJxKGhzb3RnLT5pcnEpOworCXJldHVybiAw OwogfQogCiAvKioK