mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	This new usb driver uses an extra device so the ehci and the ohci driver are not depending on ech other any more. SVN-Revision: 29575
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 1735daf1db79d338dccfc55444b52ed52af79e86 Mon Sep 17 00:00:00 2001
 | |
| From: Hauke Mehrtens <hauke@hauke-m.de>
 | |
| Date: Sun, 20 Nov 2011 18:22:35 +0100
 | |
| Subject: [PATCH 15/21] bcma: scan for extra address space
 | |
| 
 | |
| Some cores like the USB core have two address spaces. In the USB host
 | |
| controller one address space is used for the OHCI and the other for the
 | |
| EHCI controller interface. The USB controller is the only core I found
 | |
| with two address spaces. This code is based on the AI scan function
 | |
| ai_scan() in shared/aiutils.c i the Broadcom SDK.
 | |
| 
 | |
| Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 | |
| ---
 | |
|  drivers/bcma/scan.c       |   17 ++++++++++++++++-
 | |
|  include/linux/bcma/bcma.h |    1 +
 | |
|  2 files changed, 17 insertions(+), 1 deletions(-)
 | |
| 
 | |
| --- a/drivers/bcma/scan.c
 | |
| +++ b/drivers/bcma/scan.c
 | |
| @@ -286,6 +286,21 @@ static int bcma_get_next_core(struct bcm
 | |
|  			return -EILSEQ;
 | |
|  	}
 | |
|  
 | |
| +
 | |
| +	/* First Slave Address Descriptor should be port 0:
 | |
| +	 * the main register space for the core
 | |
| +	 */
 | |
| +	tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_SLAVE, 0);
 | |
| +	if (tmp < 0) {
 | |
| +		/* Try again to see if it is a bridge */
 | |
| +		tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_BRIDGE, 0);
 | |
| +		if (tmp) {
 | |
| +			printk("found bridge\n");
 | |
| +		}
 | |
| +
 | |
| +	}
 | |
| +	core->addr = tmp;
 | |
| +
 | |
|  	/* get & parse slave ports */
 | |
|  	for (i = 0; i < ports[1]; i++) {
 | |
|  		for (j = 0; ; j++) {
 | |
| @@ -298,7 +313,7 @@ static int bcma_get_next_core(struct bcm
 | |
|  				break;
 | |
|  			} else {
 | |
|  				if (i == 0 && j == 0)
 | |
| -					core->addr = tmp;
 | |
| +					core->addr1 = tmp;
 | |
|  			}
 | |
|  		}
 | |
|  	}
 | |
| --- a/include/linux/bcma/bcma.h
 | |
| +++ b/include/linux/bcma/bcma.h
 | |
| @@ -138,6 +138,7 @@ struct bcma_device {
 | |
|  	u8 core_index;
 | |
|  
 | |
|  	u32 addr;
 | |
| +	u32 addr1;
 | |
|  	u32 wrap;
 | |
|  
 | |
|  	void __iomem *io_addr;
 |