[PATCH 5/7] ehci mxc: make it more flexible to be used for mx28
Lin Tony-B19295
B19295 at freescale.com
Fri Jul 22 01:18:07 EDT 2011
> On Wed, 20 Jul 2011, Tony Lin wrote:
>
> > old driver uses some hard coding for clks' name which could not be
> > used for mx28. So workaround these hard codings by judging the cpu is
> > mx28 or not.
> > add platform callback funtions in usb irq handler in the case usb phy
> > need to change its disconnect detector mode after usb device is
> > connected and disconnected. These callbacks also could be used for
> > other machines whose usb phy need such kind of operations
> >
> > Signed-off-by: Tony Lin <tony.lin at freescale.com>
>
> ...
>
> > --- a/drivers/usb/host/ehci-mxc.c
> > +++ b/drivers/usb/host/ehci-mxc.c
>
> ...
>
> > +static irqreturn_t fsl_ehci_irq(struct usb_hcd *hcd) {
> > + struct mxc_usbh_platform_data *pdata;
> > + struct ehci_hcd *ehci = hcd_to_ehci(hcd);
> > + u32 status;
> > +
> > + pdata = hcd->self.controller->platform_data;
> > + if (pdata->plt_get_usb_connect_status == NULL || \
> > + pdata->plt_usb_disconnect_detect == NULL)
> > + goto out;
> > +
> > + spin_lock(&ehci->lock);
>
> Do you really need to use this spinlock? I don't see any reason for it.
>
I'll remove it. Thanks for pointing out.
> > + status = ehci_readl(ehci, &ehci->regs->status);
> > + if (status & STS_PCD) {
> > + if (pdata->plt_get_usb_connect_status())
> > + pdata->plt_usb_disconnect_detect(true);
> > + else
> > + pdata->plt_usb_disconnect_detect(false);
>
> How about just this:
>
> pdata->plt_usb_disconnect_detect(
> pdata->plt_get_usb_connect_status());
>
That's better.
> > + }
> > + spin_unlock(&ehci->lock);
> > +out:
> > + return ehci_irq(hcd);
> > +}
>
> Alan Stern
>
More information about the linux-arm-kernel
mailing list