Subversion Repositories Kolibri OS

Rev

Rev 510 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 510 Rev 3008
1
;
1
;
2
; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
2
; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
3
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
3
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
4
; All Right Reserved
4
; All Right Reserved
5
 
5
 
6
;
6
;
7
; HWM abstract interface, provide:
7
; HWM abstract interface, provide:
8
;  hwm_init, hwm_get_params, hwm_enable, hwm_temps, hwm_rpms, hwm_voltages, hwm_chip_name
8
;  hwm_init, hwm_get_params, hwm_enable, hwm_temps, hwm_rpms, hwm_voltages, hwm_chip_name
9
;
9
;
10
 
10
 
11
 
11
 
12
if SMBus eq yes
12
if SMBus eq yes
13
 include	'SMBus.inc'
13
 include	'SMBus.inc'
14
end if
14
end if
15
 
15
 
16
include		'hwm_wb.inc'
16
include		'hwm_wb.inc'
17
include		'hwm_it87.inc'
17
include		'hwm_it87.inc'
18
include		'hwm_uguru.inc'
18
include		'hwm_uguru.inc'
19
;include	'hwm_via686.inc'
19
;include	'hwm_hudson.inc'
20
 
20
 
21
uglobal
21
uglobal
22
	hwm_enable:
22
	hwm_enable:
23
		dd	0		; 0 - no, 1 - Winbond, 2 - ITE, ... see HWMProbe list
23
		dd	0		; 0 - no, 1 - Winbond, 2 - ITE, ... see HWMProbe list
24
	hwm_temps:
24
	hwm_temps:
25
		db	0,0, 0,0, 0,0	; ãðàäóñ, äåñÿòûå, ãðàäóñ, ...
25
		db	0,0, 0,0, 0,0	; ãðàäóñ, äåñÿòûå, ãðàäóñ, ...
26
	hwm_rpms:
26
	hwm_rpms:
27
		dd	0, 0, 0, 0, 0	; fan1, fan2, fan3, ...
27
		dd	0, 0, 0, 0, 0	; fan1, fan2, fan3, ...
28
	hwm_voltages:
28
	hwm_voltages:
29
	Vcore 	dd	0.0
29
	Vcore 	dd	0.0
30
	Vin0	dd	0.0
30
	Vin0	dd	0.0
31
	Vin1	dd	0.0
31
	Vin1	dd	0.0
32
	AVcc	dd	0.0
32
	AVcc	dd	0.0
33
	Vin2	dd	0.0
33
	Vin2	dd	0.0
34
	V12	dd	0.0
34
	V12	dd	0.0
35
	V5	dd	0.0
35
	V5	dd	0.0
36
	vol8	dd	0.0
36
	vol8	dd	0.0
37
	vol9	dd	0.0
37
	vol9	dd	0.0
38
	vol10	dd	0.0
38
	vol10	dd	0.0
39
	vol11	dd	0.0
39
	vol11	dd	0.0
40
	acc_type db	0		; 0 - ISA Bus, 1 - SMBus, 2 - other
40
	acc_type db	0		; 0 - ISA Bus, 1 - SMBus, 2 - other
41
endg
41
endg
42
 
42
 
43
IO_Read		dd	isaRead		; In : al - addr, out : al - value
43
IO_Read		dd	isaRead		; In : al - addr, out : al - value
44
IO_Write	dd	isaWrite	; In : al - addr, bl - value
44
IO_Write	dd	isaWrite	; In : al - addr, bl - value
45
 
45
 
46
hwm_unk		db	'Not found', 0
46
hwm_unk		db	'Not found', 0
47
hwm_chip_name	dd	hwm_unk
47
hwm_chip_name	dd	hwm_unk
48
 
48
 
49
; NOTE !!!
49
; NOTE !!!
50
; HWMProbe - ñïèñîê, ïðîöåäóð ïðîâåðêè ÷èïîâ, çàêàí÷èâàåòñÿ
50
; HWMProbe - ñïèñîê, ïðîöåäóð ïðîâåðêè ÷èïîâ, çàêàí÷èâàåòñÿ
51
; íóëåâûì äâîéíûì ñëîâîì
51
; íóëåâûì äâîéíûì ñëîâîì
52
; HWMGetParam - ñïèñîê, ïðîöåäóð ïîëó÷åíèÿ ïàðàìåòðîâ
52
; HWMGetParam - ñïèñîê, ïðîöåäóð ïîëó÷åíèÿ ïàðàìåòðîâ
53
; îáà ýòè ñïèñêà äîëæíû ñîîòâåòñòâîâàòü äðóã äðóãó ïî
53
; îáà ýòè ñïèñêà äîëæíû ñîîòâåòñòâîâàòü äðóã äðóãó ïî
54
; ïî ïîðÿäêó ïðîöåäóð
54
; ïî ïîðÿäêó ïðîöåäóð
-
 
55
HWMProbe:	
55
HWMProbe:	dd	wb_init
56
        dd	wb_init
56
		dd	it87_init
57
		dd	it87_init
57
		dd	uGuru_init
58
		dd	uGuru_init
-
 
59
;        dd  hudson_init
58
		dd	0		; <- êîíåö ñïèñêà
60
		dd	0		; <- êîíåö ñïèñêà
-
 
61
		
59
		
62
HWMGetParam:	
60
HWMGetParam:	dd	wb_getparam
63
        dd	wb_getparam
61
		dd	it87_getparam
64
		dd	it87_getparam
-
 
65
		dd	uGuru_getparam
62
		dd	uGuru_getparam
66
;        dd  hudson_getparam
63
		
67
		
64
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
68
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
65
hwm_init:
69
hwm_init:
66
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
70
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
67
	pusha
71
	pusha
68
	; Èùåì äàò÷èêè íà øèíå ISA
72
	; Èùåì äàò÷èêè íà øèíå ISA
69
	call	isaInit
73
	call	isaInit
70
	jc	@f
74
	jc	@f
71
	call	chips_probe
75
	call	chips_probe
72
	cmp	byte[hwm_enable], 0
76
	cmp	byte[hwm_enable], 0
73
	jne	.exit
77
	jne	.exit
74
@@:	call	isaClose
78
@@:	call	isaClose
75
 
79
 
76
	; Èùåì äàò÷èêè íà øèíå SMBus
80
	; Èùåì äàò÷èêè íà øèíå SMBus
77
	inc	byte [acc_type]
81
	inc	byte [acc_type]
78
if SMBus eq yes
82
if SMBus eq yes
79
	call	smbInit
83
	call	smbInit
80
	jc	@f
84
	jc	@f
81
	call	chips_probe
85
	call	chips_probe
82
	cmp	byte[hwm_enable], 0
86
	cmp	byte[hwm_enable], 0
83
	jne	.exit
87
	jne	.exit
84
@@:	call	smbClose
88
@@:	call	smbClose
85
end if
89
end if
86
	; Èùåì äàò÷èêè íà ñîáñòâåííîé øèíå (LPC etc)
90
	; Èùåì äàò÷èêè íà ñîáñòâåííîé øèíå (LPC etc)
87
	inc	byte [acc_type]
91
	inc	byte [acc_type]
88
	call	chips_probe
92
	call	chips_probe
89
 
93
 
90
.exit:	popa
94
.exit:	popa
91
	ret
95
	ret
92
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=	
96
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=	
93
chips_probe:
97
chips_probe:
94
; Íàõîäèì íóæíûé ÷èï
98
; Íàõîäèì íóæíûé ÷èï
95
; Out : hwm_enable = !0 if found, else hwm_enable not changed
99
; Out : hwm_enable = !0 if found, else hwm_enable not changed
96
	cld			; Paranoia
100
	cld			; Paranoia
97
	mov	esi, HWMProbe
101
	mov	esi, HWMProbe
98
@@:	lodsd
102
@@:	lodsd
99
	test	eax, eax
103
	test	eax, eax
100
	jz	@f		; Êîíåö ñïèñêà
104
	jz	@f		; Êîíåö ñïèñêà
101
	call	eax
105
	call	eax
102
	jc	@b
106
	jc	@b
103
	sub	esi, HWMProbe
107
	sub	esi, HWMProbe
104
	shr	esi, 2
108
	shr	esi, 2
105
	mov	dword[hwm_enable], esi
109
	mov	dword[hwm_enable], esi
106
@@:	ret
110
@@:	ret
107
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
111
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
108
hwm_get_params:
112
hwm_get_params:
109
	pusha
113
	pusha
110
	mov	eax, [hwm_enable]
114
	mov	eax, [hwm_enable]
111
	test	eax, eax
115
	test	eax, eax
112
	jz	@f
116
	jz	@f
113
	dec	eax
117
	dec	eax
114
	sal	eax, 2
118
	sal	eax, 2
115
	call	dword[eax + HWMGetParam]
119
	call	dword[eax + HWMGetParam]
116
@@:	popa
120
@@:	popa
117
	ret
121
	ret
118
 
122
 
119
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
123
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
120
; ISA interface
124
; ISA interface
121
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
125
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
122
isaRead:
126
isaRead:
123
	push	edx
127
	push	edx
124
	mov	dx, 0x295
128
	mov	dx, 0x295
125
	out	dx, al
129
	out	dx, al
126
	inc	edx
130
	inc	edx
127
	in	al, dx
131
	in	al, dx
128
	pop	edx
132
	pop	edx
129
	ret
133
	ret
130
	
134
	
131
isaWrite:
135
isaWrite:
132
	push	edx
136
	push	edx
133
	mov	dx, 0x295
137
	mov	dx, 0x295
134
	out	dx, al
138
	out	dx, al
135
	inc	edx
139
	inc	edx
136
	mov	al, bl
140
	mov	al, bl
137
	out	dx, al
141
	out	dx, al
138
	pop	edx
142
	pop	edx
139
	ret
143
	ret
140
 
144
 
141
isaInit:
145
isaInit:
142
	; Out : CF = 0 if Ok
146
	; Out : CF = 0 if Ok
143
	; ðåçåðâèðóåì 0x295 è 0x296 ïîðòû
147
	; ðåçåðâèðóåì 0x295 è 0x296 ïîðòû
144
	mov	ecx, 0x295
148
	mov	ecx, 0x295
145
	mov	edx, 0x296
149
	mov	edx, 0x296
146
	call	ReservePorts
150
	call	ReservePorts
147
	; jc	@f
151
	; jc	@f
148
	; mov	[IO_Read], isaRead
152
	; mov	[IO_Read], isaRead
149
	; mov	[IO_Write], isaWrite
153
	; mov	[IO_Write], isaWrite
150
	; @@:	
154
	; @@:	
151
	ret
155
	ret
152
 
156
 
153
isaClose:
157
isaClose:
154
	; îñâîáîæäàåì 0x295 è 0x296 ïîðòû
158
	; îñâîáîæäàåì 0x295 è 0x296 ïîðòû
155
	mov	ecx, 0x295
159
	mov	ecx, 0x295
156
	mov	edx, 0x296
160
	mov	edx, 0x296
157
	call	FreePorts
161
	call	FreePorts
158
	ret
162
	ret