Staging: beceem: Move ZTE TU25's USB id to the beceem module
[pandora-kernel.git] / drivers / staging / bcm / InterfaceInit.c
index 43e5c9c..869ebab 100644 (file)
@@ -6,12 +6,23 @@ static struct usb_device_id InterfaceUsbtable[] = {
     { 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_ZTE, BCM_USB_PRODUCT_ID_ZTE_TU25) },
     { }
 };
 MODULE_DEVICE_TABLE(usb, InterfaceUsbtable);
 
-VOID InterfaceAdapterFree(PS_INTERFACE_ADAPTER psIntfAdapter)
+static int debug = -1;
+module_param(debug, uint, 0600);
+MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
+
+static const u32 default_msg =
+    NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK
+    | NETIF_MSG_TIMER | NETIF_MSG_TX_ERR | NETIF_MSG_RX_ERR
+    | NETIF_MSG_IFUP | NETIF_MSG_IFDOWN;
+
+static INT InterfaceAdapterInit(PS_INTERFACE_ADAPTER Adapter);
+
+static VOID InterfaceAdapterFree(PS_INTERFACE_ADAPTER psIntfAdapter)
 {
        INT i = 0;
        // Wake up the wait_queue...
@@ -58,7 +69,7 @@ VOID InterfaceAdapterFree(PS_INTERFACE_ADAPTER psIntfAdapter)
        AdapterFree(psIntfAdapter->psAdapter);
 }
 
-VOID ConfigureEndPointTypesThroughEEPROM(PMINI_ADAPTER Adapter)
+static VOID ConfigureEndPointTypesThroughEEPROM(PMINI_ADAPTER Adapter)
 {
        ULONG ulReg = 0;
 
@@ -156,6 +167,7 @@ usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
 
        psAdapter = netdev_priv(ndev);
        psAdapter->dev = ndev;
+       psAdapter->msg_enable = netif_msg_init(debug, default_msg);
 
     /* Init default driver debug state */
 
@@ -267,32 +279,22 @@ usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
 
 static void usbbcm_disconnect (struct usb_interface *intf)
 {
-       PS_INTERFACE_ADAPTER psIntfAdapter = NULL;
-       PMINI_ADAPTER psAdapter = NULL;
-       struct usb_device       *udev = NULL;
-    PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(gblpnetdev);
+       PS_INTERFACE_ADAPTER psIntfAdapter = usb_get_intfdata(intf);
+       PMINI_ADAPTER psAdapter;
+       struct usb_device  *udev = interface_to_usbdev (intf);
 
-       BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "Usb disconnected");
-       if(intf == NULL)
-       {
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "intf pointer is NULL");
-               return;
-       }
-       psIntfAdapter = usb_get_intfdata(intf);
-       BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "psIntfAdapter 0x%p",psIntfAdapter);
        if(psIntfAdapter == NULL)
-       {
-               BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "InterfaceAdapter pointer is NULL");
                return;
-       }
+
        psAdapter = psIntfAdapter->psAdapter;
+       netif_device_detach(psAdapter->dev);
+
        if(psAdapter->bDoSuspend)
                intf->needs_remote_wakeup = 0;
 
        psAdapter->device_removed = TRUE ;
        usb_set_intfdata(intf, NULL);
        InterfaceAdapterFree(psIntfAdapter);
-       udev = interface_to_usbdev (intf);
        usb_put_dev(udev);
 }
 
@@ -441,7 +443,7 @@ static inline int bcm_usb_endpoint_is_isoc_out(const struct usb_endpoint_descrip
        return (bcm_usb_endpoint_xfer_isoc(epd) && bcm_usb_endpoint_dir_out(epd));
 }
 
-INT InterfaceAdapterInit(PS_INTERFACE_ADAPTER psIntfAdapter)
+static INT InterfaceAdapterInit(PS_INTERFACE_ADAPTER psIntfAdapter)
 {
        struct usb_host_interface *iface_desc;
        struct usb_endpoint_descriptor *endpoint;