On Mon, Feb 19, 2018 at 01:01:07PM +0100, Richard Leitner wrote: > From: Richard Leitner <richard.leitner@xxxxxxxxxxx> > > For some userspace applications information on the number of > over-current conditions at specific USB hub ports is relevant. Therefore > introduce a oc_counter in the usb port struct which is exported via > sysfs. > > Signed-off-by: Richard Leitner <richard.leitner@xxxxxxxxxxx> > --- > Tested on an i.MX6DL based board. > --- > drivers/usb/core/hub.c | 4 +++- > drivers/usb/core/hub.h | 1 + > drivers/usb/core/port.c | 10 ++++++++++ > 3 files changed, 14 insertions(+), 1 deletion(-) When you add/remove/modify a sysfs attribute, you always have to document in Documentation/ABI/ > > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > index c5c1f6cf3228..448fba1e1827 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->oc_count++; > > - dev_dbg(&port_dev->dev, "over-current change\n"); > + dev_dbg(&port_dev->dev, "over-current change #%u\n", > + port_dev->oc_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..b5cf567bf9e2 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 oc_count; > }; > > #define to_usb_port(_dev) \ > diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c > index 1a01e9ad3804..0bfe410eb8a7 100644 > --- a/drivers/usb/core/port.c > +++ b/drivers/usb/core/port.c > @@ -41,6 +41,15 @@ static ssize_t connect_type_show(struct device *dev, > } > static DEVICE_ATTR_RO(connect_type); > > +static ssize_t oc_count_show(struct device *dev, struct device_attribute *attr, > + char *buf) > +{ > + struct usb_port *port_dev = to_usb_port(dev); > + > + return sprintf(buf, "%u\n", port_dev->oc_count); > +} > +static DEVICE_ATTR_RO(oc_count); I don't see what userspace can do with this number, as there's not much it can do with it. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html