Re: [PATCH v3 03/12] usb: ehci-hcd: notify phy when connect change

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

 



On Tue, 5 Jun 2012, Alexander Shishkin wrote:

> Richard Zhao <richard.zhao@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx>
> 
> 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

--
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