Subversion Repositories Kolibri OS

Rev

Rev 510 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
223 Ghost 1
;
313 Ghost 2
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
3
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
4
; All Right Reserved
5
 
6
;
223 Ghost 7
; HWM abstract interface, provide:
8
;  hwm_init, hwm_get_params, hwm_enable, hwm_temps, hwm_rpms, hwm_voltages, hwm_chip_name
9
;
205 heavyiron 10
 
223 Ghost 11
 
12
if SMBus eq yes
13
 include	'SMBus.inc'
14
end if
15
 
205 heavyiron 16
include		'hwm_wb.inc'
17
include		'hwm_it87.inc'
223 Ghost 18
include		'hwm_uguru.inc'
3008 art_zh 19
;include	'hwm_hudson.inc'
205 heavyiron 20
 
21
uglobal
223 Ghost 22
	hwm_enable:
23
		dd	0		; 0 - no, 1 - Winbond, 2 - ITE, ... 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:
205 heavyiron 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
223 Ghost 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
205 heavyiron 41
endg
42
 
223 Ghost 43
IO_Read		dd	isaRead		; In : al - addr, out : al - value
44
IO_Write	dd	isaWrite	; In : al - addr, bl - value
45
 
510 Ghost 46
hwm_unk		db	'Not found', 0
205 heavyiron 47
hwm_chip_name	dd	hwm_unk
48
 
223 Ghost 49
; NOTE !!!
50
; HWMProbe - список, процедур проверки чипов, заканчивается
51
; нулевым двойным словом
52
; HWMGetParam - список, процедур получения параметров
53
; оба эти списка должны соответствовать друг другу по
54
; по порядку процедур
3008 art_zh 55
HWMProbe:
56
        dd	wb_init
223 Ghost 57
		dd	it87_init
58
		dd	uGuru_init
3008 art_zh 59
;        dd  hudson_init
223 Ghost 60
		dd	0		; <- конец списка
61
 
3008 art_zh 62
HWMGetParam:
63
        dd	wb_getparam
223 Ghost 64
		dd	it87_getparam
65
		dd	uGuru_getparam
3008 art_zh 66
;        dd  hudson_getparam
223 Ghost 67
 
68
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
205 heavyiron 69
hwm_init:
70
; Проверка наличия и инициализация
71
	pusha
223 Ghost 72
	; Ищем датчики на шине ISA
73
	call	isaInit
74
	jc	@f
75
	call	chips_probe
76
	cmp	byte[hwm_enable], 0
77
	jne	.exit
78
@@:	call	isaClose
205 heavyiron 79
 
223 Ghost 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
 
94
.exit:	popa
95
	ret
96
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
97
chips_probe:
98
; Находим нужный чип
99
; Out : hwm_enable = !0 if found, else hwm_enable not changed
100
	cld			; Paranoia
101
	mov	esi, HWMProbe
102
@@:	lodsd
205 heavyiron 103
	test	eax, eax
223 Ghost 104
	jz	@f		; Конец списка
105
	call	eax
106
	jc	@b
107
	sub	esi, HWMProbe
108
	shr	esi, 2
109
	mov	dword[hwm_enable], esi
110
@@:	ret
111
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
112
hwm_get_params:
113
	pusha
114
	mov	eax, [hwm_enable]
115
	test	eax, eax
116
	jz	@f
117
	dec	eax
118
	sal	eax, 2
119
	call	dword[eax + HWMGetParam]
120
@@:	popa
205 heavyiron 121
	ret
122
 
223 Ghost 123
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
124
; ISA interface
125
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
126
isaRead:
127
	push	edx
128
	mov	dx, 0x295
129
	out	dx, al
130
	inc	edx
131
	in	al, dx
132
	pop	edx
133
	ret
205 heavyiron 134
 
223 Ghost 135
isaWrite:
136
	push	edx
137
	mov	dx, 0x295
138
	out	dx, al
139
	inc	edx
140
	mov	al, bl
141
	out	dx, al
142
	pop	edx
205 heavyiron 143
	ret
223 Ghost 144
 
145
isaInit:
146
	; Out : CF = 0 if Ok
147
	; резервируем 0x295 и 0x296 порты
148
	mov	ecx, 0x295
149
	mov	edx, 0x296
150
	call	ReservePorts
151
	; jc	@f
152
	; mov	[IO_Read], isaRead
153
	; mov	[IO_Write], isaWrite
154
	; @@:
205 heavyiron 155
	ret
223 Ghost 156
 
157
isaClose:
158
	; освобождаем 0x295 и 0x296 порты
159
	mov	ecx, 0x295
160
	mov	edx, 0x296
161
	call	FreePorts
205 heavyiron 162
	ret