亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ohci-pci.c

?? host usb 主設(shè)備程序 支持sd卡 mouse keyboard 的最單單的驅(qū)動(dòng)程序 gcc編譯
?? C
字號(hào):
/* * OHCI HCD (Host Controller Driver) for USB. * * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> * (C) Copyright 2000-2002 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] * * PCI Bus Glue * * This file is licenced under the GPL. */#ifndef CONFIG_PCI#error "This file is PCI bus glue.  CONFIG_PCI must be defined."#endif/*-------------------------------------------------------------------------*//* AMD 756, for most chips (early revs), corrupts register * values on read ... so enable the vendor workaround. */static int __devinit ohci_quirk_amd756(struct usb_hcd *hcd){	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);	ohci->flags = OHCI_QUIRK_AMD756;	ohci_dbg (ohci, "AMD756 erratum 4 workaround\n");	/* also erratum 10 (suspend/resume issues) */	device_init_wakeup(&hcd->self.root_hub->dev, 0);	return 0;}/* 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 __devinit ohci_quirk_opti(struct usb_hcd *hcd){	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);	ohci_dbg (ohci, "WARNING: OPTi workarounds unavailable\n");	return 0;}/* 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 __devinit ohci_quirk_ns(struct usb_hcd *hcd){	struct pci_dev *pdev = to_pci_dev(hcd->self.controller);	struct pci_dev	*b;	b  = pci_get_slot (pdev->bus, PCI_DEVFN (PCI_SLOT (pdev->devfn), 1));	if (b && b->device == PCI_DEVICE_ID_NS_87560_LIO	    && b->vendor == PCI_VENDOR_ID_NS) {		struct ohci_hcd	*ohci = hcd_to_ohci (hcd);		ohci->flags |= OHCI_QUIRK_SUPERIO;		ohci_dbg (ohci, "Using NSC SuperIO setup\n");	}	pci_dev_put(b);	return 0;}/* Check for Compaq's ZFMicro chipset, which needs short * delays before control or bulk queues get re-activated * in finish_unlinks() */static int __devinit ohci_quirk_zfmicro(struct usb_hcd *hcd){	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);	ohci->flags |= OHCI_QUIRK_ZFMICRO;	ohci_dbg (ohci, "enabled Compaq ZFMicro chipset quirk\n");	return 0;}/* Check for Toshiba SCC OHCI which has big endian registers * and little endian in memory data structures */static int __devinit ohci_quirk_toshiba_scc(struct usb_hcd *hcd){	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);	/* That chip is only present in the southbridge of some	 * cell based platforms which are supposed to select	 * CONFIG_USB_OHCI_BIG_ENDIAN_MMIO. We verify here if	 * that was the case though.	 */#ifdef CONFIG_USB_OHCI_BIG_ENDIAN_MMIO	ohci->flags |= OHCI_QUIRK_BE_MMIO;	ohci_dbg (ohci, "enabled big endian Toshiba quirk\n");	return 0;#else	ohci_err (ohci, "unsupported big endian Toshiba quirk\n");	return -ENXIO;#endif}/* List of quirks for OHCI */static const struct pci_device_id ohci_pci_quirks[] = {	{		PCI_DEVICE(PCI_VENDOR_ID_AMD, 0x740c),		.driver_data = (unsigned long)ohci_quirk_amd756,	},	{		PCI_DEVICE(PCI_VENDOR_ID_OPTI, 0xc861),		.driver_data = (unsigned long)ohci_quirk_opti,	},	{		PCI_DEVICE(PCI_VENDOR_ID_NS, PCI_ANY_ID),		.driver_data = (unsigned long)ohci_quirk_ns,	},	{		PCI_DEVICE(PCI_VENDOR_ID_COMPAQ, 0xa0f8),		.driver_data = (unsigned long)ohci_quirk_zfmicro,	},	{		PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA_2, 0x01b6),		.driver_data = (unsigned long)ohci_quirk_toshiba_scc,	},	/* FIXME for some of the early AMD 760 southbridges, OHCI	 * won't work at all.  blacklist them.	 */	{},};static int ohci_pci_reset (struct usb_hcd *hcd){	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);	int ret = 0;	if (hcd->self.controller) {		struct pci_dev *pdev = to_pci_dev(hcd->self.controller);		const struct pci_device_id *quirk_id;		quirk_id = pci_match_id(ohci_pci_quirks, pdev);		if (quirk_id != NULL) {			int (*quirk)(struct usb_hcd *ohci);			quirk = (void *)quirk_id->driver_data;			ret = quirk(hcd);		}	}	if (ret == 0) {		ohci_hcd_init (ohci);		return ohci_init (ohci);	}	return ret;}static int __devinit ohci_pci_start (struct usb_hcd *hcd){	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);	int		ret;#ifdef CONFIG_PM /* avoid warnings about unused pdev */	if (hcd->self.controller) {		struct pci_dev *pdev = to_pci_dev(hcd->self.controller);		/* RWC may not be set for add-in PCI cards, since boot		 * firmware probably ignored them.  This transfers PCI		 * PM wakeup capabilities (once the PCI layer is fixed).		 */		if (device_may_wakeup(&pdev->dev))			ohci->hc_control |= OHCI_CTRL_RWC;	}#endif /* CONFIG_PM */	ret = ohci_run (ohci);	if (ret < 0) {		ohci_err (ohci, "can't start\n");		ohci_stop (hcd);	}	return ret;}#ifdef	CONFIG_PMstatic int ohci_pci_suspend (struct usb_hcd *hcd, pm_message_t message){	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);	unsigned long	flags;	int		rc = 0;	/* Root hub was already suspended. Disable irq emission and	 * mark HW unaccessible, bail out if RH has been resumed. Use	 * the spinlock to properly synchronize with possible pending	 * RH suspend or resume activity.	 *	 * This is still racy as hcd->state is manipulated outside of	 * any locks =P But that will be a different fix.	 */	spin_lock_irqsave (&ohci->lock, flags);	if (hcd->state != HC_STATE_SUSPENDED) {		rc = -EINVAL;		goto bail;	}	ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);	(void)ohci_readl(ohci, &ohci->regs->intrdisable);	/* make sure snapshot being resumed re-enumerates everything */	if (message.event == PM_EVENT_PRETHAW)		ohci_usb_reset(ohci);	clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); bail:	spin_unlock_irqrestore (&ohci->lock, flags);	return rc;}static int ohci_pci_resume (struct usb_hcd *hcd){	set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);	usb_hcd_resume_root_hub(hcd);	return 0;}#endif	/* CONFIG_PM *//*-------------------------------------------------------------------------*/static const struct hc_driver ohci_pci_hc_driver = {	.description =		hcd_name,	.product_desc =		"OHCI Host Controller",	.hcd_priv_size =	sizeof(struct ohci_hcd),	/*	 * generic hardware linkage	 */	.irq =			ohci_irq,	.flags =		HCD_MEMORY | HCD_USB11,	/*	 * basic lifecycle operations	 */	.reset =		ohci_pci_reset,	.start =		ohci_pci_start,	.stop =			ohci_stop,	.shutdown =		ohci_shutdown,#ifdef	CONFIG_PM	/* these suspend/resume entries are for upstream PCI glue ONLY */	.suspend =		ohci_pci_suspend,	.resume =		ohci_pci_resume,#endif	/*	 * managing i/o requests and associated device resources	 */	.urb_enqueue =		ohci_urb_enqueue,	.urb_dequeue =		ohci_urb_dequeue,	.endpoint_disable =	ohci_endpoint_disable,	/*	 * scheduling support	 */	.get_frame_number =	ohci_get_frame,	/*	 * root hub support	 */	.hub_status_data =	ohci_hub_status_data,	.hub_control =		ohci_hub_control,	.hub_irq_enable =	ohci_rhsc_enable,#ifdef	CONFIG_PM	.bus_suspend =		ohci_bus_suspend,	.bus_resume =		ohci_bus_resume,#endif	.start_port_reset =	ohci_start_port_reset,};/*-------------------------------------------------------------------------*/static const struct pci_device_id pci_ids [] = { {	/* handle any USB OHCI controller */	PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_OHCI, ~0),	.driver_data =	(unsigned long) &ohci_pci_hc_driver,	}, { /* end: all zeroes */ }};MODULE_DEVICE_TABLE (pci, pci_ids);/* pci driver glue; this is a "new style" PCI driver module */static struct pci_driver ohci_pci_driver = {	.name =		(char *) hcd_name,	.id_table =	pci_ids,	.probe =	usb_hcd_pci_probe,	.remove =	usb_hcd_pci_remove,#ifdef	CONFIG_PM	.suspend =	usb_hcd_pci_suspend,	.resume =	usb_hcd_pci_resume,#endif	.shutdown =	usb_hcd_pci_shutdown,};

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美色图小说| 国产精品久久久久久久久久久免费看 | 国产成人免费视频精品含羞草妖精| 精品国产一二三| 国产精品一区免费在线观看| 国产精品污www在线观看| 成人av动漫网站| 亚洲男人的天堂在线aⅴ视频| 91丨九色丨蝌蚪丨老版| 一区二区三区在线视频观看| 欧美在线观看18| 日韩国产欧美视频| 精品国产欧美一区二区| 成人国产精品免费观看| 一区二区三区美女视频| 678五月天丁香亚洲综合网| 蓝色福利精品导航| 国产精品色噜噜| 欧美视频在线一区| 九九精品一区二区| 自拍av一区二区三区| 欧美日韩亚洲综合一区 | 国产精品影视网| 亚洲精品视频在线| 欧美一区二区免费视频| 风间由美一区二区av101| 一区二区三区四区五区视频在线观看| 8x福利精品第一导航| 国产精品18久久久久久久久久久久| 亚洲视频网在线直播| 91精品婷婷国产综合久久竹菊| 国产高清不卡一区二区| 午夜日韩在线电影| 国产欧美日韩视频一区二区| 欧美日韩国产小视频| 国产不卡在线视频| 日本怡春院一区二区| 中文字幕一区二区在线观看| 制服.丝袜.亚洲.中文.综合| 99久久久久久| 国产一区欧美二区| 偷窥国产亚洲免费视频| 亚洲色图在线播放| 精品国产一区二区三区忘忧草| 欧美亚洲一区三区| 成人免费电影视频| 久久99这里只有精品| 亚洲一区二区精品久久av| 国产精品网站在线播放| 日韩精品一区二区三区swag| 色婷婷亚洲精品| 国产jizzjizz一区二区| 蜜桃精品视频在线观看| 亚洲va国产va欧美va观看| 亚洲欧美一区二区久久| 国产女主播在线一区二区| 日韩欧美在线影院| 欧美区在线观看| 色婷婷av一区二区| www.性欧美| 国产夫妻精品视频| 韩国成人福利片在线播放| 青草av.久久免费一区| 亚洲成年人网站在线观看| 亚洲激情图片一区| 亚洲视频你懂的| 亚洲欧美日韩国产成人精品影院 | 国产精品色一区二区三区| 精品蜜桃在线看| 欧美一区二区私人影院日本| 欧美中文字幕亚洲一区二区va在线 | 精品久久人人做人人爰| 日韩欧美国产综合| 日韩欧美亚洲国产精品字幕久久久| 欧美少妇xxx| 欧美日韩高清影院| 欧美精品少妇一区二区三区| 欧美三级电影网站| 欧美色图在线观看| 欧美另类videos死尸| 9191精品国产综合久久久久久| 在线播放视频一区| 欧美一级日韩一级| 日韩美女一区二区三区| 欧美大度的电影原声| 欧美电影免费观看高清完整版在| 日韩视频一区二区三区在线播放| 欧美日韩中字一区| 欧美日韩国产高清一区二区三区| 337p亚洲精品色噜噜噜| 日韩欧美色综合网站| 久久网这里都是精品| 亚洲国产岛国毛片在线| 中文字幕视频一区| 亚洲愉拍自拍另类高清精品| 香蕉乱码成人久久天堂爱免费| 首页国产欧美久久| 极品瑜伽女神91| 成人激情黄色小说| 日本伦理一区二区| 日韩一区二区电影| 国产欧美久久久精品影院| 亚洲男人的天堂av| 免费观看在线综合色| 韩国毛片一区二区三区| 成年人国产精品| 欧美放荡的少妇| 久久久久久久久久久电影| 亚洲欧美影音先锋| 日韩**一区毛片| 国产不卡在线一区| 欧美久久久久久久久中文字幕| www国产精品av| 亚洲欧美日韩电影| 极品尤物av久久免费看| 色综合久久中文综合久久牛| 91精品福利在线一区二区三区| 国产蜜臀97一区二区三区 | 日韩av二区在线播放| 国产成人aaaa| 在线成人小视频| 中文在线一区二区| 蜜桃一区二区三区在线| 91色在线porny| 精品剧情v国产在线观看在线| 亚洲乱码日产精品bd| 美女精品一区二区| 色综合中文字幕国产 | 欧美最猛性xxxxx直播| 久久影院电视剧免费观看| 一区二区三区91| 国产一区二区三区综合| 欧美三级中文字| 中文字幕一区二区三区不卡在线| 美女视频网站黄色亚洲| 日本道免费精品一区二区三区| 精品乱人伦一区二区三区| 一区二区三区中文字幕精品精品 | 成人久久18免费网站麻豆| 欧美一卡2卡3卡4卡| 亚洲激情图片qvod| 成人av在线影院| 久久网这里都是精品| 日本亚洲天堂网| 欧美日韩极品在线观看一区| 国产精品电影院| 国产精品一级黄| 精品人伦一区二区色婷婷| 日本一道高清亚洲日美韩| 欧美色男人天堂| 亚洲黄色免费电影| 99久久99久久免费精品蜜臀| 国产日韩欧美一区二区三区乱码| 免费不卡在线视频| 7878成人国产在线观看| 亚洲第一激情av| 欧美日韩一区二区欧美激情| 亚洲视频一区二区在线| 99精品欧美一区二区三区小说| 国产免费成人在线视频| 粉嫩aⅴ一区二区三区四区| 久久九九99视频| 国产乱人伦偷精品视频不卡 | 中文字幕电影一区| 国产精品一区在线| 国产欧美日韩精品在线| 成人听书哪个软件好| 中文字幕制服丝袜一区二区三区 | 成人a级免费电影| 国产精品伦一区二区三级视频| 国产成人亚洲综合a∨婷婷 | 色综合久久中文综合久久牛| 亚洲视频一二区| 在线免费不卡视频| 亚洲最大的成人av| 欧美日韩卡一卡二| 天堂久久一区二区三区| 日韩欧美色电影| 国产精品中文字幕日韩精品| 国产欧美精品一区aⅴ影院| 99热精品一区二区| 一区二区三区在线播| 欧美三级日韩在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 91精品国产综合久久精品性色| 蜜桃久久av一区| 国产亚洲午夜高清国产拍精品 | 久久国产夜色精品鲁鲁99| 久久久久国产一区二区三区四区| 懂色一区二区三区免费观看| 日韩一区在线播放| 欧美视频一区二区三区四区| 蓝色福利精品导航| 专区另类欧美日韩| 在线成人av影院| 国产精品一区2区| 亚洲小说春色综合另类电影| 日韩三级高清在线| 成人免费高清在线| 婷婷丁香激情综合|