提交 71d71bbd 编写于 作者: H Hans de Goede 提交者: Anthony Liguori

usb-linux: introduce a usb_linux_get_configuration function

The next patch in this series introduces multiple ways to get the
configuration dependent upon usb_fs_type, it is cleaner to put this
into its own function.
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 0f5160d1
...@@ -775,13 +775,11 @@ static int usb_host_handle_packet(USBDevice *s, USBPacket *p) ...@@ -775,13 +775,11 @@ static int usb_host_handle_packet(USBDevice *s, USBPacket *p)
} }
} }
/* returns 1 on problem encountered or 0 for success */ static int usb_linux_get_configuration(USBHostDevice *s)
static int usb_linux_update_endp_table(USBHostDevice *s)
{ {
uint8_t *descriptors; uint8_t configuration;
uint8_t devep, type, configuration, alt_interface;
struct usb_ctrltransfer ct; struct usb_ctrltransfer ct;
int interface, ret, length, i; int ret;
ct.bRequestType = USB_DIR_IN; ct.bRequestType = USB_DIR_IN;
ct.bRequest = USB_REQ_GET_CONFIGURATION; ct.bRequest = USB_REQ_GET_CONFIGURATION;
...@@ -793,15 +791,31 @@ static int usb_linux_update_endp_table(USBHostDevice *s) ...@@ -793,15 +791,31 @@ static int usb_linux_update_endp_table(USBHostDevice *s)
ret = ioctl(s->fd, USBDEVFS_CONTROL, &ct); ret = ioctl(s->fd, USBDEVFS_CONTROL, &ct);
if (ret < 0) { if (ret < 0) {
perror("usb_linux_update_endp_table"); perror("usb_linux_get_configuration");
return 1; return -1;
} }
/* in address state */ /* in address state */
if (configuration == 0) { if (configuration == 0) {
return 1; return -1;
} }
return configuration;
}
/* returns 1 on problem encountered or 0 for success */
static int usb_linux_update_endp_table(USBHostDevice *s)
{
uint8_t *descriptors;
uint8_t devep, type, configuration, alt_interface;
struct usb_ctrltransfer ct;
int interface, ret, length, i;
i = usb_linux_get_configuration(s);
if (i < 0)
return 1;
configuration = i;
/* get the desired configuration, interface, and endpoint descriptors /* get the desired configuration, interface, and endpoint descriptors
* from device description */ * from device description */
descriptors = &s->descr[18]; descriptors = &s->descr[18];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册