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

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

?? ehci-dbg.c

?? host usb 主設(shè)備程序 支持sd卡 mouse keyboard 的最單單的驅(qū)動程序 gcc編譯
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright (c) 2001-2002 by David Brownell * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* this file is part of ehci-hcd.c */#define ehci_dbg(ehci, fmt, args...) \	dev_dbg (ehci_to_hcd(ehci)->self.controller , fmt , ## args )#define ehci_err(ehci, fmt, args...) \	dev_err (ehci_to_hcd(ehci)->self.controller , fmt , ## args )#define ehci_info(ehci, fmt, args...) \	dev_info (ehci_to_hcd(ehci)->self.controller , fmt , ## args )#define ehci_warn(ehci, fmt, args...) \	dev_warn (ehci_to_hcd(ehci)->self.controller , fmt , ## args )#ifdef EHCI_VERBOSE_DEBUG#	define vdbg dbg#	define ehci_vdbg ehci_dbg#else#	define vdbg(fmt,args...) do { } while (0)#	define ehci_vdbg(ehci, fmt, args...) do { } while (0)#endif#ifdef	DEBUG/* check the values in the HCSPARAMS register * (host controller _Structural_ parameters) * see EHCI spec, Table 2-4 for each value */static void dbg_hcs_params (struct ehci_hcd *ehci, char *label){	u32	params = ehci_readl(ehci, &ehci->caps->hcs_params);	ehci_dbg (ehci,		"%s hcs_params 0x%x dbg=%d%s cc=%d pcc=%d%s%s ports=%d\n",		label, params,		HCS_DEBUG_PORT (params),		HCS_INDICATOR (params) ? " ind" : "",		HCS_N_CC (params),		HCS_N_PCC (params),	        HCS_PORTROUTED (params) ? "" : " ordered",		HCS_PPC (params) ? "" : " !ppc",		HCS_N_PORTS (params)		);	/* Port routing, per EHCI 0.95 Spec, Section 2.2.5 */	if (HCS_PORTROUTED (params)) {		int i;		char buf [46], tmp [7], byte;		buf[0] = 0;		for (i = 0; i < HCS_N_PORTS (params); i++) {			// FIXME MIPS won't readb() ...			byte = readb (&ehci->caps->portroute[(i>>1)]);			sprintf(tmp, "%d ",				((i & 0x1) ? ((byte)&0xf) : ((byte>>4)&0xf)));			strcat(buf, tmp);		}		ehci_dbg (ehci, "%s portroute %s\n",				label, buf);	}}#elsestatic inline void dbg_hcs_params (struct ehci_hcd *ehci, char *label) {}#endif#ifdef	DEBUG/* check the values in the HCCPARAMS register * (host controller _Capability_ parameters) * see EHCI Spec, Table 2-5 for each value * */static void dbg_hcc_params (struct ehci_hcd *ehci, char *label){	u32	params = ehci_readl(ehci, &ehci->caps->hcc_params);	if (HCC_ISOC_CACHE (params)) {		ehci_dbg (ehci,		     "%s hcc_params %04x caching frame %s%s%s\n",		     label, params,		     HCC_PGM_FRAMELISTLEN (params) ? "256/512/1024" : "1024",		     HCC_CANPARK (params) ? " park" : "",		     HCC_64BIT_ADDR (params) ? " 64 bit addr" : "");	} else {		ehci_dbg (ehci,		     "%s hcc_params %04x thresh %d uframes %s%s%s\n",		     label,		     params,		     HCC_ISOC_THRES (params),		     HCC_PGM_FRAMELISTLEN (params) ? "256/512/1024" : "1024",		     HCC_CANPARK (params) ? " park" : "",		     HCC_64BIT_ADDR (params) ? " 64 bit addr" : "");	}}#elsestatic inline void dbg_hcc_params (struct ehci_hcd *ehci, char *label) {}#endif#ifdef	DEBUGstatic void __attribute__((__unused__))dbg_qtd (const char *label, struct ehci_hcd *ehci, struct ehci_qtd *qtd){	ehci_dbg (ehci, "%s td %p n%08x %08x t%08x p0=%08x\n", label, qtd,		le32_to_cpup (&qtd->hw_next),		le32_to_cpup (&qtd->hw_alt_next),		le32_to_cpup (&qtd->hw_token),		le32_to_cpup (&qtd->hw_buf [0]));	if (qtd->hw_buf [1])		ehci_dbg (ehci, "  p1=%08x p2=%08x p3=%08x p4=%08x\n",			le32_to_cpup (&qtd->hw_buf [1]),			le32_to_cpup (&qtd->hw_buf [2]),			le32_to_cpup (&qtd->hw_buf [3]),			le32_to_cpup (&qtd->hw_buf [4]));}static void __attribute__((__unused__))dbg_qh (const char *label, struct ehci_hcd *ehci, struct ehci_qh *qh){	ehci_dbg (ehci, "%s qh %p n%08x info %x %x qtd %x\n", label,		qh, qh->hw_next, qh->hw_info1, qh->hw_info2,		qh->hw_current);	dbg_qtd ("overlay", ehci, (struct ehci_qtd *) &qh->hw_qtd_next);}static void __attribute__((__unused__))dbg_itd (const char *label, struct ehci_hcd *ehci, struct ehci_itd *itd){	ehci_dbg (ehci, "%s [%d] itd %p, next %08x, urb %p\n",		label, itd->frame, itd, le32_to_cpu(itd->hw_next), itd->urb);	ehci_dbg (ehci,		"  trans: %08x %08x %08x %08x %08x %08x %08x %08x\n",		le32_to_cpu(itd->hw_transaction[0]),		le32_to_cpu(itd->hw_transaction[1]),		le32_to_cpu(itd->hw_transaction[2]),		le32_to_cpu(itd->hw_transaction[3]),		le32_to_cpu(itd->hw_transaction[4]),		le32_to_cpu(itd->hw_transaction[5]),		le32_to_cpu(itd->hw_transaction[6]),		le32_to_cpu(itd->hw_transaction[7]));	ehci_dbg (ehci,		"  buf:   %08x %08x %08x %08x %08x %08x %08x\n",		le32_to_cpu(itd->hw_bufp[0]),		le32_to_cpu(itd->hw_bufp[1]),		le32_to_cpu(itd->hw_bufp[2]),		le32_to_cpu(itd->hw_bufp[3]),		le32_to_cpu(itd->hw_bufp[4]),		le32_to_cpu(itd->hw_bufp[5]),		le32_to_cpu(itd->hw_bufp[6]));	ehci_dbg (ehci, "  index: %d %d %d %d %d %d %d %d\n",		itd->index[0], itd->index[1], itd->index[2],		itd->index[3], itd->index[4], itd->index[5],		itd->index[6], itd->index[7]);}static void __attribute__((__unused__))dbg_sitd (const char *label, struct ehci_hcd *ehci, struct ehci_sitd *sitd){	ehci_dbg (ehci, "%s [%d] sitd %p, next %08x, urb %p\n",		label, sitd->frame, sitd, le32_to_cpu(sitd->hw_next), sitd->urb);	ehci_dbg (ehci,		"  addr %08x sched %04x result %08x buf %08x %08x\n",		le32_to_cpu(sitd->hw_fullspeed_ep),		le32_to_cpu(sitd->hw_uframe),		le32_to_cpu(sitd->hw_results),		le32_to_cpu(sitd->hw_buf [0]),		le32_to_cpu(sitd->hw_buf [1]));}static int __attribute__((__unused__))dbg_status_buf (char *buf, unsigned len, const char *label, u32 status){	return scnprintf (buf, len,		"%s%sstatus %04x%s%s%s%s%s%s%s%s%s%s",		label, label [0] ? " " : "", status,		(status & STS_ASS) ? " Async" : "",		(status & STS_PSS) ? " Periodic" : "",		(status & STS_RECL) ? " Recl" : "",		(status & STS_HALT) ? " Halt" : "",		(status & STS_IAA) ? " IAA" : "",		(status & STS_FATAL) ? " FATAL" : "",		(status & STS_FLR) ? " FLR" : "",		(status & STS_PCD) ? " PCD" : "",		(status & STS_ERR) ? " ERR" : "",		(status & STS_INT) ? " INT" : ""		);}static int __attribute__((__unused__))dbg_intr_buf (char *buf, unsigned len, const char *label, u32 enable){	return scnprintf (buf, len,		"%s%sintrenable %02x%s%s%s%s%s%s",		label, label [0] ? " " : "", enable,		(enable & STS_IAA) ? " IAA" : "",		(enable & STS_FATAL) ? " FATAL" : "",		(enable & STS_FLR) ? " FLR" : "",		(enable & STS_PCD) ? " PCD" : "",		(enable & STS_ERR) ? " ERR" : "",		(enable & STS_INT) ? " INT" : ""		);}static const char *const fls_strings [] =    { "1024", "512", "256", "??" };static intdbg_command_buf (char *buf, unsigned len, const char *label, u32 command){	return scnprintf (buf, len,		"%s%scommand %06x %s=%d ithresh=%d%s%s%s%s period=%s%s %s",		label, label [0] ? " " : "", command,		(command & CMD_PARK) ? "park" : "(park)",		CMD_PARK_CNT (command),		(command >> 16) & 0x3f,		(command & CMD_LRESET) ? " LReset" : "",		(command & CMD_IAAD) ? " IAAD" : "",		(command & CMD_ASE) ? " Async" : "",		(command & CMD_PSE) ? " Periodic" : "",		fls_strings [(command >> 2) & 0x3],		(command & CMD_RESET) ? " Reset" : "",		(command & CMD_RUN) ? "RUN" : "HALT"		);}static intdbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status){	char	*sig;	/* signaling state */	switch (status & (3 << 10)) {	case 0 << 10: sig = "se0"; break;	case 1 << 10: sig = "k"; break;		/* low speed */	case 2 << 10: sig = "j"; break;	default: sig = "?"; break;	}	return scnprintf (buf, len,		"%s%sport %d status %06x%s%s sig=%s%s%s%s%s%s%s%s%s%s",		label, label [0] ? " " : "", port, status,		(status & PORT_POWER) ? " POWER" : "",		(status & PORT_OWNER) ? " OWNER" : "",		sig,		(status & PORT_RESET) ? " RESET" : "",		(status & PORT_SUSPEND) ? " SUSPEND" : "",		(status & PORT_RESUME) ? " RESUME" : "",		(status & PORT_OCC) ? " OCC" : "",		(status & PORT_OC) ? " OC" : "",		(status & PORT_PEC) ? " PEC" : "",		(status & PORT_PE) ? " PE" : "",		(status & PORT_CSC) ? " CSC" : "",		(status & PORT_CONNECT) ? " CONNECT" : ""	    );}#elsestatic inline void __attribute__((__unused__))dbg_qh (char *label, struct ehci_hcd *ehci, struct ehci_qh *qh){}static inline int __attribute__((__unused__))dbg_status_buf (char *buf, unsigned len, const char *label, u32 status){ return 0; }static inline int __attribute__((__unused__))dbg_command_buf (char *buf, unsigned len, const char *label, u32 command){ return 0; }static inline int __attribute__((__unused__))dbg_intr_buf (char *buf, unsigned len, const char *label, u32 enable){ return 0; }static inline int __attribute__((__unused__))dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status){ return 0; }#endif	/* DEBUG *//* functions have the "wrong" filename when they're output... */#define dbg_status(ehci, label, status) { \	char _buf [80]; \	dbg_status_buf (_buf, sizeof _buf, label, status); \	ehci_dbg (ehci, "%s\n", _buf); \}#define dbg_cmd(ehci, label, command) { \	char _buf [80]; \	dbg_command_buf (_buf, sizeof _buf, label, command); \	ehci_dbg (ehci, "%s\n", _buf); \}#define dbg_port(ehci, label, port, status) { \	char _buf [80]; \	dbg_port_buf (_buf, sizeof _buf, label, port, status); \	ehci_dbg (ehci, "%s\n", _buf); \}/*-------------------------------------------------------------------------*/#ifdef STUB_DEBUG_FILESstatic inline void create_debug_files (struct ehci_hcd *bus) { }static inline void remove_debug_files (struct ehci_hcd *bus) { }#else/* troubleshooting help: expose state in sysfs */#define speed_char(info1) ({ char tmp; \		switch (info1 & (3 << 12)) { \		case 0 << 12: tmp = 'f'; break; \		case 1 << 12: tmp = 'l'; break; \		case 2 << 12: tmp = 'h'; break; \		default: tmp = '?'; break; \		}; tmp; })static inline char token_mark (__le32 token){	__u32 v = le32_to_cpu (token);	if (v & QTD_STS_ACTIVE)		return '*';	if (v & QTD_STS_HALT)		return '-';	if (!IS_SHORT_READ (v))		return ' ';	/* tries to advance through hw_alt_next */	return '/';}static void qh_lines (	struct ehci_hcd *ehci,	struct ehci_qh *qh,	char **nextp,	unsigned *sizep){	u32			scratch;	u32			hw_curr;	struct list_head	*entry;	struct ehci_qtd		*td;	unsigned		temp;	unsigned		size = *sizep;	char			*next = *nextp;	char			mark;	if (qh->hw_qtd_next == EHCI_LIST_END)	/* NEC does this */		mark = '@';	else		mark = token_mark (qh->hw_token);	if (mark == '/') {	/* qh_alt_next controls qh advance? */		if ((qh->hw_alt_next & QTD_MASK) == ehci->async->hw_alt_next)			mark = '#';	/* blocked */		else if (qh->hw_alt_next == EHCI_LIST_END)			mark = '.';	/* use hw_qtd_next */		/* else alt_next points to some other qtd */	}	scratch = le32_to_cpup (&qh->hw_info1);	hw_curr = (mark == '*') ? le32_to_cpup (&qh->hw_current) : 0;	temp = scnprintf (next, size,			"qh/%p dev%d %cs ep%d %08x %08x (%08x%c %s nak%d)",			qh, scratch & 0x007f,			speed_char (scratch),			(scratch >> 8) & 0x000f,			scratch, le32_to_cpup (&qh->hw_info2),			le32_to_cpup (&qh->hw_token), mark,			(__constant_cpu_to_le32 (QTD_TOGGLE) & qh->hw_token)				? "data1" : "data0",			(le32_to_cpup (&qh->hw_alt_next) >> 1) & 0x0f);	size -= temp;	next += temp;	/* hc may be modifying the list as we read it ... */	list_for_each (entry, &qh->qtd_list) {		td = list_entry (entry, struct ehci_qtd, qtd_list);		scratch = le32_to_cpup (&td->hw_token);		mark = ' ';		if (hw_curr == td->qtd_dma)			mark = '*';		else if (qh->hw_qtd_next == cpu_to_le32(td->qtd_dma))			mark = '+';		else if (QTD_LENGTH (scratch)) {			if (td->hw_alt_next == ehci->async->hw_alt_next)				mark = '#';			else if (td->hw_alt_next != EHCI_LIST_END)				mark = '/';

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影免费观看高清完整版在线 | 在线视频亚洲一区| 成人免费看的视频| 国产尤物一区二区在线| 国产一区二区三区在线观看精品| 麻豆精品在线看| 久久爱另类一区二区小说| 久久精品国产秦先生| 久久国产精品区| 狠狠色丁香久久婷婷综合_中 | 久久精品国产网站| 狠狠狠色丁香婷婷综合激情 | 日韩精品一区国产麻豆| 欧美成人性战久久| 久久精品欧美日韩精品| 国产三级一区二区三区| 国产精品婷婷午夜在线观看| 亚洲国产精品99久久久久久久久| 国产精品美女一区二区在线观看| 国产精品国产三级国产aⅴ原创 | 亚洲丰满少妇videoshd| 亚洲成人午夜影院| 美女视频黄频大全不卡视频在线播放| 麻豆91在线看| 国产激情一区二区三区| 成人99免费视频| 91香蕉视频mp4| 欧美日韩国产成人在线91| 欧美电影在线免费观看| 欧美一区二区三区日韩视频| 26uuu精品一区二区三区四区在线| 久久免费视频色| 亚洲女人****多毛耸耸8| 亚洲成人激情综合网| 理论电影国产精品| 波多野结衣中文一区| 精品视频一区三区九区| 精品美女在线播放| 亚洲天堂2016| 免费观看成人av| 波多野洁衣一区| 欧美日韩精品福利| 国产欧美精品一区二区色综合| 自拍偷拍亚洲欧美日韩| 丝袜亚洲精品中文字幕一区| 激情欧美一区二区三区在线观看| 波多野结衣视频一区| 欧美日韩国产首页| 国产欧美一区二区精品久导航| 亚洲猫色日本管| 美国毛片一区二区| 91欧美一区二区| 26uuu另类欧美| 亚洲图片自拍偷拍| 国产激情视频一区二区在线观看| 欧美性一区二区| 国产欧美日韩在线视频| 亚洲成人自拍一区| 成人精品视频一区二区三区| 欧美男女性生活在线直播观看| 久久久精品免费网站| 亚洲国产成人porn| 成人免费视频caoporn| 555夜色666亚洲国产免| 亚洲色图在线看| 国产精品一级黄| 在线电影国产精品| 最新国产の精品合集bt伙计| 激情深爱一区二区| 91精品啪在线观看国产60岁| 亚洲欧洲精品天堂一级 | 国产美女精品一区二区三区| 在线看日韩精品电影| 国产视频一区二区三区在线观看| 日日欢夜夜爽一区| 色噜噜夜夜夜综合网| 久久精品男人天堂av| 日产精品久久久久久久性色| 91片在线免费观看| 国产精品久久久久久户外露出 | 天天影视涩香欲综合网| 91尤物视频在线观看| 国产亚洲1区2区3区| 蜜桃精品视频在线观看| 精品视频一区二区三区免费| **网站欧美大片在线观看| 国产成人午夜高潮毛片| 精品精品国产高清a毛片牛牛| 亚洲成人一二三| 在线影院国内精品| **欧美大码日韩| eeuss鲁一区二区三区| 久久久99精品久久| 国产一区二区主播在线| 日韩欧美精品在线| 日本中文字幕一区| 欧美高清性hdvideosex| 亚洲午夜国产一区99re久久| 日本丶国产丶欧美色综合| 最新中文字幕一区二区三区| 国产成人h网站| 久久久久99精品国产片| 国产麻豆日韩欧美久久| 久久久久久免费网| 国产91丝袜在线播放九色| 国产欧美一区二区三区网站 | 日韩一区二区在线观看视频| 亚洲综合区在线| 在线看不卡av| 亚洲第一成年网| 欧美性猛交xxxx乱大交退制版| 亚洲另类中文字| 色天天综合久久久久综合片| 亚洲青青青在线视频| 色婷婷狠狠综合| 久久青草欧美一区二区三区| 亚洲中国最大av网站| 欧美日韩亚洲综合一区二区三区| 亚洲福利一区二区三区| 欧美福利电影网| 极品少妇xxxx精品少妇| 久久人人超碰精品| jlzzjlzz国产精品久久| 又紧又大又爽精品一区二区| 欧美视频在线观看一区二区| 首页综合国产亚洲丝袜| 日韩欧美一级精品久久| 国产精品自拍av| 中文字幕一区三区| 欧美日韩一区二区三区四区五区| 日韩福利视频导航| 欧美精品一区二区三区一线天视频| 国产在线精品不卡| 亚洲丝袜另类动漫二区| 欧美性猛交一区二区三区精品| 免费的成人av| 国产精品―色哟哟| 欧美日韩色一区| 国产乱码一区二区三区| 亚洲视频一二三区| 欧美精品一二三| 国产综合色视频| 亚洲少妇屁股交4| 欧美一级在线免费| 大胆欧美人体老妇| 日欧美一区二区| 国产精品二三区| 91精品国产黑色紧身裤美女| 国产成人a级片| 丝袜美腿一区二区三区| 欧美国产日产图区| 欧美日韩1234| 成人综合婷婷国产精品久久| 亚洲国产综合视频在线观看| 日韩欧美视频在线| 色婷婷综合久久久中文一区二区| 日本美女一区二区| 亚洲视频一二区| 精品日韩欧美在线| 91福利国产精品| 国产成人av电影在线| 亚洲成人免费看| 国产精品成人一区二区三区夜夜夜| 在线不卡中文字幕| 99久久99久久综合| 狂野欧美性猛交blacked| 亚洲欧美日韩一区| 欧美精品一区二区三区在线播放| 在线观看日韩一区| 岛国精品一区二区| 麻豆视频一区二区| 亚洲线精品一区二区三区 | 另类调教123区 | 国产一区二区三区观看| 亚洲国产日韩综合久久精品| 国产人成一区二区三区影院| 欧美日韩一区不卡| 91丝袜高跟美女视频| 国产主播一区二区| 喷水一区二区三区| 亚洲国产视频a| 亚洲欧美日韩在线| 中文字幕欧美日本乱码一线二线| 91精品欧美综合在线观看最新| 91亚洲午夜精品久久久久久| 国产成人8x视频一区二区| 久久成人麻豆午夜电影| 日本欧美肥老太交大片| 亚洲一二三四久久| 亚洲视频一二三| 国产精品美女久久久久高潮| 久久久蜜桃精品| 精品免费99久久| 精品欧美一区二区三区精品久久| 欧美另类高清zo欧美| 欧美性大战久久| av午夜一区麻豆| 成人性生交大片免费看中文 | 麻豆91免费看| 日韩国产欧美在线播放|