Commit c724417b authored by Jack Pham's avatar Jack Pham Committed by Felipe Balbi
Browse files

usb: gadget: composite: Fix bMaxPower for SuperSpeedPlus



SuperSpeedPlus peripherals must report their bMaxPower of the
configuration descriptor in units of 8mA as per the USB 3.2
specification. The current switch statement in encode_bMaxPower()
only checks for USB_SPEED_SUPER but not USB_SPEED_SUPER_PLUS so
the latter falls back to USB 2.0 encoding which uses 2mA units.
Replace the switch with a simple if/else.

Fixes: eae5820b ("usb: gadget: composite: Write SuperSpeedPlus config descriptors")
Signed-off-by: default avatarJack Pham <jackp@codeaurora.org>
Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
parent 904967c6
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -437,12 +437,10 @@ static u8 encode_bMaxPower(enum usb_device_speed speed,
		val = CONFIG_USB_GADGET_VBUS_DRAW;
	if (!val)
		return 0;
	switch (speed) {
	case USB_SPEED_SUPER:
		return DIV_ROUND_UP(val, 8);
	default:
	if (speed < USB_SPEED_SUPER)
		return DIV_ROUND_UP(val, 2);
	}
	else
		return DIV_ROUND_UP(val, 8);
}

static int config_buf(struct usb_configuration *config,