Received: by 10.213.65.68 with SMTP id h4csp617391imn; Thu, 22 Mar 2018 05:07:31 -0700 (PDT) X-Google-Smtp-Source: AG47ELu0kcqrSscZDmFLPRSDUhwG8xGOz2VEmWivBEEVsn81eS/nRPc2ipVF08TPuTvoU1jtr4mr X-Received: by 2002:a17:902:52c8:: with SMTP id a66-v6mr25351568pli.179.1521720451542; Thu, 22 Mar 2018 05:07:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521720451; cv=none; d=google.com; s=arc-20160816; b=xCaxMz0OqX231h8KzUFhPu1qjMYTnaU1zGDYVhHaPP72BpeZPMLEWgltErj/mQEsUT vwg3IriGIFj8UsKiHu71f2aF5idElVBvsD4wkHHZ121RFToWlpl7vmh4ql0tUlGuk9/f PnaHsKJcEwcGfkVuo1Pb4DJMDNQBuohvug2/2zuY8hbKNmh97hrFCOwz7PeCmIDN+UuG fLlsMVejdhyS8/UQjDUxHHdD6JKUMj7jgX5tKY92S1qBAusQ+EqstD6yv1jJcFKjWO0O VeCW0NXdZqwuGQ6ylahkhlhAA4cZJDZbBQgLjB1ZsnhQedo2qIfPjEvVksfcYKiXdY3m Pw5w== 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:arc-authentication-results; bh=ct02O4k884FnEDoZ0z5GI8A8labf5+hGGlx+iu9rsWQ=; b=p6i+5zPzu4ebSRue6oOzdkurAMQxCfiRSrv3QCaRpKD1V0stKzBhSZ5Ky79m+3anve eXLrVFxGgqwpbw+CqXTpBvS6yQQSpadpZQEcqvGZb6bMwR5mwviJxnWCpnaQW/LpXf6f x2Wj2yX4TeHMOlFikJNf9+Q3rBjqx+rn7p1dAF+Dc03FCCi0jmjpw+2l5YC1qDtOSwOK OL6bpwjp0Mf866zBB67K5LX2AolLVxcE2/RZB1cAl5rJLdkNrZqpbsUVQZh1fEBgLb/g TlolQ+7Uifr94RqtcMkQtY4qBNxU52c36BSzpNmKqyMwG/hrnTAUo5Yj9A5R6yN4C7Fd FHZg== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a12si3889920pfd.235.2018.03.22.05.07.17; Thu, 22 Mar 2018 05:07:31 -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; 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 S1754551AbeCVMFt (ORCPT + 99 others); Thu, 22 Mar 2018 08:05:49 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:57656 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752731AbeCVMFr (ORCPT ); Thu, 22 Mar 2018 08:05:47 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 1488FC9A; Thu, 22 Mar 2018 12:05:45 +0000 (UTC) Date: Thu, 22 Mar 2018 13:05:43 +0100 From: Greg KH To: Richard Leitner Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, stern@rowland.harvard.edu, linux@roeck-us.net, mathias.nyman@linux.intel.com, johan@kernel.org, felipe.balbi@linux.intel.com, ekorenevsky@gmail.com, peter.chen@nxp.com, drake@endlessm.com, joe@perches.com, Richard Leitner Subject: Re: [PATCH v4] usb: core: introduce per-port over-current counters Message-ID: <20180322120543.GA27923@kroah.com> References: <20180320101713.5650-1-dev@g0hl1n.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180320101713.5650-1-dev@g0hl1n.net> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 20, 2018 at 11:17:13AM +0100, Richard Leitner wrote: > From: Richard Leitner > > For some userspace applications information on the number of > over-current conditions at specific USB hub ports is relevant. > > In our case we have a series of USB hardware (using the cp210x driver) > which communicates using a proprietary protocol. These devices sometimes > trigger an over-current situation on some hubs. In case of such an > over-current situation the USB devices offer an interface for reducing > the max used power. As these conditions are quite rare and imply > performance reductions of the device we don't want to reduce the max > power always. > > Therefore give user-space applications the possibility to react > adequately by introducing an over_current_counter in the usb port struct > which is exported via sysfs. > > Signed-off-by: Richard Leitner > --- > Changes v4: > - reintroduce forgotten Changelog > Changes v3: > - Improve sysfs file description as recommended by greg k-h > Changes v2: > - rename oc_count to over_current_count > - add entry to Documentation/ABI > - add detailled description to commit message > --- > Documentation/ABI/testing/sysfs-bus-usb | 10 ++++++++++ > drivers/usb/core/hub.c | 4 +++- > drivers/usb/core/hub.h | 1 + > drivers/usb/core/port.c | 10 ++++++++++ > 4 files changed, 24 insertions(+), 1 deletion(-) > > diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb > index 0bd731cbb50c..c702c78f24d8 100644 > --- a/Documentation/ABI/testing/sysfs-bus-usb > +++ b/Documentation/ABI/testing/sysfs-bus-usb > @@ -189,6 +189,16 @@ Description: > The file will read "hotplug", "wired" and "not used" if the > information is available, and "unknown" otherwise. > > +What: /sys/bus/usb/devices/.../(hub interface)/portX/over_current_count > +Date: February 2018 > +Contact: Richard Leitner > +Description: > + Most hubs are able to detect over-current situations on their > + ports and report them to the kernel. This attribute is to expose > + the number of over-current situation occurred on a specific port > + to user space. This file will contain an unsigned 32 bit value > + which wraps to 0 after its maximum is reached. > + > What: /sys/bus/usb/devices/.../(hub interface)/portX/usb3_lpm_permit > Date: November 2015 > Contact: Lu Baolu > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > index c5c1f6cf3228..6f779b518e75 100644 > --- a/drivers/usb/core/hub.c > +++ b/drivers/usb/core/hub.c > @@ -5104,8 +5104,10 @@ static void port_event(struct usb_hub *hub, int port1) > > if (portchange & USB_PORT_STAT_C_OVERCURRENT) { > u16 status = 0, unused; > + port_dev->over_current_count++; > > - dev_dbg(&port_dev->dev, "over-current change\n"); > + dev_dbg(&port_dev->dev, "over-current change #%u\n", > + port_dev->over_current_count); > usb_clear_port_feature(hdev, port1, > USB_PORT_FEAT_C_OVER_CURRENT); > msleep(100); /* Cool down */ > diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h > index 2a700ccc868c..78d7f4dad618 100644 > --- a/drivers/usb/core/hub.h > +++ b/drivers/usb/core/hub.h > @@ -100,6 +100,7 @@ struct usb_port { > unsigned int is_superspeed:1; > unsigned int usb3_lpm_u1_permit:1; > unsigned int usb3_lpm_u2_permit:1; > + unsigned int over_current_count; This should be 'u32', right? I'll go edit it by hand... thanks, greg k-h