2008/10/3 Frank Myhr <fmyhr at fhmtech.com>: > Jean-Marc Spaggiari wrote: > >> Since I have identified the chipset from my mother board, can you let >> me know wich pin are the "in" so I can mesure the resistors and >> provide the values? You might found that (the pin#) in the datasheet I >> hope. > > 8720 pins are numbered same as in 8718 datasheet. 8720 vin pins are as > follows: > vin0: 98 > vin1: 97 > vin2: 96 > vin3: 95 (or ATX Power Good, depending on sw config regs) > vin4: 94 (or VLDT 1.2V analog input, depending on chip config) > vin5: 93 (or VDDA 2.5V analog input, depending on config) > vin6: 92 (or VDIMM 1.8V analog input, depending on config) > vin7: no pin, marked "internal" to chip (different from earlier it87's) > vin8 is vbatt (pin 69) > > >> Regarding pwm4 and pwm5, I'm not really sure how to do so, and I seen >> that some fans info was missing. So I will try to figure how to use it >> since I have 3 fans and only 2 are displayed. >> >> fan1: 3013 RPM (min = 0 RPM, div = 2) >> fan2: 0 RPM (min = 0 RPM, div = 2) >> fan3: 5973 RPM (min = 0 RPM, div = 2) > > Simplest and probably best to just ignore/don't worry about pwm4 and > pwm5 for now. Letting the user select pwm4 and pwm5 control will require > new sysfs attributes, there is currently no standard for these. > Something like: > pwm[4|5]_control > which could take values [1|2|3] > But I haven't yet successfully used pwm control on fans 4 and 5 on my > boards, not yet sure it's possible, so it's probably premature to > consider new sysfs interfaces for potentially useless features. > > >> Last point, temperatures are slightly different from it8720 and k8temp. >> >> temp1: +41.0 ?C (low = -1.0 ?C, high = +127.0 ?C) sensor = transistor >> temp2: +34.0 ?C (low = -1.0 ?C, high = -3.0 ?C) sensor = transistor >> temp3: +22.0 ?C (low = -5.0 ?C, high = +127.0 ?C) sensor = transistor >> >> k8temp-pci-00c3 >> Adapter: PCI adapter >> Core0 Temp: +43.0 ?C >> Core1 Temp: +37.0 ?C >> >> Has it87 only the motherboard temp? In that case, why there is 3? I >> will receive a 4-core this afternoon so I will be able to do some >> other tests. > > The temperatures reported by it87 depend on the sensor locations on your > motherboard. Since you're already tracing pins for vin's, here are temp > pins: > temp1: 90 > temp2: 89 > temp3: 88 > > >> --- linux-2.6.27-rc8/drivers/hwmon/it87.c.orig 2008-10-02 >> 09:04:44.000000000 -0400 >> +++ linux-2.6.27-rc8/drivers/hwmon/it87.c 2008-10-03 >> 09:01:10.000000000 -0400 >> @@ -14,6 +14,7 @@ >> IT8712F Super I/O chip w/LPC interface >> IT8716F Super I/O chip w/LPC interface >> IT8718F Super I/O chip w/LPC interface >> + IT8720F Super I/O chip w/LPC interface >> IT8726F Super I/O chip w/LPC interface >> Sis950 A clone of the IT8705F >> >> @@ -50,7 +51,7 @@ >> >> #define DRVNAME "it87" >> >> -enum chips { it87, it8712, it8716, it8718 }; >> +enum chips { it87, it8712, it8716, it8718, it8720 }; >> >> static unsigned short force_id; >> module_param(force_id, ushort, 0); >> @@ -111,6 +112,7 @@ superio_exit(void) >> #define IT8705F_DEVID 0x8705 >> #define IT8716F_DEVID 0x8716 >> #define IT8718F_DEVID 0x8718 >> +#define IT8720F_DEVID 0x8720 >> #define IT8726F_DEVID 0x8726 >> #define IT87_ACT_REG 0x30 >> #define IT87_BASE_REG 0x60 >> @@ -278,7 +280,8 @@ static inline int has_16bit_fans(const s >> return (data->type == it87 && data->revision >= 0x03) >> || (data->type == it8712 && data->revision >= 0x08) >> || data->type == it8716 >> - || data->type == it8718; >> + || data->type == it8718 >> + || data->type == it8720; >> } >> >> static int it87_probe(struct platform_device *pdev); >> @@ -979,6 +982,9 @@ static int __init it87_find(unsigned sho >> case IT8726F_DEVID: >> sio_data->type = it8716; >> break; >> + case IT8720F_DEVID: >> + sio_data->type = it8720; >> + break; >> case IT8718F_DEVID: >> sio_data->type = it8718; >> break; >> @@ -1012,7 +1018,7 @@ static int __init it87_find(unsigned sho >> int reg; >> >> superio_select(GPIO); >> - if (chip_type == it8718) >> + if (chip_type == it8718 || chip_type == it8720) >> sio_data->vid_value = superio_inb(IT87_SIO_VID_REG); >> >> reg = superio_inb(IT87_SIO_PINX2_REG); >> @@ -1040,6 +1046,7 @@ static int __devinit it87_probe(struct p >> "it8712", >> "it8716", >> "it8718", >> + "it8720", >> }; >> >> res = platform_get_resource(pdev, IORESOURCE_IO, 0); >> @@ -1190,7 +1197,7 @@ static int __devinit it87_probe(struct p >> } >> >> if (data->type == it8712 || data->type == it8716 >> - || data->type == it8718) { >> + || data->type == it8718 || data->type == it8720) { >> data->vrm = vid_which_vrm(); >> /* VID reading from Super-I/O config space if available */ >> data->vid = sio_data->vid_value; >> @@ -1571,7 +1578,7 @@ static void __exit sm_it87_exit(void) >> >> MODULE_AUTHOR("Chris Gauthron, " >> "Jean Delvare <khali at linux-fr.org>"); >> -MODULE_DESCRIPTION("IT8705F/8712F/8716F/8718F/8726F, SiS950 driver"); >> +MODULE_DESCRIPTION("IT8705F/8712F/8716F/8718F/8720F/8726F, SiS950 driver"); >> module_param(update_vbat, bool, 0); >> MODULE_PARM_DESC(update_vbat, "Update vbat if set else return powerup value"); >> module_param(fix_pwm_polarity, bool, 0); > > Changes look good to me. > > -Frank > Hi Frank, Maybe I'm totally wrong, but since I'm not an expert, I'm fine with that ;) So for handling the 5 fans, can't we "just" force the data->has_fan to 31 and update it87_read_value to read the right way for IT8720 with it's fan# > 3? Not really sure to understand why we need to update sysfs. When I force has_fan to 5 fans, I get: fan1: 3000 RPM (min = 0 RPM) fan2: 0 RPM (min = 0 RPM) fan3: 5973 RPM (min = 0 RPM) fan4: -1 RPM (min = -1 RPM) fan5: -1 RPM (min = -1 RPM) So can I just help him to read to pwm 4 and 5 correctly? Regarding the resistors. should I publish the values? Or it's useless? Thanks, JM