123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
- +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
- @@ -41,6 +41,7 @@ struct board_info {
-
- /* USB config */
- struct bcm63xx_usbd_platform_data usbd;
- + unsigned int num_usbh_ports:2;
-
- /* DSP config */
- struct bcm63xx_dsp_platform_data dsp;
- --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_ehci.h
- +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_ehci.h
- @@ -1,6 +1,6 @@
- #ifndef BCM63XX_DEV_USB_EHCI_H_
- #define BCM63XX_DEV_USB_EHCI_H_
-
- -int bcm63xx_ehci_register(void);
- +int bcm63xx_ehci_register(unsigned int num_ports);
-
- #endif /* BCM63XX_DEV_USB_EHCI_H_ */
- --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_ohci.h
- +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_ohci.h
- @@ -1,6 +1,6 @@
- #ifndef BCM63XX_DEV_USB_OHCI_H_
- #define BCM63XX_DEV_USB_OHCI_H_
-
- -int bcm63xx_ohci_register(void);
- +int bcm63xx_ohci_register(unsigned int num_ports);
-
- #endif /* BCM63XX_DEV_USB_OHCI_H_ */
- --- a/arch/mips/bcm63xx/boards/board_common.c
- +++ b/arch/mips/bcm63xx/boards/board_common.c
- @@ -167,6 +167,8 @@ static struct platform_device bcm63xx_gp
- */
- int __init board_register_devices(void)
- {
- + int usbh_ports = 0;
- +
- if (board.has_uart0)
- bcm63xx_uart_register(0);
-
- @@ -188,14 +190,21 @@ int __init board_register_devices(void)
- !board_get_mac_address(board.enetsw.mac_addr))
- bcm63xx_enetsw_register(&board.enetsw);
-
- + if ((board.has_ohci0 || board.has_ehci0)) {
- + usbh_ports = board.num_usbh_ports;
- +
- + if (!usbh_ports || WARN_ON(usbh_ports > 1 && board.has_usbd))
- + usbh_ports = 1;
- + }
- +
- if (board.has_usbd)
- bcm63xx_usbd_register(&board.usbd);
-
- if (board.has_ehci0)
- - bcm63xx_ehci_register();
- + bcm63xx_ehci_register(usbh_ports);
-
- if (board.has_ohci0)
- - bcm63xx_ohci_register();
- + bcm63xx_ohci_register(usbh_ports);
-
- if (board.has_dsp)
- bcm63xx_dsp_register(&board.dsp);
- --- a/arch/mips/bcm63xx/dev-usb-ehci.c
- +++ b/arch/mips/bcm63xx/dev-usb-ehci.c
- @@ -79,12 +79,14 @@ static struct platform_device bcm63xx_eh
- },
- };
-
- -int __init bcm63xx_ehci_register(void)
- +int __init bcm63xx_ehci_register(unsigned int num_ports)
- {
- if (!BCMCPU_IS_6318() && !BCMCPU_IS_6328() && !BCMCPU_IS_6358() &&
- !BCMCPU_IS_6362() && !BCMCPU_IS_6368() && !BCMCPU_IS_63268())
- return 0;
-
- + bcm63xx_ehci_pdata.num_ports = num_ports;
- +
- ehci_resources[0].start = bcm63xx_regset_address(RSET_EHCI0);
- ehci_resources[0].end = ehci_resources[0].start;
- ehci_resources[0].end += RSET_EHCI_SIZE - 1;
- --- a/arch/mips/bcm63xx/dev-usb-ohci.c
- +++ b/arch/mips/bcm63xx/dev-usb-ohci.c
- @@ -62,7 +62,6 @@ static struct usb_ohci_pdata bcm63xx_ohc
- .big_endian_desc = 1,
- .big_endian_mmio = 1,
- .no_big_frame_no = 1,
- - .num_ports = 1,
- .power_on = bcm63xx_ohci_power_on,
- .power_off = bcm63xx_ohci_power_off,
- .power_suspend = bcm63xx_ohci_power_off,
- @@ -80,11 +79,13 @@ static struct platform_device bcm63xx_oh
- },
- };
-
- -int __init bcm63xx_ohci_register(void)
- +int __init bcm63xx_ohci_register(unsigned int num_ports)
- {
- if (BCMCPU_IS_6345() || BCMCPU_IS_6338())
- return -ENODEV;
-
- + bcm63xx_ohci_pdata.num_ports = num_ports;
- +
- ohci_resources[0].start = bcm63xx_regset_address(RSET_OHCI0);
- ohci_resources[0].end = ohci_resources[0].start;
- ohci_resources[0].end += RSET_OHCI_SIZE - 1;
|