RE: [PATCH] EHCI: fix criterion for resuming the root hub

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

 




 
> This patch (as1542) changes the criterion ehci-hcd uses to tell when
> it needs to resume the controller's root hub.  A resume is needed when
> a port status change is detected, obviously, but only if the root hub
> is currently suspended.
> 
> Right now the driver tests whether the root hub is running, and that
> is not the correct test.  In particular, if the controller has died
> then the root hub should not be restarted.  In addition, some buggy
> hardware occasionally requires the root hub to be running and
> sending out SOF packets even while it is nominally supposed to be
> suspended.
> 
> In the end, the test needs to be changed.  Rather than checking whether
> the root hub is currently running, the driver will now check whether
> the root hub is currently suspended.  This will yield the correct
> behavior in all cases.
> 
> Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> CC: Peter Chen <B29397@xxxxxxxxxxxxx>
> CC: <stable@xxxxxxxxxxxxxxx>
> 
> ---
> 
>  drivers/usb/host/ehci-hcd.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Index: usb-3.4/drivers/usb/host/ehci-hcd.c
> ===================================================================
> --- usb-3.4.orig/drivers/usb/host/ehci-hcd.c
> +++ usb-3.4/drivers/usb/host/ehci-hcd.c
> @@ -904,7 +904,7 @@ static irqreturn_t ehci_irq (struct usb_
>  		pcd_status = status;
> 
>  		/* resume root hub? */
> -		if (!(cmd & CMD_RUN))
> +		if (ehci->rh_state == EHCI_RH_SUSPENDED)
>  			usb_hcd_resume_root_hub(hcd);
> 
>  		/* get per-port change detect bits */
> 
Acked-by: Peter Chen <peter.chen@xxxxxxxxxxxxx>

--
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