Re: [PATCH v2] USB: Check individual ehci port status on resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 20 Nov 2010, Matthew Garrett wrote:

> The AMD SB700 I'm testing with wakes up fine on connection after runtime
> suspend, but doesn't appear to set the "Port change detect" bit in USBSTS.
> The change does appear in the individual port register, so try checking
> the port status as well. It's an infrequent enough operation that the
> overhead shouldn't be an issue.
> 
> Signed-off-by: Matthew Garrett <mjg@xxxxxxxxxx>
> ---
> 
> Just a couple of formatting cleanups
> 
>  drivers/usb/host/ehci-hub.c |   15 ++++++++++++++-
>  1 files changed, 14 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
> index 796ea0c..460096b 100644
> --- a/drivers/usb/host/ehci-hub.c
> +++ b/drivers/usb/host/ehci-hub.c
> @@ -106,6 +106,17 @@ static void ehci_handover_companion_ports(struct ehci_hcd *ehci)
>  	ehci->owned_ports = 0;
>  }
>  
> +static int ehci_port_change(struct ehci_hcd *ehci)
> +{
> +	int i = HCS_N_PORTS(ehci->hcs_params);
> +
> +	while (i--)
> +		if (ehci_readl(ehci, &ehci->regs->port_status[i]) & PORT_CSC)
> +			return 1;
> +
> +	return 0;
> +}
> +
>  static void ehci_adjust_port_wakeup_flags(struct ehci_hcd *ehci,
>  		bool suspending, bool do_wakeup)
>  {
> @@ -168,7 +179,9 @@ static void ehci_adjust_port_wakeup_flags(struct ehci_hcd *ehci,
>  	}
>  
>  	/* Does the root hub have a port wakeup pending? */
> -	if (!suspending && (ehci_readl(ehci, &ehci->regs->status) & STS_PCD))
> +	if (!suspending &&
> +	    ((ehci_readl(ehci, &ehci->regs->status) & STS_PCD) ||
> +	     ehci_port_change(ehci)))
>  		usb_hcd_resume_root_hub(ehci_to_hcd(ehci));
>  }

The code itself is fine, but please add a comment explaining why this
is needed.  Putting the explanation into the commit description isn't
enough because people reading the code won't see it.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux