Changeset 2070
- Timestamp:
- 11/18/03 03:31:40 (10 years ago)
- Location:
- lm-sensors/trunk/kernel/chips
- Files:
-
- 6 modified
Legend:
- Unmodified
- Added
- Removed
-
lm-sensors/trunk/kernel/chips/mtp008.c
r1705 r2070 193 193 #define PWM_TO_REG(val) (val) 194 194 #define PWMENABLE_FROM_REG(nr, val) (((val) >> ((nr) + 3)) & 1) 195 196 /* Initial limits */197 #define MTP008_INIT_IN_0 (vid) /* VCore 1 */198 #define MTP008_INIT_IN_1 330 /* +3.3V */199 #define MTP008_INIT_IN_2 (1200 * 10 / 38) /* +12V */200 #define MTP008_INIT_IN_3 (vid) /* VCore 2 */201 #define MTP008_INIT_IN_5 ((11861 + 7 * (-1200)) / 36) /* -12V */202 #define MTP008_INIT_IN_6 150 /* Vtt */203 204 #define MTP008_INIT_IN_PCT 10205 206 #define MTP008_INIT_IN_MIN_0 (MTP008_INIT_IN_0 - \207 MTP008_INIT_IN_0 * MTP008_INIT_IN_PCT / 100)208 #define MTP008_INIT_IN_MAX_0 (MTP008_INIT_IN_0 + \209 MTP008_INIT_IN_0 * MTP008_INIT_IN_PCT / 100)210 #define MTP008_INIT_IN_MIN_1 (MTP008_INIT_IN_1 - \211 MTP008_INIT_IN_1 * MTP008_INIT_IN_PCT / 100)212 #define MTP008_INIT_IN_MAX_1 (MTP008_INIT_IN_1 + \213 MTP008_INIT_IN_1 * MTP008_INIT_IN_PCT / 100)214 #define MTP008_INIT_IN_MIN_2 (MTP008_INIT_IN_2 - \215 MTP008_INIT_IN_2 * MTP008_INIT_IN_PCT / 100)216 #define MTP008_INIT_IN_MAX_2 (MTP008_INIT_IN_2 + \217 MTP008_INIT_IN_2 * MTP008_INIT_IN_PCT / 100)218 #define MTP008_INIT_IN_MIN_3 (MTP008_INIT_IN_3 - \219 MTP008_INIT_IN_3 * MTP008_INIT_IN_PCT / 100)220 #define MTP008_INIT_IN_MAX_3 (MTP008_INIT_IN_3 + \221 MTP008_INIT_IN_3 * MTP008_INIT_IN_PCT / 100)222 223 #define MTP008_INIT_IN_MIN_5 (MTP008_INIT_IN_5 - \224 MTP008_INIT_IN_5 * MTP008_INIT_IN_PCT / 100)225 #define MTP008_INIT_IN_MAX_5 (MTP008_INIT_IN_5 + \226 MTP008_INIT_IN_5 * MTP008_INIT_IN_PCT / 100)227 #define MTP008_INIT_IN_MIN_6 (MTP008_INIT_IN_6 - \228 MTP008_INIT_IN_6 * MTP008_INIT_IN_PCT / 100)229 #define MTP008_INIT_IN_MAX_6 (MTP008_INIT_IN_6 + \230 MTP008_INIT_IN_6 * MTP008_INIT_IN_PCT / 100)231 232 #define MTP008_INIT_FAN_MIN_1 3000233 #define MTP008_INIT_FAN_MIN_2 3000234 #define MTP008_INIT_FAN_MIN_3 3000235 236 #define MTP008_INIT_TEMP_OVER 700 /* 70 Celsius */237 #define MTP008_INIT_TEMP_HYST 500 /* 50 Celsius */238 #define MTP008_INIT_TEMP2_OVER 700 /* 70 Celsius */239 #define MTP008_INIT_TEMP2_HYST 500 /* 50 Celsius */240 195 241 196 /* … … 552 507 static void mtp008_init_client(struct i2c_client *client) 553 508 { 554 int vid;555 509 u8 save1, save2; 556 510 struct mtp008_data *data; … … 571 525 mtp008_getsensortype(data, save2); 572 526 573 /*574 * Retrieve the VID setting (needed for the default limits).575 */576 vid = mtp008_read_value(client, MTP008_REG_VID_FANDIV) & 0x0f;577 vid |= (mtp008_read_value(client, MTP008_REG_RESET_VID4) & 0x01) << 4;578 vid = VID_FROM_REG(vid);579 580 /*581 * Set the default limits.582 *583 * Setting temp sensors is done as follows:584 *585 * Register 0x57: 0 0 0 0 x x x x586 * | \ / +-- AIN5/VT3587 * | +----- AIN4/VT2/PII588 * +-------- VT1/PII589 */590 591 mtp008_write_value(client, MTP008_REG_IN_MAX(0),592 IN_TO_REG(MTP008_INIT_IN_MAX_0));593 mtp008_write_value(client, MTP008_REG_IN_MIN(0),594 IN_TO_REG(MTP008_INIT_IN_MIN_0));595 mtp008_write_value(client, MTP008_REG_IN_MAX(1),596 IN_TO_REG(MTP008_INIT_IN_MAX_1));597 mtp008_write_value(client, MTP008_REG_IN_MIN(1),598 IN_TO_REG(MTP008_INIT_IN_MIN_1));599 mtp008_write_value(client, MTP008_REG_IN_MAX(2),600 IN_TO_REG(MTP008_INIT_IN_MAX_2));601 mtp008_write_value(client, MTP008_REG_IN_MIN(2),602 IN_TO_REG(MTP008_INIT_IN_MIN_2));603 mtp008_write_value(client, MTP008_REG_IN_MAX(3),604 IN_TO_REG(MTP008_INIT_IN_MAX_3));605 mtp008_write_value(client, MTP008_REG_IN_MIN(3),606 IN_TO_REG(MTP008_INIT_IN_MIN_3));607 608 mtp008_write_value(client, MTP008_REG_IN_MAX(5),609 IN_TO_REG(MTP008_INIT_IN_MAX_5));610 mtp008_write_value(client, MTP008_REG_IN_MIN(5),611 IN_TO_REG(MTP008_INIT_IN_MIN_5));612 mtp008_write_value(client, MTP008_REG_IN_MAX(6),613 IN_TO_REG(MTP008_INIT_IN_MAX_6));614 mtp008_write_value(client, MTP008_REG_IN_MIN(6),615 IN_TO_REG(MTP008_INIT_IN_MIN_6));616 617 mtp008_write_value(client, MTP008_REG_TEMP_MAX,618 TEMP_TO_REG(MTP008_INIT_TEMP_OVER));619 mtp008_write_value(client, MTP008_REG_TEMP_MIN,620 TEMP_TO_REG(MTP008_INIT_TEMP_HYST));621 mtp008_write_value(client, MTP008_REG_IN_MAX(4),622 TEMP_TO_REG(MTP008_INIT_TEMP2_OVER));623 mtp008_write_value(client, MTP008_REG_IN_MIN(4),624 TEMP_TO_REG(MTP008_INIT_TEMP2_HYST));625 626 mtp008_write_value(client, MTP008_REG_FAN_MIN(1),627 FAN_TO_REG(MTP008_INIT_FAN_MIN_1, 2));628 mtp008_write_value(client, MTP008_REG_FAN_MIN(2),629 FAN_TO_REG(MTP008_INIT_FAN_MIN_2, 2));630 mtp008_write_value(client, MTP008_REG_FAN_MIN(3),631 FAN_TO_REG(MTP008_INIT_FAN_MIN_3, 2));632 527 633 528 /* -
lm-sensors/trunk/kernel/chips/sis5595.c
r1802 r2070 169 169 #define DIV_FROM_REG(val) (1 << (val)) 170 170 #define DIV_TO_REG(val) ((val)==8?3:(val)==4?2:(val)==1?0:1) 171 172 /* Initial limits. To keep them sane, we use the 'standard' translation as173 specified in the SIS5595 sheet. Use the config file to set better limits. */174 #define SIS5595_INIT_IN_0 (((1200) * 10)/38)175 #define SIS5595_INIT_IN_1 (((500) * 100)/168)176 #define SIS5595_INIT_IN_2 330177 #define SIS5595_INIT_IN_3 250178 #define SIS5595_INIT_IN_4 250179 180 #define SIS5595_INIT_IN_PERCENTAGE 10181 182 #define SIS5595_INIT_IN_MIN_0 \183 (SIS5595_INIT_IN_0 - SIS5595_INIT_IN_0 * SIS5595_INIT_IN_PERCENTAGE / 100)184 #define SIS5595_INIT_IN_MAX_0 \185 (SIS5595_INIT_IN_0 + SIS5595_INIT_IN_0 * SIS5595_INIT_IN_PERCENTAGE / 100)186 #define SIS5595_INIT_IN_MIN_1 \187 (SIS5595_INIT_IN_1 - SIS5595_INIT_IN_1 * SIS5595_INIT_IN_PERCENTAGE / 100)188 #define SIS5595_INIT_IN_MAX_1 \189 (SIS5595_INIT_IN_1 + SIS5595_INIT_IN_1 * SIS5595_INIT_IN_PERCENTAGE / 100)190 #define SIS5595_INIT_IN_MIN_2 \191 (SIS5595_INIT_IN_2 - SIS5595_INIT_IN_2 * SIS5595_INIT_IN_PERCENTAGE / 100)192 #define SIS5595_INIT_IN_MAX_2 \193 (SIS5595_INIT_IN_2 + SIS5595_INIT_IN_2 * SIS5595_INIT_IN_PERCENTAGE / 100)194 #define SIS5595_INIT_IN_MIN_3 \195 (SIS5595_INIT_IN_3 - SIS5595_INIT_IN_3 * SIS5595_INIT_IN_PERCENTAGE / 100)196 #define SIS5595_INIT_IN_MAX_3 \197 (SIS5595_INIT_IN_3 + SIS5595_INIT_IN_3 * SIS5595_INIT_IN_PERCENTAGE / 100)198 #define SIS5595_INIT_IN_MIN_4 \199 (SIS5595_INIT_IN_4 - SIS5595_INIT_IN_4 * SIS5595_INIT_IN_PERCENTAGE / 100)200 #define SIS5595_INIT_IN_MAX_4 \201 (SIS5595_INIT_IN_4 + SIS5595_INIT_IN_4 * SIS5595_INIT_IN_PERCENTAGE / 100)202 203 #define SIS5595_INIT_FAN_MIN_1 3000204 #define SIS5595_INIT_FAN_MIN_2 3000205 206 #define SIS5595_INIT_TEMP_OVER 600207 #define SIS5595_INIT_TEMP_HYST 100208 171 209 172 /* For the SIS5595, we need to keep some data in memory. That … … 543 506 sis5595_write_value(client, SIS5595_REG_CONFIG, 0x80); 544 507 545 sis5595_write_value(client, SIS5595_REG_IN_MIN(0),546 IN_TO_REG(SIS5595_INIT_IN_MIN_0));547 sis5595_write_value(client, SIS5595_REG_IN_MAX(0),548 IN_TO_REG(SIS5595_INIT_IN_MAX_0));549 sis5595_write_value(client, SIS5595_REG_IN_MIN(1),550 IN_TO_REG(SIS5595_INIT_IN_MIN_1));551 sis5595_write_value(client, SIS5595_REG_IN_MAX(1),552 IN_TO_REG(SIS5595_INIT_IN_MAX_1));553 sis5595_write_value(client, SIS5595_REG_IN_MIN(2),554 IN_TO_REG(SIS5595_INIT_IN_MIN_2));555 sis5595_write_value(client, SIS5595_REG_IN_MAX(2),556 IN_TO_REG(SIS5595_INIT_IN_MAX_2));557 sis5595_write_value(client, SIS5595_REG_IN_MIN(3),558 IN_TO_REG(SIS5595_INIT_IN_MIN_3));559 sis5595_write_value(client, SIS5595_REG_IN_MAX(3),560 IN_TO_REG(SIS5595_INIT_IN_MAX_3));561 sis5595_write_value(client, SIS5595_REG_FAN_MIN(1),562 FAN_TO_REG(SIS5595_INIT_FAN_MIN_1, 2));563 sis5595_write_value(client, SIS5595_REG_FAN_MIN(2),564 FAN_TO_REG(SIS5595_INIT_FAN_MIN_2, 2));565 if(data->maxins == 4) {566 sis5595_write_value(client, SIS5595_REG_IN_MIN(4),567 IN_TO_REG(SIS5595_INIT_IN_MIN_4));568 sis5595_write_value(client, SIS5595_REG_IN_MAX(4),569 IN_TO_REG(SIS5595_INIT_IN_MAX_4));570 } else {571 sis5595_write_value(client, SIS5595_REG_TEMP_OVER,572 TEMP_TO_REG(SIS5595_INIT_TEMP_OVER));573 sis5595_write_value(client, SIS5595_REG_TEMP_HYST,574 TEMP_TO_REG(SIS5595_INIT_TEMP_HYST));575 }576 577 508 /* Start monitoring */ 578 509 sis5595_write_value(client, SIS5595_REG_CONFIG, -
lm-sensors/trunk/kernel/chips/smsc47m1.c
r1993 r2070 123 123 #define PWM_FROM_REG(val) ((((val) & 0x7f) * 1005) / 640) 124 124 #define PWM_TO_REG(val) SENSORS_LIMIT((((val) * 645) / 1000), 0, 63) 125 126 #define SMSC47M1_INIT_FAN_MIN_1 3000127 #define SMSC47M1_INIT_FAN_MIN_2 3000128 125 129 126 struct smsc47m1_data { … … 347 344 smsc47m1_write_value(client, SMSC47M1_REG_TPIN1, 0x05); 348 345 smsc47m1_write_value(client, SMSC47M1_REG_TPIN2, 0x05); 349 smsc47m1_write_value(client, SMSC47M1_REG_FAN_MIN(1),350 MIN_TO_REG(SMSC47M1_INIT_FAN_MIN_1, 2));351 smsc47m1_write_value(client, SMSC47M1_REG_FAN_MIN(2),352 MIN_TO_REG(SMSC47M1_INIT_FAN_MIN_2, 2));353 346 } 354 347 -
lm-sensors/trunk/kernel/chips/thmc50.c
r1802 r2070 71 71 #define TEMP_FROM_REG(val) ((val>127)?val - 0x0100:val) 72 72 #define TEMP_TO_REG(val) ((val<0)?0x0100+val:val) 73 74 /* Initial values */75 #define THMC50_INIT_TEMP_OS 6076 #define THMC50_INIT_TEMP_HYST 5077 73 78 74 /* Each client has this additional data */ … … 309 305 static void thmc50_init_client(struct i2c_client *client) 310 306 { 311 /* Initialize the THMC50 chip */312 thmc50_write_value(client, THMC50_REG_TEMP_OS,313 TEMP_TO_REG(THMC50_INIT_TEMP_OS));314 thmc50_write_value(client, THMC50_REG_TEMP_HYST,315 TEMP_TO_REG(THMC50_INIT_TEMP_HYST));316 307 thmc50_write_value(client, THMC50_REG_CONF, 1); 317 308 } -
lm-sensors/trunk/kernel/chips/via686a.c
r1832 r2070 331 331 #define DIV_TO_REG(val) ((val)==8?3:(val)==4?2:(val)==1?0:1) 332 332 333 /* Initial limits */334 #define VIA686A_INIT_IN_0 200335 #define VIA686A_INIT_IN_1 250336 #define VIA686A_INIT_IN_2 330337 #define VIA686A_INIT_IN_3 500338 #define VIA686A_INIT_IN_4 1200339 340 #define VIA686A_INIT_IN_PERCENTAGE 10341 342 #define VIA686A_INIT_IN_MIN_0 (VIA686A_INIT_IN_0 - VIA686A_INIT_IN_0 \343 * VIA686A_INIT_IN_PERCENTAGE / 100)344 #define VIA686A_INIT_IN_MAX_0 (VIA686A_INIT_IN_0 + VIA686A_INIT_IN_0 \345 * VIA686A_INIT_IN_PERCENTAGE / 100)346 #define VIA686A_INIT_IN_MIN_1 (VIA686A_INIT_IN_1 - VIA686A_INIT_IN_1 \347 * VIA686A_INIT_IN_PERCENTAGE / 100)348 #define VIA686A_INIT_IN_MAX_1 (VIA686A_INIT_IN_1 + VIA686A_INIT_IN_1 \349 * VIA686A_INIT_IN_PERCENTAGE / 100)350 #define VIA686A_INIT_IN_MIN_2 (VIA686A_INIT_IN_2 - VIA686A_INIT_IN_2 \351 * VIA686A_INIT_IN_PERCENTAGE / 100)352 #define VIA686A_INIT_IN_MAX_2 (VIA686A_INIT_IN_2 + VIA686A_INIT_IN_2 \353 * VIA686A_INIT_IN_PERCENTAGE / 100)354 #define VIA686A_INIT_IN_MIN_3 (VIA686A_INIT_IN_3 - VIA686A_INIT_IN_3 \355 * VIA686A_INIT_IN_PERCENTAGE / 100)356 #define VIA686A_INIT_IN_MAX_3 (VIA686A_INIT_IN_3 + VIA686A_INIT_IN_3 \357 * VIA686A_INIT_IN_PERCENTAGE / 100)358 #define VIA686A_INIT_IN_MIN_4 (VIA686A_INIT_IN_4 - VIA686A_INIT_IN_4 \359 * VIA686A_INIT_IN_PERCENTAGE / 100)360 #define VIA686A_INIT_IN_MAX_4 (VIA686A_INIT_IN_4 + VIA686A_INIT_IN_4 \361 * VIA686A_INIT_IN_PERCENTAGE / 100)362 363 #define VIA686A_INIT_FAN_MIN 3000364 365 #define VIA686A_INIT_TEMP_OVER 600366 #define VIA686A_INIT_TEMP_HYST 500367 368 333 /* For the VIA686A, we need to keep some data in memory. That 369 334 data is pointed to by via686a_list[NR]->data. The structure itself is … … 638 603 udelay(50); 639 604 640 via686a_write_value(client, VIA686A_REG_IN_MIN(0),641 IN_TO_REG(VIA686A_INIT_IN_MIN_0, 0));642 via686a_write_value(client, VIA686A_REG_IN_MAX(0),643 IN_TO_REG(VIA686A_INIT_IN_MAX_0, 0));644 via686a_write_value(client, VIA686A_REG_IN_MIN(1),645 IN_TO_REG(VIA686A_INIT_IN_MIN_1, 1));646 via686a_write_value(client, VIA686A_REG_IN_MAX(1),647 IN_TO_REG(VIA686A_INIT_IN_MAX_1, 1));648 via686a_write_value(client, VIA686A_REG_IN_MIN(2),649 IN_TO_REG(VIA686A_INIT_IN_MIN_2, 2));650 via686a_write_value(client, VIA686A_REG_IN_MAX(2),651 IN_TO_REG(VIA686A_INIT_IN_MAX_2, 2));652 via686a_write_value(client, VIA686A_REG_IN_MIN(3),653 IN_TO_REG(VIA686A_INIT_IN_MIN_3, 3));654 via686a_write_value(client, VIA686A_REG_IN_MAX(3),655 IN_TO_REG(VIA686A_INIT_IN_MAX_3, 3));656 via686a_write_value(client, VIA686A_REG_IN_MIN(4),657 IN_TO_REG(VIA686A_INIT_IN_MIN_4, 4));658 via686a_write_value(client, VIA686A_REG_IN_MAX(4),659 IN_TO_REG(VIA686A_INIT_IN_MAX_4, 4));660 via686a_write_value(client, VIA686A_REG_FAN_MIN(1),661 FAN_TO_REG(VIA686A_INIT_FAN_MIN, 2));662 via686a_write_value(client, VIA686A_REG_FAN_MIN(2),663 FAN_TO_REG(VIA686A_INIT_FAN_MIN, 2));664 for (i = 1; i <= 3; i++) {665 via686a_write_value(client, VIA686A_REG_TEMP_OVER(i),666 TEMP_TO_REG(VIA686A_INIT_TEMP_OVER));667 via686a_write_value(client, VIA686A_REG_TEMP_HYST(i),668 TEMP_TO_REG(VIA686A_INIT_TEMP_HYST));669 }670 671 605 /* Start monitoring */ 672 606 via686a_write_value(client, VIA686A_REG_CONFIG, 0x01); -
lm-sensors/trunk/kernel/chips/w83627hf.c
r1985 r2070 245 245 return ((u8) i); 246 246 } 247 248 /* Initial limits */249 #define W83781D_INIT_IN_0 (vid==3500?280:vid/10)250 #define W83781D_INIT_IN_1 (vid==3500?280:vid/10)251 #define W83781D_INIT_IN_2 330252 #define W83781D_INIT_IN_3 (((500) * 100)/168)253 #define W83781D_INIT_IN_4 (((1200) * 10)/38)254 #define W83781D_INIT_IN_5 (((-1200) * -604)/2100)255 #define W83781D_INIT_IN_6 (((-500) * -604)/909)256 #define W83781D_INIT_IN_7 (((500) * 100)/168)257 #define W83781D_INIT_IN_8 300258 /* Initial limits for 782d/783s negative voltages */259 /* Note level shift. Change min/max below if you change these. */260 #define W83782D_INIT_IN_5 ((((-1200) + 1491) * 100)/514)261 #define W83782D_INIT_IN_6 ((( (-500) + 771) * 100)/314)262 263 #define W83781D_INIT_IN_PERCENTAGE 10264 265 #define W83781D_INIT_IN_MIN_0 \266 (W83781D_INIT_IN_0 - W83781D_INIT_IN_0 * W83781D_INIT_IN_PERCENTAGE \267 / 100)268 #define W83781D_INIT_IN_MAX_0 \269 (W83781D_INIT_IN_0 + W83781D_INIT_IN_0 * W83781D_INIT_IN_PERCENTAGE \270 / 100)271 #define W83781D_INIT_IN_MIN_1 \272 (W83781D_INIT_IN_1 - W83781D_INIT_IN_1 * W83781D_INIT_IN_PERCENTAGE \273 / 100)274 #define W83781D_INIT_IN_MAX_1 \275 (W83781D_INIT_IN_1 + W83781D_INIT_IN_1 * W83781D_INIT_IN_PERCENTAGE \276 / 100)277 #define W83781D_INIT_IN_MIN_2 \278 (W83781D_INIT_IN_2 - W83781D_INIT_IN_2 * W83781D_INIT_IN_PERCENTAGE \279 / 100)280 #define W83781D_INIT_IN_MAX_2 \281 (W83781D_INIT_IN_2 + W83781D_INIT_IN_2 * W83781D_INIT_IN_PERCENTAGE \282 / 100)283 #define W83781D_INIT_IN_MIN_3 \284 (W83781D_INIT_IN_3 - W83781D_INIT_IN_3 * W83781D_INIT_IN_PERCENTAGE \285 / 100)286 #define W83781D_INIT_IN_MAX_3 \287 (W83781D_INIT_IN_3 + W83781D_INIT_IN_3 * W83781D_INIT_IN_PERCENTAGE \288 / 100)289 #define W83781D_INIT_IN_MIN_4 \290 (W83781D_INIT_IN_4 - W83781D_INIT_IN_4 * W83781D_INIT_IN_PERCENTAGE \291 / 100)292 #define W83781D_INIT_IN_MAX_4 \293 (W83781D_INIT_IN_4 + W83781D_INIT_IN_4 * W83781D_INIT_IN_PERCENTAGE \294 / 100)295 #define W83781D_INIT_IN_MIN_5 \296 (W83781D_INIT_IN_5 - W83781D_INIT_IN_5 * W83781D_INIT_IN_PERCENTAGE \297 / 100)298 #define W83781D_INIT_IN_MAX_5 \299 (W83781D_INIT_IN_5 + W83781D_INIT_IN_5 * W83781D_INIT_IN_PERCENTAGE \300 / 100)301 #define W83781D_INIT_IN_MIN_6 \302 (W83781D_INIT_IN_6 - W83781D_INIT_IN_6 * W83781D_INIT_IN_PERCENTAGE \303 / 100)304 #define W83781D_INIT_IN_MAX_6 \305 (W83781D_INIT_IN_6 + W83781D_INIT_IN_6 * W83781D_INIT_IN_PERCENTAGE \306 / 100)307 #define W83781D_INIT_IN_MIN_7 \308 (W83781D_INIT_IN_7 - W83781D_INIT_IN_7 * W83781D_INIT_IN_PERCENTAGE \309 / 100)310 #define W83781D_INIT_IN_MAX_7 \311 (W83781D_INIT_IN_7 + W83781D_INIT_IN_7 * W83781D_INIT_IN_PERCENTAGE \312 / 100)313 #define W83781D_INIT_IN_MIN_8 \314 (W83781D_INIT_IN_8 - W83781D_INIT_IN_8 * W83781D_INIT_IN_PERCENTAGE \315 / 100)316 #define W83781D_INIT_IN_MAX_8 \317 (W83781D_INIT_IN_8 + W83781D_INIT_IN_8 * W83781D_INIT_IN_PERCENTAGE \318 / 100)319 /* Initial limits for 782d/783s negative voltages */320 /* These aren't direct multiples because of level shift */321 /* Beware going negative - check */322 #define W83782D_INIT_IN_MIN_5_TMP \323 (((-1200 * (100 + W83781D_INIT_IN_PERCENTAGE)) + (1491 * 100))/514)324 #define W83782D_INIT_IN_MIN_5 \325 ((W83782D_INIT_IN_MIN_5_TMP > 0) ? W83782D_INIT_IN_MIN_5_TMP : 0)326 #define W83782D_INIT_IN_MAX_5 \327 (((-1200 * (100 - W83781D_INIT_IN_PERCENTAGE)) + (1491 * 100))/514)328 #define W83782D_INIT_IN_MIN_6_TMP \329 ((( -500 * (100 + W83781D_INIT_IN_PERCENTAGE)) + (771 * 100))/314)330 #define W83782D_INIT_IN_MIN_6 \331 ((W83782D_INIT_IN_MIN_6_TMP > 0) ? W83782D_INIT_IN_MIN_6_TMP : 0)332 #define W83782D_INIT_IN_MAX_6 \333 ((( -500 * (100 - W83781D_INIT_IN_PERCENTAGE)) + (771 * 100))/314)334 335 #define W83781D_INIT_FAN_MIN_1 3000336 #define W83781D_INIT_FAN_MIN_2 3000337 #define W83781D_INIT_FAN_MIN_3 3000338 339 #define W83781D_INIT_TEMP_OVER 600340 #define W83781D_INIT_TEMP_HYST 1270 /* must be 127 for ALARM to work */341 #define W83781D_INIT_TEMP2_OVER 600342 #define W83781D_INIT_TEMP2_HYST 500343 #define W83781D_INIT_TEMP3_OVER 600344 #define W83781D_INIT_TEMP3_HYST 500345 247 346 248 /* There are some complications in a module like this. First off, W83781D chips … … 969 871 970 872 if(init) { 971 w83627hf_write_value(client, W83781D_REG_IN_MIN(0),972 IN_TO_REG(W83781D_INIT_IN_MIN_0));973 w83627hf_write_value(client, W83781D_REG_IN_MAX(0),974 IN_TO_REG(W83781D_INIT_IN_MAX_0));975 873 if (type != w83697hf) { 976 w83627hf_write_value(client, W83781D_REG_IN_MIN(1),977 IN_TO_REG(W83781D_INIT_IN_MIN_1));978 w83627hf_write_value(client, W83781D_REG_IN_MAX(1),979 IN_TO_REG(W83781D_INIT_IN_MAX_1));980 }981 982 w83627hf_write_value(client, W83781D_REG_IN_MIN(2),983 IN_TO_REG(W83781D_INIT_IN_MIN_2));984 w83627hf_write_value(client, W83781D_REG_IN_MAX(2),985 IN_TO_REG(W83781D_INIT_IN_MAX_2));986 w83627hf_write_value(client, W83781D_REG_IN_MIN(3),987 IN_TO_REG(W83781D_INIT_IN_MIN_3));988 w83627hf_write_value(client, W83781D_REG_IN_MAX(3),989 IN_TO_REG(W83781D_INIT_IN_MAX_3));990 w83627hf_write_value(client, W83781D_REG_IN_MIN(4),991 IN_TO_REG(W83781D_INIT_IN_MIN_4));992 w83627hf_write_value(client, W83781D_REG_IN_MAX(4),993 IN_TO_REG(W83781D_INIT_IN_MAX_4));994 if (type != w83627thf) {995 w83627hf_write_value(client, W83781D_REG_IN_MIN(5),996 IN_TO_REG(W83782D_INIT_IN_MIN_5));997 w83627hf_write_value(client, W83781D_REG_IN_MAX(5),998 IN_TO_REG(W83782D_INIT_IN_MAX_5));999 w83627hf_write_value(client, W83781D_REG_IN_MIN(6),1000 IN_TO_REG(W83782D_INIT_IN_MIN_6));1001 w83627hf_write_value(client, W83781D_REG_IN_MAX(6),1002 IN_TO_REG(W83782D_INIT_IN_MAX_6));1003 }1004 w83627hf_write_value(client, W83781D_REG_IN_MIN(7),1005 IN_TO_REG(W83781D_INIT_IN_MIN_7));1006 w83627hf_write_value(client, W83781D_REG_IN_MAX(7),1007 IN_TO_REG(W83781D_INIT_IN_MAX_7));1008 w83627hf_write_value(client, W83781D_REG_IN_MIN(8),1009 IN_TO_REG(W83781D_INIT_IN_MIN_8));1010 w83627hf_write_value(client, W83781D_REG_IN_MAX(8),1011 IN_TO_REG(W83781D_INIT_IN_MAX_8));1012 w83627hf_write_value(client, W83781D_REG_VBAT,1013 (w83627hf_read_value(client, W83781D_REG_VBAT) | 0x01));1014 w83627hf_write_value(client, W83781D_REG_FAN_MIN(1),1015 FAN_TO_REG(W83781D_INIT_FAN_MIN_1, 2));1016 w83627hf_write_value(client, W83781D_REG_FAN_MIN(2),1017 FAN_TO_REG(W83781D_INIT_FAN_MIN_2, 2));1018 if (type != w83697hf) {1019 w83627hf_write_value(client, W83781D_REG_FAN_MIN(3),1020 FAN_TO_REG(W83781D_INIT_FAN_MIN_3, 2));1021 }1022 1023 w83627hf_write_value(client, W83781D_REG_TEMP_OVER,1024 TEMP_TO_REG(W83781D_INIT_TEMP_OVER));1025 w83627hf_write_value(client, W83781D_REG_TEMP_HYST,1026 TEMP_TO_REG(W83781D_INIT_TEMP_HYST));1027 1028 w83627hf_write_value(client, W83781D_REG_TEMP2_OVER,1029 TEMP_ADD_TO_REG1030 (W83781D_INIT_TEMP2_OVER));1031 w83627hf_write_value(client, W83781D_REG_TEMP2_HYST,1032 TEMP_ADD_TO_REG1033 (W83781D_INIT_TEMP2_HYST));1034 w83627hf_write_value(client, W83781D_REG_TEMP2_CONFIG, 0x00);1035 1036 if (type != w83697hf) {1037 w83627hf_write_value(client, W83781D_REG_TEMP3_OVER,1038 TEMP_ADD_TO_REG1039 (W83781D_INIT_TEMP3_OVER));1040 w83627hf_write_value(client, W83781D_REG_TEMP3_HYST,1041 TEMP_ADD_TO_REG1042 (W83781D_INIT_TEMP3_HYST));1043 w83627hf_write_value(client, W83781D_REG_TEMP3_CONFIG,1044 0x00);1045 874 /* enable PWM2 control (can't hurt since PWM reg 1046 875 should have been reset to 0xff) */
