Subversion Repositories Kolibri OS

Rev

Rev 205 | Rev 313 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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