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

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

?? ohci-hcd.c

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
		/* this timeout is arbitrary.  we make it long, so systems		 * depending on usb keyboards may be usable even if the		 * BIOS/SMM code seems pretty broken.		 */		temp = 500;	/* arbitrary: five seconds */		ohci_write_intrenable (ohci, OHCI_INTR_OC);		ohci_write_cmdstatus (ohci, OHCI_OCR);		while (ohci_read_control (ohci) & OHCI_CTRL_IR) {			msleep (10);			if (--temp == 0) {				ohci_err (ohci, "USB HC TakeOver failed!\n");				return -1;			}		}	}#endif	/* Disable HC interrupts */	ohci_write_intrdisable (ohci, OHCI_INTR_MIE);	ohci_dbg (ohci, "reset, control = 0x%x\n", ohci_read_control (ohci));  	/* Reset USB (needed by some controllers); RemoteWakeupConnected	 * saved if boot firmware (BIOS/SMM/...) told us it's connected	 * (for OHCI integrated on mainboard, it normally is)	 */	ohci->hc_control = ohci_read_control (ohci);	ohci->hc_control &= OHCI_CTRL_RWC;	/* hcfs 0 = RESET */	if (ohci->hc_control)		ohci->hcd.can_wakeup = 1;	ohci_write_control (ohci, ohci->hc_control);	if (power_switching) {		unsigned ports = roothub_a (ohci) & RH_A_NDP; 		/* power down each port */		for (temp = 0; temp < ports; temp++)			ohci_write_roothub_portstatus(ohci, temp, RH_PS_LSDA);	}	// flush those pci writes	(void) ohci_read_control (ohci);	msleep (50);	/* HC Reset requires max 10 us delay */	ohci_write_cmdstatus (ohci, OHCI_HCR);	temp = 30;	/* ... allow extra time */	while ((ohci_read_cmdstatus (ohci) & OHCI_HCR) != 0) {		if (--temp == 0) {			ohci_err (ohci, "USB HC reset timed out!\n");			return -1;		}		udelay (1);	}	/* now we're in the SUSPEND state ... must go OPERATIONAL	 * within 2msec else HC enters RESUME	 *	 * ... but some hardware won't init fmInterval "by the book"	 * (SiS, OPTi ...), so reset again instead.  SiS doesn't need	 * this if we write fmInterval after we're OPERATIONAL.	 */	ohci_write_control (ohci, ohci->hc_control);	// flush those pci writes	(void) ohci_read_control (ohci);	return 0;}/*-------------------------------------------------------------------------*//* Start an OHCI controller, set the BUS operational * enable interrupts  * connect the virtual root hub */static int hc_start (struct ohci_hcd *ohci){  	u32			mask, tmp;  	struct usb_device	*udev;  	struct usb_bus		*bus;	disable (ohci);	/* Tell the controller where the control and bulk lists are	 * The lists are empty now. */	ohci_write_controlhead (ohci, 0);	ohci_write_bulkhead (ohci, 0);	/* a reset clears this */	writel ((u32) ohci->hcca_dma, &ohci->regs->hcca);	periodic_reinit (ohci);	/* some OHCI implementations are finicky about how they init.	 * bogus values here mean not even enumeration could work.	 */	if ((ohci_readl (&ohci->regs->fminterval) & 0x3fff0000) == 0			|| !ohci_readl (&ohci->regs->periodicstart)) {		ohci_err (ohci, "init err\n");		return -EOVERFLOW;	} 	/* start controller operations */	ohci->hc_control &= OHCI_CTRL_RWC;	ohci->hc_control |= OHCI_CONTROL_INIT | OHCI_USB_OPER;	ohci_write_control(ohci, ohci->hc_control);	ohci->hcd.state = USB_STATE_RUNNING;	/* wake on ConnectStatusChange, matching external hubs */	ohci_write_roothub_status (ohci, RH_HS_DRWE);	/* Choose the interrupts we care about now, others later on demand */	mask = OHCI_INTR_INIT;	ohci_write_intrstatus (ohci, mask);	ohci_write_intrenable (ohci, mask);	/* handle root hub init quirks ... */	tmp = roothub_a (ohci);	tmp &= ~(RH_A_PSM | RH_A_OCPM);	if (ohci->flags & OHCI_QUIRK_SUPERIO) {		/* NSC 87560 and maybe others */		tmp |= RH_A_NOCP;		tmp &= ~(RH_A_POTPGT | RH_A_NPS);	} else if (power_switching) {		/* act like most external hubs:  use per-port power		 * switching and overcurrent reporting.		 */		tmp &= ~(RH_A_NPS | RH_A_NOCP);		tmp |= RH_A_PSM | RH_A_OCPM;	} else {		/* hub power always on; required for AMD-756 and some		 * Mac platforms.  ganged overcurrent reporting, if any.		 */		tmp |= RH_A_NPS;	}	ohci_write_roothub_a (ohci, tmp);	ohci_write_roothub_status (ohci, RH_HS_LPSC);	ohci_write_roothub_b (ohci, power_switching ? RH_B_PPCM : 0);	// flush those pci writes	(void) ohci_read_control (ohci);	// POTPGT delay is bits 24-31, in 2 ms units.	mdelay ((roothub_a (ohci) >> 23) & 0x1fe);	bus = hcd_to_bus (&ohci->hcd);	if (bus->root_hub) {		ohci->hcd.state = USB_STATE_RUNNING;		return 0;	} 	/* connect the virtual root hub */	udev = usb_alloc_dev (NULL, bus, 0);	ohci->hcd.state = USB_STATE_RUNNING;	if (!udev) {		disable (ohci);		ohci->hc_control &= ~OHCI_CTRL_HCFS;		ohci_write_control (ohci, ohci->hc_control);		return -ENOMEM;	}	udev->speed = USB_SPEED_FULL;	if (hcd_register_root (udev, &ohci->hcd) != 0) {		usb_put_dev (udev);		disable (ohci);		ohci->hc_control &= ~OHCI_CTRL_HCFS;		ohci_write_control (ohci, ohci->hc_control);		return -ENODEV;	}	return 0;}/*-------------------------------------------------------------------------*//* an interrupt happens */static irqreturn_t ohci_irq (struct usb_hcd *hcd, struct pt_regs *ptregs){	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);	struct ohci_regs	*regs = ohci->regs; 	int			ints; 	/* we can eliminate a (slow) ohci_readl()	   if _only_ WDH caused this irq */	if ((ohci->hcca->done_head != 0)			&& ! (le32_to_cpup (&ohci->hcca->done_head) & 0x01)) {		ints =  OHCI_INTR_WDH;	/* cardbus/... hardware gone before remove() */	} else if ((ints = ohci_read_intrstatus (ohci)) == ~(u32)0) {		disable (ohci);		ohci_dbg (ohci, "device removed!\n");		return IRQ_HANDLED;	/* interrupt for some other device? */	} else if ((ints &= ohci_read_intrenable (ohci)) == 0) {		return IRQ_NONE;	} 	if (ints & OHCI_INTR_UE) {		disable (ohci);		ohci_err (ohci, "OHCI Unrecoverable Error, disabled\n");		// e.g. due to PCI Master/Target Abort		ohci_dump (ohci, 1);		hc_reset (ohci);	}	if (ints & OHCI_INTR_RD) {		ohci_vdbg (ohci, "resume detect\n");		schedule_work(&ohci->rh_resume);	}	if (ints & OHCI_INTR_WDH) {		if (HCD_IS_RUNNING(hcd->state))			ohci_write_intrdisable (ohci, OHCI_INTR_WDH);		spin_lock (&ohci->lock);		dl_done_list (ohci, ptregs);		spin_unlock (&ohci->lock);		if (HCD_IS_RUNNING(hcd->state))			ohci_write_intrenable (ohci, OHCI_INTR_WDH);	}	/* could track INTR_SO to reduce available PCI/... bandwidth */	/* handle any pending URB/ED unlinks, leaving INTR_SF enabled	 * when there's still unlinking to be done (next frame).	 */	spin_lock (&ohci->lock);	if (ohci->ed_rm_list)		finish_unlinks (ohci, OHCI_FRAME_NO(ohci->hcca),				ptregs);	if ((ints & OHCI_INTR_SF) != 0 && !ohci->ed_rm_list	    && HCD_IS_RUNNING(ohci->hcd.state))		ohci_write_intrdisable (ohci, OHCI_INTR_SF);	spin_unlock (&ohci->lock);	if (HCD_IS_RUNNING(ohci->hcd.state)) {		ohci_write_intrstatus (ohci, ints);		ohci_write_intrenable (ohci, OHCI_INTR_MIE);		// flush those pci writes		(void) ohci_read_control (ohci);	}	return IRQ_HANDLED;}/*-------------------------------------------------------------------------*/static void ohci_stop (struct usb_hcd *hcd){		struct ohci_hcd		*ohci = hcd_to_ohci (hcd);	ohci_dbg (ohci, "stop %s controller (state 0x%02x)\n",		hcfs2string (ohci->hc_control & OHCI_CTRL_HCFS),		ohci->hcd.state);	ohci_dump (ohci, 1);	flush_scheduled_work();	if (HCD_IS_RUNNING(ohci->hcd.state))		hc_reset (ohci);	else		ohci_write_intrdisable (ohci, OHCI_INTR_MIE);		remove_debug_files (ohci);	ohci_mem_cleanup (ohci);	if (ohci->hcca) {		dma_free_coherent (ohci->hcd.self.controller,				   sizeof *ohci->hcca,				   ohci->hcca, ohci->hcca_dma);		ohci->hcca = NULL;		ohci->hcca_dma = 0;	}}/*-------------------------------------------------------------------------*//* must not be called from interrupt context */#ifdef CONFIG_PMstatic void mark_children_gone (struct usb_device *dev){	unsigned i;	for (i = 0; i < dev->maxchild; i++) {		if (dev->children [i] == 0)			continue;		dev->children [i]->state = USB_STATE_NOTATTACHED;		mark_children_gone (dev->children [i]);	}}static int hc_restart (struct ohci_hcd *ohci){	int temp;	int i;	struct urb_priv *priv;	/* mark any devices gone, so they do nothing till khubd disconnects.	 * recycle any "live" eds/tds (and urbs) right away.	 * later, khubd disconnect processing will recycle the other state,	 * (either as disconnect/reconnect, or maybe someday as a reset).	 */ 	spin_lock_irq(&ohci->lock);	disable (ohci);	mark_children_gone (ohci->hcd.self.root_hub);	if (!list_empty (&ohci->pending))		ohci_dbg(ohci, "abort schedule...\n");	list_for_each_entry (priv, &ohci->pending, pending) {		struct urb	*urb = priv->td[0]->urb;		struct ed	*ed = priv->ed;		switch (ed->state) {		case ED_OPER:			ed->state = ED_UNLINK;			ed->hwINFO |= ED_DEQUEUE;			ed_deschedule (ohci, ed);			ed->ed_next = ohci->ed_rm_list;			ed->ed_prev = NULL;			ohci->ed_rm_list = ed;			/* FALLTHROUGH */		case ED_UNLINK:			break;		default:			ohci_dbg(ohci, "bogus ed %p state %d\n",					ed, ed->state);		}		spin_lock (&urb->lock);		urb->status = -ESHUTDOWN;		spin_unlock (&urb->lock);	}	finish_unlinks (ohci, 0, NULL);	spin_unlock_irq(&ohci->lock);	/* paranoia, in case that didn't work: */	/* empty the interrupt branches */	for (i = 0; i < NUM_INTS; i++) ohci->load [i] = 0;	for (i = 0; i < NUM_INTS; i++) ohci->hcca->int_table [i] = 0;		/* no EDs to remove */	ohci->ed_rm_list = NULL;	/* empty control and bulk lists */	 	ohci->ed_controltail = NULL;	ohci->ed_bulktail    = NULL;	if ((temp = hc_reset (ohci)) < 0 || (temp = hc_start (ohci)) < 0) {		ohci_err (ohci, "can't restart, %d\n", temp);		return temp;	} else {		/* here we "know" root ports should always stay powered,		 * and that if we try to turn them back on the root hub		 * will respond to CSC processing.		 */		i = roothub_a (ohci) & RH_A_NDP;		while (i--)			ohci_write_roothub_portstatus (ohci, temp, RH_PS_PSS);		ohci->hcd.self.root_hub->dev.power.power_state = 0;		ohci->hcd.state = USB_STATE_RUNNING;		ohci_dbg (ohci, "restart complete\n");		ohci_dump (ohci, 1);	}	return 0;}#endif/*-------------------------------------------------------------------------*/#define DRIVER_INFO DRIVER_VERSION " " DRIVER_DESCMODULE_AUTHOR (DRIVER_AUTHOR);MODULE_DESCRIPTION (DRIVER_INFO);MODULE_LICENSE ("GPL");#ifdef CONFIG_PCI#include "ohci-pci.c"#endif#ifdef CONFIG_SA1111//#include "ohci-sa1111.c"	//it's default in FS_PXA255 config#endif#ifdef CONFIG_ARCH_OMAP#include "ohci-omap.c"#endif#ifdef CONFIG_ARCH_LH7A404#include "ohci-lh7a404.c"#endif#ifdef CONFIG_ARCH_S3C2410#include "ohci-s3c2410.c"#endif#ifdef CONFIG_USB_OHCI_SL811#include "ohci-sl811.c"#endif#ifdef CONFIG_USB_OHCI_ISP1362#include "ohci-isp1362.c"#endif#if !(defined(CONFIG_PCI) \      || defined(CONFIG_SA1111) \      || defined(CONFIG_ARCH_OMAP) \      || defined(CONFIG_ARCH_LH7A404) \      || defined(CONFIG_ARCH_S3C2410) \      || defined(CONFIG_USB_OHCI_SL811) \      || defined(CONFIG_USB_OHCI_ISP1362) \	)#error "missing bus glue for ohci-hcd"#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人美女在线观看| 久久综合999| 久久久久久久久久久99999| 亚洲蜜臀av乱码久久精品蜜桃| 视频在线观看91| 国产传媒欧美日韩成人| 欧美日韩国产免费| 中文字幕一区二区三区在线播放 | 午夜一区二区三区视频| 福利一区在线观看| 欧美一区二区精美| 亚洲在线视频网站| 91视频国产资源| 久久久精品免费观看| 久久精品国产亚洲高清剧情介绍 | 欧美日韩三级一区| 专区另类欧美日韩| 高清shemale亚洲人妖| 久久理论电影网| 蜜臀精品久久久久久蜜臀| 欧美亚洲国产一区二区三区va | 天堂久久久久va久久久久| 91在线视频在线| 国产精品久久久一本精品| 国产一区二三区好的| 日韩精品一区二区三区视频在线观看 | 国产视频一区在线观看| 蜜臀av一区二区| 91精品国产综合久久久久| 亚洲一区二区三区四区在线观看 | 精品视频在线免费| 亚洲精品午夜久久久| 色综合天天综合狠狠| 亚洲精选在线视频| 91蜜桃网址入口| 亚洲免费观看高清完整版在线观看熊| 成人激情免费电影网址| 欧美国产在线观看| 成人av手机在线观看| 中文字幕在线观看不卡| 盗摄精品av一区二区三区| 欧美激情中文字幕一区二区| 国产精品一区二区久久不卡 | 91精品国产欧美一区二区成人| 亚洲国产精品人人做人人爽| 欧美亚洲国产一区二区三区va| 亚洲大片免费看| 91精品国产欧美一区二区18| 激情综合色综合久久综合| 久久色.com| 成人av动漫在线| 亚洲一区av在线| 日韩女优毛片在线| 国产成人综合精品三级| 亚洲欧洲国产日本综合| 欧美撒尿777hd撒尿| 奇米777欧美一区二区| 久久青草欧美一区二区三区| 成人黄色大片在线观看| 一区二区免费在线播放| 欧美高清视频www夜色资源网| 精品伊人久久久久7777人| 国产色产综合色产在线视频| 99久久久久久99| 亚洲一区二区三区中文字幕在线| 日韩午夜电影在线观看| 国产成人免费在线观看| 亚洲人成网站影音先锋播放| 日韩写真欧美这视频| 成人美女视频在线观看| 午夜电影一区二区三区| 国产女人18水真多18精品一级做| 91国产免费观看| 韩日av一区二区| 亚洲精品国产视频| 久久久久久97三级| 欧美久久免费观看| 波多野结衣在线aⅴ中文字幕不卡| 一区二区三区日韩欧美| 精品国产免费视频| 精品视频在线视频| 99精品久久只有精品| 美国三级日本三级久久99 | 久久这里只精品最新地址| 色婷婷激情综合| 国产老女人精品毛片久久| 亚洲一线二线三线久久久| 国产日韩欧美电影| 日韩一级黄色片| 色哟哟在线观看一区二区三区| 精品一区二区三区在线播放| 亚洲国产精品一区二区久久| 国产精品久久一卡二卡| 久久影音资源网| 欧美一区二区在线播放| 色一情一伦一子一伦一区| 国产精品一区二区免费不卡| 美女一区二区久久| 五月激情六月综合| 亚洲一区二区欧美| 夜夜嗨av一区二区三区中文字幕 | 一区二区三区久久| 国产精品黄色在线观看| 欧美国产精品中文字幕| 国产亚洲精品免费| 日韩欧美中文一区二区| 欧美一区二区三级| 欧美另类z0zxhd电影| 欧美视频一区二区三区四区| 91偷拍与自偷拍精品| 成人黄色777网| 波多野洁衣一区| 97久久超碰精品国产| 成人在线视频一区二区| 国产成人免费在线观看不卡| 久久精品国产亚洲一区二区三区| 日本va欧美va精品| 日韩国产欧美在线播放| 婷婷成人激情在线网| 亚洲国产视频在线| 日本在线观看不卡视频| 蜜桃久久久久久久| 国产在线精品一区二区三区不卡| 麻豆一区二区三区| 精品写真视频在线观看| 国产成人午夜精品影院观看视频| 国产成人在线观看| 成人国产精品视频| 一本色道久久综合狠狠躁的推荐 | 欧美日韩免费高清一区色橹橹| 欧美午夜精品久久久久久超碰| 91国在线观看| 欧美一区永久视频免费观看| 欧美一级在线免费| 久久免费电影网| 综合分类小说区另类春色亚洲小说欧美 | 在线成人免费观看| 欧美成人精品二区三区99精品| 欧美刺激脚交jootjob| 欧美极品aⅴ影院| 亚洲美女偷拍久久| 青青草视频一区| 国产成人精品免费在线| 91麻豆成人久久精品二区三区| 欧洲色大大久久| 精品久久国产字幕高潮| 亚洲丝袜自拍清纯另类| 亚洲.国产.中文慕字在线| 久久66热偷产精品| 色综合中文综合网| 亚洲日穴在线视频| 天堂资源在线中文精品| 久久 天天综合| 一本一道久久a久久精品综合蜜臀| 56国语精品自产拍在线观看| 国产女主播一区| 亚洲成人免费视| 福利视频网站一区二区三区| 欧美日韩视频在线一区二区 | 亚洲中国最大av网站| 看片网站欧美日韩| 色网站国产精品| 2023国产一二三区日本精品2022| 亚洲综合区在线| 高潮精品一区videoshd| 日韩一区二区三区精品视频 | 日韩电影免费一区| jiyouzz国产精品久久| 欧美电影免费观看高清完整版在| 亚洲欧美另类久久久精品| 久久国产精品99久久人人澡| 欧洲精品视频在线观看| 国产欧美一区二区三区在线老狼| 亚洲6080在线| 色成年激情久久综合| 久久精品人人爽人人爽| 日本亚洲欧美天堂免费| 在线观看区一区二| 中文字幕在线不卡视频| 国产精品1024久久| 欧美成人精品1314www| 亚洲成人tv网| 在线亚洲高清视频| 椎名由奈av一区二区三区| 成人午夜精品一区二区三区| 日韩你懂的在线播放| 午夜不卡av在线| 欧美亚洲高清一区| 亚洲欧美日韩在线不卡| 成人激情免费视频| 国产女人水真多18毛片18精品视频 | 高清不卡一区二区| 久久久青草青青国产亚洲免观| 日本在线不卡一区| 5858s免费视频成人| 午夜电影一区二区| 欧美久久久一区| 偷拍一区二区三区| 欧美日韩高清在线播放| 亚洲成人福利片|