[PATCH v3 03/12] usb: ehci-hcd: notify phy when connect change
Alan Stern
stern at rowland.harvard.edu
Tue Jun 5 10:28:13 EDT 2012
On Tue, 5 Jun 2012, Alexander Shishkin wrote:
> Richard Zhao <richard.zhao at freescale.com> writes:
>
> > It still has below limitations:
> > - it does not work for multi-phy ehci
> > - the best place is after debounce, but I can't get
> > phy there
> >
> > Signed-off-by: Richard Zhao <richard.zhao at freescale.com>
>
> Alan, are you ok with this?
>
> > ---
> > drivers/usb/host/ehci-hcd.c | 14 ++++++++++++++
> > 1 files changed, 14 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> > index b100f5f..8c39a7a 100644
> > --- a/drivers/usb/host/ehci-hcd.c
> > +++ b/drivers/usb/host/ehci-hcd.c
> > @@ -928,6 +928,20 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
> > pstatus = ehci_readl(ehci,
> > &ehci->regs->port_status[i]);
> >
> > + /* FIXME:
> > + * - it does not work for multi-phy ehci
> > + * - the best place is after debounce, but I can't get
> > + * phy there
> > + */
> > + if ((pstatus & PORT_CSC) && ehci->transceiver) {
Do the tests in the opposite order and add "unlikely":
if (unlikely(ehci->transceiver &&
(pstatus & PORT_CSC)) {
That way it will fail more quickly on systems where it doesn't apply or
for unaffected ports.
> > + if (pstatus & PORT_CONNECT)
> > + usb_phy_notify_connect(
> > + ehci->transceiver, i);
> > + else
> > + usb_phy_notify_disconnect(
> > + ehci->transceiver, i);
> > + }
> > +
> > if (pstatus & PORT_OWNER)
> > continue;
> > if (!(test_bit(i, &ehci->suspended_ports) &&
Otherwise it's okay.
Alan Stern
More information about the linux-arm-kernel
mailing list