Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3007 art_zh 1
;
2
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
3
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
4
; All Right Reserved
5
 
6
;
7
; HWM abstract interface, provide:
8
;  hwm_init, hwm_get_params, hwm_enable, hwm_temps, hwm_rpms, hwm_voltages, hwm_chip_name
9
;
10
 
11
 
12
if SMBus eq yes
13
 include	'SMBus.inc'
14
end if
15
 
16
include 	'hwm_hudson.inc'
17
;include         'hwm_it87.inc'
18
;include         'hwm_uguru.inc'
19
;include        'hwm_via686.inc'
20
 
21
uglobal
22
	hwm_enable:
23
		dd	1		; 0 - no, 1 - Hudson,  ... see HWMProbe list
24
	hwm_temps:
25
		db	0,0, 0,0, 0,0	; градус, десятые, градус, ...
26
	hwm_rpms:
27
		dd	0, 0, 0, 0, 0	; fan1, fan2, fan3, ...
28
	hwm_voltages:
29
	Vcore	dd	0.0
30
	Vin0	dd	0.0
31
	Vin1	dd	0.0
32
	AVcc	dd	0.0
33
	Vin2	dd	0.0
34
	V12	dd	0.0
35
	V5	dd	0.0
36
	vol8	dd	0.0
37
	vol9	dd	0.0
38
	vol10	dd	0.0
39
	vol11	dd	0.0
40
	acc_type db	0		; 0 - ISA Bus, 1 - SMBus, 2 - other
41
endg
42
 
43
IO_Read 	dd	pm2read 	; In : al - addr, out : al - value
44
IO_Write	dd	pm2write	; In : al - addr, bl - value
45
 
46
hwm_unk 	db	'Not found', 0
47
hwm_chip_name	dd	hwm_unk
48
 
49
; NOTE !!!
50
; HWMProbe - список, процедур проверки чипов, заканчивается
51
; нулевым двойным словом
52
; HWMGetParam - список, процедур получения параметров
53
; оба эти списка должны соответствовать друг другу по
54
; по порядку процедур
55
HWMProbe:
56
		dd	hudson_init
57
;                dd      wb_init
58
;                dd      it87_init
59
;                dd      uGuru_init
60
		dd	0		; <- конец списка
61
 
62
HWMGetParam:
63
		dd	hudson_getparam
64
;                dd      wb_getparam
65
;                dd      it87_getparam
66
;                dd      uGuru_getparam
67
 
68
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
69
hwm_init:
70
; Проверка наличия и инициализация
71
	pusha
72
	; Ищем датчики на шине ISA
73
;        call    isaInit
74
;        jc      @f
75
	call	chips_probe
76
;        cmp     byte[hwm_enable], 0
77
;        jne     .exit
78
;@@:     call    isaClose
79
 
80
	; Ищем датчики на шине SMBus
81
;        inc     byte [acc_type]
82
;if SMBus eq yes
83
;        call    smbInit
84
;        jc      @f
85
;        call    chips_probe
86
;        cmp     byte[hwm_enable], 0
87
;        jne     .exit
88
;@@:     call    smbClose
89
;end if
90
	; Ищем датчики на собственной шине (LPC etc)
91
;        inc     byte [acc_type]
92
;        call    chips_probe
93
	mov  [acc_type], 2	; bus type = 'other'
94
 
95
.exit:	popa
96
	ret
97
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
98
chips_probe:
99
; Находим нужный чип
100
; Out : hwm_enable = !0 if found, else hwm_enable not changed
101
	cld			; Paranoia
102
	mov	esi, HWMProbe
103
@@:	lodsd
104
	test	eax, eax
105
	jz	@f		; Конец списка
106
	call	eax
107
	jc	@b
108
	sub	esi, HWMProbe
109
	shr	esi, 2
110
	mov	dword[hwm_enable], esi
111
@@:	ret
112
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
113
hwm_get_params:
114
	pusha
115
	mov	eax, [hwm_enable]
116
	test	eax, eax
117
	jz	@f
118
	dec	eax
119
	sal	eax, 2
120
	call	dword[eax + HWMGetParam]
121
@@:	popa
122
	ret
123
 
124
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
125
; ISA interface
126
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
127
pm2read:
128
	push	edx
129
	mov	dx, 0xCD0	;  0x295
130
	out	dx, al
131
	inc	edx
132
	in	al, dx
133
	pop	edx
134
	ret
135
 
136
pm2write:
137
	push	edx
138
	mov	dx, 0xCD0	;    295
139
	out	dx, al
140
	inc	edx
141
	mov	al, bl
142
	out	dx, al
143
	pop	edx
144
	ret
145
 
146
isaInit:
147
	ret
148
 
149
isaClose:
150
	ret