/* * Open Host Controller Interface (OHCI) driver for USB. * * Maintainer: Alan Stern <stern@rowland.harvard.edu> * * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> * (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net> * * [ Initialisation is based on Linus' ] * [ uhci code and gregs ohci fragments ] * [ (C) Copyright 1999 Linus Torvalds ] * [ (C) Copyright 1999 Gregory P. Smith] * * * OHCI is the main "non-Intel/VIA" standard for USB 1.1 host controller * interfaces (though some non-x86 Intel chips use it). It supports * smarter hardware than UHCI. A download link for the spec available * through the http://www.usb.org website. * * This file is licenced under the GPL. */#include<linux/module.h>#include<linux/moduleparam.h>#include<linux/pci.h>#include<linux/kernel.h>#include<linux/delay.h>#include<linux/ioport.h>#include<linux/sched.h>#include<linux/slab.h>#include<linux/errno.h>#include<linux/init.h>#include<linux/timer.h>#include<linux/list.h>#include<linux/usb.h>#include<linux/usb/otg.h>#include<linux/usb/hcd.h>#include<linux/dma-mapping.h>#include<linux/dmapool.h>#include<linux/workqueue.h>#include<linux/debugfs.h>#include<asm/io.h>#include<asm/irq.h>#include<asm/unaligned.h>#include<asm/byteorder.h>#define DRIVER_AUTHOR "Roman Weissgaerber, David Brownell"#define DRIVER_DESC "USB 1.1 'Open' Host Controller (OHCI) Driver"/*-------------------------------------------------------------------------*/#undef OHCI_VERBOSE_DEBUG /* not always helpful *//* For initializing controller (mask in an HCFS mode too) */#define OHCI_CONTROL_INIT OHCI_CTRL_CBSR#define OHCI_INTR_INIT \ (OHCI_INTR_MIE | OHCI_INTR_RHSC | OHCI_INTR_UE \ | OHCI_INTR_RD | OHCI_INTR_WDH)#ifdef __hppa__/* On PA-RISC, PDC can leave IR set incorrectly; ignore it there. */#define IR_DISABLE#endif#ifdef CONFIG_ARCH_OMAP/* OMAP doesn't support IR (no SMM; not needed) */#define IR_DISABLE#endif/*-------------------------------------------------------------------------*/staticconstcharhcd_name[]="ohci_hcd";#define STATECHANGE_DELAY msecs_to_jiffies(300)#include"ohci.h"#include"pci-quirks.h"staticvoidohci_dump(structohci_hcd*ohci,intverbose);staticintohci_init(structohci_hcd*ohci);staticvoidohci_stop(structusb_hcd*hcd);#if defined(CONFIG_PM) || defined(CONFIG_PCI)staticintohci_restart(structohci_hcd*ohci);#endif#ifdef CONFIG_PCIstaticvoidsb800_prefetch(structohci_hcd*ohci,inton);#elsestaticinlinevoidsb800_prefetch(structohci_hcd*ohci,inton){return;}#endif#include"ohci-hub.c"#include"ohci-dbg.c"#include