Le 21/02/2017 à 12:48, Jelle Martijn Kok a écrit :
> In patch 2e2aa1bc7eff90ecm, USB suspend and wakeup control requests are
> passed to SFR_OHCIICR register. If a processor does not have such a
> register, this hub control request will be dropped.
> 
> If no such a SFR register is available, all USB suspend control requests
> will now be processed using ohci_hub_control()
> (like before patch 2e2aa1bc7eff90ecm.)
> 
> Tested on an Atmel AT91SAM9G20 with an on-board TI TUSB2046B hub chip
> If the last USB device is unplugged from the USB hub, the hub goes into
> sleep and will not wakeup when an USB devices is inserted.
> 
> Fixes: 2e2aa1bc7eff90ec ("usb: ohci-at91: Forcibly suspend ports while USB 
> suspend")
> Signed-off-by: Jelle Martijn Kok <jm...@youcom.nl>
> Tested-by: Wenyou Yang <wenyou.y...@atmel.com>
> Cc: Wenyou Yang <wenyou.y...@atmel.com>
> Cc: Alexandre Belloni <alexandre.bell...@free-electrons.com>
> Cc: Nicolas Ferre <nicolas.fe...@atmel.com>

Acked-by: Nicolas Ferre <nicolas.fe...@microchip.com>

Thanks

> Cc: Alan Stern <st...@rowland.harvard.edu>
> ---
>  drivers/usb/host/ohci-at91.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index b38a228..af0566d 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -361,7 +361,7 @@ static int ohci_at91_hub_control(struct usb_hcd *hcd, u16 
> typeReq, u16 wValue,
>  
>               case USB_PORT_FEAT_SUSPEND:
>                       dev_dbg(hcd->self.controller, "SetPortFeat: SUSPEND\n");
> -                     if (valid_port(wIndex)) {
> +                     if (valid_port(wIndex) && ohci_at91->sfr_regmap) {
>                               ohci_at91_port_suspend(ohci_at91->sfr_regmap,
>                                                      1);
>                               return 0;
> @@ -404,7 +404,7 @@ static int ohci_at91_hub_control(struct usb_hcd *hcd, u16 
> typeReq, u16 wValue,
>  
>               case USB_PORT_FEAT_SUSPEND:
>                       dev_dbg(hcd->self.controller, "ClearPortFeature: 
> SUSPEND\n");
> -                     if (valid_port(wIndex)) {
> +                     if (valid_port(wIndex) && ohci_at91->sfr_regmap) {
>                               ohci_at91_port_suspend(ohci_at91->sfr_regmap,
>                                                      0);
>                               return 0;
> 


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

Reply via email to