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

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

?? ski2c.c

?? 移植好的楊創utu2440F ARM9 的uboot1.1.4代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** * * Name:	ski2c.c * Project:	GEnesis, PCI Gigabit Ethernet Adapter * Version:	$Revision: 1.57 $ * Date:	$Date: 2003/01/28 09:17:38 $ * Purpose:	Functions to access Voltage and Temperature Sensor * ******************************************************************************//****************************************************************************** * *	(C)Copyright 1998-2003 SysKonnect GmbH. * *	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. * *	The information in this file is provided "AS IS" without warranty. * ******************************************************************************//****************************************************************************** * * History: * *	$Log: ski2c.c,v $ *	Revision 1.57  2003/01/28 09:17:38  rschmidt *	Fixed handling for sensors on YUKON Fiber. *	Editorial changes. * *	Revision 1.56  2002/12/19 14:20:41  rschmidt *	Added debugging code in SkI2cWait(). *	Replaced all I2C-write operations with function SkI2cWrite(). *	Fixed compiler warning because of uninitialized 'Time' in SkI2cEvent(). *	Editorial changes. * *	Revision 1.55  2002/10/15 07:23:55  rschmidt *	Added setting of the GIYukon32Bit bool variable to distinguish *	32-bit adapters. *	Editorial changes (TWSI). * *	Revision 1.54  2002/08/13 09:05:06  rschmidt *	Added new thresholds if VAUX is not available (GIVauxAvail). *	Merged defines for PHY PLL 3V3 voltage (A and B). *	Editorial changes. * *	Revision 1.53  2002/08/08 11:04:53  rwahl *	Added missing comment for revision 1.51 * *	Revision 1.52  2002/08/08 10:09:02  jschmalz *	Sensor init state caused wrong error log entry * *	Revision 1.51  2002/08/06 09:43:03  jschmalz *	Extensions and changes for Yukon * *	Revision 1.50  2002/08/02 12:09:22  rschmidt *	Added support for YUKON sensors. *	Editorial changes. * *	Revision 1.49  2002/07/30 11:07:52  rschmidt *	Replaced MaxSens init by update for Copper in SkI2cInit1(), *	because it was already initialized in SkI2cInit0(). *	Editorial changes. * *	Revision 1.48  2001/08/16 12:44:33  afischer *	LM80 sensor init values corrected * *	Revision 1.47  2001/04/05 11:38:09  rassmann *	Set SenState to idle in SkI2cWaitIrq(). *	Changed error message in SkI2cWaitIrq(). * *	Revision 1.46  2001/04/02 14:03:35  rassmann *	Changed pAC to IoC in SK_IN32(). * *	Revision 1.45  2001/03/21 12:12:49  rassmann *	Resetting I2C_READY interrupt in SkI2cInit1(). * *	Revision 1.44  2000/08/07 15:49:03  gklug *	Fix: SK_INFAST only in NetWare driver. * *	Revision 1.43  2000/08/03 14:28:17  rassmann *	Added function to wait for I2C being ready before resetting the board. *	Replaced one duplicate "out of range" message with correct one. * *	Revision 1.42  1999/11/22 13:35:12  cgoos *	Changed license header to GPL. * *	Revision 1.41  1999/09/14 14:11:30  malthoff *	The 1000BT Dual Link adapter has got only one Fan. *	The second Fan has been removed. * *	Revision 1.40  1999/05/27 13:37:27  malthoff *	Set divisor of 1 for fan count calculation. * *	Revision 1.39  1999/05/20 14:54:43  malthoff *	I2c.DummyReads is not used in Diagnostics. * *	Revision 1.38  1999/05/20 09:20:56  cgoos *	Changes for 1000Base-T (up to 9 sensors and fans). * *	Revision 1.37  1999/03/25 15:11:36  gklug *	fix: reset error flag if sensor reads correct value * *	Revision 1.36  1999/01/07 14:11:16  gklug *	fix: break added * *	Revision 1.35  1999/01/05 15:31:49  gklug *	fix: CLEAR STAT command is now added correctly * *	Revision 1.34  1998/12/01 13:45:16  gklug *	fix: introduced Init level, because we don't need reinits * *	Revision 1.33  1998/11/09 14:54:25  malthoff *	Modify I2C Transfer Timeout handling for Diagnostics. * *	Revision 1.32  1998/11/03 06:54:35  gklug *	fix: Need dummy reads at the beginning to init sensors * *	Revision 1.31  1998/11/03 06:42:42  gklug *	fix: select correctVIO range only if between warning levels * *	Revision 1.30  1998/11/02 07:36:53  gklug *	fix: Error should not include WARNING message * *	Revision 1.29  1998/10/30 15:07:43  malthoff *	Disable 'I2C does not compelete' error log for diagnostics. * *	Revision 1.28  1998/10/22 09:48:11  gklug *	fix: SysKonnectFileId typo * *	Revision 1.27  1998/10/20 09:59:46  gklug *	add: parameter to SkOsGetTime * *	Revision 1.26  1998/10/09 06:10:59  malthoff *	Remove ID_sccs by SysKonnectFileId. * *	Revision 1.25  1998/09/08 12:40:26  gklug *	fix: syntax error in if clause * *	Revision 1.24  1998/09/08 12:19:42  gklug *	chg: INIT Level checking * *	Revision 1.23  1998/09/08 07:37:20  gklug *	fix: log error if PCI_IO voltage sensor could not be initialized * *	Revision 1.22  1998/09/04 08:30:03  malthoff *	Bugfixes during SK_DIAG testing: *	- correct NS2BCLK() macro *	- correct SkI2cSndDev() *	- correct SkI2cWait() loop waiting for an event * *	Revision 1.21  1998/08/27 14:46:01  gklug *	chg: if-then-else replaced by switch * *	Revision 1.20  1998/08/27 14:40:07  gklug *	test: integral types * *	Revision 1.19  1998/08/25 07:51:54  gklug *	fix: typos for compiling * *	Revision 1.18  1998/08/25 06:12:24  gklug *	add: count errors and warnings *	fix: check not the sensor state but the ErrFlag! * *	Revision 1.17  1998/08/25 05:56:48  gklug *	add: CheckSensor function * *	Revision 1.16  1998/08/20 11:41:10  gklug *	chg: omit STRCPY macro by using char * as Sensor Description * *	Revision 1.15  1998/08/20 11:37:35  gklug *	chg: change Ioc to IoC * *	Revision 1.14  1998/08/20 11:32:52  gklug *	fix: Para compile error * *	Revision 1.13  1998/08/20 11:27:41  gklug *	fix: Compile bugs with new awrning constants * *	Revision 1.12  1998/08/20 08:53:05  gklug *	fix: compiler errors *	add: Threshold values * *	Revision 1.11  1998/08/19 12:39:22  malthoff *	Compiler Fix: Some names have changed. * *	Revision 1.10  1998/08/19 12:20:56  gklug *	fix: remove struct from C files (see CCC) * *	Revision 1.9  1998/08/19 06:28:46  malthoff *	SkOsGetTime returns SK_U64 now. * *	Revision 1.8  1998/08/17 13:53:33  gklug *	fix: Parameter of event function and its result * *	Revision 1.7  1998/08/17 07:02:15  malthoff *	Modify the functions for accessing the I2C SW Registers. *	Modify SkI2cWait(). *	Put Lm80RcvReg into sklm80.c *	Remove Compiler Errors. * *	Revision 1.6  1998/08/14 07:13:20  malthoff *	remove pAc with pAC *	remove smc with pAC *	change names to new convention * *	Revision 1.5  1998/08/14 06:24:49  gklug *	add: init level 1 and 2 * *	Revision 1.4  1998/08/12 14:31:12  gklug *	add: error log for unknown event * *	Revision 1.3  1998/08/12 13:37:04  gklug *	add: Init 0 function * *	Revision 1.2  1998/08/11 07:27:15  gklug *	add: functions of the interface *	adapt rest of source to C coding Conventions *	rmv: unnecessary code taken from Mona Lisa * *	Revision 1.1  1998/06/19 14:28:43  malthoff *	Created. Sources taken from ML Projekt. *	Sources have to be reworked for GE. * * ******************************************************************************/#include <config.h>#ifdef CONFIG_SK98/* *	I2C Protocol */static const char SysKonnectFileId[] =	"$Id: ski2c.c,v 1.57 2003/01/28 09:17:38 rschmidt Exp $";#include "h/skdrv1st.h"		/* Driver Specific Definitions */#include "h/lm80.h"#include "h/skdrv2nd.h"		/* Adapter Control- and Driver specific Def. */#ifdef __C2MAN__/*	I2C protocol implementation.	General Description:	The I2C protocol is used for the temperature sensors and for	the serial EEPROM which hold the configuration.	This file covers functions that allow to read write and do	some bulk requests a specified I2C address.	The Genesis has 2 I2C buses. One for the EEPROM which holds	the VPD Data and one for temperature and voltage sensor.	The following picture shows the I2C buses, I2C devices and	their control registers.	Note: The VPD functions are in skvpd.c..	PCI Config I2C Bus for VPD Data:..		      +------------+.		      | VPD EEPROM |.		      +------------+.			     |.			     | <-- I2C.			     |.		 +-----------+-----------+.		 |			 |.	+-----------------+	+-----------------+.	| PCI_VPD_ADR_REG |	| PCI_VPD_DAT_REG |.	+-----------------+	+-----------------+...	I2C Bus for LM80 sensor:..			+-----------------+.			| Temperature and |.			| Voltage Sensor  |.			| 	LM80	  |.			+-----------------+.				|.				|.			I2C --> |.				|.			     +----+.	     +-------------->| OR |<--+.	     |		     +----+   |.     +------+------+		      |.     |		    |		      |. +--------+	+--------+	+----------+. | B2_I2C |	| B2_I2C |	|  B2_I2C  |. | _CTRL  |	| _DATA  |	|   _SW    |. +--------+	+--------+	+----------+.	The I2C bus may be driven by the B2_I2C_SW or by the B2_I2C_CTRL	and B2_I2C_DATA registers.	For driver software it is recommended to use the I2C control and	data register, because I2C bus timing is done by the ASIC and	an interrupt may be received when the I2C request is completed.	Clock Rate Timing:			MIN	MAX	generated by		VPD EEPROM:			50 kHz	100 kHz		HW		LM80 over I2C Ctrl/Data reg.	50 kHz	100 kHz		HW		LM80 over B2_I2C_SW register	0	400 kHz		SW	Note:	The clock generated by the hardware is dependend on the		PCI clock. If the PCI bus clock is 33 MHz, the I2C/VPD		clock is 50 kHz. */intro(){}#endif#ifdef	SK_DIAG/* * I2C Fast Mode timing values used by the LM80. * If new devices are added to the I2C bus the timing values have to be checked. */#ifndef I2C_SLOW_TIMING#define	T_CLK_LOW			1300L	/* clock low time in ns */#define	T_CLK_HIGH		 	 600L	/* clock high time in ns */#define T_DATA_IN_SETUP		 100L	/* data in Set-up Time */#define T_START_HOLD		 600L	/* start condition hold time */#define T_START_SETUP		 600L	/* start condition Set-up time */#define	T_STOP_SETUP		 600L	/* stop condition Set-up time */#define T_BUS_IDLE			1300L	/* time the bus must free after Tx */#define	T_CLK_2_DATA_OUT	 900L	/* max. clock low to data output valid */#else	/* I2C_SLOW_TIMING *//* I2C Standard Mode Timing */#define	T_CLK_LOW			4700L	/* clock low time in ns */#define	T_CLK_HIGH			4000L	/* clock high time in ns */#define T_DATA_IN_SETUP		 250L	/* data in Set-up Time */#define T_START_HOLD		4000L	/* start condition hold time */#define T_START_SETUP		4700L	/* start condition Set-up time */#define	T_STOP_SETUP		4000L	/* stop condition Set-up time */#define T_BUS_IDLE			4700L	/* time the bus must free after Tx */#endif	/* !I2C_SLOW_TIMING */#define NS2BCLK(x)	(((x)*125)/10000)/* * I2C Wire Operations * * About I2C_CLK_LOW(): * * The Data Direction bit (I2C_DATA_DIR) has to be set to input when setting * clock to low, to prevent the ASIC and the I2C data client from driving the * serial data line simultaneously (ASIC: last bit of a byte = '1', I2C client * send an 'ACK'). See also Concentrator Bugreport No. 10192. */#define I2C_DATA_HIGH(IoC)	SK_I2C_SET_BIT(IoC, I2C_DATA)#define	I2C_DATA_LOW(IoC)	SK_I2C_CLR_BIT(IoC, I2C_DATA)#define	I2C_DATA_OUT(IoC)	SK_I2C_SET_BIT(IoC, I2C_DATA_DIR)#define	I2C_DATA_IN(IoC)	SK_I2C_CLR_BIT(IoC, I2C_DATA_DIR | I2C_DATA)#define	I2C_CLK_HIGH(IoC)	SK_I2C_SET_BIT(IoC, I2C_CLK)#define	I2C_CLK_LOW(IoC)	SK_I2C_CLR_BIT(IoC, I2C_CLK | I2C_DATA_DIR)#define	I2C_START_COND(IoC)	SK_I2C_CLR_BIT(IoC, I2C_CLK)#define NS2CLKT(x)	((x*125L)/10000)/*--------------- I2C Interface Register Functions --------------- *//* * sending one bit */void SkI2cSndBit(SK_IOC	IoC,	/* I/O Context */SK_U8	Bit)	/* Bit to send */{	I2C_DATA_OUT(IoC);	if (Bit) {		I2C_DATA_HIGH(IoC);	}	else {		I2C_DATA_LOW(IoC);	}	SkDgWaitTime(IoC, NS2BCLK(T_DATA_IN_SETUP));	I2C_CLK_HIGH(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_CLK_HIGH));	I2C_CLK_LOW(IoC);}	/* SkI2cSndBit*//* * Signal a start to the I2C Bus. * * A start is signaled when data goes to low in a high clock cycle. * * Ends with Clock Low. * * Status: not tested */void SkI2cStart(SK_IOC	IoC)	/* I/O Context */{	/* Init data and Clock to output lines */	/* Set Data high */	I2C_DATA_OUT(IoC);	I2C_DATA_HIGH(IoC);	/* Set Clock high */	I2C_CLK_HIGH(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_START_SETUP));	/* Set Data Low */	I2C_DATA_LOW(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_START_HOLD));	/* Clock low without Data to Input */	I2C_START_COND(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_CLK_LOW));}	/* SkI2cStart */void SkI2cStop(SK_IOC	IoC)	/* I/O Context */{	/* Init data and Clock to output lines */	/* Set Data low */	I2C_DATA_OUT(IoC);	I2C_DATA_LOW(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_CLK_2_DATA_OUT));	/* Set Clock high */	I2C_CLK_HIGH(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_STOP_SETUP));	/*	 * Set Data High:	Do it by setting the Data Line to Input.	 *			Because of a pull up resistor the Data Line	 *			floods to high.	 */	I2C_DATA_IN(IoC);	/*	 *	When I2C activity is stopped	 *	 o	DATA should be set to input and	 *	 o	CLOCK should be set to high!	 */	SkDgWaitTime(IoC, NS2BCLK(T_BUS_IDLE));}	/* SkI2cStop *//* * Receive just one bit via the I2C bus. * * Note:	Clock must be set to LOW before calling this function. * * Returns The received bit. */int SkI2cRcvBit(SK_IOC	IoC)	/* I/O Context */{	int	Bit;	SK_U8	I2cSwCtrl;	/* Init data as input line */	I2C_DATA_IN(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_CLK_2_DATA_OUT));	I2C_CLK_HIGH(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_CLK_HIGH));	SK_I2C_GET_SW(IoC, &I2cSwCtrl);	Bit = (I2cSwCtrl & I2C_DATA) ? 1 : 0;	I2C_CLK_LOW(IoC);	SkDgWaitTime(IoC, NS2BCLK(T_CLK_LOW-T_CLK_2_DATA_OUT));	return(Bit);}	/* SkI2cRcvBit *//* * Receive an ACK. * * returns	0 If acknowledged *		1 in case of an error */int SkI2cRcvAck(SK_IOC	IoC)	/* I/O Context */{	/*	 * Received bit must be zero.	 */	return(SkI2cRcvBit(IoC) != 0);}	/* SkI2cRcvAck *//*

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美tk丨vk视频| 欧美二区三区91| 国产综合久久久久影院| 婷婷综合另类小说色区| 亚洲一区二区综合| 亚洲一区二区三区自拍| 亚洲精品ww久久久久久p站| 国产视频亚洲色图| 国产午夜精品在线观看| 国产精品麻豆99久久久久久| 国产日韩精品一区| 中文字幕欧美一| 国产精品美女久久久久久久| 中文字幕一区二区三区不卡| 亚洲色图在线看| 偷拍与自拍一区| 99久久99精品久久久久久| 波多野结衣欧美| 欧美午夜电影网| 91精品国产91久久久久久一区二区| 欧美日韩日本视频| 欧美成人高清电影在线| 国产精品色婷婷| 亚洲午夜久久久久| 激情六月婷婷久久| 91污在线观看| 日韩一区二区电影| 国产精品免费av| 亚洲国产人成综合网站| 美女视频黄久久| www..com久久爱| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 精品视频免费在线| 国产色91在线| 天涯成人国产亚洲精品一区av| 久久成人麻豆午夜电影| jizzjizzjizz欧美| 日韩三级中文字幕| 亚洲视频精选在线| 国产在线精品免费| 欧美亚洲国产一卡| 久久久不卡网国产精品一区| 亚洲激情图片一区| 国产美女主播视频一区| 欧美性高清videossexo| 国产亚洲一区二区在线观看| 亚洲五月六月丁香激情| 国模大尺度一区二区三区| 欧美性xxxxxxxx| 午夜电影一区二区三区| 国产成人鲁色资源国产91色综| 欧美三区免费完整视频在线观看| 国产欧美中文在线| 免费av网站大全久久| 欧美三级视频在线观看| 亚洲色图欧美在线| 极品少妇xxxx偷拍精品少妇| 欧美色视频一区| 亚洲欧美另类久久久精品2019| 国产精品综合二区| 欧美成人高清电影在线| 日本一不卡视频| 欧美图区在线视频| 亚洲综合在线观看视频| 91丨九色porny丨蝌蚪| 久久精品这里都是精品| 蜜臀国产一区二区三区在线播放 | 欧美人与禽zozo性伦| 中文字幕二三区不卡| 国产伦精品一区二区三区视频青涩| 欧美日韩三级视频| 亚洲成人高清在线| 欧美亚洲图片小说| 亚洲一区二区精品久久av| 91福利视频网站| 一区二区三区日韩| 在线视频综合导航| 亚洲一区二区三区美女| 欧美日韩国产乱码电影| 亚洲成a人v欧美综合天堂下载| 欧美精品自拍偷拍| 蜜臀av性久久久久蜜臀aⅴ| 欧美xxxx在线观看| 精品一区二区三区欧美| 久久久久久久网| av不卡免费电影| 亚洲精品国产视频| 欧美日韩国产综合一区二区| 肉色丝袜一区二区| 欧美videossexotv100| 久久99精品久久只有精品| 久久九九久久九九| www.日韩在线| 亚洲国产欧美在线| 精品精品欲导航| 成人国产免费视频| 亚洲高清在线精品| 精品88久久久久88久久久| 国产91丝袜在线播放| 伊人色综合久久天天人手人婷| 精品视频123区在线观看| 青青草原综合久久大伊人精品优势 | 欧美α欧美αv大片| 福利电影一区二区三区| 亚洲免费观看高清完整| 欧美精品亚洲二区| 国产精品99久久久久久久vr| 成人欧美一区二区三区在线播放| 91福利区一区二区三区| 国产在线不卡一区| 亚洲综合成人网| 精品国产乱码久久久久久浪潮| 91一区二区三区在线观看| 首页国产丝袜综合| 国产精品少妇自拍| 欧美一级片在线看| 不卡一区二区在线| 久久成人久久爱| 亚洲国产精品久久不卡毛片 | 中文字幕一区二| 欧美成人精品福利| 在线观看亚洲精品| 国产精品一区不卡| 理论电影国产精品| 一区二区三区在线视频观看58| 精品国产精品网麻豆系列| 欧美视频中文字幕| av资源站一区| 狠狠色狠狠色综合日日91app| 亚洲最大成人综合| 国产精品美女视频| 久久久精品国产免费观看同学| 欧美疯狂性受xxxxx喷水图片| www.日韩大片| 成人黄页毛片网站| 国产剧情一区二区三区| 麻豆高清免费国产一区| 亚洲成人精品一区二区| 亚洲欧美日韩国产综合在线| 国产欧美精品区一区二区三区 | 久久综合网色—综合色88| 欧美日韩中文字幕一区二区| 欧美一区三区二区| 欧美特级限制片免费在线观看| 成人精品视频一区二区三区尤物| 狠狠色综合日日| 久久精品国产在热久久| 久久精品国产第一区二区三区| 日韩电影在线一区二区三区| 日韩在线a电影| 亚洲成人av资源| 亚洲国产精品一区二区久久恐怖片 | 久久亚洲一区二区三区四区| 91麻豆精品国产91久久久更新时间| 91国内精品野花午夜精品| 91蜜桃婷婷狠狠久久综合9色| 9人人澡人人爽人人精品| 成人av在线播放网站| 99久久精品国产一区二区三区 | 麻豆一区二区三区| 久久国产精品一区二区| 精品一区二区三区久久| 国内一区二区在线| 国产一区二区不卡在线 | 亚洲高清免费观看| 午夜日韩在线观看| 日韩和欧美的一区| 精品一区二区三区久久| 成人av中文字幕| 91浏览器打开| 制服.丝袜.亚洲.中文.综合| 日韩一区二区三区四区| 国产色一区二区| 亚洲四区在线观看| 日韩专区在线视频| 国产在线国偷精品产拍免费yy| 成人精品小蝌蚪| 欧美久久一区二区| 久久精品夜色噜噜亚洲a∨ | 91黄视频在线| 91精品国产色综合久久久蜜香臀| 亚洲精品在线观看网站| 亚洲欧美怡红院| 免费一级欧美片在线观看| 成人性色生活片免费看爆迷你毛片| 99久久免费精品| 91精品国产综合久久精品图片| 久久久久久久久久美女| 亚洲一二三四久久| 国产精品香蕉一区二区三区| 欧美午夜寂寞影院| 国产日韩欧美不卡| 天堂va蜜桃一区二区三区| 国产精品伊人色| 欧美三级三级三级爽爽爽| 国产午夜精品美女毛片视频| 亚洲一区免费视频| av电影天堂一区二区在线 | 国产99久久久国产精品免费看 | 99国产精品久久|