libpayload/xhci: Fix MPS handling in set_address
We set MPS to speed_to_default_mps(speed) initially but later compare maxpacketsize with 8 to change mps. So compare with speed_to_default_mps(speed) to determine if we need to change settings here. BUG=b:147783572 BRANCH=none TEST=works with 12Mbps/8MPS USB device Signed-off-by: Kangheui Won <khwon@chromium.org> Change-Id: I32455483fceec56f14af6118b77615c14b3f9f39 Reviewed-on: https://review.coreboot.org/c/coreboot/+/38556 Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
b48148f4b3
commit
a3d79292e7
|
@ -227,7 +227,7 @@ xhci_set_address (hci_t *controller, usb_speed speed, int hubport, int hubaddr)
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->endpoints[0].maxpacketsize = usb_decode_mps0(speed, buf[7]);
|
dev->endpoints[0].maxpacketsize = usb_decode_mps0(speed, buf[7]);
|
||||||
if (dev->endpoints[0].maxpacketsize != 8) {
|
if (dev->endpoints[0].maxpacketsize != speed_to_default_mps(speed)) {
|
||||||
memset((void *)ic->dev.ep0, 0x00, ctxsize);
|
memset((void *)ic->dev.ep0, 0x00, ctxsize);
|
||||||
*ic->add = (1 << 1); /* EP0 Context */
|
*ic->add = (1 << 1); /* EP0 Context */
|
||||||
EC_SET(MPS, ic->dev.ep0, dev->endpoints[0].maxpacketsize);
|
EC_SET(MPS, ic->dev.ep0, dev->endpoints[0].maxpacketsize);
|
||||||
|
|
Loading…
Reference in New Issue