]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - drivers/net/sk98lin/h/skgei2c.h
imported Ka-Ro specific additions to U-Boot 2009.08 for TX28
[karo-tx-uboot.git] / drivers / net / sk98lin / h / skgei2c.h
1 /******************************************************************************
2  *
3  * Name:        skgei2c.h
4  * Project:     GEnesis, PCI Gigabit Ethernet Adapter
5  * Version:     $Revision$
6  * Date:        $Date$
7  * Purpose:     Special GEnesis defines for TWSI
8  *
9  ******************************************************************************/
10
11 /******************************************************************************
12  *
13  *      (C)Copyright 1998-2002 SysKonnect GmbH.
14  *
15  *      This program is free software; you can redistribute it and/or modify
16  *      it under the terms of the GNU General Public License as published by
17  *      the Free Software Foundation; either version 2 of the License, or
18  *      (at your option) any later version.
19  *
20  *      The information in this file is provided "AS IS" without warranty.
21  *
22  ******************************************************************************/
23
24 /******************************************************************************
25  *
26  * History:
27  *
28  *      $Log$
29  *      Revision 1.1.3.1  2011-02-28 14:53:20  lothar
30  *      imported Ka-Ro specific additions to U-Boot 2009.08 for TX28
31  *
32  *      Revision 1.23  2002/12/19 14:34:27  rschmidt
33  *      Added cast in macros SK_I2C_SET_BIT() and SK_I2C_CLR_BIT()
34  *      Editorial changes (TWSI)
35  *
36  *      Revision 1.22  2002/10/14 16:45:56  rschmidt
37  *      Editorial changes (TWSI)
38  *
39  *      Revision 1.21  2002/08/13 08:42:24  rschmidt
40  *      Changed define for SK_MIN_SENSORS back to 5
41  *      Merged defines for PHY PLL 3V3 voltage (A and B)
42  *      Editorial changes
43  *
44  *      Revision 1.20  2002/08/06 09:43:56  jschmalz
45  *      Extensions and changes for Yukon
46  *
47  *      Revision 1.19  2002/08/02 12:00:08  rschmidt
48  *      Added defines for YUKON sensors
49  *      Editorial changes
50  *
51  *      Revision 1.18  2001/08/16 12:44:33  afischer
52  *      LM80 sensor init values corrected
53  *
54  *      Revision 1.17  1999/11/22 13:55:25  cgoos
55  *      Changed license header to GPL.
56  *
57  *      Revision 1.16  1999/11/12 08:24:10  malthoff
58  *      Change voltage warning and error limits
59  *      (warning +-5%, error +-10%).
60  *
61  *      Revision 1.15  1999/09/14 14:14:43  malthoff
62  *      The 1000BT Dual Link adapter has got only one Fan.
63  *      The second Fan has been removed.
64  *
65  *      Revision 1.14  1999/05/27 13:40:50  malthoff
66  *      Fan Divisor = 1. Assuming fan with 6500 rpm.
67  *
68  *      Revision 1.13  1999/05/20 14:56:55  malthoff
69  *      Bug Fix: Missing brace in SK_LM80_FAN_FAKTOR.
70  *
71  *      Revision 1.12  1999/05/20 09:22:00  cgoos
72  *      Changes for 1000Base-T (Fan sensors).
73  *
74  *      Revision 1.11  1998/10/14 05:57:22  cgoos
75  *      Fixed compilation warnings.
76  *
77  *      Revision 1.10  1998/09/04 08:37:00  malthoff
78  *      bugfix: correct the SK_I2C_GET_CTL() macro.
79  *
80  *      Revision 1.9  1998/08/25 06:10:03  gklug
81  *      add: thresholds for all sensors
82  *
83  *      Revision 1.8  1998/08/20 11:37:42  gklug
84  *      chg: change Ioc to IoC
85  *
86  *      Revision 1.7  1998/08/20 08:53:11  gklug
87  *      fix: compiler errors
88  *      add: Threshold values
89  *
90  *      Revision 1.6  1998/08/17 11:37:09  malthoff
91  *      Bugfix in SK_I2C_CTL macro. The parameter 'dev'
92  *      has to be shifted 9 bits.
93  *
94  *      Revision 1.5  1998/08/17 06:52:21  malthoff
95  *      Remove unrequired macros.
96  *      Add macros for accessing TWSI SW register.
97  *
98  *      Revision 1.4  1998/08/13 08:30:18  gklug
99  *      add: conversion factors for read values
100  *      add: new state SEN_VALEXT to read extension value of temperature sensor
101  *
102  *      Revision 1.3  1998/08/12 13:37:56  gklug
103  *      rmv: error numbers and messages
104  *
105  *      Revision 1.2  1998/08/11 07:54:38  gklug
106  *      add: sensor states for GE sensors
107  *      add: Macro to access TWSI hardware register
108  *      chg: Error messages for TWSI errors
109  *
110  *      Revision 1.1  1998/07/17 11:27:56  gklug
111  *      Created.
112  *
113  *
114  *
115  ******************************************************************************/
116
117 /*
118  * SKGEI2C.H    contains all SK-98xx specific defines for the TWSI handling
119  */
120
121 #ifndef _INC_SKGEI2C_H_
122 #define _INC_SKGEI2C_H_
123
124 /*
125  * Macros to access the B2_I2C_CTRL
126  */
127 #define SK_I2C_CTL(IoC, flag, dev, reg, burst) \
128         SK_OUT32(IoC, B2_I2C_CTRL,\
129                 (flag ? 0x80000000UL : 0x0L) | \
130                 (((SK_U32) reg << 16) & I2C_ADDR) | \
131                 (((SK_U32) dev << 9) & I2C_DEV_SEL) | \
132                 (( burst << 4) & I2C_BURST_LEN))
133
134 #define SK_I2C_STOP(IoC) {                              \
135         SK_U32  I2cCtrl;                                \
136         SK_IN32(IoC, B2_I2C_CTRL, &I2cCtrl);            \
137         SK_OUT32(IoC, B2_I2C_CTRL, I2cCtrl | I2C_STOP); \
138 }
139
140 #define SK_I2C_GET_CTL(IoC, pI2cCtrl)   SK_IN32(IoC, B2_I2C_CTRL, pI2cCtrl)
141
142 /*
143  * Macros to access the TWSI SW Registers
144  */
145 #define SK_I2C_SET_BIT(IoC, SetBits) {                  \
146         SK_U8   OrgBits;                                \
147         SK_IN8(IoC, B2_I2C_SW, &OrgBits);               \
148         SK_OUT8(IoC, B2_I2C_SW, OrgBits | (SK_U8)(SetBits));    \
149 }
150
151 #define SK_I2C_CLR_BIT(IoC, ClrBits) {                  \
152         SK_U8   OrgBits;                                \
153         SK_IN8(IoC, B2_I2C_SW, &OrgBits);               \
154         SK_OUT8(IoC, B2_I2C_SW, OrgBits & ~((SK_U8)(ClrBits))); \
155 }
156
157 #define SK_I2C_GET_SW(IoC, pI2cSw)      SK_IN8(IoC, B2_I2C_SW, pI2cSw)
158
159 /*
160  * define the possible sensor states
161  */
162 #define SK_SEN_IDLE             0       /* Idle: sensor not read */
163 #define SK_SEN_VALUE    1       /* Value Read cycle */
164 #define SK_SEN_VALEXT   2       /* Extended Value Read cycle */
165
166 /*
167  * Conversion factor to convert read Voltage sensor to milli Volt
168  * Conversion factor to convert read Temperature sensor to 10th degree Celsius
169  */
170 #define SK_LM80_VT_LSB          22      /* 22mV LSB resolution */
171 #define SK_LM80_TEMP_LSB        10      /* 1 degree LSB resolution */
172 #define SK_LM80_TEMPEXT_LSB     5       /* 0.5 degree LSB resolution for the
173                                          * extension value
174                                          */
175 #define SK_LM80_FAN_FAKTOR      ((22500L*60)/(1*2))
176 /* formula: counter = (22500*60)/(rpm * divisor * pulses/2)
177  * assuming: 6500rpm, 4 pulses, divisor 1
178  */
179
180 /*
181  * Define sensor management data
182  * Maximum is reached on copperfield with dual Broadcom.
183  * Board specific maximum is in pAC->I2c.MaxSens
184  */
185 #define SK_MAX_SENSORS  8       /* maximal no. of installed sensors */
186 #define SK_MIN_SENSORS  5       /* minimal no. of installed sensors */
187
188 /*
189  * To watch the statemachine (JS) use the timer in two ways instead of one as hitherto
190  */
191 #define SK_TIMER_WATCH_STATEMACHINE     0       /* Watch the statemachine to finish in a specific time */
192 #define SK_TIMER_NEW_GAUGING            1       /* Start a new gauging when timer expires */
193
194
195 /*
196  * Defines for the individual Thresholds
197  */
198
199 /* Temperature sensor */
200 #define SK_SEN_TEMP_HIGH_ERR    800     /* Temperature High Err  Threshold */
201 #define SK_SEN_TEMP_HIGH_WARN   700     /* Temperature High Warn Threshold */
202 #define SK_SEN_TEMP_LOW_WARN    100     /* Temperature Low  Warn Threshold */
203 #define SK_SEN_TEMP_LOW_ERR       0     /* Temperature Low  Err  Threshold */
204
205 /* VCC which should be 5 V */
206 #define SK_SEN_PCI_5V_HIGH_ERR  5588    /* Voltage PCI High Err  Threshold */
207 #define SK_SEN_PCI_5V_HIGH_WARN     5346        /* Voltage PCI High Warn Threshold */
208 #define SK_SEN_PCI_5V_LOW_WARN          4664    /* Voltage PCI Low  Warn Threshold */
209 #define SK_SEN_PCI_5V_LOW_ERR           4422    /* Voltage PCI Low  Err  Threshold */
210
211 /*
212  * VIO may be 5 V or 3.3 V. Initialization takes two parts:
213  * 1. Initialize lowest lower limit and highest higher limit.
214  * 2. After the first value is read correct the upper or the lower limit to
215  *    the appropriate C constant.
216  *
217  * Warning limits are +-5% of the exepected voltage.
218  * Error limits are +-10% of the expected voltage.
219  */
220
221 /* Bug fix AF: 16.Aug.2001: Correct the init base of LM80 sensor */
222
223 #define SK_SEN_PCI_IO_5V_HIGH_ERR       5566    /* + 10% V PCI-IO High Err Threshold */
224 #define SK_SEN_PCI_IO_5V_HIGH_WARN      5324    /* +  5% V PCI-IO High Warn Threshold */
225                                         /*              5000    mVolt */
226 #define SK_SEN_PCI_IO_5V_LOW_WARN       4686    /* -  5% V PCI-IO Low Warn Threshold */
227 #define SK_SEN_PCI_IO_5V_LOW_ERR        4444    /* - 10% V PCI-IO Low Err Threshold */
228
229 #define SK_SEN_PCI_IO_RANGE_LIMITER     4000    /* 4000 mV range delimiter */
230
231 /* correction values for the second pass */
232 #define SK_SEN_PCI_IO_3V3_HIGH_ERR      3850    /* + 15% V PCI-IO High Err Threshold */
233 #define SK_SEN_PCI_IO_3V3_HIGH_WARN     3674    /* + 10% V PCI-IO High Warn Threshold */
234                                         /*              3300    mVolt */
235 #define SK_SEN_PCI_IO_3V3_LOW_WARN  2926        /* - 10% V PCI-IO Low Warn Threshold */
236 #define SK_SEN_PCI_IO_3V3_LOW_ERR   2772        /* - 15% V PCI-IO Low Err  Threshold */
237
238
239 /*
240  * VDD voltage
241  */
242 #define SK_SEN_VDD_HIGH_ERR         3630        /* Voltage ASIC High Err  Threshold */
243 #define SK_SEN_VDD_HIGH_WARN    3476    /* Voltage ASIC High Warn Threshold */
244 #define SK_SEN_VDD_LOW_WARN     3146    /* Voltage ASIC Low  Warn Threshold */
245 #define SK_SEN_VDD_LOW_ERR      2970    /* Voltage ASIC Low  Err  Threshold */
246
247 /*
248  * PHY PLL 3V3 voltage
249  */
250 #define SK_SEN_PLL_3V3_HIGH_ERR         3630    /* Voltage PMA High Err  Threshold */
251 #define SK_SEN_PLL_3V3_HIGH_WARN        3476    /* Voltage PMA High Warn Threshold */
252 #define SK_SEN_PLL_3V3_LOW_WARN         3146    /* Voltage PMA Low  Warn Threshold */
253 #define SK_SEN_PLL_3V3_LOW_ERR          2970    /* Voltage PMA Low  Err  Threshold */
254
255 /*
256  * VAUX (YUKON only)
257  */
258 #define SK_SEN_VAUX_3V3_HIGH_ERR        3630    /* Voltage VAUX High Err Threshold */
259 #define SK_SEN_VAUX_3V3_HIGH_WARN       3476    /* Voltage VAUX High Warn Threshold */
260 #define SK_SEN_VAUX_3V3_LOW_WARN        3146    /* Voltage VAUX Low Warn Threshold */
261 #define SK_SEN_VAUX_3V3_LOW_ERR     2970        /* Voltage VAUX Low Err Threshold */
262 #define SK_SEN_VAUX_0V_WARN_ERR        0        /* if VAUX not present */
263 #define SK_SEN_VAUX_RANGE_LIMITER       1000    /* 1000 mV range delimiter */
264
265 /*
266  * PHY 2V5 voltage
267  */
268 #define SK_SEN_PHY_2V5_HIGH_ERR         2750    /* Voltage PHY High Err Threshold */
269 #define SK_SEN_PHY_2V5_HIGH_WARN        2640    /* Voltage PHY High Warn Threshold */
270 #define SK_SEN_PHY_2V5_LOW_WARN         2376    /* Voltage PHY Low Warn Threshold */
271 #define SK_SEN_PHY_2V5_LOW_ERR          2222    /* Voltage PHY Low Err Threshold */
272
273 /*
274  * ASIC Core 1V5 voltage (YUKON only)
275  */
276 #define SK_SEN_CORE_1V5_HIGH_ERR        1650    /* Voltage ASIC Core High Err Threshold */
277 #define SK_SEN_CORE_1V5_HIGH_WARN       1575    /* Voltage ASIC Core High Warn Threshold */
278 #define SK_SEN_CORE_1V5_LOW_WARN        1425    /* Voltage ASIC Core Low Warn Threshold */
279 #define SK_SEN_CORE_1V5_LOW_ERR         1350    /* Voltage ASIC Core Low Err Threshold */
280
281 /*
282  * FAN 1 speed
283  */
284 /* assuming: 6500rpm +-15%, 4 pulses,
285  * warning at:  80 %
286  * error at:    70 %
287  * no upper limit
288  */
289 #define SK_SEN_FAN_HIGH_ERR             20000   /* FAN Speed High Err Threshold */
290 #define SK_SEN_FAN_HIGH_WARN    20000   /* FAN Speed High Warn Threshold */
291 #define SK_SEN_FAN_LOW_WARN     5200    /* FAN Speed Low Warn Threshold */
292 #define SK_SEN_FAN_LOW_ERR              4550    /* FAN Speed Low Err Threshold */
293
294 /*
295  * Some Voltages need dynamic thresholds
296  */
297 #define SK_SEN_DYN_INIT_NONE             0  /* No dynamic init of thresholds */
298 #define SK_SEN_DYN_INIT_PCI_IO          10  /* Init PCI-IO with new thresholds */
299 #define SK_SEN_DYN_INIT_VAUX            11  /* Init VAUX with new thresholds */
300
301 extern  int SkLm80ReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen);
302 #endif  /* n_INC_SKGEI2C_H */