24 static int uhci_grlib_init(
struct usb_hcd *hcd)
26 struct uhci_hcd *uhci = hcd_to_uhci(hcd);
45 uhci->
reset_hc = uhci_generic_reset_hc;
57 static const struct hc_driver uhci_grlib_hc_driver = {
58 .description = hcd_name,
59 .product_desc =
"GRLIB GRUSBHC UHCI Host Controller",
60 .hcd_priv_size =
sizeof(
struct uhci_hcd),
64 .flags = HCD_MEMORY | HCD_USB11,
67 .reset = uhci_grlib_init,
72 .bus_suspend = uhci_rh_suspend,
73 .bus_resume = uhci_rh_resume,
77 .urb_enqueue = uhci_urb_enqueue,
78 .urb_dequeue = uhci_urb_dequeue,
80 .endpoint_disable = uhci_hcd_endpoint_disable,
81 .get_frame_number = uhci_hcd_get_frame_number,
83 .hub_status_data = uhci_hub_status_data,
84 .hub_control = uhci_hub_control,
100 dev_dbg(&op->
dev,
"initializing GRUSBHC UHCI USB Controller\n");
107 op->
dev.dma_mask = &op->
dev.coherent_dma_mask;
113 hcd->rsrc_start =
res.start;
114 hcd->rsrc_len = resource_size(&
res);
129 hcd->regs =
ioremap(hcd->rsrc_start, hcd->rsrc_len);
136 uhci = hcd_to_uhci(hcd);
138 uhci->
regs = hcd->regs;
164 dev_dbg(&op->
dev,
"stopping GRLIB GRUSBHC UHCI USB Controller\n");
188 uhci_hc_died(hcd_to_uhci(hcd));
191 static const struct of_device_id uhci_hcd_grlib_of_match[] = {
192 { .name =
"GAISLER_UHCI", },
193 { .name =
"01_027", },
200 .probe = uhci_hcd_grlib_probe,
201 .remove = uhci_hcd_grlib_remove,
202 .shutdown = uhci_hcd_grlib_shutdown,
204 .name =
"grlib-uhci",
206 .of_match_table = uhci_hcd_grlib_of_match,