[PATCH] usb: gadget/legacy/ether: assume saner default power mode

Andreas Bauer
2021-09-16T14:56:26Z

I propose the included patch to the OTG USB ethernet gadget code:

Report default of bus powered and 500mA bMaxPower consumption.

Reason:

The USB spec requires all devices consuming more than 100mA from
the bus to report in this manner. Devices such as Rpi Zero can operate
in this mode and will then falsly report being self-powered when they
are not.

The more sane default is to report being 500mA bus-powered than being
self-powered

This patch was born from an issue within the Raspberry Pi Zero ecosystem,
therefore I would invite comment regarding other usage of this OTG code.

Best regards,

Andreas

$ diff -u linux-5.14.2/drivers/usb/gadget/legacy/ether.c.orig linux-5.14.2/drivers/usb/gadget/legacy/ether.c
--- linux-5.14.2/drivers/usb/gadget/legacy/ether.c.orig 2021-09-08 13:52:41.000000000 +0700
+++ linux-5.14.2/drivers/usb/gadget/legacy/ether.c 2021-09-16 21:25:06.782958554 +0700
@@ -296,7 +296,8 @@
/* .label = f(hardware) */
.bConfigurationValue = 1,
/* .iConfiguration = DYNAMIC */
- .bmAttributes = USB_CONFIG_ATT_SELFPOWER,
+ .bmAttributes = 0, /* bus powered implied */
+ .bMaxPower = 250, /* 500mA in 2mA units */
};

/*-------------------------------------------------------------------------*/