Subversion Repositories Kolibri OS

Rev

Rev 223 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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