linux/drivers/usb/host/ohci-pci.c

// SPDX-License-Identifier: GPL-1.0+
/*
 * OHCI HCD (Host Controller Driver) for USB.
 *
 * (C) Copyright 1999 Roman Weissgaerber <[email protected]>
 * (C) Copyright 2000-2002 David Brownell <[email protected]>
 *
 * [ Initialisation is based on Linus'  ]
 * [ uhci code and gregs ohci fragments ]
 * [ (C) Copyright 1999 Linus Torvalds  ]
 * [ (C) Copyright 1999 Gregory P. Smith]
 *
 * PCI Bus Glue
 *
 * This file is licenced under the GPL.
 */

#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/usb.h>
#include <linux/usb/hcd.h>

#include "ohci.h"
#include "pci-quirks.h"

#define DRIVER_DESC

static const char hcd_name[] =;


/*-------------------------------------------------------------------------*/

static int broken_suspend(struct usb_hcd *hcd)
{}

/* AMD 756, for most chips (early revs), corrupts register
 * values on read ... so enable the vendor workaround.
 */
static int ohci_quirk_amd756(struct usb_hcd *hcd)
{}

/* Apple's OHCI driver has a lot of bizarre workarounds
 * for this chip.  Evidently control and bulk lists
 * can get confused.  (B&W G3 models, and ...)
 */
static int ohci_quirk_opti(struct usb_hcd *hcd)
{}

/* Check for NSC87560. We have to look at the bridge (fn1) to
 * identify the USB (fn2). This quirk might apply to more or
 * even all NSC stuff.
 */
static int ohci_quirk_ns(struct usb_hcd *hcd)
{}

/* Check for Compaq's ZFMicro chipset, which needs short
 * delays before control or bulk queues get re-activated
 * in finish_unlinks()
 */
static int ohci_quirk_zfmicro(struct usb_hcd *hcd)
{}

/* Check for Toshiba SCC OHCI which has big endian registers
 * and little endian in memory data structures
 */
static int ohci_quirk_toshiba_scc(struct usb_hcd *hcd)
{}

/* Check for NEC chip and apply quirk for allegedly lost interrupts.
 */

static void ohci_quirk_nec_worker(struct work_struct *work)
{}

static int ohci_quirk_nec(struct usb_hcd *hcd)
{}

static int ohci_quirk_amd700(struct usb_hcd *hcd)
{}

static int ohci_quirk_qemu(struct usb_hcd *hcd)
{}

/* List of quirks for OHCI */
static const struct pci_device_id ohci_pci_quirks[] =;

static int ohci_pci_reset (struct usb_hcd *hcd)
{}

static struct hc_driver __read_mostly ohci_pci_hc_driver;

static const struct ohci_driver_overrides pci_overrides __initconst =;

static const struct pci_device_id pci_ids[] =;
MODULE_DEVICE_TABLE (pci, pci_ids);

static int ohci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
{}

/* pci driver glue; this is a "new style" PCI driver module */
static struct pci_driver ohci_pci_driver =;

#ifdef CONFIG_PM
static int ohci_pci_resume(struct usb_hcd *hcd, pm_message_t msg)
{}
#endif
static int __init ohci_pci_init(void)
{}
module_init();

static void __exit ohci_pci_cleanup(void)
{}
module_exit(ohci_pci_cleanup);

MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_SOFTDEP();