aboutsummaryrefslogtreecommitdiffstats
path: root/payloads
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@google.com>2015-03-10 12:58:55 +0100
committerPatrick Georgi <pgeorgi@google.com>2015-04-18 08:42:40 +0200
commit3c6e5dbd70e24592162d5aa5e95a8a6abace4e75 (patch)
treec10543af32639224adfc14a6b349c6d5dad0901c /payloads
parentdc83d35da37e62e7b8c699013f870ebc883766b6 (diff)
downloadcoreboot-3c6e5dbd70e24592162d5aa5e95a8a6abace4e75.tar.gz
coreboot-3c6e5dbd70e24592162d5aa5e95a8a6abace4e75.tar.xz
coreboot-3c6e5dbd70e24592162d5aa5e95a8a6abace4e75.zip
libpayload udc: Support legal edge case of GET_CONFIGURATION call
I doubt anybody will ask for the configuration and request that 0 bytes be returned, but AFAICS that's legal, so let's support it. Should have no effect on ChipIdea since it knows not to send more data than requested by the host. BRANCH=none BUG=none TEST=none Change-Id: Ibfe57b593015fa5e0381c45ff9e39c3f912b4d4d Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 45555e929d9d07dbb58ecfd18333f26375a0e3d7 Original-Change-Id: I7432772a1812c6f52c2b1688ee4c6f67d02ccf28 Original-Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/258064 Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: http://review.coreboot.org/9790 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'payloads')
-rw-r--r--payloads/libpayload/drivers/udc/udc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/payloads/libpayload/drivers/udc/udc.c b/payloads/libpayload/drivers/udc/udc.c
index 23c319bbe..e01b4546f 100644
--- a/payloads/libpayload/drivers/udc/udc.c
+++ b/payloads/libpayload/drivers/udc/udc.c
@@ -168,9 +168,10 @@ static int setup_ep0(struct usbdev_ctrl *this, dev_req_t *dr)
res[0] = this->current_config_id;
/* data phase IN */
- this->enqueue_packet(this, 0, 1, res, 1, 0, 1);
+ this->enqueue_packet(this, 0, 1, res, min(1, dr->wLength),
+ 0, 1);
- // status phase OUT
+ /* status phase OUT */
this->enqueue_packet(this, 0, 0, NULL, 0, 0, 0);
return 1;
} else