Lines Matching +full:generic +full:- +full:uhci

1 // SPDX-License-Identifier: GPL-2.0
3 * UHCI HCD (Host Controller Driver) for GRLIB GRUSBHC
7 * This file is based on UHCI PCI HCD:
9 * (C) Copyright 1999-2002 Johannes Erdfelt, [email protected]
16 * support from usb-ohci.c by Adam Richter, [email protected]).
17 * (C) Copyright 1999 Gregory P. Smith (from usb-ohci.c)
18 * (C) Copyright 2004-2007 Alan Stern, [email protected]
29 struct uhci_hcd *uhci = hcd_to_uhci(hcd); in uhci_grlib_init() local
35 * with bit 7 (0x80) turned on then the current little-endian in uhci_grlib_init()
37 * byte-swapped; hence the register interface and presumably in uhci_grlib_init()
38 * also the descriptors are big-endian. in uhci_grlib_init()
40 if (!(uhci_readw(uhci, USBPORTSC1) & 0x80)) { in uhci_grlib_init()
41 uhci->big_endian_mmio = 1; in uhci_grlib_init()
42 uhci->big_endian_desc = 1; in uhci_grlib_init()
45 uhci->rh_numports = uhci_count_ports(hcd); in uhci_grlib_init()
47 /* Set up pointers to generic functions */ in uhci_grlib_init()
48 uhci->reset_hc = uhci_generic_reset_hc; in uhci_grlib_init()
49 uhci->check_and_reset_hc = uhci_generic_check_and_reset_hc; in uhci_grlib_init()
51 uhci->configure_hc = NULL; in uhci_grlib_init()
52 uhci->resume_detect_interrupts_are_broken = NULL; in uhci_grlib_init()
53 uhci->global_suspend_mode_is_broken = NULL; in uhci_grlib_init()
56 check_and_reset_hc(uhci); in uhci_grlib_init()
62 .product_desc = "GRLIB GRUSBHC UHCI Host Controller",
65 /* Generic hardware linkage */
93 struct device_node *dn = op->dev.of_node; in uhci_hcd_grlib_probe()
95 struct uhci_hcd *uhci = NULL; in uhci_hcd_grlib_probe() local
101 return -ENODEV; in uhci_hcd_grlib_probe()
103 dev_dbg(&op->dev, "initializing GRUSBHC UHCI USB Controller\n"); in uhci_hcd_grlib_probe()
110 op->dev.dma_mask = &op->dev.coherent_dma_mask; in uhci_hcd_grlib_probe()
111 hcd = usb_create_hcd(&uhci_grlib_hc_driver, &op->dev, in uhci_hcd_grlib_probe()
112 "GRUSBHC UHCI USB"); in uhci_hcd_grlib_probe()
114 return -ENOMEM; in uhci_hcd_grlib_probe()
116 hcd->rsrc_start = res.start; in uhci_hcd_grlib_probe()
117 hcd->rsrc_len = resource_size(&res); in uhci_hcd_grlib_probe()
122 rv = -EBUSY; in uhci_hcd_grlib_probe()
126 hcd->regs = devm_ioremap_resource(&op->dev, &res); in uhci_hcd_grlib_probe()
127 if (IS_ERR(hcd->regs)) { in uhci_hcd_grlib_probe()
128 rv = PTR_ERR(hcd->regs); in uhci_hcd_grlib_probe()
132 uhci = hcd_to_uhci(hcd); in uhci_hcd_grlib_probe()
134 uhci->regs = hcd->regs; in uhci_hcd_grlib_probe()
140 device_wakeup_enable(hcd->self.controller); in uhci_hcd_grlib_probe()
155 dev_dbg(&op->dev, "stopping GRLIB GRUSBHC UHCI USB Controller\n"); in uhci_hcd_grlib_remove()
159 irq_dispose_mapping(hcd->irq); in uhci_hcd_grlib_remove()
190 .name = "grlib-uhci",