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

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

?? lwmon.c

?? U-Boot1.1.2是最為常用的嵌入式系統Bootloader
?? 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.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲成aⅴ人片在线观看| 三级久久三级久久久| 亚洲午夜久久久久久久久电影院| 久久精品久久精品| 91免费在线看| 久久久天堂av| 日本成人在线电影网| 日本丰满少妇一区二区三区| 精品久久一区二区三区| 亚洲bt欧美bt精品| 色综合久久天天| 亚洲国产电影在线观看| 精品亚洲porn| 欧美v亚洲v综合ⅴ国产v| 性做久久久久久免费观看| 日本久久电影网| 亚洲三级免费电影| 成人综合婷婷国产精品久久| 欧美成人三级电影在线| 亚洲一区在线观看免费 | 中文在线一区二区| 免费久久99精品国产| 欧美日韩一级片在线观看| 亚洲视频网在线直播| 成人手机在线视频| 国产色产综合产在线视频| 国产一区二区不卡老阿姨| 日韩欧美成人一区二区| 免费在线看一区| 欧美日本在线看| 石原莉奈在线亚洲三区| 欧美久久久久免费| 天天综合色天天| 日韩一区二区在线观看| 久久福利资源站| 精品国产凹凸成av人导航| 老司机精品视频一区二区三区| 日韩视频一区二区在线观看| 日韩一区精品视频| 日韩视频一区二区三区在线播放| 美女视频黄a大片欧美| 久久伊人中文字幕| 国产福利一区二区三区视频| 欧美国产日韩a欧美在线观看| 高清成人免费视频| 亚洲欧美视频在线观看视频| 色婷婷av一区二区三区软件| 亚洲成人激情自拍| 精品人在线二区三区| 国产高清不卡一区| 亚洲美女免费视频| 91精品在线一区二区| 久久99精品久久久久久| 欧美极品aⅴ影院| 色又黄又爽网站www久久| 婷婷综合在线观看| 久久品道一品道久久精品| 99精品视频中文字幕| 午夜婷婷国产麻豆精品| 久久夜色精品国产噜噜av| 91麻豆6部合集magnet| 全国精品久久少妇| 国产精品乱人伦中文| 欧美日韩一区二区三区在线| 狠狠色狠狠色综合| 一区二区三区视频在线看| 欧美一级二级三级蜜桃| 成熟亚洲日本毛茸茸凸凹| 一区二区三区四区精品在线视频| 欧美精品久久99久久在免费线| 美国av一区二区| 亚洲欧美另类综合偷拍| 日韩欧美中文一区二区| 97久久久精品综合88久久| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲图片激情小说| 日韩欧美亚洲国产另类 | 在线成人午夜影院| 国产91丝袜在线播放0| 亚洲福利国产精品| 国产精品久久久久久久第一福利| 在线播放国产精品二区一二区四区| 国产精品自在在线| 丝袜亚洲另类欧美综合| 综合久久久久久| 久久午夜老司机| 欧美一级日韩一级| 欧美在线播放高清精品| 成人久久视频在线观看| 狠狠色丁香婷婷综合| 免费在线欧美视频| 亚洲成人久久影院| 伊人色综合久久天天人手人婷| 国产午夜精品一区二区三区视频| 日韩一二在线观看| 日本丰满少妇一区二区三区| 97se狠狠狠综合亚洲狠狠| 成人午夜免费av| 久久97超碰国产精品超碰| 首页综合国产亚洲丝袜| 一级日本不卡的影视| 国产精品美女久久久久久久久久久 | 一区二区成人在线观看| 欧美国产精品一区二区| 久久午夜免费电影| 2023国产精品视频| 日韩欧美国产三级电影视频| 欧美丰满一区二区免费视频| 欧美日韩中文一区| 欧美精品亚洲二区| 制服丝袜亚洲网站| 欧美电影免费观看高清完整版在线观看| 欧美日韩国产首页| 91精品国产麻豆| 日韩午夜激情免费电影| 精品蜜桃在线看| 精品国产乱子伦一区| 久久久久久久久久电影| 国产视频一区二区三区在线观看| 国产网站一区二区| 国产精品不卡一区| 中文字幕在线观看不卡| 亚洲欧美激情视频在线观看一区二区三区| 国产女人18水真多18精品一级做| 久久久久久久久久看片| 国产欧美日韩激情| 国产精品电影院| 亚洲精品国产无套在线观| 亚洲国产综合视频在线观看| 五月天视频一区| 六月丁香综合在线视频| 韩国精品免费视频| 成人黄色一级视频| 色爱区综合激月婷婷| 欧美色爱综合网| 日韩精品一区二区三区视频播放 | 国产成人精品免费一区二区| 国产传媒欧美日韩成人| aa级大片欧美| 欧美肥妇free| 久久久另类综合| 一区二区激情视频| 久久国产麻豆精品| 91欧美激情一区二区三区成人| 欧美高清www午色夜在线视频| 欧美精品一区二区久久婷婷| 亚洲欧美一区二区在线观看| 亚洲香肠在线观看| 国产精品自在欧美一区| 欧美日韩在线直播| 久久中文字幕电影| 亚洲成人av一区二区三区| 国产又黄又大久久| 91黄色在线观看| 亚洲精品一区二区三区香蕉 | 欧美少妇一区二区| 精品国产区一区| 亚洲精品久久久久久国产精华液| 日本美女一区二区三区视频| av福利精品导航| 欧美一卡二卡在线| 国产精品久久久久aaaa| 久久精品国产精品亚洲综合| 91香蕉视频污| 久久久久久免费网| 青青草精品视频| 色综合视频一区二区三区高清| 精品剧情在线观看| 天天综合日日夜夜精品| 99精品国产99久久久久久白柏| 日韩欧美资源站| 亚洲成人免费在线| 99久久久久免费精品国产 | 亚洲美女屁股眼交| 国产成a人亚洲| 亚洲精品一区二区在线观看| 无吗不卡中文字幕| 色偷偷久久一区二区三区| 久久精品视频在线免费观看| 日韩国产高清影视| 91国内精品野花午夜精品| 中文字幕国产一区| 国产乱人伦精品一区二区在线观看| 91精品国产乱码| 亚洲午夜影视影院在线观看| 成人av在线一区二区三区| 久久一二三国产| 麻豆免费看一区二区三区| 欧美酷刑日本凌虐凌虐| 亚洲国产成人va在线观看天堂| 色综合一区二区三区| 中文字幕一区二区三区精华液 | 色综合久久久网| 久久99国产精品久久| 7777精品伊人久久久大香线蕉超级流畅| 中文字幕人成不卡一区| av亚洲精华国产精华精| 国产精品剧情在线亚洲| 成人动漫av在线| 国产精品乱码久久久久久 |