Re: [PATCH] usb: ohci-at91: Do not drop unhandled USB suspend control requests

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

 



On 21/02/2017 at 12:48:18 +0100, Jelle Martijn Kok wrote:
> 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 <jmkok@xxxxxxxxx>
> Tested-by: Wenyou Yang <wenyou.yang@xxxxxxxxx>
Reviewed-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxxxxxxxxx>

> Cc: Wenyou Yang <wenyou.yang@xxxxxxxxx>
> Cc: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxxxxxxxxx>
> Cc: Nicolas Ferre <nicolas.ferre@xxxxxxxxx>
> Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> ---
>  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;
> -- 
> 2.1.4
> 

-- 
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
--
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