Alexander Shishkin a écrit : > This adds EHCI host support to the chipidea driver. We want it to be > part of the hdrc driver and not a standalone (sub-)driver module, as > the structure of ehci-hcd.c suggests, so for chipidea controller we > hack it to not provide platform-related code, but only the ehci hcd. > > The ehci-platform driver won't work for us here too, because the > controller uses the same registers for both device and host mode and > also otg-related bits, so it's not really possible to put ehci registers > into a separate resource. > > This is not a pretty solution, but the alternative is exporting symbols > from the chipidea driver to a ehci-chipidea driver and doing all the > module refcounting. > > Signed-off-by: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx> > Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > + > +static const struct hc_driver ci_ehci_hc_driver = { > + .description = "ehci_hcd", > + .product_desc = "ChipIdea HDRC EHCI", > + .hcd_priv_size = sizeof(struct ehci_hcd), > + > + /* > + * generic hardware linkage > + */ > + .irq = ehci_irq, > + .flags = HCD_MEMORY | HCD_USB2, > + > + /* > + * basic lifecycle operations > + */ > + .reset = ci_ehci_setup, > + .start = ehci_run, > + .stop = ehci_stop, > + .shutdown = ehci_shutdown, > + > + /* > + * managing i/o requests and associated device resources > + */ > + .urb_enqueue = ehci_urb_enqueue, > + .urb_dequeue = ehci_urb_dequeue, > + .endpoint_disable = ehci_endpoint_disable, > + .endpoint_reset = ehci_endpoint_reset, > + > + /* > + * scheduling support > + */ > + .get_frame_number = ehci_get_frame, > + > + /* > + * root hub support > + */ > + .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, > + > + .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete, > +}; > + Note that some chipidea version need special callback for phy init or errata workaround. In the current version, this is done in platform driver (ehci-fsl.c, ehci-tegra.c, ...). I don't know you do you plan to manage them ? Matthieu -- 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