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

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

?? ski2c.c

?? 移植好的楊創(chuàng)utu2440F ARM9 的uboot1.1.4代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
			}			break;		default:			SK_ERR_LOG(pAC, SK_ERRCL_INIT | SK_ERRCL_SW,				SKERR_I2C_E001, SKERR_I2C_E001MSG);			break;		}		pAC->I2c.SenTable[i].SenValue = 0;		pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_OK;		pAC->I2c.SenTable[i].SenErrCts = 0;		pAC->I2c.SenTable[i].SenBegErrTS = 0;		pAC->I2c.SenTable[i].SenState = SK_SEN_IDLE;		pAC->I2c.SenTable[i].SenRead = SkLm80ReadSensor;		pAC->I2c.SenTable[i].SenDev = LM80_ADDR;	}#ifndef	SK_DIAG	pAC->I2c.DummyReads = pAC->I2c.MaxSens;#endif	/* !SK_DIAG */	/* Clear I2C IRQ */	SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ);	/* Now we are I/O initialized */	pAC->I2c.InitLevel = SK_INIT_IO;	return(0);}	/* SkI2cInit1 *//* * Init level 2: Start first sensor read. */static int SkI2cInit2(SK_AC	*pAC,	/* Adapter Context */SK_IOC	IoC)	/* I/O Context */{	int		ReadComplete;	SK_SENSOR	*pSen;	if (pAC->I2c.InitLevel != SK_INIT_IO) {		/* ReInit not needed in I2C module */		/* Init0 and Init2 not permitted */		return(0);	}	pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];	ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);	if (ReadComplete) {		SK_ERR_LOG(pAC, SK_ERRCL_INIT, SKERR_I2C_E008, SKERR_I2C_E008MSG);	}	/* Now we are correctly initialized */	pAC->I2c.InitLevel = SK_INIT_RUN;	return(0);}	/* SkI2cInit2*//* * Initialize I2C devices * * Get the first voltage value and discard it. * Go into temperature read mode. A default pointer is not set. * * The things to be done depend on the init level in the parameter list: * Level 0: *	Initialize only the data structures. Do NOT access hardware. * Level 1: *	Initialize hardware through SK_IN / SK_OUT commands. Do NOT use interrupts. * Level 2: *	Everything is possible. Interrupts may be used from now on. * * return: *	0 = success *	other = error. */int	SkI2cInit(SK_AC	*pAC,	/* Adapter Context */SK_IOC	IoC,	/* I/O Context needed in levels 1 and 2 */int		Level)	/* Init Level */{	switch (Level) {	case SK_INIT_DATA:		return(SkI2cInit0(pAC));	case SK_INIT_IO:		return(SkI2cInit1(pAC, IoC));	case SK_INIT_RUN:		return(SkI2cInit2(pAC, IoC));	default:		break;	}	return(0);}	/* SkI2cInit */#ifndef SK_DIAG/* * Interrupt service function for the I2C Interface * * Clears the Interrupt source * * Reads the register and check it for sending a trap. * * Starts the timer if necessary. */void SkI2cIsr(SK_AC	*pAC,	/* Adapter Context */SK_IOC	IoC)	/* I/O Context */{	SK_EVPARA	Para;	/* Clear I2C IRQ */	SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ);	Para.Para64 = 0;	SkEventQueue(pAC, SKGE_I2C, SK_I2CEV_IRQ, Para);}	/* SkI2cIsr *//* * Check this sensors Value against the threshold and send events. */static void SkI2cCheckSensor(SK_AC		*pAC,	/* Adapter Context */SK_SENSOR	*pSen){	SK_EVPARA	ParaLocal;	SK_BOOL		TooHigh;	/* Is sensor too high? */	SK_BOOL		TooLow;		/* Is sensor too low? */	SK_U64		CurrTime;	/* Current Time */	SK_BOOL		DoTrapSend;	/* We need to send a trap */	SK_BOOL		DoErrLog;	/* We need to log the error */	SK_BOOL		IsError;	/* We need to log the error */	/* Check Dummy Reads first */	if (pAC->I2c.DummyReads > 0) {		pAC->I2c.DummyReads--;		return;	}	/* Get the current time */	CurrTime = SkOsGetTime(pAC);	/* Set para to the most useful setting: The current sensor. */	ParaLocal.Para64 = (SK_U64)pAC->I2c.CurrSens;	/* Check the Value against the thresholds. First: Error Thresholds */	TooHigh = (pSen->SenValue > pSen->SenThreErrHigh);	TooLow = (pSen->SenValue < pSen->SenThreErrLow);	IsError = SK_FALSE;	if (TooHigh || TooLow) {		/* Error condition is satisfied */		DoTrapSend = SK_TRUE;		DoErrLog = SK_TRUE;		/* Now error condition is satisfied */		IsError = SK_TRUE;		if (pSen->SenErrFlag == SK_SEN_ERR_ERR) {			/* This state is the former one */			/* So check first whether we have to send a trap */			if (pSen->SenLastErrTrapTS + SK_SEN_ERR_TR_HOLD >			    CurrTime) {				/*				 * Do NOT send the Trap. The hold back time				 * has to run out first.				 */				DoTrapSend = SK_FALSE;			}			/* Check now whether we have to log an Error */			if (pSen->SenLastErrLogTS + SK_SEN_ERR_LOG_HOLD >			    CurrTime) {				/*				 * Do NOT log the error. The hold back time				 * has to run out first.				 */				DoErrLog = SK_FALSE;			}		}		else {			/* We came from a different state -> Set Begin Time Stamp */			pSen->SenBegErrTS = CurrTime;			pSen->SenErrFlag = SK_SEN_ERR_ERR;		}		if (DoTrapSend) {			/* Set current Time */			pSen->SenLastErrTrapTS = CurrTime;			pSen->SenErrCts++;			/* Queue PNMI Event */			SkEventQueue(pAC, SKGE_PNMI, (TooHigh ?				SK_PNMI_EVT_SEN_ERR_UPP :				SK_PNMI_EVT_SEN_ERR_LOW),				ParaLocal);		}		if (DoErrLog) {			/* Set current Time */			pSen->SenLastErrLogTS = CurrTime;			if (pSen->SenType == SK_SEN_TEMP) {				SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E011,					SKERR_I2C_E011MSG);			} else if (pSen->SenType == SK_SEN_VOLT) {				SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E012,					SKERR_I2C_E012MSG);			} else			{				SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E015,					SKERR_I2C_E015MSG);			}		}	}	/* Check the Value against the thresholds */	/* 2nd: Warning thresholds */	TooHigh = (pSen->SenValue > pSen->SenThreWarnHigh);	TooLow = (pSen->SenValue < pSen->SenThreWarnLow);	if (!IsError && (TooHigh || TooLow)) {		/* Error condition is satisfied */		DoTrapSend = SK_TRUE;		DoErrLog = SK_TRUE;		if (pSen->SenErrFlag == SK_SEN_ERR_WARN) {			/* This state is the former one */			/* So check first whether we have to send a trap */			if (pSen->SenLastWarnTrapTS + SK_SEN_WARN_TR_HOLD >			    CurrTime) {				/*				 * Do NOT send the Trap. The hold back time				 * has to run out first.				 */				DoTrapSend = SK_FALSE;			}			/* Check now whether we have to log an Error */			if (pSen->SenLastWarnLogTS + SK_SEN_WARN_LOG_HOLD >			    CurrTime) {				/*				 * Do NOT log the error. The hold back time				 * has to run out first.				 */				DoErrLog = SK_FALSE;			}		}		else {			/* We came from a different state -> Set Begin Time Stamp */			pSen->SenBegWarnTS = CurrTime;			pSen->SenErrFlag = SK_SEN_ERR_WARN;		}		if (DoTrapSend) {			/* Set current Time */			pSen->SenLastWarnTrapTS = CurrTime;			pSen->SenWarnCts++;			/* Queue PNMI Event */			SkEventQueue(pAC, SKGE_PNMI, (TooHigh ?				SK_PNMI_EVT_SEN_WAR_UPP :				SK_PNMI_EVT_SEN_WAR_LOW),				ParaLocal);		}		if (DoErrLog) {			/* Set current Time */			pSen->SenLastWarnLogTS = CurrTime;			if (pSen->SenType == SK_SEN_TEMP) {				SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E009,					SKERR_I2C_E009MSG);			} else if (pSen->SenType == SK_SEN_VOLT) {				SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E010,					SKERR_I2C_E010MSG);			} else			{				SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E014,					SKERR_I2C_E014MSG);			}		}	}	/* Check for NO error at all */	if (!IsError && !TooHigh && !TooLow) {		/* Set o.k. Status if no error and no warning condition */		pSen->SenErrFlag = SK_SEN_ERR_OK;	}	/* End of check against the thresholds */	/* Bug fix AF: 16.Aug.2001: Correct the init base	 * of LM80 sensor.	 */	if (pSen->SenInit == SK_SEN_DYN_INIT_PCI_IO) {	pSen->SenInit = SK_SEN_DYN_INIT_NONE;		if (pSen->SenValue > SK_SEN_PCI_IO_RANGE_LIMITER) {			/* 5V PCI-IO Voltage */			pSen->SenThreWarnLow = SK_SEN_PCI_IO_5V_LOW_WARN;			pSen->SenThreErrLow = SK_SEN_PCI_IO_5V_LOW_ERR;		}		else {			/* 3.3V PCI-IO Voltage */			pSen->SenThreWarnHigh = SK_SEN_PCI_IO_3V3_HIGH_WARN;			pSen->SenThreErrHigh = SK_SEN_PCI_IO_3V3_HIGH_ERR;		}	}#if 0    /* Dynamic thresholds also for VAUX of LM80 sensor */	if (pSen->SenInit == SK_SEN_DYN_INIT_VAUX) {	pSen->SenInit = SK_SEN_DYN_INIT_NONE;		/* 3.3V VAUX Voltage */		if (pSen->SenValue > SK_SEN_VAUX_RANGE_LIMITER) {			pSen->SenThreWarnLow = SK_SEN_VAUX_3V3_LOW_WARN;			pSen->SenThreErrLow = SK_SEN_VAUX_3V3_LOW_ERR;		}		/* 0V VAUX Voltage */		else {			pSen->SenThreWarnHigh = SK_SEN_VAUX_0V_WARN_ERR;			pSen->SenThreErrHigh = SK_SEN_VAUX_0V_WARN_ERR;		}	}	/*	 * Check initialization state:	 * The VIO Thresholds need adaption	 */	if (!pSen->SenInit && pSen->SenReg == LM80_VT1_IN &&	     pSen->SenValue > SK_SEN_WARNLOW2C &&	     pSen->SenValue < SK_SEN_WARNHIGH2) {		pSen->SenThreErrLow = SK_SEN_ERRLOW2C;		pSen->SenThreWarnLow = SK_SEN_WARNLOW2C;		pSen->SenInit = SK_TRUE;	}	if (!pSen->SenInit && pSen->SenReg == LM80_VT1_IN &&	     pSen->SenValue > SK_SEN_WARNLOW2 &&	     pSen->SenValue < SK_SEN_WARNHIGH2C) {		pSen->SenThreErrHigh = SK_SEN_ERRHIGH2C;		pSen->SenThreWarnHigh = SK_SEN_WARNHIGH2C;		pSen->SenInit = SK_TRUE;	}#endif	if (pSen->SenInit != SK_SEN_DYN_INIT_NONE) {		SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E013, SKERR_I2C_E013MSG);	}}	/* SkI2cCheckSensor*//* * The only Event to be served is the timeout event * */int	SkI2cEvent(SK_AC		*pAC,	/* Adapter Context */SK_IOC		IoC,	/* I/O Context */SK_U32		Event,	/* Module specific Event */SK_EVPARA	Para)	/* Event specific Parameter */{	int			ReadComplete;	SK_SENSOR	*pSen;	SK_U32		Time;	SK_EVPARA	ParaLocal;	int			i;	/* New case: no sensors */	if (pAC->I2c.MaxSens == 0) {		return(0);	}	switch (Event) {	case SK_I2CEV_IRQ:		pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];		ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);		if (ReadComplete) {			/* Check sensor against defined thresholds */			SkI2cCheckSensor (pAC, pSen);			/* Increment Current sensor and set appropriate Timeout */			pAC->I2c.CurrSens++;			if (pAC->I2c.CurrSens >= pAC->I2c.MaxSens) {				pAC->I2c.CurrSens = 0;				Time = SK_I2C_TIM_LONG;			}			else {				Time = SK_I2C_TIM_SHORT;			}			/* Start Timer */			ParaLocal.Para64 = (SK_U64)0;			pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;			SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,				SKGE_I2C, SK_I2CEV_TIM, ParaLocal);		}	else {			/* Start Timer */			ParaLocal.Para64 = (SK_U64)0;			pAC->I2c.TimerMode = SK_TIMER_WATCH_STATEMACHINE;	    SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, SK_I2C_TIM_WATCH,				SKGE_I2C, SK_I2CEV_TIM, ParaLocal);		}		break;	case SK_I2CEV_TIM:		if (pAC->I2c.TimerMode == SK_TIMER_NEW_GAUGING) {			ParaLocal.Para64 = (SK_U64)0;			SkTimerStop(pAC, IoC, &pAC->I2c.SenTimer);			pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];			ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);			if (ReadComplete) {				/* Check sensor against defined thresholds */				SkI2cCheckSensor (pAC, pSen);				/* Increment Current sensor and set appropriate Timeout */				pAC->I2c.CurrSens++;				if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) {					pAC->I2c.CurrSens = 0;					Time = SK_I2C_TIM_LONG;				}				else {					Time = SK_I2C_TIM_SHORT;				}				/* Start Timer */				ParaLocal.Para64 = (SK_U64)0;				pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;				SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,					SKGE_I2C, SK_I2CEV_TIM, ParaLocal);			}		}		else {			pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];			pSen->SenErrFlag = SK_SEN_ERR_FAULTY;			SK_I2C_STOP(IoC);			/* Increment Current sensor and set appropriate Timeout */			pAC->I2c.CurrSens++;			if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) {				pAC->I2c.CurrSens = 0;				Time = SK_I2C_TIM_LONG;			}			else {				Time = SK_I2C_TIM_SHORT;			}			/* Start Timer */			ParaLocal.Para64 = (SK_U64)0;			pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;			SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,				SKGE_I2C, SK_I2CEV_TIM, ParaLocal);		}		break;	case SK_I2CEV_CLEAR:		for (i = 0; i < SK_MAX_SENSORS; i++) {			pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_OK;			pAC->I2c.SenTable[i].SenErrCts = 0;			pAC->I2c.SenTable[i].SenWarnCts = 0;			pAC->I2c.SenTable[i].SenBegErrTS = 0;			pAC->I2c.SenTable[i].SenBegWarnTS = 0;			pAC->I2c.SenTable[i].SenLastErrTrapTS = (SK_U64)0;			pAC->I2c.SenTable[i].SenLastErrLogTS = (SK_U64)0;			pAC->I2c.SenTable[i].SenLastWarnTrapTS = (SK_U64)0;			pAC->I2c.SenTable[i].SenLastWarnLogTS = (SK_U64)0;		}		break;	default:		SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E006, SKERR_I2C_E006MSG);	}	return(0);}	/* SkI2cEvent*/#endif	/* !SK_DIAG */#endif /* CONFIG_SK98 */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97se亚洲国产综合自在线| 日本不卡123| 成人免费看的视频| 国产精品色眯眯| 色系网站成人免费| 亚洲电影中文字幕在线观看| 欧美日韩不卡一区| 强制捆绑调教一区二区| 久久久综合九色合综国产精品| 精品一区二区三区影院在线午夜 | 福利视频网站一区二区三区| 久久久亚洲高清| 成人性色生活片| 一区二区在线看| 91麻豆精品国产| 国产尤物一区二区在线| 国产精品热久久久久夜色精品三区 | 婷婷久久综合九色综合绿巨人| 在线成人免费观看| 久久电影网站中文字幕| 国产日韩欧美麻豆| 日本久久一区二区三区| 热久久一区二区| 国产精品久久午夜| 在线电影欧美成精品| 国产精品一区二区三区网站| 综合亚洲深深色噜噜狠狠网站| 欧美综合在线视频| 国产一区二区影院| 亚洲一区二区三区四区在线免费观看 | 麻豆91免费看| 亚洲婷婷在线视频| 欧美一级高清大全免费观看| 国产成人精品免费看| 亚洲一区二区三区中文字幕在线| xf在线a精品一区二区视频网站| 波多野洁衣一区| 蜜臀a∨国产成人精品| 国产精品久久久久久久久免费樱桃 | 91精品国产色综合久久久蜜香臀| 国产乱人伦精品一区二区在线观看 | 国产一区二区三区四区在线观看| 亚洲麻豆国产自偷在线| www国产成人免费观看视频 深夜成人网| 91在线国产福利| 国产美女在线观看一区| 一个色在线综合| 国产欧美日韩激情| 日韩一区和二区| 在线观看不卡视频| av一区二区三区| 麻豆精品视频在线观看| 一二三区精品视频| 中文字幕一区二区三区视频| 91精品久久久久久久91蜜桃| 成人a区在线观看| 国产在线精品一区二区不卡了| 亚洲综合小说图片| 亚洲日本va午夜在线影院| 久久蜜桃av一区精品变态类天堂| 欧美群妇大交群中文字幕| 91一区一区三区| 国产ts人妖一区二区| 精品一区精品二区高清| 免费美女久久99| 日韩制服丝袜先锋影音| 亚洲影院久久精品| 亚洲另类色综合网站| 亚洲欧洲美洲综合色网| 国产亚洲欧美日韩日本| 2023国产精品自拍| 欧美第一区第二区| 欧美一区二区播放| 欧美一级在线观看| 日韩免费看的电影| 日韩一区二区三区在线视频| 欧美视频三区在线播放| 色视频欧美一区二区三区| 91在线观看下载| www.av精品| av在线免费不卡| 91视频国产观看| 色综合中文字幕国产 | 婷婷久久综合九色综合绿巨人| 一区二区三区四区五区视频在线观看| 久久久五月婷婷| 欧美精彩视频一区二区三区| 国产视频一区二区在线观看| 久久精品一区二区三区四区 | 久久久777精品电影网影网 | 国产日韩欧美综合一区| 国产午夜精品久久久久久免费视 | 欧美怡红院视频| 欧美日韩一二三| 欧美一区二区三区电影| 欧美一区二区三区色| 欧美精品一区二区三区蜜桃 | 国产一区二区三区免费播放| 国产精品一区三区| 成人黄色电影在线| 日本乱人伦一区| 欧美老肥妇做.爰bbww| 91精品国产综合久久香蕉的特点| 7777精品伊人久久久大香线蕉| 欧美一区三区二区| 国产亚洲精久久久久久| 亚洲日本青草视频在线怡红院| 亚洲综合图片区| 美女精品一区二区| 成人一区在线观看| 欧美视频三区在线播放| 精品国产亚洲在线| 国产精品久久三| 午夜电影久久久| 国产在线看一区| 91免费视频大全| 91精品国产欧美日韩| 欧美极品另类videosde| 亚洲制服丝袜av| 美女脱光内衣内裤视频久久影院| 国产成人av电影免费在线观看| 91美女视频网站| 欧美电影免费观看高清完整版| 国产欧美日韩不卡免费| 日日夜夜一区二区| 丁香婷婷综合色啪| 欧美高清一级片在线| 日本一区二区在线不卡| 午夜精品在线视频一区| 国产成人在线视频免费播放| 欧美日韩五月天| 国产精品成人在线观看| 蜜臀精品久久久久久蜜臀| av中文字幕亚洲| 日韩一区二区三区四区| 国产精品乱人伦中文| 裸体一区二区三区| 色一区在线观看| 欧美国产丝袜视频| 日本不卡一区二区三区高清视频| 成人99免费视频| 日韩久久免费av| 一区二区不卡在线播放| 成人性生交大合| 欧美电视剧免费全集观看| 亚洲一区二区不卡免费| 99亚偷拍自图区亚洲| 亚洲精品在线三区| 午夜激情一区二区| 91精彩视频在线观看| 国产精品不卡视频| 国产黄人亚洲片| 久久一夜天堂av一区二区三区| 亚洲午夜私人影院| 一本色道久久综合狠狠躁的推荐| 国产欧美一区二区精品婷婷| 国内成人精品2018免费看| 欧美一区二区人人喊爽| 亚洲成人www| 欧美三级电影网站| 亚洲一区二区成人在线观看| 99国产欧美久久久精品| 国产欧美一区二区精品忘忧草| 国产一区二区在线观看免费| 精品剧情在线观看| 毛片不卡一区二区| 日韩一区二区在线观看视频| 日本亚洲一区二区| 欧美一区二区美女| 蜜桃精品在线观看| 欧美成人性战久久| 韩国理伦片一区二区三区在线播放 | 日韩精品欧美成人高清一区二区| 91传媒视频在线播放| 亚洲精品视频免费看| 91麻豆精品秘密| 亚洲黄色免费网站| 欧洲国内综合视频| 午夜激情久久久| 日韩一二三区视频| 狠狠色综合日日| 国产清纯白嫩初高生在线观看91| 国产成人日日夜夜| 欧美韩国日本一区| 色综合色综合色综合| 一区二区三区国产| 欧美区视频在线观看| 免费成人结看片| 国产日产精品1区| 99精品热视频| 一区二区三国产精华液| 欧美理论片在线| 韩国一区二区三区| 中文字幕av资源一区| 色香蕉久久蜜桃| 日韩在线观看一区二区| 精品久久五月天| 99久久久国产精品免费蜜臀| 亚洲18色成人| 国产亚洲污的网站|