On Sat, Jan 30, 2010 at 09:11:45PM -0500, Alan Stern wrote:
> On Sat, 30 Jan 2010, Maxime Bizon wrote:
> > +static const struct hc_driver ehci_bcm63xx_hc_driver = {
> > + .description = hcd_name,
> > + .product_desc = "BCM63XX integrated EHCI controller",
> > + .hcd_priv_size = sizeof(struct ehci_hcd),
> > +
> > + .irq = ehci_irq,
> > + .flags = HCD_MEMORY | HCD_USB2,
> > +
> > + .reset = ehci_bcm63xx_setup,
> > + .start = ehci_run,
> > + .stop = ehci_stop,
> > + .shutdown = ehci_shutdown,
> > +
> > + .urb_enqueue = ehci_urb_enqueue,
> > + .urb_dequeue = ehci_urb_dequeue,
> > + .endpoint_disable = ehci_endpoint_disable,
> > +
> > + .get_frame_number = ehci_get_frame,
> > +
> > + .hub_status_data = ehci_hub_status_data,
> > + .hub_control = ehci_hub_control,
> > + .bus_suspend = ehci_bus_suspend,
> > + .bus_resume = ehci_bus_resume,
> > + .relinquish_port = ehci_relinquish_port,
> > + .port_handed_over = ehci_port_handed_over,
> > +};
>
> You'll run into trouble if you don't include the standard
> endpoint_reset method pointer.
>
> Alan Stern
And one will run into even more trouble (as did I! hung ports galore...)
if one doesn't include the .clear_tt_buffer_complete callback either,
due to using an outdated non-mainline-synchronized host driver
(that was Broadcom as well, ehci-ssb.c).
The best thing to do is a full review of all _diffs_ in _all_
usb host kernel files in even moderately recent times (say 2.6.23 - 2.6.33)
and add every missing required item to these bcm63xx host files, too.
Is your code coming from OpenWrt too by chance? :-P
Kudos to Alan for catching this problem during review
(probably he was still alerted by my miserable luck)
HTH,
Andreas Mohr
P.S.: yup I should get ehci-ssb.c cleaned up and submitted soon.
|