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

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

?? sysmon.c

?? U-boot latest tarball
?? C
字號:
/* * (C) Copyright 2003 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this * project. * * 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., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include <post.h>#include <common.h>/* * SYSMON test * * This test performs the system hardware monitoring. * The test passes when all the following voltages and temperatures * are within allowed ranges: * * Board temperature * Front temperature * +3.3V CPU logic * +5V logic * +12V PCMCIA * +12V CCFL * +5V standby * * CCFL is not enabled if temperature values are not within allowed ranges * * See the list off all parameters in the sysmon_table below */#include <post.h>#include <watchdog.h>#include <i2c.h>#if CONFIG_POST & CONFIG_SYS_POST_SYSMONDECLARE_GLOBAL_DATA_PTR;static int sysmon_temp_invalid = 0;/* #define DEBUG */#define	RELOC(x) if (x != NULL) x = (void *) ((ulong) (x) + gd->reloc_off)typedef struct sysmon_s sysmon_t;typedef struct sysmon_table_s sysmon_table_t;static void sysmon_lm87_init (sysmon_t * this);static void sysmon_pic_init (sysmon_t * this);static uint sysmon_i2c_read (sysmon_t * this, uint addr);static uint sysmon_i2c_read_sgn (sysmon_t * this, uint addr);static void sysmon_ccfl_disable (sysmon_table_t * this);static void sysmon_ccfl_enable (sysmon_table_t * this);struct sysmon_s{	uchar	chip;	void	(*init)(sysmon_t *);	uint	(*read)(sysmon_t *, uint);};static sysmon_t sysmon_lm87 =	{CONFIG_SYS_I2C_SYSMON_ADDR, sysmon_lm87_init, sysmon_i2c_read};static sysmon_t sysmon_lm87_sgn =	{CONFIG_SYS_I2C_SYSMON_ADDR, sysmon_lm87_init, sysmon_i2c_read_sgn};static sysmon_t sysmon_pic =	{CONFIG_SYS_I2C_PICIO_ADDR, sysmon_pic_init, sysmon_i2c_read};static sysmon_t * sysmon_list[] ={	&sysmon_lm87,	&sysmon_lm87_sgn,	&sysmon_pic,	NULL};struct sysmon_table_s{	char *		name;	char *		unit_name;	sysmon_t *	sysmon;	void		(*exec_before)(sysmon_table_t *);	void		(*exec_after)(sysmon_table_t *);	int		unit_precision;	int		unit_div;	int		unit_min;	int		unit_max;	uint		val_mask;	uint		val_min;	uint		val_max;	int		val_valid;	uint		val_min_alt;	uint		val_max_alt;	int		val_valid_alt;	uint		addr;};static sysmon_table_t sysmon_table[] ={    {"Board temperature", " C", &sysmon_lm87_sgn, NULL, sysmon_ccfl_disable,     1, 1, -128, 127, 0xFF, 0x58, 0xD5, 0, 0x6C, 0xC6, 0, 0x27},    {"Front temperature", " C", &sysmon_lm87, NULL, sysmon_ccfl_disable,     1, 100, -27316, 8984, 0xFF, 0xA4, 0xFC, 0, 0xB2, 0xF1, 0, 0x29},    {"+3.3V CPU logic", "V", &sysmon_lm87, NULL, NULL,     100, 1000, 0, 4386, 0xFF, 0xB6, 0xC9, 0, 0xB6, 0xC9, 0, 0x22},    {"+ 5 V logic", "V", &sysmon_lm87, NULL, NULL,     100, 1000, 0, 6630, 0xFF, 0xB6, 0xCA, 0, 0xB6, 0xCA, 0, 0x23},    {"+12 V PCMCIA", "V", &sysmon_lm87, NULL, NULL,     100, 1000, 0, 15460, 0xFF, 0xBC, 0xD0, 0, 0xBC, 0xD0, 0, 0x21},    {"+12 V CCFL", "V", &sysmon_lm87, NULL, sysmon_ccfl_enable,     100, 1000, 0, 15900, 0xFF, 0xB6, 0xCA, 0, 0xB6, 0xCA, 0, 0x24},    {"+ 5 V standby", "V", &sysmon_pic, NULL, NULL,     100, 1000, 0, 6040, 0xFF, 0xC8, 0xDE, 0, 0xC8, 0xDE, 0, 0x7C},};static int sysmon_table_size = sizeof(sysmon_table) / sizeof(sysmon_table[0]);static int conversion_done = 0;int sysmon_init_f (void){	sysmon_t ** l;	ulong reg;	/* Power on CCFL, PCMCIA */	reg = pic_read  (0x60);	reg |= 0x09;	pic_write (0x60, reg);	for (l = sysmon_list; *l; l++) {		(*l)->init(*l);	}	return 0;}void sysmon_reloc (void){	sysmon_t ** l;	sysmon_table_t * t;	for (l = sysmon_list; *l; l++) {		RELOC(*l);		RELOC((*l)->init);		RELOC((*l)->read);	}	for (t = sysmon_table; t < sysmon_table + sysmon_table_size; t ++) {		RELOC(t->exec_before);		RELOC(t->exec_after);		RELOC(t->sysmon);	}}static char *sysmon_unit_value (sysmon_table_t *s, uint val){	static char buf[32];	int unit_val =	    s->unit_min + (s->unit_max - s->unit_min) * val / s->val_mask;	char *p, sign;	int dec, frac;	if (val == -1) {		return "I/O ERROR";	}	if (unit_val < 0) {		sign = '-';		unit_val = -unit_val;	} else {		sign = '+';	}	p = buf + sprintf(buf, "%c%2d", sign, unit_val / s->unit_div);	frac = unit_val % s->unit_div;	frac /= (s->unit_div / s->unit_precision);	dec = s->unit_precision;	if (dec != 1) {		*p++ = '.';	}	for (dec /= 10; dec != 0; dec /= 10) {		*p++ = '0' + (frac / dec) % 10;	}	strcpy(p, s->unit_name);	return buf;}static void sysmon_lm87_init (sysmon_t * this){	uchar val;	/* Detect LM87 chip */	if (i2c_read(this->chip, 0x40, 1, &val, 1) || (val & 0x80) != 0 ||	    i2c_read(this->chip, 0x3E, 1, &val, 1) || val != 0x02) {		printf("Error: LM87 not found at 0x%02X\n", this->chip);		return;	}	/* Configure pins 5,6 as AIN */	val = 0x03;	if (i2c_write(this->chip, 0x16, 1, &val, 1)) {		printf("Error: can't write LM87 config register\n");		return;	}	/* Start monitoring */	val = 0x01;	if (i2c_write(this->chip, 0x40, 1, &val, 1)) {		printf("Error: can't write LM87 config register\n");		return;	}}static void sysmon_pic_init (sysmon_t * this){}static uint sysmon_i2c_read (sysmon_t * this, uint addr){	uchar val;	uint res = i2c_read(this->chip, addr, 1, &val, 1);	return res == 0 ? val : -1;}static uint sysmon_i2c_read_sgn (sysmon_t * this, uint addr){	uchar val;	return i2c_read(this->chip, addr, 1, &val, 1) == 0 ?		128 + (signed char)val : -1;}static void sysmon_ccfl_disable (sysmon_table_t * this){	if (!this->val_valid_alt) {		sysmon_temp_invalid = 1;	}}static void sysmon_ccfl_enable (sysmon_table_t * this){	ulong reg;	if (!sysmon_temp_invalid) {		reg = pic_read  (0x60);		reg |= 0x06;		pic_write (0x60, reg);	}}int sysmon_post_test (int flags){	int res = 0;	sysmon_table_t * t;	uint val;	/*	 * The A/D conversion on the LM87 sensor takes 300 ms.	 */	if (! conversion_done) {		while (post_time_ms(gd->post_init_f_time) < 300) WATCHDOG_RESET ();		conversion_done = 1;	}	for (t = sysmon_table; t < sysmon_table + sysmon_table_size; t ++) {		if (t->exec_before) {			t->exec_before(t);		}		val = t->sysmon->read(t->sysmon, t->addr);		if (val != -1) {			t->val_valid = val >= t->val_min && val <= t->val_max;			t->val_valid_alt = val >= t->val_min_alt && val <= t->val_max_alt;		} else {			t->val_valid = 0;			t->val_valid_alt = 0;		}		if (t->exec_after) {			t->exec_after(t);		}		if ((!t->val_valid) || (flags & POST_MANUAL)) {			printf("%-17s = %-10s ", t->name, sysmon_unit_value(t, val));			printf("allowed range");			printf(" %-8s ..", sysmon_unit_value(t, t->val_min));			printf(" %-8s", sysmon_unit_value(t, t->val_max));			printf("     %s\n", t->val_valid ? "OK" : "FAIL");		}		if (!t->val_valid) {			res = -1;		}	}	return res;}#endif /* CONFIG_POST & CONFIG_SYS_POST_SYSMON */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品伦理在线| 成人开心网精品视频| 亚洲va韩国va欧美va精品| 亚洲精品国产一区二区精华液 | 亚洲视频一二区| 国产精品电影院| 国产精品久久久一本精品| 国产精品美女一区二区三区| 欧美国产一区视频在线观看| 国产精品私人影院| 亚洲四区在线观看| 亚洲伦理在线免费看| 伊人开心综合网| 亚洲不卡一区二区三区| 丝袜美腿亚洲综合| 久久国产精品99精品国产| 国精品**一区二区三区在线蜜桃| 国产自产视频一区二区三区 | 久久综合色婷婷| 亚洲国产电影在线观看| 亚洲日本va午夜在线电影| 亚洲精品免费在线| 五月婷婷色综合| 国产在线视频一区二区| 不卡一区在线观看| 在线观看一区不卡| 日韩美女主播在线视频一区二区三区| 精品少妇一区二区三区日产乱码 | 日韩欧美区一区二| 久久久久久久久久久黄色| 国产精品国产三级国产aⅴ中文| 自拍偷在线精品自拍偷无码专区 | 不卡av免费在线观看| 一本久久a久久免费精品不卡| 欧美人xxxx| 久久久噜噜噜久久人人看 | 亚洲一区二区精品久久av| 日韩国产欧美在线观看| 国产精品一品视频| 日本韩国欧美在线| 日韩精品一区二区三区视频在线观看| 日本一二三不卡| 天堂影院一区二区| 不卡一区在线观看| 欧美一区二区国产| 亚洲丝袜美腿综合| 裸体一区二区三区| 91丝袜国产在线播放| 欧美一区二区三区婷婷月色| 中文字幕不卡在线播放| 五月天亚洲精品| fc2成人免费人成在线观看播放| 欧美男女性生活在线直播观看| 国产午夜精品久久久久久免费视| 亚洲乱码中文字幕| 精品亚洲成a人在线观看| 一本久久综合亚洲鲁鲁五月天| 精品久久久久久无| 亚洲一区二区视频在线观看| 国产精品一区在线观看你懂的| 欧美日韩另类国产亚洲欧美一级| 国产亚洲短视频| 香蕉av福利精品导航| 91在线观看高清| 亚洲精品一区二区三区在线观看| 亚洲午夜私人影院| 成人av小说网| 久久在线免费观看| 日韩电影免费在线看| 91福利国产成人精品照片| 中文字幕精品一区| 日本午夜精品视频在线观看 | 欧美老女人在线| √…a在线天堂一区| 极品少妇xxxx精品少妇| 91精品国产综合久久精品麻豆| 亚洲人吸女人奶水| 成人精品国产福利| 26uuu色噜噜精品一区二区| 视频一区二区三区入口| 欧美在线观看你懂的| 中文字幕在线观看一区| 国产精品66部| 久久综合色8888| 极品瑜伽女神91| 欧美一二三在线| 蜜臀av一区二区在线观看 | 一区二区激情视频| 99精品欧美一区二区三区综合在线| 久久精品一区四区| 国产一区亚洲一区| 亚洲精品在线一区二区| 久99久精品视频免费观看| 日韩一级黄色大片| 人人狠狠综合久久亚洲| 欧美一三区三区四区免费在线看| 亚洲国产日产av| 欧美日韩国产成人在线免费| 亚洲一区二区欧美| 欧美在线一区二区| 亚洲精品国产高清久久伦理二区| 9l国产精品久久久久麻豆| 国产精品三级视频| 91伊人久久大香线蕉| 亚洲四区在线观看| 在线观看亚洲精品视频| 亚洲国产精品一区二区尤物区| 欧美在线观看视频在线| 亚洲成人午夜影院| 这里只有精品电影| 毛片av一区二区| 久久久精品tv| 91小视频在线免费看| 亚洲综合一区在线| 欧美日韩一区久久| 免费观看一级特黄欧美大片| 欧美mv日韩mv国产| 岛国av在线一区| 成人欧美一区二区三区| 色成年激情久久综合| 性感美女极品91精品| 日韩欧美视频在线| 福利91精品一区二区三区| 中文字幕在线一区二区三区| 91啪在线观看| 日本伊人午夜精品| 国产午夜亚洲精品午夜鲁丝片| 成人精品一区二区三区中文字幕 | 色老综合老女人久久久| 亚洲国产精品自拍| 日韩视频中午一区| 成人精品国产一区二区4080| 亚洲国产视频在线| xnxx国产精品| 一本大道久久a久久精品综合| 午夜视频一区在线观看| 2020国产成人综合网| 99久久婷婷国产综合精品| 亚洲成av人片一区二区| 精品sm在线观看| 色综合中文字幕国产 | 国产精品亚洲综合一区在线观看| 国产精品久久久久aaaa樱花| 欧美午夜精品久久久久久孕妇| 麻豆传媒一区二区三区| 国产精品免费av| 91精品国产91久久久久久最新毛片 | 国产人久久人人人人爽| 色哟哟一区二区三区| 久久精品国产精品青草| 1024精品合集| 日韩丝袜美女视频| 色综合久久中文综合久久97| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品亚洲综合一区在线观看| 亚洲精品国产品国语在线app| 欧美videos中文字幕| 一本色道**综合亚洲精品蜜桃冫| 狠狠色丁香久久婷婷综| 亚洲一本大道在线| 国产视频不卡一区| 欧美精品日日鲁夜夜添| 成人99免费视频| 精品在线你懂的| 亚欧色一区w666天堂| 国产精品国产三级国产专播品爱网| 日韩欧美高清在线| 在线免费一区三区| 成人高清免费在线播放| 精品综合久久久久久8888| 亚洲一本大道在线| 中文字幕一区二区三| 26uuu亚洲综合色| 制服丝袜亚洲精品中文字幕| 色琪琪一区二区三区亚洲区| 国产成人自拍高清视频在线免费播放| 亚洲成在线观看| 一区二区三区中文在线| 中文字幕国产一区二区| 2023国产精品视频| 欧美一区二区精品在线| 欧美日韩在线播放三区四区| 99精品桃花视频在线观看| 国产成人无遮挡在线视频| 免费成人在线视频观看| 天天综合天天综合色| 亚洲综合网站在线观看| 亚洲久本草在线中文字幕| 国产精品进线69影院| 国产拍欧美日韩视频二区| 久久在线免费观看| 日韩精品一区二区三区老鸭窝 | 一区二区三区四区亚洲| 中文字幕二三区不卡| 国产日韩v精品一区二区| 2017欧美狠狠色| www激情久久| 久久欧美中文字幕| 国产亚洲婷婷免费| 欧美精品一区二区久久久|