usb: Add driver/usb/core/(port.c,hub.h) files
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / usb / core / hub.c
index dc6ebd1..f6ff130 100644 (file)
@@ -30,7 +30,7 @@
 #include <asm/uaccess.h>
 #include <asm/byteorder.h>
 
-#include "usb.h"
+#include "hub.h"
 
 /* if we are in debug mode, always announce new devices */
 #ifdef DEBUG
 #define USB_VENDOR_GENESYS_LOGIC               0x05e3
 #define HUB_QUIRK_CHECK_PORT_AUTOSUSPEND       0x01
 
-struct usb_port {
-       struct usb_device *child;
-       struct device dev;
-       struct dev_state *port_owner;
-       enum usb_port_connect_type connect_type;
-};
-
-struct usb_hub {
-       struct device           *intfdev;       /* the "interface" device */
-       struct usb_device       *hdev;
-       struct kref             kref;
-       struct urb              *urb;           /* for interrupt polling pipe */
-
-       /* buffer for urb ... with extra space in case of babble */
-       char                    (*buffer)[8];
-       union {
-               struct usb_hub_status   hub;
-               struct usb_port_status  port;
-       }                       *status;        /* buffer for status reports */
-       struct mutex            status_mutex;   /* for the status buffer */
-
-       int                     error;          /* last reported error */
-       int                     nerrors;        /* track consecutive errors */
-
-       struct list_head        event_list;     /* hubs w/data or errs ready */
-       unsigned long           event_bits[1];  /* status change bitmask */
-       unsigned long           change_bits[1]; /* ports with logical connect
-                                                       status change */
-       unsigned long           busy_bits[1];   /* ports being reset or
-                                                       resumed */
-       unsigned long           removed_bits[1]; /* ports with a "removed"
-                                                       device present */
-       unsigned long           wakeup_bits[1]; /* ports that have signaled
-                                                       remote wakeup */
-#if USB_MAXCHILDREN > 31 /* 8*sizeof(unsigned long) - 1 */
-#error event_bits[] is too short!
-#endif
-
-       struct usb_hub_descriptor *descriptor;  /* class descriptor */
-       struct usb_tt           tt;             /* Transaction Translator */
-
-       unsigned                mA_per_port;    /* current for each child */
-
-       unsigned                limited_power:1;
-       unsigned                quiescing:1;
-       unsigned                disconnected:1;
-
-       unsigned                quirk_check_port_auto_suspend:1;
-
-       unsigned                has_indicators:1;
-       u8                      indicator[USB_MAXCHILDREN];
-       struct delayed_work     leds;
-       struct delayed_work     init_work;
-       struct usb_port         **ports;
-};
-
 static inline int hub_is_superspeed(struct usb_device *hdev)
 {
        return (hdev->descriptor.bDeviceProtocol == USB_HUB_PR_SS);
@@ -168,9 +112,6 @@ EXPORT_SYMBOL_GPL(ehci_cf_port_reset_rwsem);
 #define HUB_DEBOUNCE_STEP        25
 #define HUB_DEBOUNCE_STABLE     100
 
-#define to_usb_port(_dev) \
-       container_of(_dev, struct usb_port, dev)
-
 static int usb_reset_and_verify_device(struct usb_device *udev);
 
 static inline char *portspeed(struct usb_hub *hub, int portstatus)
@@ -1294,52 +1235,6 @@ static int hub_post_reset(struct usb_interface *intf)
        return 0;
 }
 
-static void usb_port_device_release(struct device *dev)
-{
-       struct usb_port *port_dev = to_usb_port(dev);
-
-       kfree(port_dev);
-}
-
-static void usb_hub_remove_port_device(struct usb_hub *hub,
-                                      int port1)
-{
-       device_unregister(&hub->ports[port1 - 1]->dev);
-}
-
-struct device_type usb_port_device_type = {
-       .name =         "usb_port",
-       .release =      usb_port_device_release,
-};
-
-static int usb_hub_create_port_device(struct usb_hub *hub,
-                                     int port1)
-{
-       struct usb_port *port_dev = NULL;
-       int retval;
-
-       port_dev = kzalloc(sizeof(*port_dev), GFP_KERNEL);
-       if (!port_dev) {
-               retval = -ENOMEM;
-               goto exit;
-       }
-
-       hub->ports[port1 - 1] = port_dev;
-       port_dev->dev.parent = hub->intfdev;
-       port_dev->dev.type = &usb_port_device_type;
-       dev_set_name(&port_dev->dev, "port%d", port1);
-
-       retval = device_register(&port_dev->dev);
-       if (retval)
-               goto error_register;
-       return 0;
-
-error_register:
-       put_device(&port_dev->dev);
-exit:
-       return retval;
-}
-
 static int hub_configure(struct usb_hub *hub,
        struct usb_endpoint_descriptor *endpoint)
 {