Subversion Repositories Kolibri OS

Rev

Rev 223 | Rev 510 | Go to most recent revision | 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'
19
;include	'hwm_via686.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
 
205 heavyiron 46
hwm_unk		db	9, 'Not found'
47
hwm_chip_name	dd	hwm_unk
48
 
223 Ghost 49
; NOTE !!!
50
; HWMProbe - список, процедур проверки чипов, заканчивается
51
; нулевым двойным словом
52
; HWMGetParam - список, процедур получения параметров
53
; оба эти списка должны соответствовать друг другу по
54
; по порядку процедур
55
HWMProbe:	dd	wb_init
56
		dd	it87_init
57
		dd	uGuru_init
58
		dd	0		; <- конец списка
59
 
60
HWMGetParam:	dd	wb_getparam
61
		dd	it87_getparam
62
		dd	uGuru_getparam
63
 
64
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
205 heavyiron 65
hwm_init:
66
; Проверка наличия и инициализация
67
	pusha
223 Ghost 68
	; Ищем датчики на шине ISA
69
	call	isaInit
70
	jc	@f
71
	call	chips_probe
72
	cmp	byte[hwm_enable], 0
73
	jne	.exit
74
@@:	call	isaClose
205 heavyiron 75
 
223 Ghost 76
	; Ищем датчики на шине SMBus
77
	inc	byte [acc_type]
78
if SMBus eq yes
79
	call	smbInit
80
	jc	@f
81
	call	chips_probe
82
	cmp	byte[hwm_enable], 0
83
	jne	.exit
84
@@:	call	smbClose
85
end if
86
	; Ищем датчики на собственной шине (LPC etc)
87
	inc	byte [acc_type]
88
	call	chips_probe
89
 
90
.exit:	popa
91
	ret
92
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
93
chips_probe:
94
; Находим нужный чип
95
; Out : hwm_enable = !0 if found, else hwm_enable not changed
96
	cld			; Paranoia
97
	mov	esi, HWMProbe
98
@@:	lodsd
205 heavyiron 99
	test	eax, eax
223 Ghost 100
	jz	@f		; Конец списка
101
	call	eax
102
	jc	@b
103
	sub	esi, HWMProbe
104
	shr	esi, 2
105
	mov	dword[hwm_enable], esi
106
@@:	ret
107
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
108
hwm_get_params:
109
	pusha
110
	mov	eax, [hwm_enable]
111
	test	eax, eax
112
	jz	@f
113
	dec	eax
114
	sal	eax, 2
115
	call	dword[eax + HWMGetParam]
116
@@:	popa
205 heavyiron 117
	ret
118
 
223 Ghost 119
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
120
; ISA interface
121
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
122
isaRead:
123
	push	edx
124
	mov	dx, 0x295
125
	out	dx, al
126
	inc	edx
127
	in	al, dx
128
	pop	edx
129
	ret
205 heavyiron 130
 
223 Ghost 131
isaWrite:
132
	push	edx
133
	mov	dx, 0x295
134
	out	dx, al
135
	inc	edx
136
	mov	al, bl
137
	out	dx, al
138
	pop	edx
205 heavyiron 139
	ret
223 Ghost 140
 
141
isaInit:
142
	; Out : CF = 0 if Ok
143
	; резервируем 0x295 и 0x296 порты
144
	mov	ecx, 0x295
145
	mov	edx, 0x296
146
	call	ReservePorts
147
	; jc	@f
148
	; mov	[IO_Read], isaRead
149
	; mov	[IO_Write], isaWrite
150
	; @@:
205 heavyiron 151
	ret
223 Ghost 152
 
153
isaClose:
154
	; освобождаем 0x295 и 0x296 порты
155
	mov	ecx, 0x295
156
	mov	edx, 0x296
157
	call	FreePorts
205 heavyiron 158
	ret