Message ID | 1346886773-5693-2-git-send-email-dev@lynxeye.de |
---|---|
State | Awaiting Upstream |
Delegated to: | Marek Vasut |
Headers | show |
Dear Lucas Stach, > Carry an index in the lowlevel usb functions to make specify the > respective usb controller. > > Also pass through an controller struct from lowlevel_init to the > creation of the root usb device of this controller. > > Signed-off-by: Lucas Stach <dev@lynxeye.de> > Reviewed-by: Marek Vasut <marex@denx.de> > --- > arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c | 4 ++-- > arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c | 4 ++-- > arch/powerpc/cpu/mpc5xxx/usb_ohci.c | 4 ++-- > arch/powerpc/cpu/ppc4xx/usb_ohci.c | 4 ++-- > arch/sparc/cpu/leon3/usb_uhci.c | 4 ++-- > arch/sparc/lib/bootm.c | 2 +- > board/mpl/common/usb_uhci.c | 4 ++-- > common/usb.c | 10 ++++++---- > common/usb_hub.c | 2 +- > drivers/usb/host/ehci-hcd.c | 4 ++-- > drivers/usb/host/isp116x-hcd.c | 4 ++-- > drivers/usb/host/ohci-hcd.c | 4 ++-- > drivers/usb/host/r8a66597-hcd.c | 4 ++-- > drivers/usb/host/sl811-hcd.c | 4 ++-- > drivers/usb/musb/musb_hcd.c | 4 ++-- > include/usb.h | 10 +++++++--- > include/usb/mv_udc.h | 2 +- > 17 Dateien geändert, 40 Zeilen hinzugefügt(+), 34 Zeilen entfernt(-) V3 ... what changed? V2 ... what changed? > diff --git a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c > b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c index cf0335c..944bb32 100644 > --- a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c > +++ b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c > @@ -1659,7 +1659,7 @@ static void hc_release_ohci(struct ohci *ohci) > */ > static char ohci_inited = 0; > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power(); > struct s3c24x0_gpio *gpio = s3c24x0_get_base_gpio(); > @@ -1738,7 +1738,7 @@ int usb_lowlevel_init(void) > return 0; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power(); > > diff --git a/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c > b/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c index 7647e11..c747767 > 100644 > --- a/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c > +++ b/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c > @@ -1565,7 +1565,7 @@ static void hc_release_ohci (ohci_t *ohci) > */ > static char ohci_inited = 0; > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > u32 pin_func; > u32 sys_freqctrl, sys_clksrc; > @@ -1707,7 +1707,7 @@ int usb_lowlevel_init(void) > return -1; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > /* this gets called really early - before the controller has */ > /* even been initialized! */ > diff --git a/arch/powerpc/cpu/mpc5xxx/usb_ohci.c > b/arch/powerpc/cpu/mpc5xxx/usb_ohci.c index 6d91525..607034b 100644 > --- a/arch/powerpc/cpu/mpc5xxx/usb_ohci.c > +++ b/arch/powerpc/cpu/mpc5xxx/usb_ohci.c > @@ -1561,7 +1561,7 @@ static void hc_release_ohci (ohci_t *ohci) > */ > static char ohci_inited = 0; > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > > /* Set the USB Clock */ > @@ -1629,7 +1629,7 @@ int usb_lowlevel_init(void) > return 0; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > /* this gets called really early - before the controller has */ > /* even been initialized! */ > diff --git a/arch/powerpc/cpu/ppc4xx/usb_ohci.c > b/arch/powerpc/cpu/ppc4xx/usb_ohci.c index 14c6a28..4ce2726 100644 > --- a/arch/powerpc/cpu/ppc4xx/usb_ohci.c > +++ b/arch/powerpc/cpu/ppc4xx/usb_ohci.c > @@ -1566,7 +1566,7 @@ static void hc_release_ohci (ohci_t *ohci) > */ > static char ohci_inited = 0; > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > memset (&gohci, 0, sizeof (ohci_t)); > memset (&urb_priv, 0, sizeof (urb_priv_t)); > @@ -1624,7 +1624,7 @@ int usb_lowlevel_init(void) > return 0; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > /* this gets called really early - before the controller has */ > /* even been initialized! */ > diff --git a/arch/sparc/cpu/leon3/usb_uhci.c > b/arch/sparc/cpu/leon3/usb_uhci.c index 62cc25d..b3b8a4d 100644 > --- a/arch/sparc/cpu/leon3/usb_uhci.c > +++ b/arch/sparc/cpu/leon3/usb_uhci.c > @@ -706,7 +706,7 @@ void handle_usb_interrupt(void) > > /* init uhci > */ > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > unsigned char temp; > ambapp_ahbdev ahbdev; > @@ -745,7 +745,7 @@ int usb_lowlevel_init(void) > > /* stop uhci > */ > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > if (grusb_irq == -1) > return 1; > diff --git a/arch/sparc/lib/bootm.c b/arch/sparc/lib/bootm.c > index e5b933d..bcc6358 100644 > --- a/arch/sparc/lib/bootm.c > +++ b/arch/sparc/lib/bootm.c > @@ -36,7 +36,7 @@ extern void srmmu_init_cpu(unsigned int entry); > extern void prepare_bootargs(char *bootargs); > > #ifdef CONFIG_USB_UHCI > -extern int usb_lowlevel_stop(void); > +extern int usb_lowlevel_stop(int index); > #endif > > /* sparc kernel argument (the ROM vector) */ > diff --git a/board/mpl/common/usb_uhci.c b/board/mpl/common/usb_uhci.c > index ddca587..254f263 100644 > --- a/board/mpl/common/usb_uhci.c > +++ b/board/mpl/common/usb_uhci.c > @@ -602,7 +602,7 @@ void handle_usb_interrupt(void) > > /* init uhci > */ > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > unsigned char temp; > int busdevfunc; > @@ -632,7 +632,7 @@ int usb_lowlevel_init(void) > > /* stop uhci > */ > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > if(irqvec==-1) > return 1; > diff --git a/common/usb.c b/common/usb.c > index 1b40228..e58b6f4 100644 > --- a/common/usb.c > +++ b/common/usb.c > @@ -76,6 +76,7 @@ static int running; > static int asynch_allowed; > > char usb_started; /* flag for the started/stopped USB status */ > +void *ctrl; /* goes away in a following commit, but don't break bisect */ > > /********************************************************************** > * some forward declerations... > @@ -96,7 +97,7 @@ int usb_init(void) > usb_hub_reset(); > /* init low_level USB */ > printf("USB: "); > - result = usb_lowlevel_init(); > + result = usb_lowlevel_init(0, &ctrl); > /* if lowlevel init is OK, scan the bus for devices > * i.e. search HUBs and configure them */ > if (result == 0) { > @@ -123,7 +124,7 @@ int usb_stop(void) > asynch_allowed = 1; > usb_started = 0; > usb_hub_reset(); > - res = usb_lowlevel_stop(); > + res = usb_lowlevel_stop(0); > } > return res; > } > @@ -754,7 +755,7 @@ struct usb_device *usb_get_dev_index(int index) > /* returns a pointer of a new device structure or NULL, if > * no device struct is available > */ > -struct usb_device *usb_alloc_new_device(void) > +struct usb_device *usb_alloc_new_device(void *controller) > { > int i; > USB_PRINTF("New Device %d\n", dev_index); > @@ -768,6 +769,7 @@ struct usb_device *usb_alloc_new_device(void) > for (i = 0; i < USB_MAXCHILDREN; i++) > usb_dev[dev_index].children[i] = NULL; > usb_dev[dev_index].parent = NULL; > + usb_dev[dev_index].controller = controller; > dev_index++; > return &usb_dev[dev_index - 1]; > } > @@ -958,7 +960,7 @@ static void usb_scan_devices(void) > } > dev_index = 0; > /* device 0 is always present (root hub, so let it analyze) */ > - dev = usb_alloc_new_device(); > + dev = usb_alloc_new_device(ctrl); > if (usb_new_device(dev)) > printf("No USB Device found\n"); > else > diff --git a/common/usb_hub.c b/common/usb_hub.c > index f35ad95..53d939c 100644 > --- a/common/usb_hub.c > +++ b/common/usb_hub.c > @@ -243,7 +243,7 @@ void usb_hub_port_connect_change(struct usb_device > *dev, int port) mdelay(200); > > /* Allocate a new device struct for it */ > - usb = usb_alloc_new_device(); > + usb = usb_alloc_new_device(dev->controller); > > if (portstatus & USB_PORT_STAT_HIGH_SPEED) > usb->speed = USB_SPEED_HIGH; > diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c > index 18b4bc6..e8435e5 100644 > --- a/drivers/usb/host/ehci-hcd.c > +++ b/drivers/usb/host/ehci-hcd.c > @@ -828,12 +828,12 @@ unknown: > return -1; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > return ehci_hcd_stop(); > } > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > uint32_t reg; > uint32_t cmd; > diff --git a/drivers/usb/host/isp116x-hcd.c > b/drivers/usb/host/isp116x-hcd.c index 5ef34c3..19e16a4 100644 > --- a/drivers/usb/host/isp116x-hcd.c > +++ b/drivers/usb/host/isp116x-hcd.c > @@ -1391,7 +1391,7 @@ int isp116x_check_id(struct isp116x *isp116x) > return 0; > } > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller)) > { > struct isp116x *isp116x = &isp116x_dev; > > @@ -1428,7 +1428,7 @@ int usb_lowlevel_init(void) > return 0; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > struct isp116x *isp116x = &isp116x_dev; > > diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c > index 9f47351..c2106ad 100644 > --- a/drivers/usb/host/ohci-hcd.c > +++ b/drivers/usb/host/ohci-hcd.c > @@ -1865,7 +1865,7 @@ static void hc_release_ohci(ohci_t *ohci) > */ > static char ohci_inited = 0; > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > #ifdef CONFIG_PCI_OHCI > pci_dev_t pdev; > @@ -1971,7 +1971,7 @@ int usb_lowlevel_init(void) > return 0; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > /* this gets called really early - before the controller has */ > /* even been initialized! */ > diff --git a/drivers/usb/host/r8a66597-hcd.c > b/drivers/usb/host/r8a66597-hcd.c index ab1b8d0..2a4e7ff 100644 > --- a/drivers/usb/host/r8a66597-hcd.c > +++ b/drivers/usb/host/r8a66597-hcd.c > @@ -908,7 +908,7 @@ int submit_int_msg(struct usb_device *dev, unsigned > long pipe, void *buffer, return 0; > } > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller)) > { > struct r8a66597 *r8a66597 = &gr8a66597; > > @@ -931,7 +931,7 @@ int usb_lowlevel_init(void) > return 0; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > disable_controller(&gr8a66597); > > diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c > index bb27dd5..2830616 100644 > --- a/drivers/usb/host/sl811-hcd.c > +++ b/drivers/usb/host/sl811-hcd.c > @@ -210,14 +210,14 @@ static int sl811_hc_reset(void) > return 1; > } > > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > root_hub_devnum = 0; > sl811_hc_reset(); > return 0; > } > > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > sl811_hc_reset(); > return 0; > diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c > index 8d44c46..06be38d 100644 > --- a/drivers/usb/musb/musb_hcd.c > +++ b/drivers/usb/musb/musb_hcd.c > @@ -1092,7 +1092,7 @@ int submit_bulk_msg(struct usb_device *dev, unsigned > long pipe, /* > * This function initializes the usb controller module. > */ > -int usb_lowlevel_init(void) > +int usb_lowlevel_init(int index, void **controller) > { > u8 power; > u32 timeout; > @@ -1144,7 +1144,7 @@ int usb_lowlevel_init(void) > /* > * This function stops the operation of the davinci usb module. > */ > -int usb_lowlevel_stop(void) > +int usb_lowlevel_stop(int index) > { > /* Reset the USB module */ > musb_platform_deinit(); > diff --git a/include/usb.h b/include/usb.h > index ba3d169..292a042 100644 > --- a/include/usb.h > +++ b/include/usb.h > @@ -140,6 +140,8 @@ struct usb_device { > int portnr; > struct usb_device *parent; > struct usb_device *children[USB_MAXCHILDREN]; > + > + void *controller; /* hardware controller private data */ > }; > > /********************************************************************** > @@ -153,8 +155,9 @@ struct usb_device { > defined(CONFIG_USB_OMAP3) || defined(CONFIG_USB_DA8XX) || \ > defined(CONFIG_USB_BLACKFIN) || defined(CONFIG_USB_AM35X) > > -int usb_lowlevel_init(void); > -int usb_lowlevel_stop(void); > +int usb_lowlevel_init(int index, void **controller); > +int usb_lowlevel_stop(int index); > + > int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, > void *buffer, int transfer_len); > int submit_control_msg(struct usb_device *dev, unsigned long pipe, void > *buffer, @@ -382,7 +385,8 @@ void usb_hub_reset(void); > int hub_port_reset(struct usb_device *dev, int port, > unsigned short *portstat); > > -struct usb_device *usb_alloc_new_device(void); > +struct usb_device *usb_alloc_new_device(void *controller); > + > int usb_new_device(struct usb_device *dev); > > #endif /*_USB_H_ */ > diff --git a/include/usb/mv_udc.h b/include/usb/mv_udc.h > index 51d36c3..221e626 100644 > --- a/include/usb/mv_udc.h > +++ b/include/usb/mv_udc.h > @@ -147,5 +147,5 @@ struct ept_queue_item { > #define INFO_BUFFER_ERROR (1 << 5) > #define INFO_TX_ERROR (1 << 3) > > -extern int usb_lowlevel_init(void); > +extern int usb_lowlevel_init(int index, void **controller); > #endif /* __MV_UDC_H__ */
diff --git a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c index cf0335c..944bb32 100644 --- a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c +++ b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c @@ -1659,7 +1659,7 @@ static void hc_release_ohci(struct ohci *ohci) */ static char ohci_inited = 0; -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power(); struct s3c24x0_gpio *gpio = s3c24x0_get_base_gpio(); @@ -1738,7 +1738,7 @@ int usb_lowlevel_init(void) return 0; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power(); diff --git a/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c b/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c index 7647e11..c747767 100644 --- a/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c +++ b/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c @@ -1565,7 +1565,7 @@ static void hc_release_ohci (ohci_t *ohci) */ static char ohci_inited = 0; -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { u32 pin_func; u32 sys_freqctrl, sys_clksrc; @@ -1707,7 +1707,7 @@ int usb_lowlevel_init(void) return -1; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { /* this gets called really early - before the controller has */ /* even been initialized! */ diff --git a/arch/powerpc/cpu/mpc5xxx/usb_ohci.c b/arch/powerpc/cpu/mpc5xxx/usb_ohci.c index 6d91525..607034b 100644 --- a/arch/powerpc/cpu/mpc5xxx/usb_ohci.c +++ b/arch/powerpc/cpu/mpc5xxx/usb_ohci.c @@ -1561,7 +1561,7 @@ static void hc_release_ohci (ohci_t *ohci) */ static char ohci_inited = 0; -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { /* Set the USB Clock */ @@ -1629,7 +1629,7 @@ int usb_lowlevel_init(void) return 0; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { /* this gets called really early - before the controller has */ /* even been initialized! */ diff --git a/arch/powerpc/cpu/ppc4xx/usb_ohci.c b/arch/powerpc/cpu/ppc4xx/usb_ohci.c index 14c6a28..4ce2726 100644 --- a/arch/powerpc/cpu/ppc4xx/usb_ohci.c +++ b/arch/powerpc/cpu/ppc4xx/usb_ohci.c @@ -1566,7 +1566,7 @@ static void hc_release_ohci (ohci_t *ohci) */ static char ohci_inited = 0; -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { memset (&gohci, 0, sizeof (ohci_t)); memset (&urb_priv, 0, sizeof (urb_priv_t)); @@ -1624,7 +1624,7 @@ int usb_lowlevel_init(void) return 0; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { /* this gets called really early - before the controller has */ /* even been initialized! */ diff --git a/arch/sparc/cpu/leon3/usb_uhci.c b/arch/sparc/cpu/leon3/usb_uhci.c index 62cc25d..b3b8a4d 100644 --- a/arch/sparc/cpu/leon3/usb_uhci.c +++ b/arch/sparc/cpu/leon3/usb_uhci.c @@ -706,7 +706,7 @@ void handle_usb_interrupt(void) /* init uhci */ -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { unsigned char temp; ambapp_ahbdev ahbdev; @@ -745,7 +745,7 @@ int usb_lowlevel_init(void) /* stop uhci */ -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { if (grusb_irq == -1) return 1; diff --git a/arch/sparc/lib/bootm.c b/arch/sparc/lib/bootm.c index e5b933d..bcc6358 100644 --- a/arch/sparc/lib/bootm.c +++ b/arch/sparc/lib/bootm.c @@ -36,7 +36,7 @@ extern void srmmu_init_cpu(unsigned int entry); extern void prepare_bootargs(char *bootargs); #ifdef CONFIG_USB_UHCI -extern int usb_lowlevel_stop(void); +extern int usb_lowlevel_stop(int index); #endif /* sparc kernel argument (the ROM vector) */ diff --git a/board/mpl/common/usb_uhci.c b/board/mpl/common/usb_uhci.c index ddca587..254f263 100644 --- a/board/mpl/common/usb_uhci.c +++ b/board/mpl/common/usb_uhci.c @@ -602,7 +602,7 @@ void handle_usb_interrupt(void) /* init uhci */ -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { unsigned char temp; int busdevfunc; @@ -632,7 +632,7 @@ int usb_lowlevel_init(void) /* stop uhci */ -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { if(irqvec==-1) return 1; diff --git a/common/usb.c b/common/usb.c index 1b40228..e58b6f4 100644 --- a/common/usb.c +++ b/common/usb.c @@ -76,6 +76,7 @@ static int running; static int asynch_allowed; char usb_started; /* flag for the started/stopped USB status */ +void *ctrl; /* goes away in a following commit, but don't break bisect */ /********************************************************************** * some forward declerations... @@ -96,7 +97,7 @@ int usb_init(void) usb_hub_reset(); /* init low_level USB */ printf("USB: "); - result = usb_lowlevel_init(); + result = usb_lowlevel_init(0, &ctrl); /* if lowlevel init is OK, scan the bus for devices * i.e. search HUBs and configure them */ if (result == 0) { @@ -123,7 +124,7 @@ int usb_stop(void) asynch_allowed = 1; usb_started = 0; usb_hub_reset(); - res = usb_lowlevel_stop(); + res = usb_lowlevel_stop(0); } return res; } @@ -754,7 +755,7 @@ struct usb_device *usb_get_dev_index(int index) /* returns a pointer of a new device structure or NULL, if * no device struct is available */ -struct usb_device *usb_alloc_new_device(void) +struct usb_device *usb_alloc_new_device(void *controller) { int i; USB_PRINTF("New Device %d\n", dev_index); @@ -768,6 +769,7 @@ struct usb_device *usb_alloc_new_device(void) for (i = 0; i < USB_MAXCHILDREN; i++) usb_dev[dev_index].children[i] = NULL; usb_dev[dev_index].parent = NULL; + usb_dev[dev_index].controller = controller; dev_index++; return &usb_dev[dev_index - 1]; } @@ -958,7 +960,7 @@ static void usb_scan_devices(void) } dev_index = 0; /* device 0 is always present (root hub, so let it analyze) */ - dev = usb_alloc_new_device(); + dev = usb_alloc_new_device(ctrl); if (usb_new_device(dev)) printf("No USB Device found\n"); else diff --git a/common/usb_hub.c b/common/usb_hub.c index f35ad95..53d939c 100644 --- a/common/usb_hub.c +++ b/common/usb_hub.c @@ -243,7 +243,7 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port) mdelay(200); /* Allocate a new device struct for it */ - usb = usb_alloc_new_device(); + usb = usb_alloc_new_device(dev->controller); if (portstatus & USB_PORT_STAT_HIGH_SPEED) usb->speed = USB_SPEED_HIGH; diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 18b4bc6..e8435e5 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -828,12 +828,12 @@ unknown: return -1; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { return ehci_hcd_stop(); } -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { uint32_t reg; uint32_t cmd; diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c index 5ef34c3..19e16a4 100644 --- a/drivers/usb/host/isp116x-hcd.c +++ b/drivers/usb/host/isp116x-hcd.c @@ -1391,7 +1391,7 @@ int isp116x_check_id(struct isp116x *isp116x) return 0; } -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller)) { struct isp116x *isp116x = &isp116x_dev; @@ -1428,7 +1428,7 @@ int usb_lowlevel_init(void) return 0; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { struct isp116x *isp116x = &isp116x_dev; diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 9f47351..c2106ad 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -1865,7 +1865,7 @@ static void hc_release_ohci(ohci_t *ohci) */ static char ohci_inited = 0; -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { #ifdef CONFIG_PCI_OHCI pci_dev_t pdev; @@ -1971,7 +1971,7 @@ int usb_lowlevel_init(void) return 0; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { /* this gets called really early - before the controller has */ /* even been initialized! */ diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c index ab1b8d0..2a4e7ff 100644 --- a/drivers/usb/host/r8a66597-hcd.c +++ b/drivers/usb/host/r8a66597-hcd.c @@ -908,7 +908,7 @@ int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, return 0; } -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller)) { struct r8a66597 *r8a66597 = &gr8a66597; @@ -931,7 +931,7 @@ int usb_lowlevel_init(void) return 0; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { disable_controller(&gr8a66597); diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c index bb27dd5..2830616 100644 --- a/drivers/usb/host/sl811-hcd.c +++ b/drivers/usb/host/sl811-hcd.c @@ -210,14 +210,14 @@ static int sl811_hc_reset(void) return 1; } -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { root_hub_devnum = 0; sl811_hc_reset(); return 0; } -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { sl811_hc_reset(); return 0; diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c index 8d44c46..06be38d 100644 --- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -1092,7 +1092,7 @@ int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, /* * This function initializes the usb controller module. */ -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { u8 power; u32 timeout; @@ -1144,7 +1144,7 @@ int usb_lowlevel_init(void) /* * This function stops the operation of the davinci usb module. */ -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { /* Reset the USB module */ musb_platform_deinit(); diff --git a/include/usb.h b/include/usb.h index ba3d169..292a042 100644 --- a/include/usb.h +++ b/include/usb.h @@ -140,6 +140,8 @@ struct usb_device { int portnr; struct usb_device *parent; struct usb_device *children[USB_MAXCHILDREN]; + + void *controller; /* hardware controller private data */ }; /********************************************************************** @@ -153,8 +155,9 @@ struct usb_device { defined(CONFIG_USB_OMAP3) || defined(CONFIG_USB_DA8XX) || \ defined(CONFIG_USB_BLACKFIN) || defined(CONFIG_USB_AM35X) -int usb_lowlevel_init(void); -int usb_lowlevel_stop(void); +int usb_lowlevel_init(int index, void **controller); +int usb_lowlevel_stop(int index); + int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int transfer_len); int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, @@ -382,7 +385,8 @@ void usb_hub_reset(void); int hub_port_reset(struct usb_device *dev, int port, unsigned short *portstat); -struct usb_device *usb_alloc_new_device(void); +struct usb_device *usb_alloc_new_device(void *controller); + int usb_new_device(struct usb_device *dev); #endif /*_USB_H_ */ diff --git a/include/usb/mv_udc.h b/include/usb/mv_udc.h index 51d36c3..221e626 100644 --- a/include/usb/mv_udc.h +++ b/include/usb/mv_udc.h @@ -147,5 +147,5 @@ struct ept_queue_item { #define INFO_BUFFER_ERROR (1 << 5) #define INFO_TX_ERROR (1 << 3) -extern int usb_lowlevel_init(void); +extern int usb_lowlevel_init(int index, void **controller); #endif /* __MV_UDC_H__ */