aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/f71882fg.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2011-03-26 05:45:02 -0400
committerJean Delvare <khali@endymion.delvare>2011-03-26 05:45:02 -0400
commita66c10887ad2a99e172111cc94087ba4bed8fa92 (patch)
tree40358df9bf880a447fe1bcc2e515fac0021d2889 /drivers/hwmon/f71882fg.c
parent383586b12d89ba4297c49898645658cdb324b918 (diff)
hwmon: (f71882fg) Add support for the F71889A
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com> Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'drivers/hwmon/f71882fg.c')
-rw-r--r--drivers/hwmon/f71882fg.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/hwmon/f71882fg.c b/drivers/hwmon/f71882fg.c
index aa8cf5d5c22e..ca07a32447c2 100644
--- a/drivers/hwmon/f71882fg.c
+++ b/drivers/hwmon/f71882fg.c
@@ -54,6 +54,7 @@
54#define SIO_F71882_ID 0x0541 /* Chipset ID */ 54#define SIO_F71882_ID 0x0541 /* Chipset ID */
55#define SIO_F71889_ID 0x0723 /* Chipset ID */ 55#define SIO_F71889_ID 0x0723 /* Chipset ID */
56#define SIO_F71889E_ID 0x0909 /* Chipset ID */ 56#define SIO_F71889E_ID 0x0909 /* Chipset ID */
57#define SIO_F71889A_ID 0x1005 /* Chipset ID */
57#define SIO_F8000_ID 0x0581 /* Chipset ID */ 58#define SIO_F8000_ID 0x0581 /* Chipset ID */
58#define SIO_F81865_ID 0x0704 /* Chipset ID */ 59#define SIO_F81865_ID 0x0704 /* Chipset ID */
59 60
@@ -107,7 +108,7 @@ module_param(force_id, ushort, 0);
107MODULE_PARM_DESC(force_id, "Override the detected device ID"); 108MODULE_PARM_DESC(force_id, "Override the detected device ID");
108 109
109enum chips { f71808e, f71858fg, f71862fg, f71869, f71882fg, f71889fg, 110enum chips { f71808e, f71858fg, f71862fg, f71869, f71882fg, f71889fg,
110 f71889ed, f8000, f81865f }; 111 f71889ed, f71889a, f8000, f81865f };
111 112
112static const char *f71882fg_names[] = { 113static const char *f71882fg_names[] = {
113 "f71808e", 114 "f71808e",
@@ -117,6 +118,7 @@ static const char *f71882fg_names[] = {
117 "f71882fg", 118 "f71882fg",
118 "f71889fg", /* f81801u too, same id */ 119 "f71889fg", /* f81801u too, same id */
119 "f71889ed", 120 "f71889ed",
121 "f71889a",
120 "f8000", 122 "f8000",
121 "f81865f", 123 "f81865f",
122}; 124};
@@ -129,6 +131,7 @@ static const char f71882fg_has_in[][F71882FG_MAX_INS] = {
129 [f71882fg] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, 131 [f71882fg] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
130 [f71889fg] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, 132 [f71889fg] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
131 [f71889ed] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, 133 [f71889ed] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
134 [f71889a] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
132 [f8000] = { 1, 1, 1, 0, 0, 0, 0, 0, 0 }, 135 [f8000] = { 1, 1, 1, 0, 0, 0, 0, 0, 0 },
133 [f81865f] = { 1, 1, 1, 1, 1, 1, 1, 0, 0 }, 136 [f81865f] = { 1, 1, 1, 1, 1, 1, 1, 0, 0 },
134}; 137};
@@ -141,6 +144,7 @@ static const char f71882fg_has_in1_alarm[] = {
141 [f71882fg] = 1, 144 [f71882fg] = 1,
142 [f71889fg] = 1, 145 [f71889fg] = 1,
143 [f71889ed] = 1, 146 [f71889ed] = 1,
147 [f71889a] = 1,
144 [f8000] = 0, 148 [f8000] = 0,
145 [f81865f] = 1, 149 [f81865f] = 1,
146}; 150};
@@ -153,6 +157,7 @@ static const char f71882fg_has_beep[] = {
153 [f71882fg] = 1, 157 [f71882fg] = 1,
154 [f71889fg] = 1, 158 [f71889fg] = 1,
155 [f71889ed] = 1, 159 [f71889ed] = 1,
160 [f71889a] = 1,
156 [f8000] = 0, 161 [f8000] = 0,
157 [f81865f] = 1, 162 [f81865f] = 1,
158}; 163};
@@ -165,6 +170,7 @@ static const char f71882fg_nr_fans[] = {
165 [f71882fg] = 4, 170 [f71882fg] = 4,
166 [f71889fg] = 3, 171 [f71889fg] = 3,
167 [f71889ed] = 3, 172 [f71889ed] = 3,
173 [f71889a] = 3,
168 [f8000] = 3, 174 [f8000] = 3,
169 [f81865f] = 2, 175 [f81865f] = 2,
170}; 176};
@@ -177,6 +183,7 @@ static const char f71882fg_nr_temps[] = {
177 [f71882fg] = 3, 183 [f71882fg] = 3,
178 [f71889fg] = 3, 184 [f71889fg] = 3,
179 [f71889ed] = 3, 185 [f71889ed] = 3,
186 [f71889a] = 3,
180 [f8000] = 3, 187 [f8000] = 3,
181 [f81865f] = 2, 188 [f81865f] = 2,
182}; 189};
@@ -2168,6 +2175,7 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
2168 /* Fall through to select correct fan/pwm reg bank! */ 2175 /* Fall through to select correct fan/pwm reg bank! */
2169 case f71889fg: 2176 case f71889fg:
2170 case f71889ed: 2177 case f71889ed:
2178 case f71889a:
2171 reg = f71882fg_read8(data, F71882FG_REG_FAN_FAULT_T); 2179 reg = f71882fg_read8(data, F71882FG_REG_FAN_FAULT_T);
2172 if (reg & F71882FG_FAN_NEG_TEMP_EN) 2180 if (reg & F71882FG_FAN_NEG_TEMP_EN)
2173 data->auto_point_temp_signed = 1; 2181 data->auto_point_temp_signed = 1;
@@ -2225,6 +2233,7 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
2225 case f71869: 2233 case f71869:
2226 case f71889fg: 2234 case f71889fg:
2227 case f71889ed: 2235 case f71889ed:
2236 case f71889a:
2228 for (i = 0; i < nr_fans; i++) { 2237 for (i = 0; i < nr_fans; i++) {
2229 data->pwm_auto_point_mapping[i] = 2238 data->pwm_auto_point_mapping[i] =
2230 f71882fg_read8(data, 2239 f71882fg_read8(data,
@@ -2433,6 +2442,9 @@ static int __init f71882fg_find(int sioaddr, unsigned short *address,
2433 case SIO_F71889E_ID: 2442 case SIO_F71889E_ID:
2434 sio_data->type = f71889ed; 2443 sio_data->type = f71889ed;
2435 break; 2444 break;
2445 case SIO_F71889A_ID:
2446 sio_data->type = f71889a;
2447 break;
2436 case SIO_F8000_ID: 2448 case SIO_F8000_ID:
2437 sio_data->type = f8000; 2449 sio_data->type = f8000;
2438 break; 2450 break;