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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ohci-dbg.c

?? host usb 主設備程序 支持sd卡 mouse keyboard 的最單單的驅動程序 gcc編譯
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * 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> * * This file is licenced under the GPL. *//*-------------------------------------------------------------------------*/#ifdef DEBUG#define edstring(ed_type) ({ char *temp; \	switch (ed_type) { \	case PIPE_CONTROL:	temp = "ctrl"; break; \	case PIPE_BULK:		temp = "bulk"; break; \	case PIPE_INTERRUPT:	temp = "intr"; break; \	default:		temp = "isoc"; break; \	}; temp;})#define pipestring(pipe) edstring(usb_pipetype(pipe))/* debug| print the main components of an URB * small: 0) header + data packets 1) just header */static void __attribute__((unused))urb_print (struct urb * urb, char * str, int small){	unsigned int pipe= urb->pipe;	if (!urb->dev || !urb->dev->bus) {		dbg("%s URB: no dev", str);		return;	}#ifndef	OHCI_VERBOSE_DEBUG	if (urb->status != 0)#endif	dbg("%s %p dev=%d ep=%d%s-%s flags=%x len=%d/%d stat=%d",		    str,		    urb,		    usb_pipedevice (pipe),		    usb_pipeendpoint (pipe),		    usb_pipeout (pipe)? "out" : "in",		    pipestring (pipe),		    urb->transfer_flags,		    urb->actual_length,		    urb->transfer_buffer_length,		    urb->status);#ifdef	OHCI_VERBOSE_DEBUG	if (!small) {		int i, len;		if (usb_pipecontrol (pipe)) {			printk (KERN_DEBUG __FILE__ ": setup(8):");			for (i = 0; i < 8 ; i++)				printk (" %02x", ((__u8 *) urb->setup_packet) [i]);			printk ("\n");		}		if (urb->transfer_buffer_length > 0 && urb->transfer_buffer) {			printk (KERN_DEBUG __FILE__ ": data(%d/%d):",				urb->actual_length,				urb->transfer_buffer_length);			len = usb_pipeout (pipe)?						urb->transfer_buffer_length: urb->actual_length;			for (i = 0; i < 16 && i < len; i++)				printk (" %02x", ((__u8 *) urb->transfer_buffer) [i]);			printk ("%s stat:%d\n", i < len? "...": "", urb->status);		}	}#endif}#define ohci_dbg_sw(ohci, next, size, format, arg...) \	do { \	if (next) { \		unsigned s_len; \		s_len = scnprintf (*next, *size, format, ## arg ); \		*size -= s_len; *next += s_len; \	} else \		ohci_dbg(ohci,format, ## arg ); \	} while (0);static void ohci_dump_intr_mask (	struct ohci_hcd *ohci,	char *label,	u32 mask,	char **next,	unsigned *size){	ohci_dbg_sw (ohci, next, size, "%s 0x%08x%s%s%s%s%s%s%s%s%s\n",		label,		mask,		(mask & OHCI_INTR_MIE) ? " MIE" : "",		(mask & OHCI_INTR_OC) ? " OC" : "",		(mask & OHCI_INTR_RHSC) ? " RHSC" : "",		(mask & OHCI_INTR_FNO) ? " FNO" : "",		(mask & OHCI_INTR_UE) ? " UE" : "",		(mask & OHCI_INTR_RD) ? " RD" : "",		(mask & OHCI_INTR_SF) ? " SF" : "",		(mask & OHCI_INTR_WDH) ? " WDH" : "",		(mask & OHCI_INTR_SO) ? " SO" : ""		);}static void maybe_print_eds (	struct ohci_hcd *ohci,	char *label,	u32 value,	char **next,	unsigned *size){	if (value)		ohci_dbg_sw (ohci, next, size, "%s %08x\n", label, value);}static char *hcfs2string (int state){	switch (state) {		case OHCI_USB_RESET:	return "reset";		case OHCI_USB_RESUME:	return "resume";		case OHCI_USB_OPER:	return "operational";		case OHCI_USB_SUSPEND:	return "suspend";	}	return "?";}// dump control and status registersstatic voidohci_dump_status (struct ohci_hcd *controller, char **next, unsigned *size){	struct ohci_regs __iomem *regs = controller->regs;	u32			temp;	temp = ohci_readl (controller, &regs->revision) & 0xff;	ohci_dbg_sw (controller, next, size,		"OHCI %d.%d, %s legacy support registers\n",		0x03 & (temp >> 4), (temp & 0x0f),		(temp & 0x0100) ? "with" : "NO");	temp = ohci_readl (controller, &regs->control);	ohci_dbg_sw (controller, next, size,		"control 0x%03x%s%s%s HCFS=%s%s%s%s%s CBSR=%d\n",		temp,		(temp & OHCI_CTRL_RWE) ? " RWE" : "",		(temp & OHCI_CTRL_RWC) ? " RWC" : "",		(temp & OHCI_CTRL_IR) ? " IR" : "",		hcfs2string (temp & OHCI_CTRL_HCFS),		(temp & OHCI_CTRL_BLE) ? " BLE" : "",		(temp & OHCI_CTRL_CLE) ? " CLE" : "",		(temp & OHCI_CTRL_IE) ? " IE" : "",		(temp & OHCI_CTRL_PLE) ? " PLE" : "",		temp & OHCI_CTRL_CBSR		);	temp = ohci_readl (controller, &regs->cmdstatus);	ohci_dbg_sw (controller, next, size,		"cmdstatus 0x%05x SOC=%d%s%s%s%s\n", temp,		(temp & OHCI_SOC) >> 16,		(temp & OHCI_OCR) ? " OCR" : "",		(temp & OHCI_BLF) ? " BLF" : "",		(temp & OHCI_CLF) ? " CLF" : "",		(temp & OHCI_HCR) ? " HCR" : ""		);	ohci_dump_intr_mask (controller, "intrstatus",			ohci_readl (controller, &regs->intrstatus),			next, size);	ohci_dump_intr_mask (controller, "intrenable",			ohci_readl (controller, &regs->intrenable),			next, size);	// intrdisable always same as intrenable	maybe_print_eds (controller, "ed_periodcurrent",			ohci_readl (controller, &regs->ed_periodcurrent),			next, size);	maybe_print_eds (controller, "ed_controlhead",			ohci_readl (controller, &regs->ed_controlhead),			next, size);	maybe_print_eds (controller, "ed_controlcurrent",			ohci_readl (controller, &regs->ed_controlcurrent),			next, size);	maybe_print_eds (controller, "ed_bulkhead",			ohci_readl (controller, &regs->ed_bulkhead),			next, size);	maybe_print_eds (controller, "ed_bulkcurrent",			ohci_readl (controller, &regs->ed_bulkcurrent),			next, size);	maybe_print_eds (controller, "donehead",			ohci_readl (controller, &regs->donehead), next, size);}#define dbg_port_sw(hc,num,value,next,size) \	ohci_dbg_sw (hc, next, size, \		"roothub.portstatus [%d] " \		"0x%08x%s%s%s%s%s%s%s%s%s%s%s%s\n", \		num, temp, \		(temp & RH_PS_PRSC) ? " PRSC" : "", \		(temp & RH_PS_OCIC) ? " OCIC" : "", \		(temp & RH_PS_PSSC) ? " PSSC" : "", \		(temp & RH_PS_PESC) ? " PESC" : "", \		(temp & RH_PS_CSC) ? " CSC" : "", \		\		(temp & RH_PS_LSDA) ? " LSDA" : "", \		(temp & RH_PS_PPS) ? " PPS" : "", \		(temp & RH_PS_PRS) ? " PRS" : "", \		(temp & RH_PS_POCI) ? " POCI" : "", \		(temp & RH_PS_PSS) ? " PSS" : "", \		\		(temp & RH_PS_PES) ? " PES" : "", \		(temp & RH_PS_CCS) ? " CCS" : "" \		);static voidohci_dump_roothub (	struct ohci_hcd *controller,	int verbose,	char **next,	unsigned *size){	u32			temp, i;	temp = roothub_a (controller);	if (temp == ~(u32)0)		return;	if (verbose) {		ohci_dbg_sw (controller, next, size,			"roothub.a %08x POTPGT=%d%s%s%s%s%s NDP=%d(%d)\n", temp,			((temp & RH_A_POTPGT) >> 24) & 0xff,			(temp & RH_A_NOCP) ? " NOCP" : "",			(temp & RH_A_OCPM) ? " OCPM" : "",			(temp & RH_A_DT) ? " DT" : "",			(temp & RH_A_NPS) ? " NPS" : "",			(temp & RH_A_PSM) ? " PSM" : "",			(temp & RH_A_NDP), controller->num_ports			);		temp = roothub_b (controller);		ohci_dbg_sw (controller, next, size,			"roothub.b %08x PPCM=%04x DR=%04x\n",			temp,			(temp & RH_B_PPCM) >> 16,			(temp & RH_B_DR)			);		temp = roothub_status (controller);		ohci_dbg_sw (controller, next, size,			"roothub.status %08x%s%s%s%s%s%s\n",			temp,			(temp & RH_HS_CRWE) ? " CRWE" : "",			(temp & RH_HS_OCIC) ? " OCIC" : "",			(temp & RH_HS_LPSC) ? " LPSC" : "",			(temp & RH_HS_DRWE) ? " DRWE" : "",			(temp & RH_HS_OCI) ? " OCI" : "",			(temp & RH_HS_LPS) ? " LPS" : ""			);	}	for (i = 0; i < controller->num_ports; i++) {		temp = roothub_portstatus (controller, i);		dbg_port_sw (controller, i, temp, next, size);	}}static void ohci_dump (struct ohci_hcd *controller, int verbose){	ohci_dbg (controller, "OHCI controller state\n");	// dumps some of the state we know about	ohci_dump_status (controller, NULL, NULL);	if (controller->hcca)		ohci_dbg (controller,			"hcca frame #%04x\n", ohci_frame_no(controller));	ohci_dump_roothub (controller, 1, NULL, NULL);}static const char data0 [] = "DATA0";static const char data1 [] = "DATA1";static void ohci_dump_td (const struct ohci_hcd *ohci, const char *label,		const struct td *td){	u32	tmp = hc32_to_cpup (ohci, &td->hwINFO);	ohci_dbg (ohci, "%s td %p%s; urb %p index %d; hw next td %08x\n",		label, td,		(tmp & TD_DONE) ? " (DONE)" : "",		td->urb, td->index,		hc32_to_cpup (ohci, &td->hwNextTD));	if ((tmp & TD_ISO) == 0) {		const char	*toggle, *pid;		u32	cbp, be;		switch (tmp & TD_T) {		case TD_T_DATA0: toggle = data0; break;		case TD_T_DATA1: toggle = data1; break;		case TD_T_TOGGLE: toggle = "(CARRY)"; break;		default: toggle = "(?)"; break;		}		switch (tmp & TD_DP) {		case TD_DP_SETUP: pid = "SETUP"; break;		case TD_DP_IN: pid = "IN"; break;		case TD_DP_OUT: pid = "OUT"; break;		default: pid = "(bad pid)"; break;		}		ohci_dbg (ohci, "     info %08x CC=%x %s DI=%d %s %s\n", tmp,			TD_CC_GET(tmp), /* EC, */ toggle,			(tmp & TD_DI) >> 21, pid,			(tmp & TD_R) ? "R" : "");		cbp = hc32_to_cpup (ohci, &td->hwCBP);		be = hc32_to_cpup (ohci, &td->hwBE);		ohci_dbg (ohci, "     cbp %08x be %08x (len %d)\n", cbp, be,			cbp ? (be + 1 - cbp) : 0);	} else {		unsigned	i;		ohci_dbg (ohci, "  info %08x CC=%x FC=%d DI=%d SF=%04x\n", tmp,			TD_CC_GET(tmp),			(tmp >> 24) & 0x07,			(tmp & TD_DI) >> 21,			tmp & 0x0000ffff);		ohci_dbg (ohci, "  bp0 %08x be %08x\n",			hc32_to_cpup (ohci, &td->hwCBP) & ~0x0fff,			hc32_to_cpup (ohci, &td->hwBE));		for (i = 0; i < MAXPSW; i++) {			u16	psw = ohci_hwPSW (ohci, td, i);			int	cc = (psw >> 12) & 0x0f;			ohci_dbg (ohci, "    psw [%d] = %2x, CC=%x %s=%d\n", i,				psw, cc,				(cc >= 0x0e) ? "OFFSET" : "SIZE",				psw & 0x0fff);		}	}}/* caller MUST own hcd spinlock if verbose is set! */static void __attribute__((unused))ohci_dump_ed (const struct ohci_hcd *ohci, const char *label,		const struct ed *ed, int verbose){	u32	tmp = hc32_to_cpu (ohci, ed->hwINFO);	char	*type = "";	ohci_dbg (ohci, "%s, ed %p state 0x%x type %s; next ed %08x\n",		label,		ed, ed->state, edstring (ed->type),		hc32_to_cpup (ohci, &ed->hwNextED));	switch (tmp & (ED_IN|ED_OUT)) {	case ED_OUT: type = "-OUT"; break;	case ED_IN: type = "-IN"; break;	/* else from TDs ... control */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆一区二区三| 成人一区二区三区中文字幕| 中文字幕亚洲一区二区av在线| 欧美精品一区二区精品网| 日韩视频免费观看高清完整版在线观看 | 亚洲精品日韩一| 中文字幕一区二| 亚洲免费视频中文字幕| 亚洲资源中文字幕| 午夜精品福利久久久| 日韩影视精彩在线| 久久精品久久综合| 国产一本一道久久香蕉| 丁香婷婷综合激情五月色| 成人99免费视频| 欧洲亚洲国产日韩| 538在线一区二区精品国产| 日韩午夜精品电影| 久久人人超碰精品| 亚洲欧美自拍偷拍| 午夜不卡在线视频| 国内精品久久久久影院色| 国产精品69久久久久水密桃| 99久久精品免费看国产| 欧美肥胖老妇做爰| 欧美国产一区视频在线观看| 一区二区激情视频| 国内精品自线一区二区三区视频| 成人aa视频在线观看| 欧美挠脚心视频网站| 久久你懂得1024| 亚洲视频在线一区观看| 久久国产精品第一页| 99热精品国产| 日韩欧美久久一区| 亚洲嫩草精品久久| 极品少妇xxxx精品少妇偷拍| 亚洲va国产va欧美va观看| 国产91丝袜在线18| 欧美精品高清视频| 日本一区二区不卡视频| 蜜臀av一区二区在线观看| 91色视频在线| 久久久亚洲精品一区二区三区| 亚洲日本青草视频在线怡红院| 色乱码一区二区三区88| 精品蜜桃在线看| 尤物av一区二区| 国产精品亚洲一区二区三区在线| 欧美日韩国产一二三| 综合色中文字幕| 国产成人免费在线观看不卡| 欧美日韩极品在线观看一区| 国产精品久久久久久久蜜臀| 国产一区二区91| 67194成人在线观看| 亚洲一区二区在线观看视频| 成人精品视频一区| 久久理论电影网| 久久爱另类一区二区小说| 欧美精品久久久久久久久老牛影院| 一区在线观看免费| 国产成人精品www牛牛影视| 欧美大片免费久久精品三p| 亚洲成av人片一区二区| 91精品1区2区| 亚洲精品美腿丝袜| 91首页免费视频| 亚洲精品乱码久久久久久日本蜜臀| 成人av网站在线| 国产精品进线69影院| 成人免费毛片app| 中文字幕日韩一区| 99在线精品免费| 亚洲欧美日韩国产手机在线| 成人av动漫网站| 亚洲黄色在线视频| 精品视频在线视频| 亚洲一区二区三区在线看| 欧美色网一区二区| 五月激情综合婷婷| 日韩欧美一区二区久久婷婷| 日本女优在线视频一区二区| 日韩精品中文字幕在线不卡尤物| 久久电影网电视剧免费观看| 国产欧美精品日韩区二区麻豆天美| 成人精品视频一区二区三区尤物| 亚洲人一二三区| 欧美日韩视频一区二区| 裸体健美xxxx欧美裸体表演| 久久久久久久久伊人| 北条麻妃一区二区三区| 一区二区三区四区在线| 9191成人精品久久| 国产成人午夜精品5599| 亚洲欧美综合另类在线卡通| 欧美美女直播网站| 九九精品视频在线看| 成人欧美一区二区三区视频网页| 91成人网在线| 国产一区欧美日韩| 一区二区三区免费看视频| 日韩一区二区三区在线视频| 国产成人福利片| 亚洲超碰精品一区二区| 精品国产污网站| 91老司机福利 在线| 蜜臀精品一区二区三区在线观看| 欧美激情一区二区三区在线| 欧美午夜影院一区| 国产精品1区2区3区在线观看| 亚洲黄色av一区| 久久夜色精品一区| 欧美视频一区二区在线观看| 国产精品99久久久久| 天天色天天爱天天射综合| 中文字幕久久午夜不卡| 中文字幕一区二区三区不卡在线 | 在线观看精品一区| 国产激情一区二区三区桃花岛亚洲| 亚洲精品大片www| 亚洲国产精品精华液ab| 欧美一区二区久久| 日本道免费精品一区二区三区| 久久超级碰视频| 亚洲午夜精品17c| 国产精品女人毛片| 日韩精品一区二区在线观看| 欧美日韩精品一区二区三区蜜桃| 99精品视频一区二区| 国产二区国产一区在线观看| 丝袜美腿亚洲色图| 亚洲成人自拍一区| 亚洲精品免费一二三区| 亚洲欧洲一区二区在线播放| 久久精品亚洲一区二区三区浴池 | 夜夜嗨av一区二区三区中文字幕| 2020国产成人综合网| 欧美一区二区女人| 欧美狂野另类xxxxoooo| 欧美网站一区二区| 在线精品视频免费观看| 91亚洲永久精品| 97久久精品人人做人人爽50路| 成人免费视频一区| 国产精品自拍在线| 国产原创一区二区| 久久er99精品| 国产一区二区三区高清播放| 韩国女主播一区| 国产成人精品三级麻豆| 国产精品亚洲专一区二区三区| 国产剧情一区在线| 国产精品99久久久久久宅男| 国产精品18久久久久久久久久久久| 国产在线一区二区综合免费视频| 麻豆高清免费国产一区| 国产一区二区三区高清播放| 国产**成人网毛片九色 | 欧美视频在线一区| 欧美三级韩国三级日本三斤| 欧美人妖巨大在线| 欧美草草影院在线视频| 国产欧美一区二区在线观看| 国产精品理论片在线观看| 亚洲三级在线免费观看| 夜夜爽夜夜爽精品视频| 午夜免费欧美电影| 久久av老司机精品网站导航| 丁香桃色午夜亚洲一区二区三区| 成人动漫精品一区二区| 在线亚洲欧美专区二区| 欧美日韩aaa| 2020国产精品| 亚洲乱码国产乱码精品精小说| 五月天亚洲精品| 国产精品18久久久久久久久| 99精品在线观看视频| 欧美日韩亚洲综合| 久久综合av免费| 亚洲精品福利视频网站| 免费日韩伦理电影| 成人免费视频app| 欧美亚洲综合久久| 欧美精品一区男女天堂| 亚洲免费伊人电影| 久久99精品国产.久久久久| 色综合久久九月婷婷色综合| 欧美一区二区在线免费播放| 国产欧美一二三区| 日韩av不卡在线观看| 91小视频免费看| 亚洲图片欧美视频| 成人网在线免费视频| 欧美性大战久久久久久久蜜臀| 欧美精品一区二区精品网| 亚洲国产视频在线| 成人h动漫精品一区二| 欧美成人官网二区| 午夜精品久久久久久久久|