Rev 500 | Show entire file | Regard 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 + + |
Line 38... | Line 38... | ||
38 | wb_fans_num db 0 |
38 | wb_fans_num db 0 |
39 | endg |
39 | endg |
Line 40... | Line 40... | ||
40 | 40 | ||
41 | ;----------------------------------- |
41 | ;----------------------------------- |
42 | wb_init: |
42 | wb_init: |
43 | ; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ |
43 | ; ஢¥àª «¨ç¨ï ¨ ¨¨æ¨ «¨§ æ¨ï |
44 | ; OUT - CF = 1 - error |
44 | ; OUT - CF = 1 - error |
45 | cmp byte[acc_type], 2 ; Only ISA and SMBus |
45 | cmp byte[acc_type], 2 ; Only ISA and SMBus |
Line 46... | Line 46... | ||
46 | jae wb_no |
46 | jae wb_no |
Line 55... | Line 55... | ||
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] |
Line 133... | Line 133... | ||
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 |
Line 146... | Line 146... | ||
146 | mov al, 5 |
146 | mov al, 5 |
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 |
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 |
Line 183... | Line 185... | ||
183 | 185 | ||
184 | mov al, 0x47 |
186 | mov al, 0x47 |
Line 191... | Line 193... | ||
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 |
Line 203... | Line 208... | ||
203 | 208 | ||
204 | mov al, 0x4B |
209 | mov al, 0x4B |
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 |
Line 246... | Line 255... | ||
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] |
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: |