skgei2c.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:8k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /******************************************************************************
  2.  *
  3.  * Name: skgei2c.h
  4.  * Project: GEnesis, PCI Gigabit Ethernet Adapter
  5.  * Version: $Revision: 1.17 $
  6.  * Date: $Date: 1999/11/22 13:55:25 $
  7.  * Purpose: Special genesis defines for I2C
  8.  * (taken from Monalisa (taken from Concentrator))
  9.  *
  10.  ******************************************************************************/
  11. /******************************************************************************
  12.  *
  13.  * (C)Copyright 1998,1999 SysKonnect,
  14.  * a business unit of Schneider & Koch & Co. Datensysteme GmbH.
  15.  *
  16.  * This program is free software; you can redistribute it and/or modify
  17.  * it under the terms of the GNU General Public License as published by
  18.  * the Free Software Foundation; either version 2 of the License, or
  19.  * (at your option) any later version.
  20.  *
  21.  * The information in this file is provided "AS IS" without warranty.
  22.  *
  23.  ******************************************************************************/
  24. /******************************************************************************
  25.  *
  26.  * History:
  27.  *
  28.  * $Log: skgei2c.h,v $
  29.  * Revision 1.17  1999/11/22 13:55:25  cgoos
  30.  * Changed license header to GPL.
  31.  *
  32.  * Revision 1.16  1999/11/12 08:24:10  malthoff
  33.  * Change voltage warning and error limits
  34.  * (warning +-5%, error +-10%).
  35.  *
  36.  * Revision 1.15  1999/09/14 14:14:43  malthoff
  37.  * The 1000BT Dual Link adapter has got only one Fan.
  38.  * The second Fan has been removed.
  39.  *
  40.  * Revision 1.14  1999/05/27 13:40:50  malthoff
  41.  * Fan Divisor = 1. Assuming fan with 6500 rpm.
  42.  *
  43.  * Revision 1.13  1999/05/20 14:56:55  malthoff
  44.  * Bug Fix: Missing brace in SK_LM80_FAN_FAKTOR.
  45.  *
  46.  * Revision 1.12  1999/05/20 09:22:00  cgoos
  47.  * Changes for 1000Base-T (Fan sensors).
  48.  *
  49.  * Revision 1.11  1998/10/14 05:57:22  cgoos
  50.  * Fixed compilation warnings.
  51.  *
  52.  * Revision 1.10  1998/09/04 08:37:00  malthoff
  53.  * bugfix: correct the SK_I2C_GET_CTL() macro.
  54.  *
  55.  * Revision 1.9  1998/08/25 06:10:03  gklug
  56.  * add: thresholds for all sensors
  57.  *
  58.  * Revision 1.8  1998/08/20 11:37:42  gklug
  59.  * chg: change Ioc to IoC
  60.  *
  61.  * Revision 1.7  1998/08/20 08:53:11  gklug
  62.  * fix: compiler errors
  63.  * add: Threshold values
  64.  *
  65.  * Revision 1.6  1998/08/17 11:37:09  malthoff
  66.  * Bugfix in SK_I2C_CTL macro. The parameter 'dev'
  67.  * has to be shifted 9 bits.
  68.  *
  69.  * Revision 1.5  1998/08/17 06:52:21  malthoff
  70.  * Remove unrequired macros.
  71.  * Add macros for accessing I2C SW register.
  72.  *
  73.  * Revision 1.4  1998/08/13 08:30:18  gklug
  74.  * add: conversion factors for read values
  75.  * add: new state SEN_VALEXT to read extension value of temperature sensor
  76.  *
  77.  * Revision 1.3  1998/08/12 13:37:56  gklug
  78.  * rmv: error numbers and messages
  79.  *
  80.  * Revision 1.2  1998/08/11 07:54:38  gklug
  81.  * add: sensor states for GE sensors
  82.  * add: Macro to access I2c hardware register
  83.  * chg: Error messages for I2c errors
  84.  *
  85.  * Revision 1.1  1998/07/17 11:27:56  gklug
  86.  * Created.
  87.  *
  88.  *
  89.  *
  90.  ******************************************************************************/
  91. /*
  92.  * SKGEI2C.H contains all SK-98xx specific defines for the I2C handling
  93.  */
  94. #ifndef _INC_SKGEI2C_H_
  95. #define _INC_SKGEI2C_H_
  96. /*
  97.  * Macros to access the B2_I2C_CTRL
  98.  */
  99. #define SK_I2C_CTL(IoC,flag,dev,reg,burst) 
  100. SK_OUT32(IoC,B2_I2C_CTRL,
  101. (flag ? 0x80000000UL : 0x0L ) | 
  102. (((SK_U32) reg << 16) & I2C_ADDR) | 
  103. (((SK_U32) dev << 9) & I2C_DEV_SEL) | 
  104. (( burst << 4) & I2C_BURST_LEN) )
  105. #define SK_I2C_STOP(IoC) {
  106. SK_U32 I2cCtrl;
  107. SK_IN32(IoC, B2_I2C_CTRL, &I2cCtrl);
  108. SK_OUT32(IoC, B2_I2C_CTRL, I2cCtrl | I2C_STOP);
  109. }
  110. #define SK_I2C_GET_CTL(Ioc,pI2cCtrl) SK_IN32(Ioc,B2_I2C_CTRL,pI2cCtrl)
  111. /*
  112.  * Macros to access the I2C SW Registers
  113.  */
  114. #define SK_I2C_SET_BIT(IoC, SetBits) {
  115. SK_U8 OrgBits;
  116. SK_IN8(IoC, B2_I2C_SW, &OrgBits);
  117. SK_OUT8(IoC, B2_I2C_SW, OrgBits | (SetBits));
  118. }
  119. #define SK_I2C_CLR_BIT(IoC,ClrBits) {
  120. SK_U8 OrgBits;
  121. SK_IN8(IoC, B2_I2C_SW, &OrgBits);
  122. SK_OUT8(IoC, B2_I2C_SW, OrgBits & ~(ClrBits));
  123. }
  124. #define SK_I2C_GET_SW(IoC,pI2cSw) SK_IN8(IoC,B2_I2C_SW,pI2cSw)
  125. /*
  126.  * define the possible sensor states
  127.  */
  128. #define SK_SEN_IDLE 0 /* Idle: sensor not read */
  129. #define SK_SEN_VALUE 1 /* Value Read cycle */
  130. #define SK_SEN_VALEXT 2 /* Extended Value Read cycle */
  131. /*
  132.  * Conversion factor to convert read Voltage sensor to milli Volt
  133.  * Conversion factor to convert read Temperature sensor to 10th degree Celsius
  134.  */
  135. #define SK_LM80_VT_LSB 22 /* 22mV LSB resolution */
  136. #define SK_LM80_TEMP_LSB 10 /* 1 degree LSB resolution */
  137. #define SK_LM80_TEMPEXT_LSB 5 /* 0.5 degree LSB resolution for the
  138.  * extension value 
  139.  */
  140. #define SK_LM80_FAN_FAKTOR ((22500L*60)/(1*2))
  141. /* formula: counter = (22500*60)/(rpm * divisor * pulses/2)
  142.  * assuming: 6500rpm, 4 pulses, divisor 1
  143.  */
  144. /*
  145.  * Define sensor management data
  146.  * Maximum is reached on copperfield with dual Broadcom.
  147.  * Board specific maximum is in pAC->I2c.MaxSens
  148.  */
  149. #define SK_MAX_SENSORS 8 /* maximal no. of installed sensors */
  150. #define SK_MIN_SENSORS 5 /* minimal no. of installed sensors */
  151. /*
  152.  * Defines for the individual Thresholds
  153.  */
  154. /* Temperature sensor */
  155. #define SK_SEN_ERRHIGH0 800 /* Temperature High Err Threshold */
  156. #define SK_SEN_WARNHIGH0 700 /* Temperature High Warn Threshold */
  157. #define SK_SEN_WARNLOW0 100 /* Temperature Low Err Threshold */
  158. #define SK_SEN_ERRLOW0 0 /* Temperature Low Warn Threshold */
  159. /* VCC which should be 5 V */
  160. #define SK_SEN_ERRHIGH1 5588 /* Voltage PCI High Err Threshold */
  161. #define SK_SEN_WARNHIGH1 5346 /* Voltage PCI High Warn Threshold */
  162. #define SK_SEN_WARNLOW1 4664 /* Voltage PCI Low Err Threshold */
  163. #define SK_SEN_ERRLOW1 4422 /* Voltage PCI Low Warn Threshold */
  164. /*
  165.  * VIO may be 5 V or 3.3 V. Initialization takes two parts:
  166.  * 1. Initialize lowest lower limit and highest higher limit.
  167.  * 2. After the first value is read correct the upper or the lower limit to
  168.  *    the appropriate C constant.
  169.  *
  170.  * Warning limits are +-5% of the exepected voltage.
  171.  * Error limits are +-10% of the expected voltage.
  172.  */
  173. #define SK_SEN_ERRHIGH2 5588 /* Voltage PCI-IO High Err Threshold */
  174. #define SK_SEN_WARNHIGH2 5346 /* Voltage PCI-IO High Warn Threshold */
  175. #define SK_SEN_WARNLOW2 3146 /* Voltage PCI-IO Low Err Threshold */
  176. #define SK_SEN_ERRLOW2 2970 /* Voltage PCI-IO Low Warn Threshold */
  177. /* correction values for the second pass */
  178. #define SK_SEN_ERRHIGH2C 3630 /* Voltage PCI-IO High Err Threshold */
  179. #define SK_SEN_WARNHIGH2C 3476 /* Voltage PCI-IO High Warn Threshold */
  180. #define SK_SEN_WARNLOW2C 4664 /* Voltage PCI-IO Low Err Threshold */
  181. #define SK_SEN_ERRLOW2C 4422 /* Voltage PCI-IO Low Warn Threshold */
  182. /*
  183.  * VDD voltage
  184.  */
  185. #define SK_SEN_ERRHIGH3 3630 /* Voltage ASIC High Err Threshold */
  186. #define SK_SEN_WARNHIGH3 3476 /* Voltage ASIC High Warn Threshold */
  187. #define SK_SEN_WARNLOW3 3146 /* Voltage ASIC Low Err Threshold */
  188. #define SK_SEN_ERRLOW3 2970 /* Voltage ASIC Low Warn Threshold */
  189. /*
  190.  * PLC_3V3 voltage
  191.  * PHY_PLL_A_3V3 voltage
  192.  */
  193. #define SK_SEN_ERRHIGH4 3630 /* Voltage PMA High Err Threshold */
  194. #define SK_SEN_WARNHIGH4 3476 /* Voltage PMA High Warn Threshold */
  195. #define SK_SEN_WARNLOW4 3146 /* Voltage PMA Low Err Threshold */
  196. #define SK_SEN_ERRLOW4 2970 /* Voltage PMA Low Warn Threshold */
  197. /*
  198.  * PHY_2V5 voltage
  199.  */
  200. #define SK_SEN_ERRHIGH5 2750 /* Voltage PHY High Err Threshold */
  201. #define SK_SEN_WARNHIGH5 2640 /* Voltage PHY High Warn Threshold */
  202. #define SK_SEN_WARNLOW5 2376 /* Voltage PHY Low Err Threshold */
  203. #define SK_SEN_ERRLOW5 2222 /* Voltage PHY Low Warn Threshold */
  204. /*
  205.  * PHY_PLL_B_3V3 voltage
  206.  */
  207. #define SK_SEN_ERRHIGH6 3630 /* Voltage PMA High Err Threshold */
  208. #define SK_SEN_WARNHIGH6 3476 /* Voltage PMA High Warn Threshold */
  209. #define SK_SEN_WARNLOW6 3146 /* Voltage PMA Low Err Threshold */
  210. #define SK_SEN_ERRLOW6 2970 /* Voltage PMA Low Warn Threshold */
  211. /*
  212.  * FAN 1 speed
  213.  */
  214. /* assuming: 6500rpm +-15%, 4 pulses,
  215.  * warning at: 80 %
  216.  * error at: 70 %
  217.  * no upper limit
  218.  */
  219. #define SK_SEN_ERRHIGH 20000 /* FAN Speed High Err Threshold */
  220. #define SK_SEN_WARNHIGH 20000 /* FAN Speed High Warn Threshold */
  221. #define SK_SEN_WARNLOW 5200 /* FAN Speed Low Err Threshold */
  222. #define SK_SEN_ERRLOW 4550 /* FAN Speed Low Warn Threshold */
  223. extern int SkLm80ReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen);
  224. #endif /* n_INC_SKGEI2C_H */