Revision 56bebe70
b/hw/usb.c | ||
---|---|---|
91 | 91 |
case 0: |
92 | 92 |
switch(s->setup_state) { |
93 | 93 |
case SETUP_STATE_ACK: |
94 |
s->setup_state = SETUP_STATE_IDLE; |
|
95 | 94 |
if (!(s->setup_buf[0] & USB_DIR_IN)) { |
95 |
s->setup_state = SETUP_STATE_IDLE; |
|
96 | 96 |
ret = s->handle_control(s, |
97 | 97 |
(s->setup_buf[0] << 8) | s->setup_buf[1], |
98 | 98 |
(s->setup_buf[3] << 8) | s->setup_buf[2], |
... | ... | |
102 | 102 |
if (ret > 0) |
103 | 103 |
ret = 0; |
104 | 104 |
} else { |
105 |
goto fail;
|
|
105 |
/* return 0 byte */
|
|
106 | 106 |
} |
107 | 107 |
break; |
108 | 108 |
case SETUP_STATE_DATA: |
... | ... | |
136 | 136 |
case 0: |
137 | 137 |
switch(s->setup_state) { |
138 | 138 |
case SETUP_STATE_ACK: |
139 |
s->setup_state = SETUP_STATE_IDLE; |
|
140 | 139 |
if (s->setup_buf[0] & USB_DIR_IN) { |
140 |
s->setup_state = SETUP_STATE_IDLE; |
|
141 | 141 |
/* transfer OK */ |
142 | 142 |
} else { |
143 |
goto fail;
|
|
143 |
/* ignore additionnal output */
|
|
144 | 144 |
} |
145 | 145 |
break; |
146 | 146 |
case SETUP_STATE_DATA: |
Also available in: Unified diff