From 0575dbf098d06f72bdaddf8fe34caa400c756b17 Mon Sep 17 00:00:00 2001 From: "Iliya Mihailov (Ghost)" Date: Tue, 19 Dec 2006 21:45:25 +0000 Subject: [PATCH] Support for Winbond W83627DHG, W83627EHF, W83627EHG git-svn-id: svn://kolibrios.org@239 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/system/gmon/gmon.asm | 3 +- programs/system/gmon/hwm_wb.inc | 102 ++++++++++++++++++++++++++++++-- programs/system/gmon/readme.txt | 2 +- 3 files changed, 100 insertions(+), 7 deletions(-) diff --git a/programs/system/gmon/gmon.asm b/programs/system/gmon/gmon.asm index c7b20661f4..b968328b49 100644 --- a/programs/system/gmon/gmon.asm +++ b/programs/system/gmon/gmon.asm @@ -43,6 +43,7 @@ ; 24/08/2006 - добавленна частота процессора ; 10/09/2006 - bugfix ; 25/11/2006 - добавлен ABIT uGuru +; 20/12/2006 - W83627DHG, W83627EHF, W83627EHG ; ; Эй! У меня нет много времени. @@ -507,7 +508,7 @@ about_tab: DATA act_tab db 2 ; Номер активной вкладки tab_lab db 'Info Tests Configs About' -title db 'Ghost Monitor v0.4 [25/11/06]' +title db 'Ghost Monitor v0.4 [20/12/06]' msgs_mon mls \ 'CPU Load (%)',\ diff --git a/programs/system/gmon/hwm_wb.inc b/programs/system/gmon/hwm_wb.inc index 6da0867b59..e01c9a07e3 100644 --- a/programs/system/gmon/hwm_wb.inc +++ b/programs/system/gmon/hwm_wb.inc @@ -3,16 +3,25 @@ ; ; ; Дописать получение инфы с других датчиков +; 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 +; D - SuperIO supporting Intel* PECI* & SST* interfaces, U - UART +; ; | Chip name | ID Vin Fanin PWM Temp ISA SMBus msg_wb27HF: db 8, 'W83627HF' ; 0x20|0x21 9 3 2 3 + + msg_wb27THF: db 9, 'W83627THF' ; 0x90|0x91 7 3 3 3 + + msg_wb37THF: db 9, 'W83637THF' ; 0x80 7 3 3 3 + + msg_wb97HF: db 8, 'W83697HF' ; 0x60|0x61 8 2 2 2 + - -msg_wb27EHF: db 11,'W83627EHF-A' ; 0x88 msg_wb27THFA: db 11,'W83627THF-A' ; 0x1A + +msg_w83627DHG: db 9, 'W83627DHG' ; 0xC1 ? 5 ? 3 + + +msg_w83627EHF: db 9, 'W83627EHF' ; 0x88 10 5 3 3 + + +msg_w83627EHG: db 9, 'W83627EHG' ; 0xA1 10 5 3 3 + + + + ; db 7, 'W83781D' ; 0x10|0x11 7 3 3 + + ; db 7, 'W83782D' ; 0x30 9 3 3 + + ; db 8, 'AS99127F' ; 0x31 7 3 3 - + @@ -20,6 +29,10 @@ msg_wb27THFA: db 11,'W83627THF-A' ; 0x1A ; db 7, 'W83791D' ; 0x70|0x71 10 5 3 - + msg_wbunk: db 15,'Unknown Winbond' ; other, non zero ;-) +uglobal +wb_fans_num db 0 +endg + ;----------------------------------- wb_init: ; Проверка наличия и инициализация @@ -40,11 +53,12 @@ wb_init: call [IO_Read] cmp ax, 0xa35c jne wb_no ; это не Winbond !!! - + ; --- узнаём идентификатор чипа -- mov al, 0x58 call [IO_Read] and al, 0xFE ; 0x20 = 0x21, 0x60 = 0x61, etc + mov byte[wb_fans_num], 3 mov edx, msg_wb27HF cmp al, 0x20 je @f @@ -57,12 +71,20 @@ wb_init: mov edx, msg_wb97HF cmp al, 0x60 je @f - mov edx, msg_wb27EHF - cmp al, 0x88 - je @f mov edx, msg_wb27THFA cmp al, 0x1A je @f + mov byte[wb_fans_num], 5 + mov edx, msg_w83627EHF + cmp al, 0x88 + je @f + mov edx, msg_w83627EHG + cmp al, 0xA0 + je @f + mov edx, msg_w83627DHG + cmp al, 0xC0 + je @f + mov byte[wb_fans_num], 3 mov edx, msg_wbunk @@: mov [hwm_chip_name], edx clc @@ -153,6 +175,7 @@ wb_get_fan_speed: xor edx, edx div ebx mov [hwm_rpms], eax + mov al, 0x47 call [IO_Read] shr al, 6 @@ -172,6 +195,75 @@ wb_get_fan_speed: xor edx, edx 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 + xor eax, eax + mov al, 0x2A + call [IO_Read] + cmp al, 255 + jne @f + xor eax, eax + ret +@@: mul ebx + mov ebx, eax + mov eax, 1350000 + xor edx, edx + div ebx + mov [hwm_rpms + 8], eax + + cmp byte[wb_fans_num], 3 + jna .wb_f_e + + mov al, 0x59 + call [IO_Read] + and al, 3 + mov ebx, 1 + mov cl, al + shl ebx, cl ; <- div4, дописать учёт DIV_B2 + xor eax, eax + mov al, 0x3F + call [IO_Read] + cmp al, 255 + jne @f + xor eax, eax + ret +@@: mul ebx + mov ebx, eax + mov eax, 1350000 + xor edx, edx + div ebx + mov [hwm_rpms + 12], eax + + mov al, 0x59 + call [IO_Read] + shr al, 2 + and al, 3 + mov ebx, 1 + mov cl, al + shl ebx, cl ; <- div5, дописать учёт DIV_B2 + xor eax, eax + mov al, 0x4e ; Выбираем bank 5 + mov bl, 5 + call [IO_Write] + mov al, 0x53 + call [IO_Read] + cmp al, 255 + jne @f + xor eax, eax + ret +@@: mul ebx + mov ebx, eax + mov eax, 1350000 + xor edx, edx + div ebx + mov [hwm_rpms + 16], eax + +.wb_f_e: ret ;----------------------------------- wb_get_volt: diff --git a/programs/system/gmon/readme.txt b/programs/system/gmon/readme.txt index fe27dbdba2..c740dea58b 100644 --- a/programs/system/gmon/readme.txt +++ b/programs/system/gmon/readme.txt @@ -1,7 +1,7 @@ Ghost Monitor Автор : Михайлов Илья Андреевич aka Ghost -Версия : 0.4 от 25/11/06 +Версия : 0.4 ОС : для полного функционирования скачайте последнне ядро, или последний дистрибутив. files : svn://kolibrios.org/programs/system/gmon/ http://iam.gorodok.net/Gmon.zip