bcm47xx: Clean up USB patches
SVN-Revision: 17530
This commit is contained in:
		| @@ -1,40 +1,31 @@ | ||||
| --- a/drivers/usb/host/ohci-ssb.c | ||||
| +++ b/drivers/usb/host/ohci-ssb.c | ||||
| @@ -106,10 +106,59 @@ static int ssb_ohci_attach(struct ssb_de | ||||
| --- | ||||
|  drivers/usb/host/ohci-ssb.c |   39 ++++++++++++++++++++++++++++++++++++--- | ||||
|  1 file changed, 36 insertions(+), 3 deletions(-) | ||||
|  | ||||
| --- linux-2.6.28.10.orig/drivers/usb/host/ohci-ssb.c | ||||
| +++ linux-2.6.28.10/drivers/usb/host/ohci-ssb.c | ||||
| @@ -106,10 +106,42 @@ static int ssb_ohci_attach(struct ssb_de | ||||
|  	int err = -ENOMEM; | ||||
|  	u32 tmp, flags = 0; | ||||
|   | ||||
| -	if (dev->id.coreid == SSB_DEV_USB11_HOSTDEV) | ||||
| +	/* | ||||
| +	 * THE FOLLOWING COMMENTS PRESERVED FROM GPL SOURCE RELEASE | ||||
| +	 * | ||||
| +	 * The USB core requires a special bit to be set during core | ||||
| +	 * reset to enable host (OHCI) mode. Resetting the SB core in | ||||
| +	 * pcibios_enable_device() is a hack for compatibility with | ||||
| +	 * vanilla usb-ohci so that it does not have to know about | ||||
| +	 * SB. A driver that wants to use the USB core in device mode | ||||
| +	 * should know about SB and should reset the bit back to 0 | ||||
| +	 * after calling pcibios_enable_device(). | ||||
| +	 */ | ||||
| + | ||||
| +	if (dev->id.coreid == SSB_DEV_USB11_HOSTDEV) { | ||||
| +		/* Put the device into host-mode. */ | ||||
|  		flags |= SSB_OHCI_TMSLOW_HOSTMODE; | ||||
| - | ||||
| -	ssb_device_enable(dev, flags); | ||||
| +		ssb_device_enable(dev, flags); | ||||
| +	} | ||||
| + | ||||
| +	/* | ||||
| +	 * USB 2.0 special considerations: | ||||
| +	 * | ||||
| +	 * 1. Since the core supports both OHCI and EHCI functions, it must | ||||
| +	 *    only be reset once. | ||||
| +	 *  | ||||
| +	 * 2. In addition to the standard SB reset sequence, the Host Control | ||||
| +	 *    Register must be programmed to bring the USB core and various | ||||
| +	 *    phy components out of reset.  | ||||
| +	 */ | ||||
| + | ||||
| +	else if (dev->id.coreid == SSB_DEV_USB20_HOST) { | ||||
| +#warning FIX ME need test for core being up & exit | ||||
| +	} else if (dev->id.coreid == SSB_DEV_USB20_HOST) { | ||||
| +		/* | ||||
| +		 * USB 2.0 special considerations: | ||||
| +		 * | ||||
| +		 * 1. Since the core supports both OHCI and EHCI functions, it must | ||||
| +		 *    only be reset once. | ||||
| +		 * | ||||
| +		 * 2. In addition to the standard SSB reset sequence, the Host Control | ||||
| +		 *    Register must be programmed to bring the USB core and various | ||||
| +		 *    phy components out of reset. | ||||
| +		 */ | ||||
| +		ssb_device_enable(dev, 0); | ||||
| +		ssb_write32(dev, 0x200, 0x7ff); | ||||
| +		udelay(1); | ||||
| @@ -54,15 +45,12 @@ | ||||
| +			tmp = ssb_read32(dev, 0x304); | ||||
| +			printk("USB20H shim: 0x%0x\n", tmp); | ||||
| +		} | ||||
| +	} | ||||
| +	else | ||||
| +	} else | ||||
| +		ssb_device_enable(dev, 0); | ||||
|   | ||||
| -	ssb_device_enable(dev, flags); | ||||
|   | ||||
|  	hcd = usb_create_hcd(&ssb_ohci_hc_driver, dev->dev, | ||||
|  			dev_name(dev->dev)); | ||||
| @@ -200,6 +249,7 @@ static int ssb_ohci_resume(struct ssb_de | ||||
| @@ -200,6 +232,7 @@ static int ssb_ohci_resume(struct ssb_de | ||||
|  static const struct ssb_device_id ssb_ohci_table[] = { | ||||
|  	SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOSTDEV, SSB_ANY_REV), | ||||
|  	SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOST, SSB_ANY_REV), | ||||
|   | ||||
| @@ -1,14 +1,16 @@ | ||||
| --- a/drivers/usb/host/ohci-ssb.c | ||||
| +++ b/drivers/usb/host/ohci-ssb.c | ||||
| @@ -159,6 +159,11 @@ static int ssb_ohci_attach(struct ssb_de | ||||
|  	else | ||||
|  		ssb_device_enable(dev, 0); | ||||
| --- | ||||
|  drivers/usb/host/ohci-ssb.c |    3 +++ | ||||
|  1 file changed, 3 insertions(+) | ||||
|  | ||||
| + /* | ||||
| +  * Set dma mask - 32 bit mask is just an assumption | ||||
| +  */ | ||||
| + if (ssb_dma_set_mask(dev, DMA_32BIT_MASK)) | ||||
| +   return -EOPNOTSUPP; | ||||
| --- linux-2.6.28.10.orig/drivers/usb/host/ohci-ssb.c | ||||
| +++ linux-2.6.28.10/drivers/usb/host/ohci-ssb.c | ||||
| @@ -106,6 +106,9 @@ static int ssb_ohci_attach(struct ssb_de | ||||
|  	int err = -ENOMEM; | ||||
|  	u32 tmp, flags = 0; | ||||
|   | ||||
|  	hcd = usb_create_hcd(&ssb_ohci_hc_driver, dev->dev, | ||||
|  			dev_name(dev->dev)); | ||||
| +	if (ssb_dma_set_mask(dev, DMA_32BIT_MASK)) | ||||
| +		return -EOPNOTSUPP; | ||||
| + | ||||
|  	if (dev->id.coreid == SSB_DEV_USB11_HOSTDEV) { | ||||
|  		/* Put the device into host-mode. */ | ||||
|  		flags |= SSB_OHCI_TMSLOW_HOSTMODE; | ||||
|   | ||||
| @@ -1,5 +1,12 @@ | ||||
| --- a/drivers/usb/host/Kconfig | ||||
| +++ b/drivers/usb/host/Kconfig | ||||
| --- | ||||
|  drivers/usb/host/Kconfig    |   13 ++ | ||||
|  drivers/usb/host/ehci-hcd.c |   12 ++ | ||||
|  drivers/usb/host/ehci-ssb.c |  201 ++++++++++++++++++++++++++++++++++++++++++++ | ||||
|  drivers/usb/host/ohci-ssb.c |   23 +++++ | ||||
|  4 files changed, 247 insertions(+), 2 deletions(-) | ||||
|  | ||||
| --- linux-2.6.28.10.orig/drivers/usb/host/Kconfig | ||||
| +++ linux-2.6.28.10/drivers/usb/host/Kconfig | ||||
| @@ -96,6 +96,19 @@ config USB_EHCI_HCD_PPC_OF | ||||
|  	  Enables support for the USB controller present on the PowerPC | ||||
|  	  OpenFirmware platform bus. | ||||
| @@ -20,8 +27,8 @@ | ||||
|  config USB_ISP116X_HCD | ||||
|  	tristate "ISP116X HCD support" | ||||
|  	depends on USB | ||||
| --- a/drivers/usb/host/ehci-hcd.c | ||||
| +++ b/drivers/usb/host/ehci-hcd.c | ||||
| --- linux-2.6.28.10.orig/drivers/usb/host/ehci-hcd.c | ||||
| +++ linux-2.6.28.10/drivers/usb/host/ehci-hcd.c | ||||
| @@ -1036,8 +1036,16 @@ MODULE_LICENSE ("GPL"); | ||||
|  #define	PLATFORM_DRIVER		ixp4xx_ehci_driver | ||||
|  #endif | ||||
| @@ -42,7 +49,7 @@ | ||||
|  #endif | ||||
|   | ||||
| --- /dev/null | ||||
| +++ b/drivers/usb/host/ehci-ssb.c | ||||
| +++ linux-2.6.28.10/drivers/usb/host/ehci-ssb.c | ||||
| @@ -0,0 +1,201 @@ | ||||
| +/* | ||||
| + * Sonics Silicon Backplane | ||||
| @@ -245,8 +252,8 @@ | ||||
| +	SSB_DEVTABLE_END | ||||
| +}; | ||||
| +MODULE_DEVICE_TABLE(ssb, ssb_ehci_table); | ||||
| --- a/drivers/usb/host/ohci-ssb.c | ||||
| +++ b/drivers/usb/host/ohci-ssb.c | ||||
| --- linux-2.6.28.10.orig/drivers/usb/host/ohci-ssb.c | ||||
| +++ linux-2.6.28.10/drivers/usb/host/ohci-ssb.c | ||||
| @@ -17,6 +17,8 @@ | ||||
|   */ | ||||
|  #include <linux/ssb/ssb.h> | ||||
| @@ -290,7 +297,7 @@ | ||||
|  static int ssb_ohci_attach(struct ssb_device *dev) | ||||
|  { | ||||
|  	struct ssb_ohci_device *ohcidev; | ||||
| @@ -184,6 +199,14 @@ static int ssb_ohci_attach(struct ssb_de | ||||
| @@ -165,6 +180,14 @@ static int ssb_ohci_attach(struct ssb_de | ||||
|   | ||||
|  	ssb_set_drvdata(dev, hcd); | ||||
|   | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Michael Büsch
					Michael Büsch