[PATCH v4] usb: ehci-hcd: notify phy when connect change

Alexander Shishkin alexander.shishkin at linux.intel.com
Wed Jun 6 05:39:55 EDT 2012


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>
> ---
>  drivers/usb/host/ehci-hcd.c |   15 +++++++++++++++
>  1 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> index b100f5f..724ac471 100644
> --- a/drivers/usb/host/ehci-hcd.c
> +++ b/drivers/usb/host/ehci-hcd.c
> @@ -928,6 +928,21 @@ 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 (unlikely(ehci->transceiver &&
> +					(pstatus & PORT_CSC))) {

I don't think you need parens around (pstatus & PORT_CSC), since it
should already have higher precedence.

> +				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) &&
> -- 
> 1.7.5.4



More information about the linux-arm-kernel mailing list