1 /******************************************************************************
2  *
3  * Name:	lm80.h
4  * Project:	Gigabit Ethernet Adapters, Common Modules
5  * Purpose:	Contains all defines for the LM80 Chip
6  *		(National Semiconductor).
7  *
8  ******************************************************************************/
9 
10 /******************************************************************************
11  *
12  *	(C)Copyright 1998-2002 SysKonnect.
13  *	(C)Copyright 2002-2003 Marvell.
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 #ifndef __INC_LM80_H
25 #define __INC_LM80_H
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif	/* __cplusplus */
30 
31 /* defines ********************************************************************/
32 
33 /*
34  * LM80 register definition
35  *
36  * All registers are 8 bit wide
37  */
38 #define LM80_CFG			0x00	/* Configuration Register */
39 #define LM80_ISRC_1			0x01	/* Interrupt Status Register 1 */
40 #define LM80_ISRC_2			0x02	/* Interrupt Status Register 2 */
41 #define LM80_IMSK_1			0x03	/* Interrupt Mask Register 1 */
42 #define LM80_IMSK_2			0x04	/* Interrupt Mask Register 2 */
43 #define LM80_FAN_CTRL		0x05	/* Fan Devisor/RST#/OS# Register */
44 #define LM80_TEMP_CTRL		0x06	/* OS# Config, Temp Res. Reg */
45 	/* 0x07 - 0x1f reserved	*/
46 	/* current values */
47 #define LM80_VT0_IN			0x20	/* current Voltage 0 value */
48 #define LM80_VT1_IN			0x21	/* current Voltage 1 value */
49 #define LM80_VT2_IN			0x22	/* current Voltage 2 value */
50 #define LM80_VT3_IN			0x23	/* current Voltage 3 value */
51 #define LM80_VT4_IN			0x24	/* current Voltage 4 value */
52 #define LM80_VT5_IN			0x25	/* current Voltage 5 value */
53 #define LM80_VT6_IN			0x26	/* current Voltage 6 value */
54 #define LM80_TEMP_IN		0x27	/* current Temperature value */
55 #define LM80_FAN1_IN		0x28	/* current Fan 1 count */
56 #define LM80_FAN2_IN		0x29	/* current Fan 2 count */
57 	/* limit values */
58 #define LM80_VT0_HIGH_LIM	0x2a	/* high limit val for Voltage 0 */
59 #define LM80_VT0_LOW_LIM	0x2b	/* low limit val for Voltage 0 */
60 #define LM80_VT1_HIGH_LIM	0x2c	/* high limit val for Voltage 1 */
61 #define LM80_VT1_LOW_LIM	0x2d	/* low limit val for Voltage 1 */
62 #define LM80_VT2_HIGH_LIM	0x2e	/* high limit val for Voltage 2 */
63 #define LM80_VT2_LOW_LIM	0x2f	/* low limit val for Voltage 2 */
64 #define LM80_VT3_HIGH_LIM	0x30	/* high limit val for Voltage 3 */
65 #define LM80_VT3_LOW_LIM	0x31	/* low limit val for Voltage 3 */
66 #define LM80_VT4_HIGH_LIM	0x32	/* high limit val for Voltage 4 */
67 #define LM80_VT4_LOW_LIM	0x33	/* low limit val for Voltage 4 */
68 #define LM80_VT5_HIGH_LIM	0x34	/* high limit val for Voltage 5 */
69 #define LM80_VT5_LOW_LIM	0x35	/* low limit val for Voltage 5 */
70 #define LM80_VT6_HIGH_LIM	0x36	/* high limit val for Voltage 6 */
71 #define LM80_VT6_LOW_LIM	0x37	/* low limit val for Voltage 6 */
72 #define LM80_THOT_LIM_UP	0x38	/* hot temperature limit (high) */
73 #define LM80_THOT_LIM_LO	0x39	/* hot temperature limit (low) */
74 #define LM80_TOS_LIM_UP		0x3a	/* OS temperature limit (high) */
75 #define LM80_TOS_LIM_LO		0x3b	/* OS temperature limit (low) */
76 #define LM80_FAN1_COUNT_LIM	0x3c	/* Fan 1 count limit (high) */
77 #define LM80_FAN2_COUNT_LIM	0x3d	/* Fan 2 count limit (low) */
78 	/* 0x3e - 0x3f reserved	*/
79 
80 /*
81  * LM80 bit definitions
82  */
83 
84 /*	LM80_CFG		Configuration Register */
85 #define LM80_CFG_START		(1<<0)	/* start monitoring operation */
86 #define LM80_CFG_INT_ENA	(1<<1)	/* enables the INT# Interrupt output */
87 #define LM80_CFG_INT_POL	(1<<2)	/* INT# pol: 0 act low, 1 act high */
88 #define LM80_CFG_INT_CLR	(1<<3)	/* disables INT#/RST_OUT#/OS# outputs */
89 #define LM80_CFG_RESET		(1<<4)	/* signals a reset */
90 #define LM80_CFG_CHASS_CLR	(1<<5)	/* clears Chassis Intrusion (CI) pin */
91 #define LM80_CFG_GPO		(1<<6)	/* drives the GPO# pin */
92 #define LM80_CFG_INIT		(1<<7)	/* restore power on defaults */
93 
94 /*	LM80_ISRC_1		Interrupt Status Register 1 */
95 /*	LM80_IMSK_1		Interrupt Mask Register 1 */
96 #define LM80_IS_VT0			(1<<0)	/* limit exceeded for Voltage 0 */
97 #define LM80_IS_VT1			(1<<1)	/* limit exceeded for Voltage 1 */
98 #define LM80_IS_VT2			(1<<2)	/* limit exceeded for Voltage 2 */
99 #define LM80_IS_VT3			(1<<3)	/* limit exceeded for Voltage 3 */
100 #define LM80_IS_VT4			(1<<4)	/* limit exceeded for Voltage 4 */
101 #define LM80_IS_VT5			(1<<5)	/* limit exceeded for Voltage 5 */
102 #define LM80_IS_VT6			(1<<6)	/* limit exceeded for Voltage 6 */
103 #define LM80_IS_INT_IN		(1<<7)	/* state of INT_IN# */
104 
105 /*	LM80_ISRC_2		Interrupt Status Register 2 */
106 /*	LM80_IMSK_2		Interrupt Mask Register 2 */
107 #define LM80_IS_TEMP		(1<<0)	/* HOT temperature limit exceeded */
108 #define LM80_IS_BTI			(1<<1)	/* state of BTI# pin */
109 #define LM80_IS_FAN1		(1<<2)	/* count limit exceeded for Fan 1 */
110 #define LM80_IS_FAN2		(1<<3)	/* count limit exceeded for Fan 2 */
111 #define LM80_IS_CI			(1<<4)	/* Chassis Intrusion occured */
112 #define LM80_IS_OS			(1<<5)	/* OS temperature limit exceeded */
113 	/* bit 6 and 7 are reserved in LM80_ISRC_2 */
114 #define LM80_IS_HT_IRQ_MD	(1<<6)	/* Hot temperature interrupt mode */
115 #define LM80_IS_OT_IRQ_MD	(1<<7)	/* OS temperature interrupt mode */
116 
117 /*	LM80_FAN_CTRL		Fan Devisor/RST#/OS# Register */
118 #define LM80_FAN1_MD_SEL	(1<<0)	/* Fan 1 mode select */
119 #define LM80_FAN2_MD_SEL	(1<<1)	/* Fan 2 mode select */
120 #define LM80_FAN1_PRM_CTL	(3<<2)	/* Fan 1 speed control */
121 #define LM80_FAN2_PRM_CTL	(3<<4)	/* Fan 2 speed control */
122 #define LM80_FAN_OS_ENA		(1<<6)	/* enable OS mode on RST_OUT#/OS# pins*/
123 #define LM80_FAN_RST_ENA	(1<<7)	/* sets RST_OUT#/OS# pins in RST mode */
124 
125 /*	LM80_TEMP_CTRL		OS# Config, Temp Res. Reg */
126 #define LM80_TEMP_OS_STAT	(1<<0)	/* mirrors the state of RST_OUT#/OS# */
127 #define LM80_TEMP_OS_POL	(1<<1)	/* select OS# polarity */
128 #define LM80_TEMP_OS_MODE	(1<<2)	/* selects Interrupt mode */
129 #define LM80_TEMP_RES		(1<<3)	/* selects 9 or 11 bit temp resulution*/
130 #define LM80_TEMP_LSB		(0xf<<4)/* 4 LSBs of 11 bit temp data */
131 #define LM80_TEMP_LSB_9		(1<<7)	/* LSB of 9 bit temperature data */
132 
133 	/* 0x07 - 0x1f reserved	*/
134 /*	LM80_VT0_IN		current Voltage 0 value */
135 /*	LM80_VT1_IN		current Voltage 1 value */
136 /*	LM80_VT2_IN		current Voltage 2 value */
137 /*	LM80_VT3_IN		current Voltage 3 value */
138 /*	LM80_VT4_IN		current Voltage 4 value */
139 /*	LM80_VT5_IN		current Voltage 5 value */
140 /*	LM80_VT6_IN		current Voltage 6 value */
141 /*	LM80_TEMP_IN		current temperature value */
142 /*	LM80_FAN1_IN		current Fan 1 count */
143 /*	LM80_FAN2_IN		current Fan 2 count */
144 /*	LM80_VT0_HIGH_LIM	high limit val for Voltage 0 */
145 /*	LM80_VT0_LOW_LIM	low limit val for Voltage 0 */
146 /*	LM80_VT1_HIGH_LIM	high limit val for Voltage 1 */
147 /*	LM80_VT1_LOW_LIM	low limit val for Voltage 1 */
148 /*	LM80_VT2_HIGH_LIM	high limit val for Voltage 2 */
149 /*	LM80_VT2_LOW_LIM	low limit val for Voltage 2 */
150 /*	LM80_VT3_HIGH_LIM	high limit val for Voltage 3 */
151 /*	LM80_VT3_LOW_LIM	low limit val for Voltage 3 */
152 /*	LM80_VT4_HIGH_LIM	high limit val for Voltage 4 */
153 /*	LM80_VT4_LOW_LIM	low limit val for Voltage 4 */
154 /*	LM80_VT5_HIGH_LIM	high limit val for Voltage 5 */
155 /*	LM80_VT5_LOW_LIM	low limit val for Voltage 5 */
156 /*	LM80_VT6_HIGH_LIM	high limit val for Voltage 6 */
157 /*	LM80_VT6_LOW_LIM	low limit val for Voltage 6 */
158 /*	LM80_THOT_LIM_UP	hot temperature limit (high) */
159 /*	LM80_THOT_LIM_LO	hot temperature limit (low) */
160 /*	LM80_TOS_LIM_UP		OS temperature limit (high) */
161 /*	LM80_TOS_LIM_LO		OS temperature limit (low) */
162 /*	LM80_FAN1_COUNT_LIM	Fan 1 count limit (high) */
163 /*	LM80_FAN2_COUNT_LIM	Fan 2 count limit (low) */
164 	/* 0x3e - 0x3f reserved	*/
165 
166 #define LM80_ADDR		0x28	/* LM80 default addr */
167 
168 /* typedefs *******************************************************************/
169 
170 
171 /* function prototypes ********************************************************/
172 
173 #ifdef __cplusplus
174 }
175 #endif	/* __cplusplus */
176 
177 #endif	/* __INC_LM80_H */
178