diff options
Diffstat (limited to 'drivers/usb/host/ehci-hub.c')
| -rw-r--r-- | drivers/usb/host/ehci-hub.c | 78 | 
1 files changed, 2 insertions, 76 deletions
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index ea6184bf48d0..bf2c8f65e1ae 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -471,29 +471,6 @@ static int ehci_bus_resume (struct usb_hcd *hcd)  /*-------------------------------------------------------------------------*/ -/* Display the ports dedicated to the companion controller */ -static ssize_t show_companion(struct device *dev, -			      struct device_attribute *attr, -			      char *buf) -{ -	struct ehci_hcd		*ehci; -	int			nports, index, n; -	int			count = PAGE_SIZE; -	char			*ptr = buf; - -	ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev))); -	nports = HCS_N_PORTS(ehci->hcs_params); - -	for (index = 0; index < nports; ++index) { -		if (test_bit(index, &ehci->companion_ports)) { -			n = scnprintf(ptr, count, "%d\n", index + 1); -			ptr += n; -			count -= n; -		} -	} -	return ptr - buf; -} -  /*   * Sets the owner of a port   */ @@ -528,58 +505,6 @@ static void set_owner(struct ehci_hcd *ehci, int portnum, int new_owner)  	}  } -/* - * Dedicate or undedicate a port to the companion controller. - * Syntax is "[-]portnum", where a leading '-' sign means - * return control of the port to the EHCI controller. - */ -static ssize_t store_companion(struct device *dev, -			       struct device_attribute *attr, -			       const char *buf, size_t count) -{ -	struct ehci_hcd		*ehci; -	int			portnum, new_owner; - -	ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev))); -	new_owner = PORT_OWNER;		/* Owned by companion */ -	if (sscanf(buf, "%d", &portnum) != 1) -		return -EINVAL; -	if (portnum < 0) { -		portnum = - portnum; -		new_owner = 0;		/* Owned by EHCI */ -	} -	if (portnum <= 0 || portnum > HCS_N_PORTS(ehci->hcs_params)) -		return -ENOENT; -	portnum--; -	if (new_owner) -		set_bit(portnum, &ehci->companion_ports); -	else -		clear_bit(portnum, &ehci->companion_ports); -	set_owner(ehci, portnum, new_owner); -	return count; -} -static DEVICE_ATTR(companion, 0644, show_companion, store_companion); - -static inline int create_companion_file(struct ehci_hcd *ehci) -{ -	int	i = 0; - -	/* with integrated TT there is no companion! */ -	if (!ehci_is_TDI(ehci)) -		i = device_create_file(ehci_to_hcd(ehci)->self.controller, -				       &dev_attr_companion); -	return i; -} - -static inline void remove_companion_file(struct ehci_hcd *ehci) -{ -	/* with integrated TT there is no companion! */ -	if (!ehci_is_TDI(ehci)) -		device_remove_file(ehci_to_hcd(ehci)->self.controller, -				   &dev_attr_companion); -} - -  /*-------------------------------------------------------------------------*/  static int check_reset_complete ( @@ -891,10 +816,11 @@ static int ehci_hub_control (  			 * power switching; they're allowed to just limit the  			 * current.  khubd will turn the power back on.  			 */ -			if (HCS_PPC (ehci->hcs_params)){ +			if ((temp & PORT_OC) && HCS_PPC(ehci->hcs_params)) {  				ehci_writel(ehci,  					temp & ~(PORT_RWC_BITS | PORT_POWER),  					status_reg); +				temp = ehci_readl(ehci, status_reg);  			}  		}  |