mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
USB add macros for debugging usb device setup.
When developing usb device features, it is useful to print out common usb structures. Signed-off-by: Tom Rix <Tom.Rix@windriver.com>
This commit is contained in:
parent
8f8bd565f3
commit
988365a204
2 changed files with 129 additions and 0 deletions
|
@ -504,4 +504,30 @@ struct usb_class_descriptor {
|
|||
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#ifdef DEBUG
|
||||
static inline void print_device_descriptor(struct usb_device_descriptor *d)
|
||||
{
|
||||
serial_printf("usb device descriptor \n");
|
||||
serial_printf("\tbLength %2.2x\n", d->bLength);
|
||||
serial_printf("\tbDescriptorType %2.2x\n", d->bDescriptorType);
|
||||
serial_printf("\tbcdUSB %4.4x\n", d->bcdUSB);
|
||||
serial_printf("\tbDeviceClass %2.2x\n", d->bDeviceClass);
|
||||
serial_printf("\tbDeviceSubClass %2.2x\n", d->bDeviceSubClass);
|
||||
serial_printf("\tbDeviceProtocol %2.2x\n", d->bDeviceProtocol);
|
||||
serial_printf("\tbMaxPacketSize0 %2.2x\n", d->bMaxPacketSize0);
|
||||
serial_printf("\tidVendor %4.4x\n", d->idVendor);
|
||||
serial_printf("\tidProduct %4.4x\n", d->idProduct);
|
||||
serial_printf("\tbcdDevice %4.4x\n", d->bcdDevice);
|
||||
serial_printf("\tiManufacturer %2.2x\n", d->iManufacturer);
|
||||
serial_printf("\tiProduct %2.2x\n", d->iProduct);
|
||||
serial_printf("\tiSerialNumber %2.2x\n", d->iSerialNumber);
|
||||
serial_printf("\tbNumConfigurations %2.2x\n", d->bNumConfigurations);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/* stubs */
|
||||
#define print_device_descriptor(d)
|
||||
|
||||
#endif /* DEBUG */
|
||||
#endif
|
||||
|
|
|
@ -663,4 +663,107 @@ int usbd_endpoint_halted (struct usb_device_instance *device, int endpoint);
|
|||
void usbd_rcv_complete(struct usb_endpoint_instance *endpoint, int len, int urb_bad);
|
||||
void usbd_tx_complete (struct usb_endpoint_instance *endpoint);
|
||||
|
||||
/* These are macros used in debugging */
|
||||
#ifdef DEBUG
|
||||
static inline void print_urb(struct urb *u)
|
||||
{
|
||||
serial_printf("urb %p\n", (u));
|
||||
serial_printf("\tendpoint %p\n", u->endpoint);
|
||||
serial_printf("\tdevice %p\n", u->device);
|
||||
serial_printf("\tbuffer %p\n", u->buffer);
|
||||
serial_printf("\tbuffer_length %d\n", u->buffer_length);
|
||||
serial_printf("\tactual_length %d\n", u->actual_length);
|
||||
serial_printf("\tstatus %d\n", u->status);
|
||||
serial_printf("\tdata %d\n", u->data);
|
||||
}
|
||||
|
||||
static inline void print_usb_device_request(struct usb_device_request *r)
|
||||
{
|
||||
serial_printf("usb request\n");
|
||||
serial_printf("\tbmRequestType 0x%2.2x\n", r->bmRequestType);
|
||||
if ((r->bmRequestType & USB_REQ_DIRECTION_MASK) == 0)
|
||||
serial_printf("\t\tDirection : To device\n");
|
||||
else
|
||||
serial_printf("\t\tDirection : To host\n");
|
||||
if ((r->bmRequestType & USB_TYPE_STANDARD) == USB_TYPE_STANDARD)
|
||||
serial_printf("\t\tType : Standard\n");
|
||||
if ((r->bmRequestType & USB_TYPE_CLASS) == USB_TYPE_CLASS)
|
||||
serial_printf("\t\tType : Standard\n");
|
||||
if ((r->bmRequestType & USB_TYPE_VENDOR) == USB_TYPE_VENDOR)
|
||||
serial_printf("\t\tType : Standard\n");
|
||||
if ((r->bmRequestType & USB_TYPE_RESERVED) == USB_TYPE_RESERVED)
|
||||
serial_printf("\t\tType : Standard\n");
|
||||
if ((r->bmRequestType & USB_REQ_RECIPIENT_MASK) ==
|
||||
USB_REQ_RECIPIENT_DEVICE)
|
||||
serial_printf("\t\tRecipient : Device\n");
|
||||
if ((r->bmRequestType & USB_REQ_RECIPIENT_MASK) ==
|
||||
USB_REQ_RECIPIENT_INTERFACE)
|
||||
serial_printf("\t\tRecipient : Interface\n");
|
||||
if ((r->bmRequestType & USB_REQ_RECIPIENT_MASK) ==
|
||||
USB_REQ_RECIPIENT_ENDPOINT)
|
||||
serial_printf("\t\tRecipient : Endpoint\n");
|
||||
if ((r->bmRequestType & USB_REQ_RECIPIENT_MASK) ==
|
||||
USB_REQ_RECIPIENT_OTHER)
|
||||
serial_printf("\t\tRecipient : Other\n");
|
||||
serial_printf("\tbRequest 0x%2.2x\n", r->bRequest);
|
||||
if (r->bRequest == USB_REQ_GET_STATUS)
|
||||
serial_printf("\t\tGET_STATUS\n");
|
||||
else if (r->bRequest == USB_REQ_SET_ADDRESS)
|
||||
serial_printf("\t\tSET_ADDRESS\n");
|
||||
else if (r->bRequest == USB_REQ_SET_FEATURE)
|
||||
serial_printf("\t\tSET_FEATURE\n");
|
||||
else if (r->bRequest == USB_REQ_GET_DESCRIPTOR)
|
||||
serial_printf("\t\tGET_DESCRIPTOR\n");
|
||||
else if (r->bRequest == USB_REQ_SET_CONFIGURATION)
|
||||
serial_printf("\t\tSET_CONFIGURATION\n");
|
||||
else if (r->bRequest == USB_REQ_SET_INTERFACE)
|
||||
serial_printf("\t\tUSB_REQ_SET_INTERFACE\n");
|
||||
else
|
||||
serial_printf("\tUNKNOWN %d\n", r->bRequest);
|
||||
serial_printf("\twValue 0x%4.4x\n", r->wValue);
|
||||
if (r->bRequest == USB_REQ_GET_DESCRIPTOR) {
|
||||
switch (r->wValue >> 8) {
|
||||
case USB_DESCRIPTOR_TYPE_DEVICE:
|
||||
serial_printf("\tDEVICE\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_CONFIGURATION:
|
||||
serial_printf("\tCONFIGURATION\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_STRING:
|
||||
serial_printf("\tSTRING\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_INTERFACE:
|
||||
serial_printf("\tINTERFACE\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_ENDPOINT:
|
||||
serial_printf("\tENDPOINT\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER:
|
||||
serial_printf("\tDEVICE_QUALIFIER\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_OTHER_SPEED_CONFIGURATION:
|
||||
serial_printf("\tOTHER_SPEED_CONFIGURATION\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_INTERFACE_POWER:
|
||||
serial_printf("\tINTERFACE_POWER\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_HID:
|
||||
serial_printf("\tHID\n");
|
||||
break;
|
||||
case USB_DESCRIPTOR_TYPE_REPORT:
|
||||
serial_printf("\tREPORT\n");
|
||||
break;
|
||||
default:
|
||||
serial_printf("\tUNKNOWN TYPE\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
serial_printf("\twIndex 0x%4.4x\n", r->wIndex);
|
||||
serial_printf("\twLength 0x%4.4x\n", r->wLength);
|
||||
}
|
||||
#else
|
||||
/* stubs */
|
||||
#define print_urb(u)
|
||||
#define print_usb_device_request(r)
|
||||
#endif /* DEBUG */
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue