mirror of https://github.com/xemu-project/xemu.git
usb/debug: add usb_ep_dump
Add function to dump endpoint data, for debugging purposes. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
83a53bbcda
commit
5b6780d045
40
hw/usb.c
40
hw/usb.c
|
@ -427,6 +427,46 @@ void usb_ep_init(USBDevice *dev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void usb_ep_dump(USBDevice *dev)
|
||||||
|
{
|
||||||
|
static const char *tname[] = {
|
||||||
|
[USB_ENDPOINT_XFER_CONTROL] = "control",
|
||||||
|
[USB_ENDPOINT_XFER_ISOC] = "isoc",
|
||||||
|
[USB_ENDPOINT_XFER_BULK] = "bulk",
|
||||||
|
[USB_ENDPOINT_XFER_INT] = "int",
|
||||||
|
};
|
||||||
|
int ifnum, ep, first;
|
||||||
|
|
||||||
|
fprintf(stderr, "Device \"%s\", config %d\n",
|
||||||
|
dev->product_desc, dev->configuration);
|
||||||
|
for (ifnum = 0; ifnum < 16; ifnum++) {
|
||||||
|
first = 1;
|
||||||
|
for (ep = 0; ep < USB_MAX_ENDPOINTS; ep++) {
|
||||||
|
if (dev->ep_in[ep].type != USB_ENDPOINT_XFER_INVALID &&
|
||||||
|
dev->ep_in[ep].ifnum == ifnum) {
|
||||||
|
if (first) {
|
||||||
|
first = 0;
|
||||||
|
fprintf(stderr, " Interface %d, alternative %d\n",
|
||||||
|
ifnum, dev->altsetting[ifnum]);
|
||||||
|
}
|
||||||
|
fprintf(stderr, " Endpoint %d, IN, %s\n", ep,
|
||||||
|
tname[dev->ep_in[ep].type]);
|
||||||
|
}
|
||||||
|
if (dev->ep_out[ep].type != USB_ENDPOINT_XFER_INVALID &&
|
||||||
|
dev->ep_out[ep].ifnum == ifnum) {
|
||||||
|
if (first) {
|
||||||
|
first = 0;
|
||||||
|
fprintf(stderr, " Interface %d, alternative %d\n",
|
||||||
|
ifnum, dev->altsetting[ifnum]);
|
||||||
|
}
|
||||||
|
fprintf(stderr, " Endpoint %d, OUT, %s\n", ep,
|
||||||
|
tname[dev->ep_out[ep].type]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fprintf(stderr, "--\n");
|
||||||
|
}
|
||||||
|
|
||||||
struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep)
|
struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep)
|
||||||
{
|
{
|
||||||
struct USBEndpoint *eps = pid == USB_TOKEN_IN ? dev->ep_in : dev->ep_out;
|
struct USBEndpoint *eps = pid == USB_TOKEN_IN ? dev->ep_in : dev->ep_out;
|
||||||
|
|
1
hw/usb.h
1
hw/usb.h
|
@ -333,6 +333,7 @@ void usb_packet_complete(USBDevice *dev, USBPacket *p);
|
||||||
void usb_cancel_packet(USBPacket * p);
|
void usb_cancel_packet(USBPacket * p);
|
||||||
|
|
||||||
void usb_ep_init(USBDevice *dev);
|
void usb_ep_init(USBDevice *dev);
|
||||||
|
void usb_ep_dump(USBDevice *dev);
|
||||||
struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep);
|
struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep);
|
||||||
uint8_t usb_ep_get_type(USBDevice *dev, int pid, int ep);
|
uint8_t usb_ep_get_type(USBDevice *dev, int pid, int ep);
|
||||||
uint8_t usb_ep_get_ifnum(USBDevice *dev, int pid, int ep);
|
uint8_t usb_ep_get_ifnum(USBDevice *dev, int pid, int ep);
|
||||||
|
|
|
@ -1214,6 +1214,9 @@ static int usb_linux_update_endp_table(USBHostDevice *s)
|
||||||
i += descriptors[i];
|
i += descriptors[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
usb_ep_dump(&s->dev);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue