Subversion Repositories Kolibri OS

Rev

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

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