| R.Marek@sh.cvut.cz | 7f15b66 | 2005-05-26 12:42:19 +0000 | [diff] [blame] | 1 | Kernel driver pc87360 | 
|  | 2 | ===================== | 
|  | 3 |  | 
|  | 4 | Supported chips: | 
|  | 5 | * National Semiconductor PC87360, PC87363, PC87364, PC87365 and PC87366 | 
|  | 6 | Prefixes: 'pc87360', 'pc87363', 'pc87364', 'pc87365', 'pc87366' | 
|  | 7 | Addresses scanned: none, address read from Super I/O config space | 
|  | 8 | Datasheets: | 
|  | 9 | http://www.national.com/pf/PC/PC87360.html | 
|  | 10 | http://www.national.com/pf/PC/PC87363.html | 
|  | 11 | http://www.national.com/pf/PC/PC87364.html | 
|  | 12 | http://www.national.com/pf/PC/PC87365.html | 
|  | 13 | http://www.national.com/pf/PC/PC87366.html | 
|  | 14 |  | 
|  | 15 | Authors: Jean Delvare <khali@linux-fr.org> | 
|  | 16 |  | 
|  | 17 | Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing. | 
|  | 18 | Thanks to Rudolf Marek for helping me investigate conversion issues. | 
|  | 19 |  | 
|  | 20 |  | 
|  | 21 | Module Parameters | 
|  | 22 | ----------------- | 
|  | 23 |  | 
|  | 24 | * init int | 
|  | 25 | Chip initialization level: | 
|  | 26 | 0: None | 
|  | 27 | *1: Forcibly enable internal voltage and temperature channels, except in9 | 
|  | 28 | 2: Forcibly enable all voltage and temperature channels, except in9 | 
|  | 29 | 3: Forcibly enable all voltage and temperature channels, including in9 | 
|  | 30 |  | 
|  | 31 | Note that this parameter has no effect for the PC87360, PC87363 and PC87364 | 
|  | 32 | chips. | 
|  | 33 |  | 
|  | 34 | Also note that for the PC87366, initialization levels 2 and 3 don't enable | 
|  | 35 | all temperature channels, because some of them share pins with each other, | 
|  | 36 | so they can't be used at the same time. | 
|  | 37 |  | 
|  | 38 |  | 
|  | 39 | Description | 
|  | 40 | ----------- | 
|  | 41 |  | 
|  | 42 | The National Semiconductor PC87360 Super I/O chip contains monitoring and | 
|  | 43 | PWM control circuitry for two fans. The PC87363 chip is similar, and the | 
|  | 44 | PC87364 chip has monitoring and PWM control for a third fan. | 
|  | 45 |  | 
|  | 46 | The National Semiconductor PC87365 and PC87366 Super I/O chips are complete | 
|  | 47 | hardware monitoring chipsets, not only controlling and monitoring three fans, | 
|  | 48 | but also monitoring eleven voltage inputs and two (PC87365) or up to four | 
|  | 49 | (PC87366) temperatures. | 
|  | 50 |  | 
|  | 51 | Chip        #vin    #fan    #pwm    #temp   devid | 
|  | 52 |  | 
|  | 53 | PC87360     -       2       2       -       0xE1 | 
|  | 54 | PC87363     -       2       2       -       0xE8 | 
|  | 55 | PC87364     -       3       3       -       0xE4 | 
|  | 56 | PC87365     11      3       3       2       0xE5 | 
|  | 57 | PC87366     11      3       3       3-4     0xE9 | 
|  | 58 |  | 
|  | 59 | The driver assumes that no more than one chip is present, and one of the | 
|  | 60 | standard Super I/O addresses is used (0x2E/0x2F or 0x4E/0x4F) | 
|  | 61 |  | 
|  | 62 | Fan Monitoring | 
|  | 63 | -------------- | 
|  | 64 |  | 
|  | 65 | Fan rotation speeds are reported in RPM (revolutions per minute). An alarm | 
|  | 66 | is triggered if the rotation speed has dropped below a programmable limit. | 
|  | 67 | A different alarm is triggered if the fan speed is too low to be measured. | 
|  | 68 |  | 
|  | 69 | Fan readings are affected by a programmable clock divider, giving the | 
|  | 70 | readings more range or accuracy. Usually, users have to learn how it works, | 
|  | 71 | but this driver implements dynamic clock divider selection, so you don't | 
|  | 72 | have to care no more. | 
|  | 73 |  | 
|  | 74 | For reference, here are a few values about clock dividers: | 
|  | 75 |  | 
|  | 76 | slowest         accuracy        highest | 
|  | 77 | measurable      around 3000     accurate | 
|  | 78 | divider     speed (RPM)     RPM (RPM)       speed (RPM) | 
|  | 79 | 1        1882              18           6928 | 
|  | 80 | 2         941              37           4898 | 
|  | 81 | 4         470              74           3464 | 
|  | 82 | 8         235             150           2449 | 
|  | 83 |  | 
|  | 84 | For the curious, here is how the values above were computed: | 
|  | 85 | * slowest measurable speed: clock/(255*divider) | 
|  | 86 | * accuracy around 3000 RPM: 3000^2/clock | 
|  | 87 | * highest accurate speed: sqrt(clock*100) | 
|  | 88 | The clock speed for the PC87360 family is 480 kHz. I arbitrarily chose 100 | 
|  | 89 | RPM as the lowest acceptable accuracy. | 
|  | 90 |  | 
|  | 91 | As mentioned above, you don't have to care about this no more. | 
|  | 92 |  | 
|  | 93 | Note that not all RPM values can be represented, even when the best clock | 
|  | 94 | divider is selected. This is not only true for the measured speeds, but | 
|  | 95 | also for the programmable low limits, so don't be surprised if you try to | 
|  | 96 | set, say, fan1_min to 2900 and it finally reads 2909. | 
|  | 97 |  | 
|  | 98 |  | 
|  | 99 | Fan Control | 
|  | 100 | ----------- | 
|  | 101 |  | 
|  | 102 | PWM (pulse width modulation) values range from 0 to 255, with 0 meaning | 
|  | 103 | that the fan is stopped, and 255 meaning that the fan goes at full speed. | 
|  | 104 |  | 
|  | 105 | Be extremely careful when changing PWM values. Low PWM values, even | 
|  | 106 | non-zero, can stop the fan, which may cause irreversible damage to your | 
|  | 107 | hardware if temperature increases too much. When changing PWM values, go | 
|  | 108 | step by step and keep an eye on temperatures. | 
|  | 109 |  | 
|  | 110 | One user reported problems with PWM. Changing PWM values would break fan | 
|  | 111 | speed readings. No explanation nor fix could be found. | 
|  | 112 |  | 
|  | 113 |  | 
|  | 114 | Temperature Monitoring | 
|  | 115 | ---------------------- | 
|  | 116 |  | 
|  | 117 | Temperatures are reported in degrees Celsius. Each temperature measured has | 
|  | 118 | associated low, high and overtemperature limits, each of which triggers an | 
|  | 119 | alarm when crossed. | 
|  | 120 |  | 
|  | 121 | The first two temperature channels are external. The third one (PC87366 | 
|  | 122 | only) is internal. | 
|  | 123 |  | 
|  | 124 | The PC87366 has three additional temperature channels, based on | 
|  | 125 | thermistors (as opposed to thermal diodes for the first three temperature | 
|  | 126 | channels). For technical reasons, these channels are held by the VLM | 
|  | 127 | (voltage level monitor) logical device, not the TMS (temperature | 
|  | 128 | measurement) one. As a consequence, these temperatures are exported as | 
|  | 129 | voltages, and converted into temperatures in user-space. | 
|  | 130 |  | 
|  | 131 | Note that these three additional channels share their pins with the | 
|  | 132 | external thermal diode channels, so you (physically) can't use them all at | 
|  | 133 | the same time. Although it should be possible to mix the two sensor types, | 
|  | 134 | the documents from National Semiconductor suggest that motherboard | 
|  | 135 | manufacturers should choose one type and stick to it. So you will more | 
|  | 136 | likely have either channels 1 to 3 (thermal diodes) or 3 to 6 (internal | 
|  | 137 | thermal diode, and thermistors). | 
|  | 138 |  | 
|  | 139 |  | 
|  | 140 | Voltage Monitoring | 
|  | 141 | ------------------ | 
|  | 142 |  | 
|  | 143 | Voltages are reported relatively to a reference voltage, either internal or | 
|  | 144 | external. Some of them (in7:Vsb, in8:Vdd and in10:AVdd) are divided by two | 
|  | 145 | internally, you will have to compensate in sensors.conf. Others (in0 to in6) | 
|  | 146 | are likely to be divided externally. The meaning of each of these inputs as | 
|  | 147 | well as the values of the resistors used for division is left to the | 
|  | 148 | motherboard manufacturers, so you will have to document yourself and edit | 
|  | 149 | sensors.conf accordingly. National Semiconductor has a document with | 
|  | 150 | recommended resistor values for some voltages, but this still leaves much | 
|  | 151 | room for per motherboard specificities, unfortunately. Even worse, | 
|  | 152 | motherboard manufacturers don't seem to care about National Semiconductor's | 
|  | 153 | recommendations. | 
|  | 154 |  | 
|  | 155 | Each voltage measured has associated low and high limits, each of which | 
|  | 156 | triggers an alarm when crossed. | 
|  | 157 |  | 
|  | 158 | When available, VID inputs are used to provide the nominal CPU Core voltage. | 
|  | 159 | The driver will default to VRM 9.0, but this can be changed from user-space. | 
|  | 160 | The chipsets can handle two sets of VID inputs (on dual-CPU systems), but | 
|  | 161 | the driver will only export one for now. This may change later if there is | 
|  | 162 | a need. | 
|  | 163 |  | 
|  | 164 |  | 
|  | 165 | General Remarks | 
|  | 166 | --------------- | 
|  | 167 |  | 
|  | 168 | If an alarm triggers, it will remain triggered until the hardware register | 
|  | 169 | is read at least once. This means that the cause for the alarm may already | 
|  | 170 | have disappeared! Note that all hardware registers are read whenever any | 
|  | 171 | data is read (unless it is less than 2 seconds since the last update, in | 
|  | 172 | which case cached values are returned instead). As a consequence, when | 
|  | 173 | a once-only alarm triggers, it may take 2 seconds for it to show, and 2 | 
|  | 174 | more seconds for it to disappear. | 
|  | 175 |  | 
|  | 176 | Monitoring of in9 isn't enabled at lower init levels (<3) because that | 
|  | 177 | channel measures the battery voltage (Vbat). It is a known fact that | 
|  | 178 | repeatedly sampling the battery voltage reduces its lifetime. National | 
|  | 179 | Semiconductor smartly designed their chipset so that in9 is sampled only | 
|  | 180 | once every 1024 sampling cycles (that is every 34 minutes at the default | 
|  | 181 | sampling rate), so the effect is attenuated, but still present. | 
|  | 182 |  | 
|  | 183 |  | 
|  | 184 | Limitations | 
|  | 185 | ----------- | 
|  | 186 |  | 
|  | 187 | The datasheets suggests that some values (fan mins, fan dividers) | 
|  | 188 | shouldn't be changed once the monitoring has started, but we ignore that | 
|  | 189 | recommendation. We'll reconsider if it actually causes trouble. |