Re: [PATCH 1/1] usb: xhci: set RWE only for remote wakeup capable devices

From: Lu Baolu
Date: Thu Jan 12 2017 - 05:08:31 EST


Hi Mathias,

On 01/12/2017 04:53 PM, Lu Baolu wrote:
> Xhci spec requires in section 4.23.5.1.1.1 that the RWE bit of USB2
> PORTPMSC register should only set for remote wakeup capble devices.
>
> This was suggested by Mathias in the following discussion thread.
> http://marc.info/?l=linux-usb&m=148154757829677&w=2
>
> Suggested-by: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx>
> Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
> ---
> drivers/usb/host/xhci.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> index 0c8deb9..d887e09 100644
> --- a/drivers/usb/host/xhci.c
> +++ b/drivers/usb/host/xhci.c
> @@ -4191,7 +4191,9 @@ int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd,
> }
>
> pm_val &= ~PORT_HIRD_MASK;
> - pm_val |= PORT_HIRD(hird) | PORT_RWE | PORT_L1DS(udev->slot_id);
> + pm_val |= PORT_HIRD(hird) | PORT_L1DS(udev->slot_id);
> + if (udev->do_remote_wakeup)

This is not the right thing to check remote wakeup capability of a device.
I will rework it and submit v2. Please just ignore this one.

Sorry about this.

Best regards,
Lu Baolu

> + pm_val |= PORT_RWE;
> writel(pm_val, pm_addr);
> pm_val = readl(pm_addr);
> pm_val |= PORT_HLE;