USB: ehci-tegra: remove PORT_RWC_BITS when setting USB_PORT_FEAT_ENABLE
authorStephen Warren <swarren@nvidia.com>
Wed, 25 Apr 2012 18:31:10 +0000 (12:31 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Apr 2012 22:15:05 +0000 (15:15 -0700)
In the SetPortFeature/USB_PORT_FEAT_ENABLE case, ehci_hub_control()
would read from status_reg, modify the value, and write the result back to
status_reg. This would clear any bits in PORT_RWC_BITS that were set in
the register. Fix this by masking these bits off before the write.

This is logically the same change as 6d5f89c "USB: EHCI: remove
PORT_RWC_BITS when clearing USB_PORT_FEAT_ENABLE", but applied to the
Tegra driver rather than the USB core.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/ehci-tegra.c

index 43bb0a9f1f738e2bf394b6834103b8c1ba53e93f..4c1eb61bc2fc6d036cd9a670e83e052d6d02fb1a 100644 (file)
@@ -164,7 +164,7 @@ static int tegra_ehci_hub_control(
                        goto done;
                }
 
-               temp &= ~PORT_WKCONN_E;
+               temp &= ~(PORT_RWC_BITS | PORT_WKCONN_E);
                temp |= PORT_WKDISC_E | PORT_WKOC_E;
                ehci_writel(ehci, temp | PORT_SUSPEND, status_reg);