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

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

?? ohci-sa1111.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> * (C) Copyright 2002 Hewlett-Packard Company * * SA1111 Bus Glue * * Written by Christopher Hoover <ch@hpl.hp.com> * Based on fragments of previous driver by Rusell King et al. * * This file is licenced under the GPL. */#include <asm/hardware.h>#include <asm/mach-types.h>#include <asm/arch/assabet.h>#include <asm/arch/badge4.h>#include <asm/hardware/sa1111.h>#ifndef CONFIG_SA1111#error "This file is SA-1111 bus glue.  CONFIG_SA1111 must be defined."#endifextern int usb_disabled(void);/*-------------------------------------------------------------------------*/static void sa1111_start_hc(struct sa1111_dev *dev){	unsigned int usb_rst = 0;	printk(KERN_DEBUG __FILE__	       ": starting SA-1111 OHCI USB Controller\n");#ifdef CONFIG_SA1100_BADGE4	if (machine_is_badge4()) {		badge4_set_5V(BADGE4_5V_USB, 1);	}#endif	if (machine_is_xp860() ||	    machine_has_neponset() ||	    machine_is_pfs168() ||	    machine_is_badge4())		usb_rst = USB_RESET_PWRSENSELOW | USB_RESET_PWRCTRLLOW;	/*	 * Configure the power sense and control lines.  Place the USB	 * host controller in reset.	 */	sa1111_writel(usb_rst | USB_RESET_FORCEIFRESET | USB_RESET_FORCEHCRESET,		      dev->mapbase + SA1111_USB_RESET);	/*	 * Now, carefully enable the USB clock, and take	 * the USB host controller out of reset.	 */	sa1111_enable_device(dev);	udelay(11);	sa1111_writel(usb_rst, dev->mapbase + SA1111_USB_RESET);}static void sa1111_stop_hc(struct sa1111_dev *dev){	unsigned int usb_rst;	printk(KERN_DEBUG __FILE__	       ": stopping SA-1111 OHCI USB Controller\n");	/*	 * Put the USB host controller into reset.	 */	usb_rst = sa1111_readl(dev->mapbase + SA1111_USB_RESET);	sa1111_writel(usb_rst | USB_RESET_FORCEIFRESET | USB_RESET_FORCEHCRESET,		      dev->mapbase + SA1111_USB_RESET);	/*	 * Stop the USB clock.	 */	sa1111_disable_device(dev);#ifdef CONFIG_SA1100_BADGE4	if (machine_is_badge4()) {		/* Disable power to the USB bus */		badge4_set_5V(BADGE4_5V_USB, 0);	}#endif}/*-------------------------------------------------------------------------*/#if 0static void dump_hci_status(struct usb_hcd *hcd, const char *label){	unsigned long status = sa1111_readl(hcd->regs + SA1111_USB_STATUS);	dbg ("%s USB_STATUS = { %s%s%s%s%s}", label,	     ((status & USB_STATUS_IRQHCIRMTWKUP) ? "IRQHCIRMTWKUP " : ""),	     ((status & USB_STATUS_IRQHCIBUFFACC) ? "IRQHCIBUFFACC " : ""),	     ((status & USB_STATUS_NIRQHCIM) ? "" : "IRQHCIM "),	     ((status & USB_STATUS_NHCIMFCLR) ? "" : "HCIMFCLR "),	     ((status & USB_STATUS_USBPWRSENSE) ? "USBPWRSENSE " : ""));}#endif/*-------------------------------------------------------------------------*//* configure so an HC device and id are always provided *//* always called with process context; sleeping is OK *//** * usb_hcd_sa1111_probe - initialize SA-1111-based HCDs * Context: !in_interrupt() * * Allocates basic resources for this USB host controller, and * then invokes the start() method for the HCD associated with it * through the hotplug entry's driver_data. * * Store this function in the HCD's struct pci_driver as probe(). */int usb_hcd_sa1111_probe (const struct hc_driver *driver,			  struct sa1111_dev *dev){	struct usb_hcd *hcd;	int retval;	hcd = usb_create_hcd (driver, &dev->dev, "sa1111");	if (!hcd)		return -ENOMEM;	hcd->rsrc_start = dev->res.start;	hcd->rsrc_len = dev->res.end - dev->res.start + 1;	if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {		dbg("request_mem_region failed");		retval = -EBUSY;		goto err1;	}	hcd->regs = dev->mapbase;	sa1111_start_hc(dev);	ohci_hcd_init(hcd_to_ohci(hcd));	retval = usb_add_hcd(hcd, dev->irq[1], IRQF_DISABLED);	if (retval == 0)		return retval;	sa1111_stop_hc(dev);	release_mem_region(hcd->rsrc_start, hcd->rsrc_len); err1:	usb_put_hcd(hcd);	return retval;}/* may be called without controller electrically present *//* may be called with controller, bus, and devices active *//** * usb_hcd_sa1111_remove - shutdown processing for SA-1111-based HCDs * @dev: USB Host Controller being removed * Context: !in_interrupt() * * Reverses the effect of usb_hcd_sa1111_probe(), first invoking * the HCD's stop() method.  It is always called from a thread * context, normally "rmmod", "apmd", or something similar. * */void usb_hcd_sa1111_remove (struct usb_hcd *hcd, struct sa1111_dev *dev){	usb_remove_hcd(hcd);	sa1111_stop_hc(dev);	release_mem_region(hcd->rsrc_start, hcd->rsrc_len);	usb_put_hcd(hcd);}/*-------------------------------------------------------------------------*/static int __devinitohci_sa1111_start (struct usb_hcd *hcd){	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);	int		ret;	if ((ret = ohci_init(ohci)) < 0)		return ret;	if ((ret = ohci_run (ohci)) < 0) {		err ("can't start %s", hcd->self.bus_name);		ohci_stop (hcd);		return ret;	}	return 0;}/*-------------------------------------------------------------------------*/static const struct hc_driver ohci_sa1111_hc_driver = {	.description =		hcd_name,	.product_desc =		"SA-1111 OHCI",	.hcd_priv_size =	sizeof(struct ohci_hcd),	/*	 * generic hardware linkage	 */	.irq =			ohci_irq,	.flags =		HCD_USB11 | HCD_MEMORY,	/*	 * basic lifecycle operations	 */	.start =		ohci_sa1111_start,	.stop =			ohci_stop,	/*	 * 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 int ohci_hcd_sa1111_drv_probe(struct sa1111_dev *dev){	int ret;	if (usb_disabled())		return -ENODEV;	ret = usb_hcd_sa1111_probe(&ohci_sa1111_hc_driver, dev);	return ret;}static int ohci_hcd_sa1111_drv_remove(struct sa1111_dev *dev){	struct usb_hcd *hcd = sa1111_get_drvdata(dev);	usb_hcd_sa1111_remove(hcd, dev);	return 0;}static struct sa1111_driver ohci_hcd_sa1111_driver = {	.drv = {		.name	= "sa1111-ohci",	},	.devid		= SA1111_DEVID_USB,	.probe		= ohci_hcd_sa1111_drv_probe,	.remove		= ohci_hcd_sa1111_drv_remove,};

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品动漫网站| 日本欧美久久久久免费播放网| 欧美亚洲丝袜传媒另类| 国产一区在线观看视频| 亚洲乱码中文字幕| 久久久久国产精品麻豆| 欧美顶级少妇做爰| 一道本成人在线| 国产**成人网毛片九色| 日韩电影免费在线| 亚洲色图视频网站| 久久久久久影视| 欧美成人欧美edvon| 欧美色网一区二区| 91免费视频大全| 国产91精品露脸国语对白| 秋霞午夜鲁丝一区二区老狼| 亚洲人精品一区| 日本一区二区三区国色天香 | 国产精品一区二区久久不卡| 尤物av一区二区| 亚洲欧洲国产日本综合| 欧美国产日本视频| 久久久久国产精品厨房| 精品久久久久久久久久久久久久久久久 | 成人免费视频在线观看| 国产欧美日韩视频在线观看| 日韩欧美亚洲国产精品字幕久久久 | 亚洲毛片av在线| 中文字幕一区二区三区视频 | 日韩黄色在线观看| 亚洲成人精品影院| 亚洲国产精品视频| 一区二区三区不卡在线观看| 亚洲激情在线播放| 亚洲伦理在线免费看| 亚洲免费av观看| 亚洲色图在线看| 亚洲日本乱码在线观看| 亚洲免费观看在线观看| 亚洲四区在线观看| 亚洲人成网站色在线观看 | 免费成人你懂的| 日本不卡视频在线观看| 美女视频黄久久| 精品一区中文字幕| 国产一区二三区| 国产高清一区日本| a4yy欧美一区二区三区| 91丨porny丨蝌蚪视频| 色婷婷香蕉在线一区二区| 日本韩国精品在线| 欧美日本国产一区| 欧美一区二区三区播放老司机| 日韩一区二区三区精品视频| 精品日产卡一卡二卡麻豆| 精品国产免费一区二区三区四区| 久久亚洲二区三区| 中文久久乱码一区二区| 成人欧美一区二区三区小说| 亚洲一区二区三区自拍| 日本不卡一二三| 成人午夜大片免费观看| 国产精品―色哟哟| 亚洲欧美另类小说视频| 亚洲国产美女搞黄色| 午夜a成v人精品| 精品一二三四在线| 不卡的电视剧免费网站有什么| 色老汉一区二区三区| 欧美理论片在线| 久久精品亚洲精品国产欧美| 亚洲同性同志一二三专区| 亚洲国产成人porn| 黄一区二区三区| 91蝌蚪porny| 91精品欧美久久久久久动漫| 久久精品人人做人人综合| 亚洲男女一区二区三区| 奇米777欧美一区二区| 国产白丝网站精品污在线入口| 欧美在线你懂得| 精品国产第一区二区三区观看体验| 久久久精品免费免费| 亚洲午夜激情网页| 国产精品一线二线三线精华| 91成人在线观看喷潮| 久久久久久综合| 亚洲午夜久久久| 国产91对白在线观看九色| 欧美疯狂做受xxxx富婆| 国产精品久久久久久久久免费桃花 | 91在线观看美女| 日韩一级黄色片| 亚洲女人****多毛耸耸8| 韩日欧美一区二区三区| 91福利区一区二区三区| 久久久久久久精| 午夜精品久久久久久久99樱桃 | 91蜜桃视频在线| 精品国产免费久久 | 蜜桃精品在线观看| 92国产精品观看| 久久亚洲一级片| 日本成人在线一区| 色www精品视频在线观看| 国产亚洲成年网址在线观看| 奇米888四色在线精品| 91黄视频在线观看| 中文字幕巨乱亚洲| 国产一区二区三区黄视频| 精品视频资源站| 又紧又大又爽精品一区二区| 不卡电影一区二区三区| 久久久综合网站| 久久91精品国产91久久小草| 欧美日韩一二三区| 亚洲欧美经典视频| 成人黄页在线观看| 久久久精品国产99久久精品芒果 | 久久成人18免费观看| 91精品中文字幕一区二区三区| 亚洲综合丁香婷婷六月香| 色综合一个色综合| 国产精品视频免费| 福利电影一区二区三区| 337p日本欧洲亚洲大胆精品 | 国产福利一区二区三区| 欧美xxxx老人做受| 麻豆精品一区二区三区| 日韩一区二区免费高清| 日韩综合一区二区| 欧美精品乱码久久久久久按摩| 亚洲黄色小视频| 欧美在线观看你懂的| 亚洲免费观看高清完整版在线观看| 成人网在线免费视频| 亚洲国产精品精华液ab| 成人黄色小视频在线观看| 亚洲国产激情av| 成人av在线资源网| 亚洲日本一区二区三区| 色播五月激情综合网| 亚洲国产精品自拍| 欧美人动与zoxxxx乱| 日韩精品91亚洲二区在线观看| 欧美人与禽zozo性伦| 麻豆国产一区二区| 久久免费偷拍视频| 成人午夜激情在线| 亚洲欧美一区二区三区久本道91| 日本精品一区二区三区四区的功能| ...av二区三区久久精品| 在线视频国内一区二区| 午夜精品国产更新| 精品久久久久久久人人人人传媒 | 免费成人深夜小野草| 久久久亚洲精华液精华液精华液| 成人午夜电影久久影院| 亚洲嫩草精品久久| 91精品国产入口| 国产自产2019最新不卡| 一区在线播放视频| 欧美浪妇xxxx高跟鞋交| 精品亚洲国产成人av制服丝袜 | 亚洲啪啪综合av一区二区三区| 欧美亚洲高清一区二区三区不卡| 视频一区二区国产| 国产亚洲制服色| 色狠狠一区二区三区香蕉| 免费三级欧美电影| 国产精品乱人伦中文| 欧美三级电影在线看| 精久久久久久久久久久| 一区二区中文视频| 欧美一区二区三区色| 国产99久久精品| 亚洲电影中文字幕在线观看| 久久久夜色精品亚洲| 在线一区二区三区做爰视频网站| 毛片一区二区三区| 亚洲免费av网站| 精品av久久707| 欧美少妇一区二区| 国产成人午夜电影网| 亚洲一区二区三区小说| 精品欧美一区二区久久| 色综合天天在线| 国模冰冰炮一区二区| 亚洲综合图片区| 国产欧美日韩亚州综合 | 国内精品国产成人国产三级粉色| 亚洲另类春色国产| 国产欧美一区二区精品婷婷| 欧美视频三区在线播放| 99国产麻豆精品| 国产一区二区不卡| 七七婷婷婷婷精品国产| 亚洲伊人伊色伊影伊综合网| 欧美激情中文字幕一区二区|