diff options
Diffstat (limited to 'drivers/usb/host/ehci-pci.c')
| -rw-r--r-- | drivers/usb/host/ehci-pci.c | 39 | 
1 files changed, 20 insertions, 19 deletions
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c index dabb2049482..170b9399e09 100644 --- a/drivers/usb/host/ehci-pci.c +++ b/drivers/usb/host/ehci-pci.c @@ -200,6 +200,26 @@ static int ehci_pci_setup(struct usb_hcd *hcd)  		break;  	} +	/* optional debug port, normally in the first BAR */ +	temp = pci_find_capability(pdev, PCI_CAP_ID_DBG); +	if (temp) { +		pci_read_config_dword(pdev, temp, &temp); +		temp >>= 16; +		if (((temp >> 13) & 7) == 1) { +			u32 hcs_params = ehci_readl(ehci, +						    &ehci->caps->hcs_params); + +			temp &= 0x1fff; +			ehci->debug = hcd->regs + temp; +			temp = ehci_readl(ehci, &ehci->debug->control); +			ehci_info(ehci, "debug port %d%s\n", +				  HCS_DEBUG_PORT(hcs_params), +				  (temp & DBGP_ENABLED) ? " IN USE" : ""); +			if (!(temp & DBGP_ENABLED)) +				ehci->debug = NULL; +		} +	} +  	retval = ehci_setup(hcd);  	if (retval)  		return retval; @@ -228,25 +248,6 @@ static int ehci_pci_setup(struct usb_hcd *hcd)  		break;  	} -	/* optional debug port, normally in the first BAR */ -	temp = pci_find_capability(pdev, 0x0a); -	if (temp) { -		pci_read_config_dword(pdev, temp, &temp); -		temp >>= 16; -		if ((temp & (3 << 13)) == (1 << 13)) { -			temp &= 0x1fff; -			ehci->debug = hcd->regs + temp; -			temp = ehci_readl(ehci, &ehci->debug->control); -			ehci_info(ehci, "debug port %d%s\n", -				HCS_DEBUG_PORT(ehci->hcs_params), -				(temp & DBGP_ENABLED) -					? " IN USE" -					: ""); -			if (!(temp & DBGP_ENABLED)) -				ehci->debug = NULL; -		} -	} -  	/* at least the Genesys GL880S needs fixup here */  	temp = HCS_N_CC(ehci->hcs_params) * HCS_N_PCC(ehci->hcs_params);  	temp &= 0x0f;  | 
