From 3e993df474bc540ad11e1cc62c2002ca062c7593 Mon Sep 17 00:00:00 2001 From: Dominic Chen Date: Fri, 25 Jul 2014 10:18:26 -0700 Subject: [PATCH] usb: fix bug with multiple usb interfaces for interface specific requests, the interface number is equivalent to (wIndex & 0xff). this corresponds to ep0_buf_rx[2], since the setup packet has format: bmRequestType (1), bRequest (1), wValue (2), wIndex (2), wLength (2). BUG=none BRANCH=none TEST=verify stm32 does not panic with multiple interfaces Change-Id: Ied7750035f87fa81f9a6c03c6e73ae606c110398 Signed-off-by: Dominic Chen Reviewed-on: https://chromium-review.googlesource.com/209903 Reviewed-by: Vincent Palatin --- chip/stm32/usb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chip/stm32/usb.c b/chip/stm32/usb.c index 35f2427ecd..63a406e48d 100644 --- a/chip/stm32/usb.c +++ b/chip/stm32/usb.c @@ -71,7 +71,7 @@ static void ep0_rx(void) /* interface specific requests */ if ((req & USB_RECIP_MASK) == USB_RECIP_INTERFACE) { - uint8_t iface = ep0_buf_rx[1] & 0xff; + uint8_t iface = ep0_buf_rx[2] & 0xff; if (iface < USB_IFACE_COUNT) usb_iface_request[iface](ep0_buf_rx, ep0_buf_tx); return;