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

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

?? lwmon.c

?? Universal Bootloader which support OMAP2420.
?? C
?? 第 1 頁 / 共 3 頁
字號:
int board_early_init_f (void){	volatile immap_t *immr = (immap_t *) CFG_IMMR;	/* Disable Ethernet TENA on Port B	 * Necessary because of pull up in COM3 port.	 *	 * This is just a preliminary fix, intended to turn off TENA	 * as soon as possible to avoid noise on the network. Once	 * I睠 is running we will make sure the interface is	 * correctly initialized.	 */	immr->im_cpm.cp_pbpar &= ~PB_ENET_TENA;	immr->im_cpm.cp_pbodr &= ~PB_ENET_TENA;	immr->im_cpm.cp_pbdat &= ~PB_ENET_TENA;	/* set to 0 = disabled */	immr->im_cpm.cp_pbdir |= PB_ENET_TENA;	return (0);}/* ------------------------------------------------------------------------- *//***********************************************************************F* Function:     void reset_phy (void) P*A*Z* *P* Parameters:   noneP*P* Returnvalue:  none *Z* Intention:    Reset the PHY.  In the lwmon case we do this by theZ*               signaling the PIC I/O expander. *D* Design:       wd@denx.deC* Coding:       wd@denx.deV* Verification: dzu@denx.de ***********************************************************************/void reset_phy (void){	uchar c;#ifdef DEBUG	printf ("### Switch on Ethernet for SCC2 ###\n");#endif	c = pic_read (0x61);#ifdef DEBUG	printf ("Old PIC read: reg_61 = 0x%02x\n", c);#endif	c |= 0x40;					/* disable COM3 */	c &= ~0x80;					/* enable Ethernet */	pic_write (0x61, c);#ifdef DEBUG	c = pic_read (0x61);	printf ("New PIC read: reg_61 = 0x%02x\n", c);#endif	udelay (1000);}/*------------------------- Keyboard controller -----------------------*//* command codes */#define	KEYBD_CMD_READ_KEYS	0x01#define KEYBD_CMD_READ_VERSION	0x02#define KEYBD_CMD_READ_STATUS	0x03#define KEYBD_CMD_RESET_ERRORS	0x10/* status codes */#define KEYBD_STATUS_MASK	0x3F#define	KEYBD_STATUS_H_RESET	0x20#define KEYBD_STATUS_BROWNOUT	0x10#define KEYBD_STATUS_WD_RESET	0x08#define KEYBD_STATUS_OVERLOAD	0x04#define KEYBD_STATUS_ILLEGAL_WR	0x02#define KEYBD_STATUS_ILLEGAL_RD	0x01/* Number of bytes returned from Keyboard Controller */#define KEYBD_VERSIONLEN	2	/* version information */#define	KEYBD_DATALEN		9	/* normal key scan data *//* maximum number of "magic" key codes that can be assigned */static uchar kbd_addr = CFG_I2C_KEYBD_ADDR;static uchar *key_match (uchar *);#define	KEYBD_SET_DEBUGMODE	'#'	/* Magic key to enable debug output *//***********************************************************************F* Function:     int board_postclk_init (void) P*A*Z* *P* Parameters:   noneP*P* Returnvalue:  intP*                - 0 is always returned. *Z* Intention:    This function is the board_postclk_init() method implementationZ*               for the lwmon board. * ***********************************************************************/int board_postclk_init (void){	DECLARE_GLOBAL_DATA_PTR;	kbd_init();#ifdef CONFIG_MODEM_SUPPORT	if (key_pressed()) {		disable_putc();	/* modem doesn't understand banner etc */		gd->do_mdm_init = 1;	}#endif	return (0);}struct serial_device * default_serial_console (void){	DECLARE_GLOBAL_DATA_PTR;	return gd->do_mdm_init ? &serial_scc_device : &serial_smc_device;}static void kbd_init (void){	DECLARE_GLOBAL_DATA_PTR;	uchar kbd_data[KEYBD_DATALEN];	uchar tmp_data[KEYBD_DATALEN];	uchar val, errcd;	int i;	i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);	gd->kbd_status = 0;	/* Forced by PIC. Delays <= 175us loose */	udelay(1000);	/* Read initial keyboard error code */	val = KEYBD_CMD_READ_STATUS;	i2c_write (kbd_addr, 0, 0, &val, 1);	i2c_read (kbd_addr, 0, 0, &errcd, 1);	/* clear unused bits */	errcd &= KEYBD_STATUS_MASK;	/* clear "irrelevant" bits. Recommended by Martin Rajek, LWN */	errcd &= ~(KEYBD_STATUS_H_RESET|KEYBD_STATUS_BROWNOUT);	if (errcd) {		gd->kbd_status |= errcd << 8;	}	/* Reset error code and verify */	val = KEYBD_CMD_RESET_ERRORS;	i2c_write (kbd_addr, 0, 0, &val, 1);	udelay(1000);	/* delay NEEDED by keyboard PIC !!! */	val = KEYBD_CMD_READ_STATUS;	i2c_write (kbd_addr, 0, 0, &val, 1);	i2c_read (kbd_addr, 0, 0, &val, 1);	val &= KEYBD_STATUS_MASK;	/* clear unused bits */	if (val) {			/* permanent error, report it */		gd->kbd_status |= val;		return;	}	/*	 * Read current keyboard state.	 *	 * After the error reset it may take some time before the	 * keyboard PIC picks up a valid keyboard scan - the total	 * scan time is approx. 1.6 ms (information by Martin Rajek,	 * 28 Sep 2002). We read a couple of times for the keyboard	 * to stabilize, using a big enough delay.	 * 10 times should be enough. If the data is still changing,	 * we use what we get :-(	 */	memset (tmp_data, 0xFF, KEYBD_DATALEN);	/* impossible value */	for (i=0; i<10; ++i) {		val = KEYBD_CMD_READ_KEYS;		i2c_write (kbd_addr, 0, 0, &val, 1);		i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);		if (memcmp(kbd_data, tmp_data, KEYBD_DATALEN) == 0) {			/* consistent state, done */			break;		}		/* remeber last state, delay, and retry */		memcpy (tmp_data, kbd_data, KEYBD_DATALEN);		udelay (5000);	}}/***********************************************************************F* Function:     int misc_init_r (void) P*A*Z* *P* Parameters:   noneP*P* Returnvalue:  intP*                - 0 is always returned, even in the case of a keyboardP*                    error. *Z* Intention:    This function is the misc_init_r() method implementationZ*               for the lwmon board.Z*               The keyboard controller is initialized and the resultZ*               of a read copied to the environment variable "keybd".Z*               If KEYBD_SET_DEBUGMODE is defined, a check is made forZ*               this key, and if found display to the LCD will be enabled.Z*               The keys in "keybd" are checked against the magicZ*               keycommands defined in the environment.Z*               See also key_match(). *D* Design:       wd@denx.deC* Coding:       wd@denx.deV* Verification: dzu@denx.de ***********************************************************************/int misc_init_r (void){	DECLARE_GLOBAL_DATA_PTR;	uchar kbd_data[KEYBD_DATALEN];	uchar keybd_env[2 * KEYBD_DATALEN + 1];	uchar kbd_init_status = gd->kbd_status >> 8;	uchar kbd_status = gd->kbd_status;	uchar val;	uchar *str;	int i;	if (kbd_init_status) {		printf ("KEYBD: Error %02X\n", kbd_init_status);	}	if (kbd_status) {		/* permanent error, report it */		printf ("*** Keyboard error code %02X ***\n", kbd_status);		sprintf (keybd_env, "%02X", kbd_status);		setenv ("keybd", keybd_env);		return 0;	}	/*	 * Now we know that we have a working  keyboard,  so  disable	 * all output to the LCD except when a key press is detected.	 */	if ((console_assign (stdout, "serial") < 0) ||		(console_assign (stderr, "serial") < 0)) {		printf ("Can't assign serial port as output device\n");	}	/* Read Version */	val = KEYBD_CMD_READ_VERSION;	i2c_write (kbd_addr, 0, 0, &val, 1);	i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_VERSIONLEN);	printf ("KEYBD: Version %d.%d\n", kbd_data[0], kbd_data[1]);	/* Read current keyboard state */	val = KEYBD_CMD_READ_KEYS;	i2c_write (kbd_addr, 0, 0, &val, 1);	i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);	for (i = 0; i < KEYBD_DATALEN; ++i) {		sprintf (keybd_env + i + i, "%02X", kbd_data[i]);	}	setenv ("keybd", keybd_env);	str = strdup (key_match (kbd_data));	/* decode keys */#ifdef KEYBD_SET_DEBUGMODE	if (kbd_data[0] == KEYBD_SET_DEBUGMODE) {	/* set debug mode */		if ((console_assign (stdout, "lcd") < 0) ||			(console_assign (stderr, "lcd") < 0)) {			printf ("Can't assign LCD display as output device\n");		}	}#endif /* KEYBD_SET_DEBUGMODE */#ifdef CONFIG_PREBOOT	/* automatically configure "preboot" command on key match */	setenv ("preboot", str);	/* set or delete definition */#endif /* CONFIG_PREBOOT */	if (str != NULL) {		free (str);	}	return (0);}#ifdef CONFIG_PREBOOTstatic uchar kbd_magic_prefix[] = "key_magic";static uchar kbd_command_prefix[] = "key_cmd";static int compare_magic (uchar *kbd_data, uchar *str){	uchar compare[KEYBD_DATALEN-1];	char *nxt;	int i;	/* Don't include modifier byte */	memcpy (compare, kbd_data+1, KEYBD_DATALEN-1);	for (; str != NULL; str = (*nxt) ? nxt+1 : nxt) {		uchar c;		int k;		c = (uchar) simple_strtoul (str, (char **) (&nxt), 16);		if (str == (uchar *)nxt) {	/* invalid character */			break;		}		/*		 * Check if this key matches the input.		 * Set matches to zero, so they match only once		 * and we can find duplicates or extra keys		 */		for (k = 0; k < sizeof(compare); ++k) {			if (compare[k] == '\0')	/* only non-zero entries */				continue;			if (c == compare[k]) {	/* found matching key */				compare[k] = '\0';				break;			}		}		if (k == sizeof(compare)) {			return -1;		/* unmatched key */		}	}	/*	 * A full match leaves no keys in the `compare' array,	 */	for (i = 0; i < sizeof(compare); ++i) {		if (compare[i])		{			return -1;		}	}	return 0;}/***********************************************************************F* Function:     static uchar *key_match (uchar *kbd_data) P*A*Z* *P* Parameters:   uchar *kbd_dataP*                - The keys to match against our magic definitionsP*P* Returnvalue:  uchar *P*                - != NULL: Pointer to the corresponding command(s)P*                     NULL: No magic is about to happen *Z* Intention:    Check if pressed key(s) match magic sequence,Z*               and return the command string associated with that key(s).Z*Z*               If no key press was decoded, NULL is returned.Z*Z*               Note: the first character of the argument will beZ*                     overwritten with the "magic charcter code" of theZ*                     decoded key(s), or '\0'.Z*Z*               Note: the string points to static environment dataZ*                     and must be saved before you call any function thatZ*                     modifies the environment.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉久久夜色精品国产使用方法| 石原莉奈在线亚洲三区| 欧美日韩亚州综合| 成人性生交大片免费看中文网站| 亚洲国产精品影院| 亚洲男人的天堂一区二区| 久久久亚洲午夜电影| 欧美大片在线观看| 日韩一卡二卡三卡国产欧美| 7777精品伊人久久久大香线蕉| 在线看日韩精品电影| 在线观看一区二区视频| 国产亚洲欧洲一区高清在线观看| 国产拍欧美日韩视频二区| 久久久久国产成人精品亚洲午夜 | 亚洲成人激情社区| 成人一区在线观看| 精品三级在线观看| 国产欧美日韩一区二区三区在线观看| 亚洲成人av电影在线| 91黄视频在线观看| 日韩视频在线你懂得| 亚洲第一福利视频在线| av电影在线观看完整版一区二区| www.亚洲精品| 中文字幕不卡在线播放| 亚洲第一会所有码转帖| 欧洲亚洲国产日韩| 一区二区三区加勒比av| 麻豆精品一区二区| 丁香啪啪综合成人亚洲小说 | 最新国产成人在线观看| 一区二区三区日韩在线观看| 春色校园综合激情亚洲| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产亚洲一区字幕| 激情久久五月天| gogogo免费视频观看亚洲一| 国产日韩欧美在线一区| 国产福利视频一区二区三区| 欧美主播一区二区三区美女| 亚洲综合一二三区| av不卡在线播放| 最近中文字幕一区二区三区| 91视频在线观看| 中文字幕欧美区| 99视频超级精品| 樱花影视一区二区| 国产精品一区二区三区99| 欧美日韩欧美一区二区| 视频在线观看一区| 欧美大片一区二区三区| 国产91精品免费| 亚洲激情中文1区| 91精品久久久久久久99蜜桃| 久久草av在线| 日韩午夜在线观看| 国产91在线|亚洲| 亚洲精品乱码久久久久久日本蜜臀| 欧美视频在线一区二区三区| 国产精品视频在线看| 久久电影网站中文字幕| 国产日韩欧美精品一区| 在线中文字幕不卡| 精品一区二区三区免费观看| 欧美日韩国产精选| 亚洲最快最全在线视频| 日韩欧美一级二级三级| 成人精品国产福利| 亚洲国产精品二十页| 欧美日韩和欧美的一区二区| 色婷婷综合五月| 中文字幕一区二区三区四区不卡| 国产福利91精品一区二区三区| 亚洲天堂免费看| 精品国产三级a在线观看| 日韩福利电影在线观看| 欧美电影影音先锋| 日韩激情一区二区| 亚洲色图视频免费播放| 日韩精品一区二区三区中文不卡| 成av人片一区二区| 久久99精品久久久久久久久久久久 | 精品国产不卡一区二区三区| 91国偷自产一区二区使用方法| 美脚の诱脚舐め脚责91| 亚洲精品亚洲人成人网| 欧美videos中文字幕| 在线观看国产91| gogo大胆日本视频一区| 国产乱人伦偷精品视频免下载| 日韩精品91亚洲二区在线观看 | 日韩av网站在线观看| 一区二区中文字幕在线| 久久先锋影音av鲁色资源| 国产一区二区在线视频| 国产午夜三级一区二区三| 7777精品伊人久久久大香线蕉超级流畅 | 日韩亚洲欧美中文三级| 色综合久久中文字幕| 丁香一区二区三区| 国产乱码精品一区二区三区五月婷| 日韩二区三区四区| 亚洲成av人片在线| 亚洲一二三区在线观看| 亚洲日本欧美天堂| 中文字幕中文字幕一区二区| 色先锋资源久久综合| 成人激情黄色小说| 成人污污视频在线观看| 国产美女在线精品| 福利电影一区二区| 成人免费黄色在线| 丁香亚洲综合激情啪啪综合| 国产 欧美在线| 成人天堂资源www在线| 波多野结衣欧美| 丁香六月综合激情| 色综合久久六月婷婷中文字幕| 91婷婷韩国欧美一区二区| 99re这里都是精品| 黄色精品一二区| 国产又粗又猛又爽又黄91精品| 国产精选一区二区三区| 成人精品小蝌蚪| 91国内精品野花午夜精品 | 亚洲v中文字幕| 日韩成人dvd| 久久精品国产精品亚洲综合| 美女久久久精品| 国产一区二区91| 东方欧美亚洲色图在线| 日本久久一区二区| 91精品啪在线观看国产60岁| 欧美大片在线观看| 亚洲欧美一区二区三区国产精品| 中文字幕在线不卡一区| 午夜不卡在线视频| 一二三四区精品视频| 亚洲成a天堂v人片| 韩日欧美一区二区三区| 大陆成人av片| 欧美欧美欧美欧美| 久久麻豆一区二区| 亚洲欧美日韩综合aⅴ视频| 婷婷六月综合亚洲| 国产大陆a不卡| 欧美日韩中文另类| 久久免费的精品国产v∧| 亚洲免费av观看| 激情文学综合网| 色综合中文字幕国产| 国产一区二区主播在线| 色偷偷成人一区二区三区91 | 91看片淫黄大片一级在线观看| 欧美午夜免费电影| 欧美精品一区二区高清在线观看| 最近日韩中文字幕| 久久se精品一区精品二区| 99久久久精品| 久久亚洲精品国产精品紫薇| 一级特黄大欧美久久久| 成人午夜视频免费看| 欧美一区欧美二区| 日韩精品在线一区| 一区二区三区 在线观看视频| 激情综合色播五月| 欧美老女人在线| 综合欧美一区二区三区| 国产一区二区福利视频| 制服.丝袜.亚洲.另类.中文| 亚洲男人天堂一区| 国产a久久麻豆| 精品乱码亚洲一区二区不卡| 亚洲成人午夜影院| 91美女在线看| 国产精品免费aⅴ片在线观看| 久久精品国产成人一区二区三区| 欧美三级电影在线看| 亚洲少妇最新在线视频| 国产成人免费xxxxxxxx| 日韩欧美不卡一区| 天天色天天操综合| 欧美午夜电影网| 亚洲乱码国产乱码精品精的特点 | 欧美亚洲国产一卡| 亚洲欧洲av在线| 成人精品视频一区二区三区| 精品国产免费人成电影在线观看四季 | 欧美电影影音先锋| 亚洲成年人网站在线观看| 欧美午夜片在线看| 亚洲高清免费观看高清完整版在线观看| 成人午夜精品在线| 中文字幕在线观看一区二区| 99riav久久精品riav| 亚洲综合激情另类小说区| 色国产精品一区在线观看| 亚洲精品视频免费看| 欧亚一区二区三区|