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>
This commit is contained in:
Patrick Georgi 2015-03-10 12:58:55 +01:00
parent dc83d35da3
commit 3c6e5dbd70
1 changed files with 3 additions and 2 deletions

View File

@ -168,9 +168,10 @@ static int setup_ep0(struct usbdev_ctrl *this, dev_req_t *dr)
res[0] = this->current_config_id; res[0] = this->current_config_id;
/* data phase IN */ /* 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); this->enqueue_packet(this, 0, 0, NULL, 0, 0, 0);
return 1; return 1;
} else } else