Rev 500 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 500 | Rev 2429 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; |
1 | ; |
2 | ; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû |
2 | ; Ghost Monitor - ã⨫¨â (áâà¥áá) â¥áâ¨à®¢ ¨ï ¨ ¬®¨â®à¨£ á¨á⥬ë |
3 | ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) |
3 | ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) |
4 | ; All Right Reserved |
4 | ; All Right Reserved |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | ; |
6 | ; |
7 | ; Áèáëèîòåêà äëÿ ÷èïîâ WinBond |
7 | ; ¨¡«¨®â¥ª ¤«ï 稯®¢ WinBond |
8 | ; |
8 | ; |
9 | ; |
9 | ; |
10 | ; Äîïèñàòü ïîëó÷åíèå èíôû ñ äðóãèõ äàò÷èêîâ |
10 | ; ®¯¨á âì ¯®«ã票¥ ¨äë á ¤àã£¨å ¤ â稪®¢ |
11 | ; W83627DHG ìîíèòîðèíã àíàëîãè÷åí W83627EHF, äîïèñàòü ó÷¸ò DIV_B2 |
11 | ; W83627DHG ¬®¨â®à¨£ «®£¨ç¥ W83627EHF, ¤®¯¨á âì ãçñâ DIV_B2 |
12 | ; + 16.03.06 Èñïðàâëåíà îøèáêà â wb_get_cpu_temper ñ äåñÿòûõ ãðàäóñà (áûëî 30.5 30.0 31.5 ...) |
12 | ; + 16.03.06 á¯à ¢«¥ ®è¨¡ª ¢ wb_get_cpu_temper á ¤¥áïâëå £à ¤ãá (¡ë«® 30.5 30.0 31.5 ...) |
13 | ; |
13 | ; |
14 | ; |
14 | ; |
15 | ; Î ìàðêèðîâêå (?) : H - H/W Monitor, G - Pb-free package, T - ACPI, S - Smart Card Reader Interface |
15 | ; ¬ ન஢ª¥ (?) : H - H/W Monitor, G - Pb-free package, T - ACPI, S - Smart Card Reader Interface |
16 | ; D - SuperIO supporting Intel* PECI* & SST* interfaces, U - UART |
16 | ; D - SuperIO supporting Intel* PECI* & SST* interfaces, U - UART |
17 | ; |
17 | ; |
18 | ; | Chip name | ID Vin Fanin PWM Temp ISA SMBus |
18 | ; | Chip name | ID Vin Fanin PWM Temp ISA SMBus |
19 | msg_wb27HF: db 'W83627HF', 0 ; 0x20|0x21 9 3 2 3 + + |
19 | msg_wb27HF: db 'W83627HF', 0 ; 0x20|0x21 9 3 2 3 + + |
20 | msg_wb27THF: db 'W83627THF', 0 ; 0x90|0x91 7 3 3 3 + + |
20 | msg_wb27THF: db 'W83627THF', 0 ; 0x90|0x91 7 3 3 3 + + |
21 | msg_wb37THF: db 'W83637THF', 0 ; 0x80 7 3 3 3 + + |
21 | msg_wb37THF: db 'W83637THF', 0 ; 0x80 7 3 3 3 + + |
22 | msg_wb97HF: db 'W83697HF', 0 ; 0x60|0x61 8 2 2 2 + - |
22 | msg_wb97HF: db 'W83697HF', 0 ; 0x60|0x61 8 2 2 2 + - |
Line 23... | Line 23... | ||
23 | msg_wb27THFA: db 'W83627THF-A', 0 ; 0x1A |
23 | msg_wb27THFA: db 'W83627THF-A', 0 ; 0x1A |
24 | 24 | ||
25 | msg_w83627DHG: db 'W83627DHG', 0 ; 0xC1 ? 5 ? 3 + + |
25 | msg_w83627DHG: db 'W83627DHG', 0 ; 0xC1 ? 5 ? 3 + + |
Line 26... | Line 26... | ||
26 | msg_w83627EHF: db 'W83627EHF', 0 ; 0x88 10 5 3 3 + + |
26 | msg_w83627EHF: db 'W83627EHF', 0 ; 0x88 10 5 3 3 + + |
27 | msg_w83627EHG: db 'W83627EHG', 0 ; 0xA1 10 5 3 3 + + |
27 | msg_w83627EHG: db 'W83627EHG', 0 ; 0xA1 10 5 3 3 + + |
28 | 28 | ||
29 | 29 | ||
30 | ; db 'W83781D', 0 ; 0x10|0x11 7 3 3 + + |
30 | ; db 'W83781D', 0 ; 0x10|0x11 7 3 3 + + |
31 | ; db 'W83782D', 0 ; 0x30 9 3 3 + + |
31 | ; db 'W83782D', 0 ; 0x30 9 3 3 + + |
Line 32... | Line 32... | ||
32 | ; db 'AS99127F', 0 ; 0x31 7 3 3 - + |
32 | ; db 'AS99127F', 0 ; 0x31 7 3 3 - + |
33 | ; db 'W83783S', 0 ; 0x40|0x41 5-6 3 1-2 - + |
33 | ; db 'W83783S', 0 ; 0x40|0x41 5-6 3 1-2 - + |
34 | ; db 'W83791D', 0 ; 0x70|0x71 10 5 3 - + |
34 | ; db 'W83791D', 0 ; 0x70|0x71 10 5 3 - + |
Line 35... | Line 35... | ||
35 | msg_wbunk: db 'Unknown Winbond', 0 ; other, non zero ;-) |
35 | msg_wbunk: db 'Unknown Winbond', 0 ; other, non zero ;-) |
36 | 36 | ||
37 | uglobal |
37 | uglobal |
38 | wb_fans_num db 0 |
38 | wb_fans_num db 0 |
39 | endg |
39 | endg |
40 | 40 | ||
Line 41... | Line 41... | ||
41 | ;----------------------------------- |
41 | ;----------------------------------- |
Line 51... | Line 51... | ||
51 | mov al, 0x4f |
51 | mov al, 0x4f |
52 | call [IO_Read] |
52 | call [IO_Read] |
53 | mov ah, al ;! |
53 | mov ah, al ;! |
54 | mov al, 0x4e |
54 | mov al, 0x4e |
55 | mov bl, 0x80 |
55 | mov bl, 0x80 |
56 | call [IO_Write] |
56 | call [IO_Write] |
57 | mov al, 0x4f |
57 | mov al, 0x4f |
58 | call [IO_Read] |
58 | call [IO_Read] |
59 | cmp ax, 0xa35c |
59 | cmp ax, 0xa35c |
60 | jne wb_no ; ýòî íå Winbond !!! |
60 | jne wb_no ; íâ® ¥ Winbond !!! |
Line 61... | Line 61... | ||
61 | 61 | ||
62 | ; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà -- |
62 | ; --- 㧠ñ¬ ¨¤¥â¨ä¨ª â®à 稯 -- |
63 | mov al, 0x58 |
63 | mov al, 0x58 |
64 | call [IO_Read] |
64 | call [IO_Read] |
65 | and al, 0xFE ; 0x20 = 0x21, 0x60 = 0x61, etc |
65 | and al, 0xFE ; 0x20 = 0x21, 0x60 = 0x61, etc |
66 | mov byte[wb_fans_num], 3 |
66 | mov byte[wb_fans_num], 3 |
Line 109... | Line 109... | ||
109 | fstp dword[V12] |
109 | fstp dword[V12] |
110 | ret |
110 | ret |
111 | ;----------------------------------- |
111 | ;----------------------------------- |
112 | wb_get_temp: |
112 | wb_get_temp: |
113 | ; temp 1 |
113 | ; temp 1 |
114 | mov al, 0x4e ; Âûáèðàåì bank 1 |
114 | mov al, 0x4e ; ë¡¨à ¥¬ bank 1 |
115 | mov bl, 1 |
115 | mov bl, 1 |
116 | call [IO_Write] |
116 | call [IO_Write] |
117 | mov al, 0x50 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
117 | mov al, 0x50 ; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë) |
118 | call [IO_Read] |
118 | call [IO_Read] |
119 | mov [hwm_temps], al |
119 | mov [hwm_temps], al |
120 | mov al, 0x51 ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (x.5`C) |
120 | mov al, 0x51 ; ®«ãç ¥¬ ¬« ¤è¨© ¡ ©â ⥬¯¥à âãàë (x.5`C) |
121 | call [IO_Read] |
121 | call [IO_Read] |
122 | cmp al, 0 ; if al == 0 then x.0, else x.5 |
122 | cmp al, 0 ; if al == 0 then x.0, else x.5 |
123 | je @f |
123 | je @f |
124 | mov al, 5 |
124 | mov al, 5 |
125 | @@: mov [hwm_temps + 1], al |
125 | @@: mov [hwm_temps + 1], al |
Line 126... | Line 126... | ||
126 | 126 | ||
127 | ; temp 2 (3 SYSTIN) |
127 | ; temp 2 (3 SYSTIN) |
128 | mov al, 0x4e ; Âûáèðàåì bank 0 |
128 | mov al, 0x4e ; ë¡¨à ¥¬ bank 0 |
129 | xor bl, bl |
129 | xor bl, bl |
130 | call [IO_Write] |
130 | call [IO_Write] |
131 | mov al, 0x27 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
131 | mov al, 0x27 ; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë) |
132 | call [IO_Read] |
132 | call [IO_Read] |
133 | mov [hwm_temps + 2], al |
133 | mov [hwm_temps + 2], al |
134 | 134 | ||
135 | ; temp 3 (VTIN) |
135 | ; temp 3 (VTIN) |
136 | mov al, 0x4e ; Âûáèðàåì bank 2 |
136 | mov al, 0x4e ; ë¡¨à ¥¬ bank 2 |
137 | mov bl, 2 |
137 | mov bl, 2 |
138 | call [IO_Write] |
138 | call [IO_Write] |
139 | mov al, 0x50 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
139 | mov al, 0x50 ; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë) |
140 | call [IO_Read] |
140 | call [IO_Read] |
141 | mov [hwm_temps + 4], al |
141 | mov [hwm_temps + 4], al |
142 | mov al, 0x51 ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (x.5`C) |
142 | mov al, 0x51 ; ®«ãç ¥¬ ¬« ¤è¨© ¡ ©â ⥬¯¥à âãàë (x.5`C) |
143 | call [IO_Read] |
143 | call [IO_Read] |
144 | cmp al, 0 ; if al == 0 then x.0, else x.5 |
144 | cmp al, 0 ; if al == 0 then x.0, else x.5 |
145 | je @f |
145 | je @f |
146 | mov al, 5 |
146 | mov al, 5 |
Line 147... | Line 147... | ||
147 | @@: mov [hwm_temps + 5], al |
147 | @@: mov [hwm_temps + 5], al |
148 | 148 | ||
149 | ; Ïðîâåðêà òåìïåðàòóðû, äàò÷èêè ñ 127.5`C íå èñïîëüçóþòñÿ |
149 | ; ஢¥àª ⥬¯¥à âãàë, ¤ â稪¨ á 127.5`C ¥ ¨á¯®«ì§ãîâáï |
150 | mov ecx, 3 |
150 | mov ecx, 3 |
151 | mov esi, hwm_temps |
151 | mov esi, hwm_temps |
152 | wb_check_temp: |
152 | wb_check_temp: |
153 | cmp word[esi + ecx * 2 - 2], 0x057F |
153 | cmp word[esi + ecx * 2 - 2], 0x057F |
154 | jne wb_temp_ok |
154 | jne wb_temp_ok |
155 | mov word[esi + ecx * 2 - 2], 0 |
155 | mov word[esi + ecx * 2 - 2], 0 |
156 | wb_temp_ok: |
156 | wb_temp_ok: |
157 | loop wb_check_temp |
157 | loop wb_check_temp |
158 | 158 | ||
159 | ret |
159 | ret |
160 | ;----------------------------------- |
160 | ;----------------------------------- |
161 | wb_get_fan_speed: |
161 | wb_get_fan_speed: |
162 | ; fan1 |
162 | ; fan1 |
163 | mov al, 0x47 |
163 | mov al, 0x47 |
164 | call [IO_Read] |
164 | call [IO_Read] |
165 | and al, 0x30 |
165 | and al, 0x30 |
166 | shr al, 4 |
166 | shr al, 4 |
167 | mov ebx, 1 |
167 | mov ebx, 1 |
168 | mov cl, al |
168 | mov cl, al |
169 | shl ebx, cl ; <- div1 |
169 | shl ebx, cl ; <- div1 |
170 | xor eax, eax |
170 | xor eax, eax |
171 | mov al, 0x28 |
171 | mov al, 0x28 |
172 | call [IO_Read] |
172 | call [IO_Read] |
Line 176... | Line 176... | ||
176 | ret ; ??? |
176 | ret ; ??? |
177 | @@: mul ebx |
177 | @@: mul ebx |
178 | mov ebx, eax |
178 | mov ebx, eax |
179 | mov eax, 1350000 |
179 | mov eax, 1350000 |
180 | xor edx, edx |
180 | xor edx, edx |
- | 181 | test ebx, ebx |
|
- | 182 | jz .div0 |
|
181 | div ebx |
183 | div ebx |
182 | mov [hwm_rpms], eax |
184 | mov [hwm_rpms], eax |
183 | 185 | ||
184 | mov al, 0x47 |
186 | mov al, 0x47 |
185 | call [IO_Read] |
187 | call [IO_Read] |
186 | shr al, 6 |
188 | shr al, 6 |
187 | mov ebx, 1 |
189 | mov ebx, 1 |
188 | mov cl, al |
190 | mov cl, al |
189 | shl ebx, cl ; <- div2 |
191 | shl ebx, cl ; <- div2 |
190 | xor eax, eax |
192 | xor eax, eax |
191 | mov al, 0x29 |
193 | mov al, 0x29 |
192 | call [IO_Read] |
194 | call [IO_Read] |
193 | cmp al, 255 |
195 | cmp al, 255 |
194 | jne @f |
196 | jne @f |
195 | xor eax, eax |
197 | xor eax, eax |
- | 198 | .div0: |
|
196 | ret |
199 | ret |
197 | @@: mul ebx |
200 | @@: mul ebx |
198 | mov ebx, eax |
201 | mov ebx, eax |
199 | mov eax, 1350000 |
202 | mov eax, 1350000 |
200 | xor edx, edx |
203 | xor edx, edx |
- | 204 | test ebx, ebx |
|
- | 205 | jz .div0 |
|
201 | div ebx |
206 | div ebx |
202 | mov [hwm_rpms + 4], eax |
207 | mov [hwm_rpms + 4], eax |
203 | 208 | ||
204 | mov al, 0x4B |
209 | mov al, 0x4B |
205 | call [IO_Read] |
210 | call [IO_Read] |
206 | shr al, 6 |
211 | shr al, 6 |
207 | mov ebx, 1 |
212 | mov ebx, 1 |
208 | mov cl, al |
213 | mov cl, al |
209 | shl ebx, cl ; <- div3 |
214 | shl ebx, cl ; <- div3 |
210 | xor eax, eax |
215 | xor eax, eax |
211 | mov al, 0x2A |
216 | mov al, 0x2A |
212 | call [IO_Read] |
217 | call [IO_Read] |
213 | cmp al, 255 |
218 | cmp al, 255 |
214 | jne @f |
219 | jne @f |
Line 216... | Line 221... | ||
216 | ret |
221 | ret |
217 | @@: mul ebx |
222 | @@: mul ebx |
218 | mov ebx, eax |
223 | mov ebx, eax |
219 | mov eax, 1350000 |
224 | mov eax, 1350000 |
220 | xor edx, edx |
225 | xor edx, edx |
- | 226 | test ebx, ebx |
|
- | 227 | jz .div0 |
|
221 | div ebx |
228 | div ebx |
222 | mov [hwm_rpms + 8], eax |
229 | mov [hwm_rpms + 8], eax |
Line 223... | Line 230... | ||
223 | 230 | ||
224 | cmp byte[wb_fans_num], 3 |
231 | cmp byte[wb_fans_num], 3 |
Line 227... | Line 234... | ||
227 | mov al, 0x59 |
234 | mov al, 0x59 |
228 | call [IO_Read] |
235 | call [IO_Read] |
229 | and al, 3 |
236 | and al, 3 |
230 | mov ebx, 1 |
237 | mov ebx, 1 |
231 | mov cl, al |
238 | mov cl, al |
232 | shl ebx, cl ; <- div4, äîïèñàòü ó÷¸ò DIV_B2 |
239 | shl ebx, cl ; <- div4, ¤®¯¨á âì ãçñâ DIV_B2 |
233 | xor eax, eax |
240 | xor eax, eax |
234 | mov al, 0x3F |
241 | mov al, 0x3F |
235 | call [IO_Read] |
242 | call [IO_Read] |
236 | cmp al, 255 |
243 | cmp al, 255 |
237 | jne @f |
244 | jne @f |
Line 239... | Line 246... | ||
239 | ret |
246 | ret |
240 | @@: mul ebx |
247 | @@: mul ebx |
241 | mov ebx, eax |
248 | mov ebx, eax |
242 | mov eax, 1350000 |
249 | mov eax, 1350000 |
243 | xor edx, edx |
250 | xor edx, edx |
- | 251 | test ebx, ebx |
|
- | 252 | jz .div0 |
|
244 | div ebx |
253 | div ebx |
245 | mov [hwm_rpms + 12], eax |
254 | mov [hwm_rpms + 12], eax |
246 | 255 | ||
247 | mov al, 0x59 |
256 | mov al, 0x59 |
248 | call [IO_Read] |
257 | call [IO_Read] |
249 | shr al, 2 |
258 | shr al, 2 |
250 | and al, 3 |
259 | and al, 3 |
251 | mov ebx, 1 |
260 | mov ebx, 1 |
252 | mov cl, al |
261 | mov cl, al |
253 | shl ebx, cl ; <- div5, äîïèñàòü ó÷¸ò DIV_B2 |
262 | shl ebx, cl ; <- div5, ¤®¯¨á âì ãçñâ DIV_B2 |
254 | xor eax, eax |
263 | xor eax, eax |
255 | mov al, 0x4e ; Âûáèðàåì bank 5 |
264 | mov al, 0x4e ; ë¡¨à ¥¬ bank 5 |
256 | mov bl, 5 |
265 | mov bl, 5 |
257 | call [IO_Write] |
266 | call [IO_Write] |
258 | mov al, 0x53 |
267 | mov al, 0x53 |
259 | call [IO_Read] |
268 | call [IO_Read] |
260 | cmp al, 255 |
269 | cmp al, 255 |
Line 263... | Line 272... | ||
263 | ret |
272 | ret |
264 | @@: mul ebx |
273 | @@: mul ebx |
265 | mov ebx, eax |
274 | mov ebx, eax |
266 | mov eax, 1350000 |
275 | mov eax, 1350000 |
267 | xor edx, edx |
276 | xor edx, edx |
- | 277 | test ebx, ebx |
|
- | 278 | jz .wb_f_e |
|
268 | div ebx |
279 | div ebx |
269 | mov [hwm_rpms + 16], eax |
280 | mov [hwm_rpms + 16], eax |
Line 270... | Line 281... | ||
270 | 281 | ||
271 | .wb_f_e: |
282 | .wb_f_e: |
272 | ret |
283 | ret |
273 | ;----------------------------------- |
284 | ;----------------------------------- |
274 | wb_get_volt: |
285 | wb_get_volt: |
275 | ;mov edi, wb_coeff ; <-- possible differences for miscellaneous chip |
286 | ;mov edi, wb_coeff ; <-- possible differences for miscellaneous chip |
276 | mov esi, hwm_voltages |
287 | mov esi, hwm_voltages |
277 | xor ecx, ecx |
288 | xor ecx, ecx |
278 | @@: mov eax, ecx |
289 | @@: mov eax, ecx |
279 | add al, 0x20 |
290 | add al, 0x20 |
Line 294... | Line 305... | ||
294 | dd 0.016 ; Vin1 (+3.3V) |
305 | dd 0.016 ; Vin1 (+3.3V) |
295 | dd 0.02688 ; AVcc (+5V) |
306 | dd 0.02688 ; AVcc (+5V) |
296 | dd 0.0608 ; Vin2 (+12V) |
307 | dd 0.0608 ; Vin2 (+12V) |
297 | dd 0.0822857142857145 ; -12V |
308 | dd 0.0822857142857145 ; -12V |
298 | dd -0.02408 ; -5V ; false |
309 | dd -0.02408 ; -5V ; false |
299 | 310 | ||
300 | wb_n12v_const dd -14.9142857142857-->->->->->-> |
311 | wb_n12v_const dd -14.9142857142857-->->->->->-> |
Line 301... | Line 312... | ||
301 | 312 | ||
302 | 313 |