]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/bcm/InterfaceInit.c
beceem: remove unnecessary usb class
[mv-sheeva.git] / drivers / staging / bcm / InterfaceInit.c
index 824f9a45007aa8aebf65852ffb172e69eae95981..6d62a50a2f48e3917e835d8caf9cf4ffe945a7c1 100644 (file)
@@ -2,12 +2,19 @@
 
 static struct usb_device_id InterfaceUsbtable[] = {
     { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3) },
-       { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3B) },
-       { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3L) },
-       { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_226) },
-       { USB_DEVICE(BCM_USB_VENDOR_ID_FOXCONN, BCM_USB_PRODUCT_ID_1901) },
-    {}
+    { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3B) },
+    { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3L) },
+    { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_226) },
+    { USB_DEVICE(BCM_USB_VENDOR_ID_FOXCONN, BCM_USB_PRODUCT_ID_1901) },
+
+    { }
 };
+MODULE_DEVICE_TABLE(usb, InterfaceUsbtable);
+
+static unsigned int debug_level = DBG_LVL_CURR;
+module_param(debug_level, uint, 0644);
+MODULE_PARM_DESC(debug_level, "Debug level (0=none,...,7=all)");
+
 
 VOID InterfaceAdapterFree(PS_INTERFACE_ADAPTER psIntfAdapter)
 {
@@ -48,7 +55,7 @@ VOID InterfaceAdapterFree(PS_INTERFACE_ADAPTER psIntfAdapter)
        {
                if (psIntfAdapter->asUsbRcb[i].urb != NULL)
                {
-                       bcm_kfree(psIntfAdapter->asUsbRcb[i].urb->transfer_buffer);
+                       kfree(psIntfAdapter->asUsbRcb[i].urb->transfer_buffer);
                        usb_free_urb(psIntfAdapter->asUsbRcb[i].urb);
                        psIntfAdapter->asUsbRcb[i].urb = NULL;
                }
@@ -56,29 +63,6 @@ VOID InterfaceAdapterFree(PS_INTERFACE_ADAPTER psIntfAdapter)
        AdapterFree(psIntfAdapter->psAdapter);
 }
 
-
-
-static int usbbcm_open(struct inode *inode, struct file *file)
-{
-       return 0;
-}
-
-static int usbbcm_release(struct inode *inode, struct file *file)
-{
-       return 0;
-}
-
-static ssize_t usbbcm_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
-{
-       return 0;
-}
-
-static ssize_t usbbcm_write(struct file *file, const char __user *user_buffer, size_t count, loff_t *ppos)
-{
-       return 0;
-}
-
-
 VOID ConfigureEndPointTypesThroughEEPROM(PMINI_ADAPTER Adapter)
 {
        ULONG ulReg = 0;
@@ -157,48 +141,31 @@ VOID ConfigureEndPointTypesThroughEEPROM(PMINI_ADAPTER Adapter)
 
 }
 
-static struct file_operations usbbcm_fops = {
-    .open    =  usbbcm_open,
-    .release =  usbbcm_release,
-    .read    =  usbbcm_read,
-    .write   =  usbbcm_write,
-    .owner   =  THIS_MODULE,
-       .llseek = no_llseek,
-};
-
-static struct usb_class_driver usbbcm_class = {
-    .name =            "usbbcm",
-    .fops =            &usbbcm_fops,
-    .minor_base =   BCM_USB_MINOR_BASE,
-};
-
 static int
 usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
 {
-       int retval =0 ;
-       PMINI_ADAPTER psAdapter = NULL;
-       PS_INTERFACE_ADAPTER psIntfAdapter = NULL;
-       struct usb_device      *udev = NULL;
-
-//     BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "Usbbcm probe!!");
-       if((intf == NULL) || (id == NULL))
-       {
-       //      BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "intf or id is NULL");
-               return -EINVAL;
-       }
+       struct usb_device *udev = interface_to_usbdev (intf);
+       int retval;
+       PMINI_ADAPTER psAdapter;
+       PS_INTERFACE_ADAPTER psIntfAdapter;
+       struct net_device *ndev;
 
-       /* Allocate Adapter structure */
-       if((psAdapter = kzalloc(sizeof(MINI_ADAPTER), GFP_KERNEL)) == NULL)
-       {
-               BCM_DEBUG_PRINT(psAdapter,DBG_TYPE_PRINTK, 0, 0, "Out of memory");
+       /* Reserve one extra queue for the bit-bucket */
+       ndev = alloc_etherdev_mq(sizeof(MINI_ADAPTER), NO_OF_QUEUES+1);
+       if(ndev == NULL) {
+               dev_err(&udev->dev, DRV_NAME ": no memory for device\n");
                return -ENOMEM;
        }
 
+       SET_NETDEV_DEV(ndev, &intf->dev);
+
+       psAdapter = netdev_priv(ndev);
+       psAdapter->dev = ndev;
+
     /* Init default driver debug state */
 
-    psAdapter->stDebugState.debug_level = DBG_LVL_CURR;
+       psAdapter->stDebugState.debug_level = debug_level;
        psAdapter->stDebugState.type = DBG_TYPE_INITEXIT;
-       memset (psAdapter->stDebugState.subtype, 0, sizeof (psAdapter->stDebugState.subtype));
 
     /* Technically, one can start using BCM_DEBUG_PRINT after this point.
         * However, realize that by default the Type/Subtype bitmaps are all zero now;
@@ -217,22 +184,21 @@ usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
        retval = InitAdapter(psAdapter);
        if(retval)
        {
-               BCM_DEBUG_PRINT (psAdapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "InitAdapter Failed\n");
+               dev_err(&udev->dev, DRV_NAME ": InitAdapter Failed\n");
                AdapterFree(psAdapter);
                return retval;
        }
 
        /* Allocate interface adapter structure */
-       if((psAdapter->pvInterfaceAdapter =
-               kmalloc(sizeof(S_INTERFACE_ADAPTER), GFP_KERNEL)) == NULL)
+       psIntfAdapter = kzalloc(sizeof(S_INTERFACE_ADAPTER), GFP_KERNEL);
+       if (psIntfAdapter == NULL)
        {
-               BCM_DEBUG_PRINT(psAdapter,DBG_TYPE_PRINTK, 0, 0, "Out of memory");
+               dev_err(&udev->dev, DRV_NAME ": no memory for Interface adapter\n");
                AdapterFree (psAdapter);
                return -ENOMEM;
        }
-       memset(psAdapter->pvInterfaceAdapter, 0, sizeof(S_INTERFACE_ADAPTER));
 
-       psIntfAdapter = InterfaceAdapterGet(psAdapter);
+       psAdapter->pvInterfaceAdapter = psIntfAdapter;
        psIntfAdapter->psAdapter = psAdapter;
 
        /* Store usb interface in Interface Adapter */
@@ -255,8 +221,6 @@ usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
                usb_set_intfdata(intf, NULL);
                udev = interface_to_usbdev (intf);
                usb_put_dev(udev);
-               if(psAdapter->bUsbClassDriverRegistered == TRUE)
-                               usb_deregister_dev (intf, &usbbcm_class);
                InterfaceAdapterFree(psIntfAdapter);
                return retval ;
        }
@@ -269,7 +233,6 @@ usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
                }
        }
 
-       udev = interface_to_usbdev (intf);
        /* Check whether the USB-Device Supports remote Wake-Up */
        if(USB_CONFIG_ATT_WAKEUP & udev->actconfig->desc.bmAttributes)
        {
@@ -336,11 +299,9 @@ static void usbbcm_disconnect (struct usb_interface *intf)
        InterfaceAdapterFree(psIntfAdapter);
        udev = interface_to_usbdev (intf);
        usb_put_dev(udev);
-       usb_deregister_dev (intf, &usbbcm_class);
 }
 
-
-static __inline int AllocUsbCb(PS_INTERFACE_ADAPTER psIntfAdapter)
+static int AllocUsbCb(PS_INTERFACE_ADAPTER psIntfAdapter)
 {
        int i = 0;
        for(i = 0; i < MAXIMUM_USB_TCB; i++)
@@ -417,32 +378,6 @@ static int device_run(PS_INTERFACE_ADAPTER psIntfAdapter)
        return 0;
 }
 
-#if 0
-static void    print_usb_interface_desc(struct usb_interface_descriptor *usb_intf_desc)
-{
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "**************** INTERFACE DESCRIPTOR *********************");
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bLength: %x", usb_intf_desc->bLength);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bDescriptorType: %x", usb_intf_desc->bDescriptorType);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bInterfaceNumber: %x", usb_intf_desc->bInterfaceNumber);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bAlternateSetting: %x", usb_intf_desc->bAlternateSetting);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bNumEndpoints: %x", usb_intf_desc->bNumEndpoints);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bInterfaceClass: %x", usb_intf_desc->bInterfaceClass);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bInterfaceSubClass: %x", usb_intf_desc->bInterfaceSubClass);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bInterfaceProtocol: %x", usb_intf_desc->bInterfaceProtocol);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "iInterface :%x\n",usb_intf_desc->iInterface);
-}
-static void    print_usb_endpoint_descriptor(struct usb_endpoint_descriptor *usb_ep_desc)
-{
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "**************** ENDPOINT DESCRIPTOR *********************");
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bLength  :%x ", usb_ep_desc->bLength);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bDescriptorType  :%x ", usb_ep_desc->bDescriptorType);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bEndpointAddress  :%x ", usb_ep_desc->bEndpointAddress);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bmAttributes  :%x ", usb_ep_desc->bmAttributes);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "wMaxPacketSize  :%x ",usb_ep_desc->wMaxPacketSize);
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "bInterval  :%x ",usb_ep_desc->bInterval);
-}
-
-#endif
 
 static inline int bcm_usb_endpoint_num(const struct usb_endpoint_descriptor *epd)
 {
@@ -724,18 +659,6 @@ INT InterfaceAdapterInit(PS_INTERFACE_ADAPTER psIntfAdapter)
     }
        }
     usb_set_intfdata(psIntfAdapter->interface, psIntfAdapter);
-    retval = usb_register_dev(psIntfAdapter->interface, &usbbcm_class);
-       if(retval)
-       {
-               BCM_DEBUG_PRINT(psIntfAdapter->psAdapter,DBG_TYPE_PRINTK, 0, 0, "usb register dev failed = %d", retval);
-               psIntfAdapter->psAdapter->bUsbClassDriverRegistered = FALSE;
-               return retval;
-       }
-       else
-       {
-               psIntfAdapter->psAdapter->bUsbClassDriverRegistered = TRUE;
-               BCM_DEBUG_PRINT(psIntfAdapter->psAdapter,DBG_TYPE_PRINTK, 0, 0, "usb dev registered");
-       }
 
        psIntfAdapter->psAdapter->bcm_file_download = InterfaceFileDownload;
        psIntfAdapter->psAdapter->bcm_file_readback_from_chip =
@@ -757,14 +680,7 @@ INT InterfaceAdapterInit(PS_INTERFACE_ADAPTER psIntfAdapter)
        }
 
 
-       retval = device_run(psIntfAdapter);
-       if(retval)
-       {
-               return retval;
-       }
-
-
-       return 0;
+       return device_run(psIntfAdapter);
 }
 
 static int InterfaceSuspend (struct usb_interface *intf, pm_message_t message)
@@ -812,25 +728,12 @@ static int InterfaceResume (struct usb_interface *intf)
        return 0;
 }
 
-static int InterfacePreReset(struct usb_interface *intf)
-{
-    printk("====================>");
-       return STATUS_SUCCESS;
-}
-
-static int InterfacePostReset(struct usb_interface *intf)
-{
-    printk("Do Post chip reset setting here if it is required");
-       return STATUS_SUCCESS;
-}
 static struct usb_driver usbbcm_driver = {
     .name = "usbbcm",
     .probe = usbbcm_device_probe,
     .disconnect = usbbcm_disconnect,
     .suspend = InterfaceSuspend,
     .resume = InterfaceResume,
-       .pre_reset=InterfacePreReset,
-       .post_reset=InterfacePostReset,
     .id_table = InterfaceUsbtable,
     .supports_autosuspend = 1,
 };
@@ -865,4 +768,3 @@ INT InterfaceExit(void)
        usb_deregister(&usbbcm_driver);
        return status;
 }
-MODULE_LICENSE ("GPL");