SVN maintenance:
[reactos.git] / reactos / drivers / usb / cromwell / core / usb-debug.c
index a2a3404..a6a6160 100644 (file)
-/*\r
- * debug.c - USB debug helper routines.\r
- *\r
- * I just want these out of the way where they aren't in your\r
- * face, but so that you can still use them..\r
- */\r
-#define CONFIG_USB_DEBUG\r
-#if 0\r
-#include <linux/config.h>\r
-#include <linux/kernel.h>\r
-#include <linux/mm.h>\r
-#include <linux/slab.h>\r
-#ifdef CONFIG_USB_DEBUG\r
-       #define DEBUG\r
-#else\r
-       #undef DEBUG\r
-#endif\r
-#include <linux/usb.h>\r
-#else\r
-#include "../usb_wrapper.h"\r
-#endif\r
-\r
-static void usb_show_endpoint(struct usb_host_endpoint *endpoint)\r
-{\r
-       usb_show_endpoint_descriptor(&endpoint->desc);\r
-}\r
-\r
-static void usb_show_interface(struct usb_host_interface *altsetting)\r
-{\r
-       int i;\r
-\r
-       usb_show_interface_descriptor(&altsetting->desc);\r
-\r
-       for (i = 0; i < altsetting->desc.bNumEndpoints; i++)\r
-               usb_show_endpoint(altsetting->endpoint + i);\r
-}\r
-\r
-static void usb_show_config(struct usb_host_config *config)\r
-{\r
-       int i, j;\r
-       struct usb_interface *ifp;\r
-\r
-       usb_show_config_descriptor(&config->desc);\r
-       for (i = 0; i < config->desc.bNumInterfaces; i++) {\r
-               ifp = config->interface + i;\r
-\r
-               if (!ifp)\r
-                       break;\r
-\r
-               printk("\n  Interface: %d\n", i);\r
-               for (j = 0; j < ifp->num_altsetting; j++)\r
-                       usb_show_interface(ifp->altsetting + j);\r
-       }\r
-}\r
-\r
-void usb_show_device(struct usb_device *dev)\r
-{\r
-       int i;\r
-\r
-       usb_show_device_descriptor(&dev->descriptor);\r
-       for (i = 0; i < dev->descriptor.bNumConfigurations; i++)\r
-               usb_show_config(dev->config + i);\r
-}\r
-\r
-/*\r
- * Parse and show the different USB descriptors.\r
- */\r
-void usb_show_device_descriptor(struct usb_device_descriptor *desc)\r
-{\r
-       if (!desc)\r
-       {\r
-               printk("Invalid USB device descriptor (NULL POINTER)\n");\r
-               return;\r
-       }\r
-       printk("  Length              = %2d%s\n", desc->bLength,\r
-               desc->bLength == USB_DT_DEVICE_SIZE ? "" : " (!!!)");\r
-       printk("  DescriptorType      = %02x\n", desc->bDescriptorType);\r
-\r
-       printk("  USB version         = %x.%02x\n",\r
-               desc->bcdUSB >> 8, desc->bcdUSB & 0xff);\r
-       printk("  Vendor:Product      = %04x:%04x\n",\r
-               desc->idVendor, desc->idProduct);\r
-       printk("  MaxPacketSize0      = %d\n", desc->bMaxPacketSize0);\r
-       printk("  NumConfigurations   = %d\n", desc->bNumConfigurations);\r
-       printk("  Device version      = %x.%02x\n",\r
-               desc->bcdDevice >> 8, desc->bcdDevice & 0xff);\r
-\r
-       printk("  Device Class:SubClass:Protocol = %02x:%02x:%02x\n",\r
-               desc->bDeviceClass, desc->bDeviceSubClass, desc->bDeviceProtocol);\r
-       switch (desc->bDeviceClass) {\r
-       case 0:\r
-               printk("    Per-interface classes\n");\r
-               break;\r
-       case USB_CLASS_AUDIO:\r
-               printk("    Audio device class\n");\r
-               break;\r
-       case USB_CLASS_COMM:\r
-               printk("    Communications class\n");\r
-               break;\r
-       case USB_CLASS_HID:\r
-               printk("    Human Interface Devices class\n");\r
-               break;\r
-       case USB_CLASS_PRINTER:\r
-               printk("    Printer device class\n");\r
-               break;\r
-       case USB_CLASS_MASS_STORAGE:\r
-               printk("    Mass Storage device class\n");\r
-               break;\r
-       case USB_CLASS_HUB:\r
-               printk("    Hub device class\n");\r
-               break;\r
-       case USB_CLASS_VENDOR_SPEC:\r
-               printk("    Vendor class\n");\r
-               break;\r
-       default:\r
-               printk("    Unknown class\n");\r
-       }\r
-}\r
-\r
-void usb_show_config_descriptor(struct usb_config_descriptor *desc)\r
-{\r
-       printk("Configuration:\n");\r
-       printk("  bLength             = %4d%s\n", desc->bLength,\r
-               desc->bLength == USB_DT_CONFIG_SIZE ? "" : " (!!!)");\r
-       printk("  bDescriptorType     =   %02x\n", desc->bDescriptorType);\r
-       printk("  wTotalLength        = %04x\n", desc->wTotalLength);\r
-       printk("  bNumInterfaces      =   %02x\n", desc->bNumInterfaces);\r
-       printk("  bConfigurationValue =   %02x\n", desc->bConfigurationValue);\r
-       printk("  iConfiguration      =   %02x\n", desc->iConfiguration);\r
-       printk("  bmAttributes        =   %02x\n", desc->bmAttributes);\r
-       printk("  bMaxPower            = %4dmA\n", desc->bMaxPower * 2);\r
-}\r
-\r
-void usb_show_interface_descriptor(struct usb_interface_descriptor *desc)\r
-{\r
-       printk("  Alternate Setting: %2d\n", desc->bAlternateSetting);\r
-       printk("    bLength             = %4d%s\n", desc->bLength,\r
-               desc->bLength == USB_DT_INTERFACE_SIZE ? "" : " (!!!)");\r
-       printk("    bDescriptorType     =   %02x\n", desc->bDescriptorType);\r
-       printk("    bInterfaceNumber    =   %02x\n", desc->bInterfaceNumber);\r
-       printk("    bAlternateSetting   =   %02x\n", desc->bAlternateSetting);\r
-       printk("    bNumEndpoints       =   %02x\n", desc->bNumEndpoints);\r
-       printk("    bInterface Class:SubClass:Protocol =   %02x:%02x:%02x\n",\r
-               desc->bInterfaceClass, desc->bInterfaceSubClass, desc->bInterfaceProtocol);\r
-       printk("    iInterface          =   %02x\n", desc->iInterface);\r
-}\r
-\r
-void usb_show_endpoint_descriptor(struct usb_endpoint_descriptor *desc)\r
-{\r
-       char *LengthCommentString = (desc->bLength ==\r
-               USB_DT_ENDPOINT_AUDIO_SIZE) ? " (Audio)" : (desc->bLength ==\r
-               USB_DT_ENDPOINT_SIZE) ? "" : " (!!!)";\r
-       char *EndpointType[4] = { "Control", "Isochronous", "Bulk", "Interrupt" };\r
-\r
-       printk("    Endpoint:\n");\r
-       printk("      bLength             = %4d%s\n",\r
-               desc->bLength, LengthCommentString);\r
-       printk("      bDescriptorType     =   %02x\n", desc->bDescriptorType);\r
-       printk("      bEndpointAddress    =   %02x (%s)\n", desc->bEndpointAddress,\r
-               (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==\r
-                       USB_ENDPOINT_XFER_CONTROL ? "i/o" :\r
-               (desc->bEndpointAddress & USB_ENDPOINT_DIR_MASK) ? "in" : "out");\r
-       printk("      bmAttributes        =   %02x (%s)\n", desc->bmAttributes,\r
-               EndpointType[USB_ENDPOINT_XFERTYPE_MASK & desc->bmAttributes]);\r
-       printk("      wMaxPacketSize      = %04x\n", desc->wMaxPacketSize);\r
-       printk("      bInterval           =   %02x\n", desc->bInterval);\r
-\r
-       /* Audio extensions to the endpoint descriptor */\r
-       if (desc->bLength == USB_DT_ENDPOINT_AUDIO_SIZE) {\r
-               printk("      bRefresh            =   %02x\n", desc->bRefresh);\r
-               printk("      bSynchAddress       =   %02x\n", desc->bSynchAddress);\r
-       }\r
-}\r
-\r
-void usb_show_string(struct usb_device *dev, char *id, int index)\r
-{\r
-       char *buf;\r
-\r
-       if (!index)\r
-               return;\r
-       if (!(buf = kmalloc(256, GFP_KERNEL)))\r
-               return;\r
-       if (usb_string(dev, index, buf, 256) > 0)\r
-               dev_printk(KERN_INFO, &dev->dev, "%s: %s\n", id, buf);\r
-       kfree(buf);\r
-}\r
-\r
-void usb_dump_urb (struct urb *urb)\r
-{\r
-       printk ("urb                   :%p\n", urb);\r
-       printk ("dev                   :%p\n", urb->dev);\r
-       printk ("pipe                  :%08X\n", urb->pipe);\r
-       printk ("status                :%d\n", urb->status);\r
-       printk ("transfer_flags        :%08X\n", urb->transfer_flags);\r
-       printk ("transfer_buffer       :%p\n", urb->transfer_buffer);\r
-       printk ("transfer_buffer_length:%d\n", urb->transfer_buffer_length);\r
-       printk ("actual_length         :%d\n", urb->actual_length);\r
-       printk ("setup_packet          :%p\n", urb->setup_packet);\r
-       printk ("start_frame           :%d\n", urb->start_frame);\r
-       printk ("number_of_packets     :%d\n", urb->number_of_packets);\r
-       printk ("interval              :%d\n", urb->interval);\r
-       printk ("error_count           :%d\n", urb->error_count);\r
-       printk ("context               :%p\n", urb->context);\r
-       printk ("complete              :%p\n", urb->complete);\r
-}\r
-\r
+/*
+ * debug.c - USB debug helper routines.
+ *
+ * I just want these out of the way where they aren't in your
+ * face, but so that you can still use them..
+ */
+#define CONFIG_USB_DEBUG
+#if 0
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/mm.h>
+#include <linux/slab.h>
+#ifdef CONFIG_USB_DEBUG
+       #define DEBUG
+#else
+       #undef DEBUG
+#endif
+#include <linux/usb.h>
+#else
+#include "../usb_wrapper.h"
+#endif
+
+static void usb_show_endpoint(struct usb_host_endpoint *endpoint)
+{
+       usb_show_endpoint_descriptor(&endpoint->desc);
+}
+
+static void usb_show_interface(struct usb_host_interface *altsetting)
+{
+       int i;
+
+       usb_show_interface_descriptor(&altsetting->desc);
+
+       for (i = 0; i < altsetting->desc.bNumEndpoints; i++)
+               usb_show_endpoint(altsetting->endpoint + i);
+}
+
+static void usb_show_config(struct usb_host_config *config)
+{
+       int i, j;
+       struct usb_interface *ifp;
+
+       usb_show_config_descriptor(&config->desc);
+       for (i = 0; i < config->desc.bNumInterfaces; i++) {
+               ifp = config->interface + i;
+
+               if (!ifp)
+                       break;
+
+               printk("\n  Interface: %d\n", i);
+               for (j = 0; j < ifp->num_altsetting; j++)
+                       usb_show_interface(ifp->altsetting + j);
+       }
+}
+
+void usb_show_device(struct usb_device *dev)
+{
+       int i;
+
+       usb_show_device_descriptor(&dev->descriptor);
+       for (i = 0; i < dev->descriptor.bNumConfigurations; i++)
+               usb_show_config(dev->config + i);
+}
+
+/*
+ * Parse and show the different USB descriptors.
+ */
+void usb_show_device_descriptor(struct usb_device_descriptor *desc)
+{
+       if (!desc)
+       {
+               printk("Invalid USB device descriptor (NULL POINTER)\n");
+               return;
+       }
+       printk("  Length              = %2d%s\n", desc->bLength,
+               desc->bLength == USB_DT_DEVICE_SIZE ? "" : " (!!!)");
+       printk("  DescriptorType      = %02x\n", desc->bDescriptorType);
+
+       printk("  USB version         = %x.%02x\n",
+               desc->bcdUSB >> 8, desc->bcdUSB & 0xff);
+       printk("  Vendor:Product      = %04x:%04x\n",
+               desc->idVendor, desc->idProduct);
+       printk("  MaxPacketSize0      = %d\n", desc->bMaxPacketSize0);
+       printk("  NumConfigurations   = %d\n", desc->bNumConfigurations);
+       printk("  Device version      = %x.%02x\n",
+               desc->bcdDevice >> 8, desc->bcdDevice & 0xff);
+
+       printk("  Device Class:SubClass:Protocol = %02x:%02x:%02x\n",
+               desc->bDeviceClass, desc->bDeviceSubClass, desc->bDeviceProtocol);
+       switch (desc->bDeviceClass) {
+       case 0:
+               printk("    Per-interface classes\n");
+               break;
+       case USB_CLASS_AUDIO:
+               printk("    Audio device class\n");
+               break;
+       case USB_CLASS_COMM:
+               printk("    Communications class\n");
+               break;
+       case USB_CLASS_HID:
+               printk("    Human Interface Devices class\n");
+               break;
+       case USB_CLASS_PRINTER:
+               printk("    Printer device class\n");
+               break;
+       case USB_CLASS_MASS_STORAGE:
+               printk("    Mass Storage device class\n");
+               break;
+       case USB_CLASS_HUB:
+               printk("    Hub device class\n");
+               break;
+       case USB_CLASS_VENDOR_SPEC:
+               printk("    Vendor class\n");
+               break;
+       default:
+               printk("    Unknown class\n");
+       }
+}
+
+void usb_show_config_descriptor(struct usb_config_descriptor *desc)
+{
+       printk("Configuration:\n");
+       printk("  bLength             = %4d%s\n", desc->bLength,
+               desc->bLength == USB_DT_CONFIG_SIZE ? "" : " (!!!)");
+       printk("  bDescriptorType     =   %02x\n", desc->bDescriptorType);
+       printk("  wTotalLength        = %04x\n", desc->wTotalLength);
+       printk("  bNumInterfaces      =   %02x\n", desc->bNumInterfaces);
+       printk("  bConfigurationValue =   %02x\n", desc->bConfigurationValue);
+       printk("  iConfiguration      =   %02x\n", desc->iConfiguration);
+       printk("  bmAttributes        =   %02x\n", desc->bmAttributes);
+       printk("  bMaxPower            = %4dmA\n", desc->bMaxPower * 2);
+}
+
+void usb_show_interface_descriptor(struct usb_interface_descriptor *desc)
+{
+       printk("  Alternate Setting: %2d\n", desc->bAlternateSetting);
+       printk("    bLength             = %4d%s\n", desc->bLength,
+               desc->bLength == USB_DT_INTERFACE_SIZE ? "" : " (!!!)");
+       printk("    bDescriptorType     =   %02x\n", desc->bDescriptorType);
+       printk("    bInterfaceNumber    =   %02x\n", desc->bInterfaceNumber);
+       printk("    bAlternateSetting   =   %02x\n", desc->bAlternateSetting);
+       printk("    bNumEndpoints       =   %02x\n", desc->bNumEndpoints);
+       printk("    bInterface Class:SubClass:Protocol =   %02x:%02x:%02x\n",
+               desc->bInterfaceClass, desc->bInterfaceSubClass, desc->bInterfaceProtocol);
+       printk("    iInterface          =   %02x\n", desc->iInterface);
+}
+
+void usb_show_endpoint_descriptor(struct usb_endpoint_descriptor *desc)
+{
+       char *LengthCommentString = (desc->bLength ==
+               USB_DT_ENDPOINT_AUDIO_SIZE) ? " (Audio)" : (desc->bLength ==
+               USB_DT_ENDPOINT_SIZE) ? "" : " (!!!)";
+       char *EndpointType[4] = { "Control", "Isochronous", "Bulk", "Interrupt" };
+
+       printk("    Endpoint:\n");
+       printk("      bLength             = %4d%s\n",
+               desc->bLength, LengthCommentString);
+       printk("      bDescriptorType     =   %02x\n", desc->bDescriptorType);
+       printk("      bEndpointAddress    =   %02x (%s)\n", desc->bEndpointAddress,
+               (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
+                       USB_ENDPOINT_XFER_CONTROL ? "i/o" :
+               (desc->bEndpointAddress & USB_ENDPOINT_DIR_MASK) ? "in" : "out");
+       printk("      bmAttributes        =   %02x (%s)\n", desc->bmAttributes,
+               EndpointType[USB_ENDPOINT_XFERTYPE_MASK & desc->bmAttributes]);
+       printk("      wMaxPacketSize      = %04x\n", desc->wMaxPacketSize);
+       printk("      bInterval           =   %02x\n", desc->bInterval);
+
+       /* Audio extensions to the endpoint descriptor */
+       if (desc->bLength == USB_DT_ENDPOINT_AUDIO_SIZE) {
+               printk("      bRefresh            =   %02x\n", desc->bRefresh);
+               printk("      bSynchAddress       =   %02x\n", desc->bSynchAddress);
+       }
+}
+
+void usb_show_string(struct usb_device *dev, char *id, int index)
+{
+       char *buf;
+
+       if (!index)
+               return;
+       if (!(buf = kmalloc(256, GFP_KERNEL)))
+               return;
+       if (usb_string(dev, index, buf, 256) > 0)
+               dev_printk(KERN_INFO, &dev->dev, "%s: %s\n", id, buf);
+       kfree(buf);
+}
+
+void usb_dump_urb (struct urb *urb)
+{
+       printk ("urb                   :%p\n", urb);
+       printk ("dev                   :%p\n", urb->dev);
+       printk ("pipe                  :%08X\n", urb->pipe);
+       printk ("status                :%d\n", urb->status);
+       printk ("transfer_flags        :%08X\n", urb->transfer_flags);
+       printk ("transfer_buffer       :%p\n", urb->transfer_buffer);
+       printk ("transfer_buffer_length:%d\n", urb->transfer_buffer_length);
+       printk ("actual_length         :%d\n", urb->actual_length);
+       printk ("setup_packet          :%p\n", urb->setup_packet);
+       printk ("start_frame           :%d\n", urb->start_frame);
+       printk ("number_of_packets     :%d\n", urb->number_of_packets);
+       printk ("interval              :%d\n", urb->interval);
+       printk ("error_count           :%d\n", urb->error_count);
+       printk ("context               :%p\n", urb->context);
+       printk ("complete              :%p\n", urb->complete);
+}
+