Alan Stern a écrit : > On Mon, 14 May 2012, Matthieu CASTET wrote: > >> Signed-off-by: Matthieu CASTET <matthieu.castet@xxxxxxxxxx> >> --- >> drivers/usb/host/ehci-hub.c | 46 +++++++++++++++++++++++++++---------------- >> 1 file changed, 29 insertions(+), 17 deletions(-) >> >> diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c >> index b70fca6..3b3f201 100644 >> --- a/drivers/usb/host/ehci-hub.c >> +++ b/drivers/usb/host/ehci-hub.c >> @@ -33,34 +33,46 @@ >> >> static void tdi_phy_lpm_clear(struct ehci_hcd *ehci, int port) >> { >> + u32 temp; >> + u32 __iomem *reg; >> + u32 bit; >> if (ehci->has_hostpc) { >> - u32 __iomem *hostpc_reg; >> - u32 temp; >> - >> - hostpc_reg = (u32 __iomem *)((u8 *) ehci->regs >> + reg = (u32 __iomem *)((u8 *) ehci->regs >> + HOSTPC0 + 4 * port); >> - temp = ehci_readl(ehci, hostpc_reg); >> - ehci_writel(ehci, temp & ~HOSTPC_PHCD, hostpc_reg); >> + bit = HOSTPC_PHCD; >> + } >> + else { >> + reg = &ehci->regs->port_status[port]; >> + bit = HOSTPC_PHCD << 1; >> } >> + >> + temp = ehci_readl(ehci, reg); >> + ehci_writel(ehci, temp & ~bit, reg); > > This can't be right. In the !has_hostpc case, you do not turn off the > RWC bits before writing them back. > I don't understand : the bit is turned of by "temp & ~bit" that is in the common path. Matthieu -- 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