// SPDX-License-Identifier: GPL-2.0 /* * UHCI HCD (Host Controller Driver) PCI Bus Glue. * * Extracted from uhci-hcd.c: * Maintainer: Alan Stern <[email protected]> * * (C) Copyright 1999 Linus Torvalds * (C) Copyright 1999-2002 Johannes Erdfelt, [email protected] * (C) Copyright 1999 Randy Dunlap * (C) Copyright 1999 Georg Acher, [email protected] * (C) Copyright 1999 Deti Fliegl, [email protected] * (C) Copyright 1999 Thomas Sailer, [email protected] * (C) Copyright 1999 Roman Weissgaerber, [email protected] * (C) Copyright 2000 Yggdrasil Computing, Inc. (port of new PCI interface * support from usb-ohci.c by Adam Richter, [email protected]). * (C) Copyright 1999 Gregory P. Smith (from usb-ohci.c) * (C) Copyright 2004-2007 Alan Stern, [email protected] */ #include "pci-quirks.h" /* * Make sure the controller is completely inactive, unable to * generate interrupts or do DMA. */ static void uhci_pci_reset_hc(struct uhci_hcd *uhci) { … } /* * Initialize a controller that was newly discovered or has just been * resumed. In either case we can't be sure of its previous state. * * Returns: 1 if the controller was reset, 0 otherwise. */ static int uhci_pci_check_and_reset_hc(struct uhci_hcd *uhci) { … } /* * Store the basic register settings needed by the controller. * This function is called at the end of configure_hc in uhci-hcd.c. */ static void uhci_pci_configure_hc(struct uhci_hcd *uhci) { … } static int uhci_pci_resume_detect_interrupts_are_broken(struct uhci_hcd *uhci) { … } static int uhci_pci_global_suspend_mode_is_broken(struct uhci_hcd *uhci) { … } static int uhci_pci_init(struct usb_hcd *hcd) { … } /* Make sure the controller is quiescent and that we're not using it * any more. This is mainly for the benefit of programs which, like kexec, * expect the hardware to be idle: not doing DMA or generating IRQs. * * This routine may be called in a damaged or failing kernel. Hence we * do not acquire the spinlock before shutting down the controller. */ static void uhci_shutdown(struct pci_dev *pdev) { … } #ifdef CONFIG_PM static int uhci_pci_resume(struct usb_hcd *hcd, pm_message_t state); static int uhci_pci_suspend(struct usb_hcd *hcd, bool do_wakeup) { … } static int uhci_pci_resume(struct usb_hcd *hcd, pm_message_t msg) { … } #endif static const struct hc_driver uhci_driver = …; static const struct pci_device_id uhci_pci_ids[] = …; MODULE_DEVICE_TABLE(pci, uhci_pci_ids); static int uhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) { … } static struct pci_driver uhci_pci_driver = …; MODULE_SOFTDEP(…) …;