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 |  drivers/usb/host/ohci-ssb.c |   39 ++++++++++++++++++++++++++++++++++++--- | ||||||
| @@ -106,10 +106,59 @@ static int ssb_ohci_attach(struct ssb_de |  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; |  	int err = -ENOMEM; | ||||||
|  	u32 tmp, flags = 0; |  	u32 tmp, flags = 0; | ||||||
|   |   | ||||||
| -	if (dev->id.coreid == SSB_DEV_USB11_HOSTDEV) | -	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) { | +	if (dev->id.coreid == SSB_DEV_USB11_HOSTDEV) { | ||||||
|  | +		/* Put the device into host-mode. */ | ||||||
|  		flags |= SSB_OHCI_TMSLOW_HOSTMODE; |  		flags |= SSB_OHCI_TMSLOW_HOSTMODE; | ||||||
|  | - | ||||||
|  | -	ssb_device_enable(dev, flags); | ||||||
| +		ssb_device_enable(dev, flags); | +		ssb_device_enable(dev, flags); | ||||||
| +	} | +	} else if (dev->id.coreid == SSB_DEV_USB20_HOST) { | ||||||
| + |  | ||||||
| +		/* | +		/* | ||||||
| +		 * USB 2.0 special considerations: | +		 * USB 2.0 special considerations: | ||||||
| +		 * | +		 * | ||||||
| +		 * 1. Since the core supports both OHCI and EHCI functions, it must | +		 * 1. Since the core supports both OHCI and EHCI functions, it must | ||||||
| +		 *    only be reset once. | +		 *    only be reset once. | ||||||
| +		 * | +		 * | ||||||
| +	 * 2. In addition to the standard SB reset sequence, the Host Control | +		 * 2. In addition to the standard SSB reset sequence, the Host Control | ||||||
| +		 *    Register must be programmed to bring the USB core and various | +		 *    Register must be programmed to bring the USB core and various | ||||||
| +		 *    phy components out of reset. | +		 *    phy components out of reset. | ||||||
| +		 */ | +		 */ | ||||||
| + |  | ||||||
| +	else if (dev->id.coreid == SSB_DEV_USB20_HOST) { |  | ||||||
| +#warning FIX ME need test for core being up & exit |  | ||||||
| +		ssb_device_enable(dev, 0); | +		ssb_device_enable(dev, 0); | ||||||
| +		ssb_write32(dev, 0x200, 0x7ff); | +		ssb_write32(dev, 0x200, 0x7ff); | ||||||
| +		udelay(1); | +		udelay(1); | ||||||
| @@ -54,15 +45,12 @@ | |||||||
| +			tmp = ssb_read32(dev, 0x304); | +			tmp = ssb_read32(dev, 0x304); | ||||||
| +			printk("USB20H shim: 0x%0x\n", tmp); | +			printk("USB20H shim: 0x%0x\n", tmp); | ||||||
| +		} | +		} | ||||||
| +	} | +	} else | ||||||
| +	else |  | ||||||
| +		ssb_device_enable(dev, 0); | +		ssb_device_enable(dev, 0); | ||||||
|   |   | ||||||
| -	ssb_device_enable(dev, flags); |  | ||||||
|   |  | ||||||
|  	hcd = usb_create_hcd(&ssb_ohci_hc_driver, dev->dev, |  	hcd = usb_create_hcd(&ssb_ohci_hc_driver, dev->dev, | ||||||
|  			dev_name(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[] = { |  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_HOSTDEV, SSB_ANY_REV), | ||||||
|  	SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOST, 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 |  drivers/usb/host/ohci-ssb.c |    3 +++ | ||||||
| @@ -159,6 +159,11 @@ static int ssb_ohci_attach(struct ssb_de |  1 file changed, 3 insertions(+) | ||||||
|  	else |  | ||||||
|  		ssb_device_enable(dev, 0); | --- 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; | ||||||
|   |   | ||||||
| + /* |  | ||||||
| +  * Set dma mask - 32 bit mask is just an assumption |  | ||||||
| +  */ |  | ||||||
| +	if (ssb_dma_set_mask(dev, DMA_32BIT_MASK)) | +	if (ssb_dma_set_mask(dev, DMA_32BIT_MASK)) | ||||||
| +		return -EOPNOTSUPP; | +		return -EOPNOTSUPP; | ||||||
|   | + | ||||||
|  	hcd = usb_create_hcd(&ssb_ohci_hc_driver, dev->dev, |  	if (dev->id.coreid == SSB_DEV_USB11_HOSTDEV) { | ||||||
|  			dev_name(dev->dev)); |  		/* 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 | @@ -96,6 +96,19 @@ config USB_EHCI_HCD_PPC_OF | ||||||
|  	  Enables support for the USB controller present on the PowerPC |  	  Enables support for the USB controller present on the PowerPC | ||||||
|  	  OpenFirmware platform bus. |  	  OpenFirmware platform bus. | ||||||
| @@ -20,8 +27,8 @@ | |||||||
|  config USB_ISP116X_HCD |  config USB_ISP116X_HCD | ||||||
|  	tristate "ISP116X HCD support" |  	tristate "ISP116X HCD support" | ||||||
|  	depends on USB |  	depends on USB | ||||||
| --- a/drivers/usb/host/ehci-hcd.c | --- linux-2.6.28.10.orig/drivers/usb/host/ehci-hcd.c | ||||||
| +++ b/drivers/usb/host/ehci-hcd.c | +++ linux-2.6.28.10/drivers/usb/host/ehci-hcd.c | ||||||
| @@ -1036,8 +1036,16 @@ MODULE_LICENSE ("GPL"); | @@ -1036,8 +1036,16 @@ MODULE_LICENSE ("GPL"); | ||||||
|  #define	PLATFORM_DRIVER		ixp4xx_ehci_driver |  #define	PLATFORM_DRIVER		ixp4xx_ehci_driver | ||||||
|  #endif |  #endif | ||||||
| @@ -42,7 +49,7 @@ | |||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/drivers/usb/host/ehci-ssb.c | +++ linux-2.6.28.10/drivers/usb/host/ehci-ssb.c | ||||||
| @@ -0,0 +1,201 @@ | @@ -0,0 +1,201 @@ | ||||||
| +/* | +/* | ||||||
| + * Sonics Silicon Backplane | + * Sonics Silicon Backplane | ||||||
| @@ -245,8 +252,8 @@ | |||||||
| +	SSB_DEVTABLE_END | +	SSB_DEVTABLE_END | ||||||
| +}; | +}; | ||||||
| +MODULE_DEVICE_TABLE(ssb, ssb_ehci_table); | +MODULE_DEVICE_TABLE(ssb, ssb_ehci_table); | ||||||
| --- a/drivers/usb/host/ohci-ssb.c | --- linux-2.6.28.10.orig/drivers/usb/host/ohci-ssb.c | ||||||
| +++ b/drivers/usb/host/ohci-ssb.c | +++ linux-2.6.28.10/drivers/usb/host/ohci-ssb.c | ||||||
| @@ -17,6 +17,8 @@ | @@ -17,6 +17,8 @@ | ||||||
|   */ |   */ | ||||||
|  #include <linux/ssb/ssb.h> |  #include <linux/ssb/ssb.h> | ||||||
| @@ -290,7 +297,7 @@ | |||||||
|  static int ssb_ohci_attach(struct ssb_device *dev) |  static int ssb_ohci_attach(struct ssb_device *dev) | ||||||
|  { |  { | ||||||
|  	struct ssb_ohci_device *ohcidev; |  	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); |  	ssb_set_drvdata(dev, hcd); | ||||||
|   |   | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Büsch
					Michael Büsch