Subversion Repositories Kolibri OS

Compare Revisions

Ignore whitespace Rev 2428 → Rev 2429

/programs/system/gmon/hwm_wb.inc
1,38 → 1,38
;
; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
; Ghost Monitor - ã⨫¨â  (áâà¥áá) â¥áâ¨à®¢ ­¨ï ¨ ¬®­¨â®à¨­£  á¨á⥬ë
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
; All Right Reserved
 
;
; Áèáëèîòåêà äëÿ ÷èïîâ WinBond
; ¨¡«¨®â¥ª  ¤«ï 稯®¢ WinBond
;
;
; Äîïèñàòü ïîëó÷åíèå èíôû ñ äðóãèõ äàò÷èêîâ
; W83627DHG ìîíèòîðèíã àíàëîãè÷åí W83627EHF, äîïèñàòü ó÷¸ò DIV_B2
; + 16.03.06 Èñïðàâëåíà îøèáêà â wb_get_cpu_temper ñ äåñÿòûõ ãðàäóñà (áûëî 30.5 30.0 31.5 ...)
; „®¯¨á âì ¯®«ã祭¨¥ ¨­äë á ¤àã£¨å ¤ â稪®¢
; W83627DHG ¬®­¨â®à¨­£  ­ «®£¨ç¥­ W83627EHF, ¤®¯¨á âì ãçñâ DIV_B2
; + 16.03.06 ˆá¯à ¢«¥­  ®è¨¡ª  ¢ wb_get_cpu_temper á ¤¥áïâëå £à ¤ãá  (¡ë«® 30.5 30.0 31.5 ...)
;
;
; Î ìàðêèðîâêå (?) : H - H/W Monitor, G - Pb-free package, T - ACPI, S - Smart Card Reader Interface
; Ž ¬ àª¨à®¢ª¥ (?) : H - H/W Monitor, G - Pb-free package, T - ACPI, S - Smart Card Reader Interface
; D - SuperIO supporting Intel* PECI* & SST* interfaces, U - UART
;
; | Chip name | ID Vin Fanin PWM Temp ISA SMBus
msg_wb27HF: db 'W83627HF', 0 ; 0x20|0x21 9 3 2 3 + +
msg_wb27THF: db 'W83627THF', 0 ; 0x90|0x91 7 3 3 3 + +
msg_wb37THF: db 'W83637THF', 0 ; 0x80 7 3 3 3 + +
msg_wb97HF: db 'W83697HF', 0 ; 0x60|0x61 8 2 2 2 + -
; | Chip name | ID Vin Fanin PWM Temp ISA SMBus
msg_wb27HF: db 'W83627HF', 0 ; 0x20|0x21 9 3 2 3 + +
msg_wb27THF: db 'W83627THF', 0 ; 0x90|0x91 7 3 3 3 + +
msg_wb37THF: db 'W83637THF', 0 ; 0x80 7 3 3 3 + +
msg_wb97HF: db 'W83697HF', 0 ; 0x60|0x61 8 2 2 2 + -
msg_wb27THFA: db 'W83627THF-A', 0 ; 0x1A
 
msg_w83627DHG: db 'W83627DHG', 0 ; 0xC1 ? 5 ? 3 + +
msg_w83627EHF: db 'W83627EHF', 0 ; 0x88 10 5 3 3 + +
msg_w83627EHG: db 'W83627EHG', 0 ; 0xA1 10 5 3 3 + +
msg_w83627DHG: db 'W83627DHG', 0 ; 0xC1 ? 5 ? 3 + +
msg_w83627EHF: db 'W83627EHF', 0 ; 0x88 10 5 3 3 + +
msg_w83627EHG: db 'W83627EHG', 0 ; 0xA1 10 5 3 3 + +
 
 
; db 'W83781D', 0 ; 0x10|0x11 7 3 3 + +
; db 'W83782D', 0 ; 0x30 9 3 3 + +
; db 'AS99127F', 0 ; 0x31 7 3 3 - +
; db 'W83783S', 0 ; 0x40|0x41 5-6 3 1-2 - +
; db 'W83791D', 0 ; 0x70|0x71 10 5 3 - +
msg_wbunk: db 'Unknown Winbond', 0 ; other, non zero ;-)
; db 'W83781D', 0 ; 0x10|0x11 7 3 3 + +
; db 'W83782D', 0 ; 0x30 9 3 3 + +
; db 'AS99127F', 0 ; 0x31 7 3 3 - +
; db 'W83783S', 0 ; 0x40|0x41 5-6 3 1-2 - +
; db 'W83791D', 0 ; 0x70|0x71 10 5 3 - +
msg_wbunk: db 'Unknown Winbond', 0 ; other, non zero ;-)
 
uglobal
wb_fans_num db 0
40,7 → 40,7
 
;-----------------------------------
wb_init:
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
; à®¢¥àª  ­ «¨ç¨ï ¨ ¨­¨æ¨ «¨§ æ¨ï
; OUT - CF = 1 - error
cmp byte[acc_type], 2 ; Only ISA and SMBus
jae wb_no
53,13 → 53,13
mov ah, al ;!
mov al, 0x4e
mov bl, 0x80
call [IO_Write]
call [IO_Write]
mov al, 0x4f
call [IO_Read]
cmp ax, 0xa35c
jne wb_no ; ýòî íå Winbond !!!
jne wb_no ; íâ® ­¥ Winbond !!!
 
; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà --
; --- 㧭 ñ¬ ¨¤¥­â¨ä¨ª â®à 稯  --
mov al, 0x58
call [IO_Read]
and al, 0xFE ; 0x20 = 0x21, 0x60 = 0x61, etc
111,13 → 111,13
;-----------------------------------
wb_get_temp:
; temp 1
mov al, 0x4e ; Âûáèðàåì bank 1
mov al, 0x4e ; ‚롨ࠥ¬ bank 1
mov bl, 1
call [IO_Write]
mov al, 0x50 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
mov al, 0x50 ; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë)
call [IO_Read]
mov [hwm_temps], al
mov al, 0x51 ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (x.5`C)
mov al, 0x51 ; ®«ãç ¥¬ ¬« ¤è¨© ¡ ©â ⥬¯¥à âãàë (x.5`C)
call [IO_Read]
cmp al, 0 ; if al == 0 then x.0, else x.5
je @f
125,21 → 125,21
@@: mov [hwm_temps + 1], al
 
; temp 2 (3 SYSTIN)
mov al, 0x4e ; Âûáèðàåì bank 0
mov al, 0x4e ; ‚롨ࠥ¬ bank 0
xor bl, bl
call [IO_Write]
mov al, 0x27 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
mov al, 0x27 ; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë)
call [IO_Read]
mov [hwm_temps + 2], al
 
; temp 3 (VTIN)
mov al, 0x4e ; Âûáèðàåì bank 2
mov al, 0x4e ; ‚롨ࠥ¬ bank 2
mov bl, 2
call [IO_Write]
mov al, 0x50 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
mov al, 0x50 ; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë)
call [IO_Read]
mov [hwm_temps + 4], al
mov al, 0x51 ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (x.5`C)
mov al, 0x51 ; ®«ãç ¥¬ ¬« ¤è¨© ¡ ©â ⥬¯¥à âãàë (x.5`C)
call [IO_Read]
cmp al, 0 ; if al == 0 then x.0, else x.5
je @f
146,7 → 146,7
mov al, 5
@@: mov [hwm_temps + 5], al
 
; Ïðîâåðêà òåìïåðàòóðû, äàò÷èêè ñ 127.5`C íå èñïîëüçóþòñÿ
; à®¢¥àª  ⥬¯¥à âãàë, ¤ â稪¨ á 127.5`C ­¥ ¨á¯®«ì§ãîâáï
mov ecx, 3
mov esi, hwm_temps
wb_check_temp:
155,7 → 155,7
mov word[esi + ecx * 2 - 2], 0
wb_temp_ok:
loop wb_check_temp
 
ret
;-----------------------------------
wb_get_fan_speed:
166,7 → 166,7
shr al, 4
mov ebx, 1
mov cl, al
shl ebx, cl ; <- div1
shl ebx, cl ; <- div1
xor eax, eax
mov al, 0x28
call [IO_Read]
178,15 → 178,17
mov ebx, eax
mov eax, 1350000
xor edx, edx
test ebx, ebx
jz .div0
div ebx
mov [hwm_rpms], eax
 
mov al, 0x47
call [IO_Read]
shr al, 6
mov ebx, 1
mov cl, al
shl ebx, cl ; <- div2
shl ebx, cl ; <- div2
xor eax, eax
mov al, 0x29
call [IO_Read]
193,20 → 195,23
cmp al, 255
jne @f
xor eax, eax
.div0:
ret
@@: mul ebx
mov ebx, eax
mov eax, 1350000
xor edx, edx
test ebx, ebx
jz .div0
div ebx
mov [hwm_rpms + 4], eax
 
mov al, 0x4B
call [IO_Read]
shr al, 6
mov ebx, 1
mov cl, al
shl ebx, cl ; <- div3
shl ebx, cl ; <- div3
xor eax, eax
mov al, 0x2A
call [IO_Read]
218,6 → 223,8
mov ebx, eax
mov eax, 1350000
xor edx, edx
test ebx, ebx
jz .div0
div ebx
mov [hwm_rpms + 8], eax
 
229,7 → 236,7
and al, 3
mov ebx, 1
mov cl, al
shl ebx, cl ; <- div4, äîïèñàòü ó÷¸ò DIV_B2
shl ebx, cl ; <- div4, ¤®¯¨á âì ãçñâ DIV_B2
xor eax, eax
mov al, 0x3F
call [IO_Read]
241,9 → 248,11
mov ebx, eax
mov eax, 1350000
xor edx, edx
test ebx, ebx
jz .div0
div ebx
mov [hwm_rpms + 12], eax
 
mov al, 0x59
call [IO_Read]
shr al, 2
250,9 → 259,9
and al, 3
mov ebx, 1
mov cl, al
shl ebx, cl ; <- div5, äîïèñàòü ó÷¸ò DIV_B2
shl ebx, cl ; <- div5, ¤®¯¨á âì ãçñâ DIV_B2
xor eax, eax
mov al, 0x4e ; Âûáèðàåì bank 5
mov al, 0x4e ; ‚롨ࠥ¬ bank 5
mov bl, 5
call [IO_Write]
mov al, 0x53
265,6 → 274,8
mov ebx, eax
mov eax, 1350000
xor edx, edx
test ebx, ebx
jz .wb_f_e
div ebx
mov [hwm_rpms + 16], eax
 
272,7 → 283,7
ret
;-----------------------------------
wb_get_volt:
;mov edi, wb_coeff ; <-- possible differences for miscellaneous chip
;mov edi, wb_coeff ; <-- possible differences for miscellaneous chip
mov esi, hwm_voltages
xor ecx, ecx
@@: mov eax, ecx
296,8 → 307,8
dd 0.0608 ; Vin2 (+12V)
dd 0.0822857142857145 ; -12V
dd -0.02408 ; -5V ; false
 
wb_n12v_const dd -14.9142857142857