Subversion Repositories Kolibri OS

Rev

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

Rev 205 Rev 223
Line 4... Line 4...
4
;
4
;
5
;    Äîïèñàòü ïîëó÷åíèå èíôû ñ äðóãèõ äàò÷èêîâ
5
;    Äîïèñàòü ïîëó÷åíèå èíôû ñ äðóãèõ äàò÷èêîâ
6
;  + 16.03.06 Èñïðàâëåíà îøèáêà â wb_get_cpu_temper ñ äåñÿòûõ ãðàäóñà (áûëî 30.5 30.0 31.5 ...)
6
;  + 16.03.06 Èñïðàâëåíà îøèáêà â wb_get_cpu_temper ñ äåñÿòûõ ãðàäóñà (áûëî 30.5 30.0 31.5 ...)
7
;
7
;
8
;
8
;
9
uglobal
-
 
10
wb_chip_id:	db 0    		; Èäåíòèôèêàòîð ÷èïà (åñëè íàøëè)
-
 
11
endg
-
 
12
;		      | Chip name	| ID		Vin	Fanin	PWM	Temp
9
;		      | Chip name	| ID		Vin	Fanin	PWM	Temp   ISA   SMBus
13
msg_wb27HF:	db 8, 'W83627HF'	; 0x20|0x21	 9	  3	 2	 3
10
msg_wb27HF:	db 8, 'W83627HF'	; 0x20|0x21	 9	  3	 2	 3      +      +
14
msg_wb27THF:	db 9, 'W83627THF'	; 0x90|0x91	 7	  3	 3	 3
11
msg_wb27THF:	db 9, 'W83627THF'	; 0x90|0x91	 7	  3	 3	 3      +      +
15
msg_wb37THF:	db 9, 'W83637THF'	; 0x80		 7	  3	 3	 3
12
msg_wb37THF:	db 9, 'W83637THF'	; 0x80		 7	  3	 3	 3      +      +
16
msg_wb97HF:	db 8, 'W83697HF'	; 0x60|0x61	 8	  2	 2	 2
13
msg_wb97HF:	db 8, 'W83697HF'	; 0x60|0x61	 8	  2	 2	 2      +      -
17
msg_wb27EHF:	db 11,'W83627EHF-A'	; 0x88
14
msg_wb27EHF:	db 11,'W83627EHF-A'	; 0x88
18
msg_wb27THFA:	db 11,'W83627THF-A'	; 0x1A
15
msg_wb27THFA:	db 11,'W83627THF-A'	; 0x1A
19
;		db 7, 'W83781D'		; 0x10|0x11	 7	  	 3	 3
16
;		db 7, 'W83781D'		; 0x10|0x11	 7	  	 3	 3      +      +
20
;		db 7, 'W83782D'		; 0x30		 9	   	 3	 3
17
;		db 7, 'W83782D'		; 0x30		 9	   	 3	 3      +      +
21
;		db 8, 'AS99127F'	; 0x31
18
;		db 8, 'AS99127F'	; 0x31           7               3       3      -      +
22
;		db 7, 'W83783S'		; 0x40|0x41	 5-6	   	 3	 1-2
19
;		db 7, 'W83783S'		; 0x40|0x41	 5-6	   	 3	 1-2    -      +
23
;		db 7, 'W83791D'		; 0x70|0x71	 10	   	 5	 3
20
;		db 7, 'W83791D'		; 0x70|0x71	 10	   	 5	 3      -      +
24
msg_wbunk:	db 15,'Unknown Winbond'	; other, non zero ;-)
21
msg_wbunk:	db 15,'Unknown Winbond'	; other, non zero ;-)
Line 25... Line 22...
25
 
22
 
26
;-----------------------------------
23
;-----------------------------------
27
wb_init:
24
wb_init:
28
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
25
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
-
 
26
; OUT - CF = 1 - error
29
; OUT - CF = 1 - error
27
	cmp	byte[acc_type], 2	; Only ISA and SMBus
-
 
28
	jae	wb_no
30
	mov	dx, 0x295
29
 
31
	mov	al, 0x4e
-
 
32
	out	dx, al
-
 
33
	inc	edx
30
	mov	al, 0x4e
34
	xor	al, al
31
	xor	bl, bl
35
	out	dx, al
-
 
36
	dec	edx
32
	call	[IO_Write]
37
	mov	al, 0x4f
33
	mov	al, 0x4f
38
	out	dx, al
-
 
39
	inc	edx
-
 
40
	in	al, dx
34
	call	[IO_Read]
41
	mov	ah, al		;!
-
 
42
	dec	edx
35
	mov	ah, al		;!
43
	mov	al, 0x4e
-
 
44
	out	dx, al
-
 
45
	inc	edx
36
	mov	al, 0x4e
46
	mov	al, 0x80
37
	mov	bl, 0x80
47
	out	dx, al
-
 
48
	dec	edx
38
	call	[IO_Write]	
49
	mov	al, 0x4f
39
	mov	al, 0x4f
50
	out	dx, al
-
 
51
	inc	edx
-
 
52
	in	al, dx
40
	call	[IO_Read]
53
	cmp	ax, 0xa35c
41
	cmp	ax, 0xa35c
-
 
42
	jne	wb_no		; ýòî íå Winbond !!!
54
	jne	wb_no		; ýòî íå Winbond !!!
43
	
55
	dec	edx		; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà --
44
	; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà --
-
 
45
	mov	al, 0x58
-
 
46
	call	[IO_Read]
-
 
47
	and	al, 0xFE	; 0x20 = 0x21, 0x60 = 0x61, etc
56
	mov	al, 0x58
48
	mov	edx, msg_wb27HF
-
 
49
	cmp	al, 0x20
-
 
50
	je	@f
-
 
51
	mov	edx, msg_wb27THF
-
 
52
	cmp	al, 0x90
-
 
53
	je	@f
-
 
54
	mov	edx, msg_wb37THF
-
 
55
	cmp	al, 0x80
-
 
56
	je	@f
-
 
57
	mov	edx, msg_wb97HF
-
 
58
	cmp	al, 0x60
-
 
59
	je	@f
-
 
60
	mov	edx, msg_wb27EHF
57
	out	dx, al
61
	cmp	al, 0x88
-
 
62
	je	@f
58
	inc	edx
63
	mov	edx, msg_wb27THFA
-
 
64
	cmp	al, 0x1A
-
 
65
	je	@f
59
	in	al, dx
66
	mov	edx, msg_wbunk
60
	mov	byte[wb_chip_id], al
67
@@:	mov	[hwm_chip_name], edx
61
	clc
68
	clc
62
	ret
69
	ret
63
wb_no:	stc
70
wb_no:	stc
Line 64... Line 71...
64
	ret
71
	ret
-
 
72
 
-
 
73
;-----------------------------------
-
 
74
wb_getparam:
-
 
75
	call	wb_get_temp
-
 
76
	call	wb_get_fan_speed
-
 
77
	mov	edi, wb_coeff
-
 
78
	call	wb_get_volt
-
 
79
	fld	dword[V12]
-
 
80
	fld	dword[wb_n12v_const]
-
 
81
	faddp	st1, st0
-
 
82
	fstp	dword[V12]
65
 
83
	ret
66
;-----------------------------------
84
;-----------------------------------
67
wb_get_temp:
85
wb_get_temp:
68
	; temp 1
-
 
69
	mov	dx, 0x295	; Âûáèðàåì bank 1
-
 
70
	mov	al, 0x4e
-
 
71
	out	dx, al
86
	; temp 1
72
	inc	edx
87
	mov	al, 0x4e	; Âûáèðàåì bank 1
73
	mov	al, 1
-
 
74
	out	dx, al
88
	mov	bl, 1
75
 
-
 
76
	dec	edx		; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
89
	call	[IO_Write]
77
	mov	al, 0x50
-
 
78
	out	dx, al
-
 
79
	inc	edx
90
	mov	al, 0x50	; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
80
	in	al, dx
91
	call	[IO_Read]
81
	mov	[temps], al
-
 
82
	dec	edx		; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû  (0.5`C)
92
	mov	[hwm_temps], al
83
	mov	al, 0x51
-
 
84
	out	dx, al
93
	mov	al, 0x51	; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû  (x.5`C)
85
	inc	edx
-
 
86
	in	al, dx		; if al == 0 then 0.0, else 0.5
94
	call	[IO_Read]
87
	cmp	al, 0
95
	cmp	al, 0		; if al == 0 then x.0, else x.5
88
	je	@f
96
	je	@f
-
 
97
	mov	al, 5
89
	mov	al, 5
98
@@:	mov	[hwm_temps + 1], al
90
@@:	mov	[temps + 1], al
99
 
91
	; temp 2 (3 SYSTIN)
-
 
92
	dec	edx		; Âûáèðàåì bank 0
-
 
93
	mov	al, 0x4e
-
 
94
	out	dx, al
100
	; temp 2 (3 SYSTIN)
95
	inc	edx
101
	mov	al, 0x4e	; Âûáèðàåì bank 0
96
	mov	al, 0
-
 
97
	out	dx, al
102
	xor	bl, bl
98
 
-
 
99
	dec	edx		; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
103
	call	[IO_Write]
100
	mov	al, 0x27
-
 
101
	out	dx, al
-
 
102
	inc	edx
104
	mov	al, 0x27	; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
-
 
105
	call	[IO_Read]
103
	in	al, dx
106
	mov	[hwm_temps + 2], al
104
	mov	[temps + 2], al
107
	
105
	; temp 3 (VTIN)
-
 
106
	dec	edx		; Âûáèðàåì bank 2
-
 
107
	mov	al, 0x4e
-
 
108
	out	dx, al
108
	; temp 3 (VTIN)
109
	inc	edx
109
	mov	al, 0x4e	; Âûáèðàåì bank 2
110
	mov	al, 2
-
 
111
	out	dx, al
110
	mov	bl, 2
112
 
-
 
113
	dec	edx		; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
111
	call	[IO_Write]
114
	mov	al, 0x50
-
 
115
	out	dx, al
-
 
116
	inc	edx
112
	mov	al, 0x50	; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
117
	in	al, dx
113
	call	[IO_Read]
118
	mov	[temps + 4], al
-
 
119
	dec	edx		; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû  (0.5`C)
114
	mov	[hwm_temps + 4], al
120
	mov	al, 0x51
-
 
121
	out	dx, al
115
	mov	al, 0x51	; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû  (x.5`C)
122
	inc	edx
-
 
123
	in	al, dx		; if al == 0 then 0.0, else 0.5
116
	call	[IO_Read]
124
	cmp	al, 0
117
	cmp	al, 0		; if al == 0 then x.0, else x.5
125
	je	@f
118
	je	@f
-
 
119
	mov	al, 5
126
	mov	al, 5
120
@@:	mov	[hwm_temps + 5], al
127
@@:	mov	[temps + 5], al
121
 
128
	; Ïðîâåðêà òåìïåðàòóðû, äàò÷èêè ñ 127.5`C íå èñïîëüçóþòñÿ
122
	; Ïðîâåðêà òåìïåðàòóðû, äàò÷èêè ñ 127.5`C íå èñïîëüçóþòñÿ
129
	mov	ecx, 3
123
	mov	ecx, 3
130
	mov	esi, temps
124
	mov	esi, hwm_temps
131
wb_check_temp:
125
wb_check_temp:
132
	cmp	word[esi + ecx * 2 - 2], 0x057F
126
	cmp	word[esi + ecx * 2 - 2], 0x057F
133
	jne	wb_temp_ok
127
	jne	wb_temp_ok
Line 138... Line 132...
138
	ret
132
	ret
139
;-----------------------------------
133
;-----------------------------------
140
wb_get_fan_speed:
134
wb_get_fan_speed:
141
	; fan1
135
	; fan1
142
	mov	al, 0x47
136
	mov	al, 0x47
143
	mov	dx, 0x295
137
	call	[IO_Read]
144
	out	dx, al
-
 
145
	inc	edx
-
 
146
	in	al, dx
-
 
147
	and	al, 0x30
138
	and	al, 0x30
148
	shr	al, 4
139
	shr	al, 4
149
	mov	ebx, 1
140
	mov	ebx, 1
150
	mov	cl, al
141
	mov	cl, al
151
	shl	ebx, cl	; <- div1
142
	shl	ebx, cl	; <- div1
152
	dec	edx
-
 
153
	mov	al, 0x28
-
 
154
	out	dx, al
-
 
155
	inc	edx
-
 
156
	xor	eax, eax
143
	xor	eax, eax
157
	in	al, dx
144
	mov	al,  0x28
-
 
145
	call	[IO_Read]
158
	cmp	al, 255
146
	cmp	al, 255
159
	jne	@f
147
	jne	@f
160
	xor	eax, eax
148
	xor	eax, eax	; ???
161
	ret
149
	ret			; ???
162
@@:	mul	ebx
150
@@:	mul	ebx
163
	mov	ebx, eax
151
	mov	ebx, eax
164
	mov	eax, 1350000
152
	mov	eax, 1350000
165
	xor	edx, edx
153
	xor	edx, edx
166
	div	ebx
154
	div	ebx
167
	mov	[rpms], eax
155
	mov	[hwm_rpms], eax
168
 
-
 
169
	mov	al, 0x47
156
	mov	al, 0x47
170
	mov	dx, 0x295
157
	call	[IO_Read]
171
	out	dx, al
-
 
172
	inc	edx
-
 
173
	in	al, dx
-
 
174
	shr	al, 6
158
	shr	al, 6
175
	mov	ebx, 1
159
	mov	ebx, 1
176
	mov	cl, al
160
	mov	cl, al
177
	shl	ebx, cl	; <- div2
161
	shl	ebx, cl	; <- div2
178
	dec	edx
-
 
179
	mov	al, 0x29
-
 
180
	out	dx, al
-
 
181
	inc	edx
-
 
182
	xor	eax, eax
162
	xor	eax, eax
183
	in	al, dx
163
	mov	al,  0x29
-
 
164
	call	[IO_Read]
184
	cmp	al, 255
165
	cmp	al, 255
185
	jne	@f
166
	jne	@f
186
	xor	eax, eax
167
	xor	eax, eax
187
	ret
168
	ret
188
@@:	mul	ebx
169
@@:	mul	ebx
189
	mov	ebx, eax
170
	mov	ebx, eax
190
	mov	eax, 1350000
171
	mov	eax, 1350000
191
	xor	edx, edx
172
	xor	edx, edx
192
	div	ebx
173
	div	ebx
193
	mov	[rpms + 4], eax
174
	mov	[hwm_rpms + 4], eax
194
	ret
175
	ret
195
;-----------------------------------
176
;-----------------------------------
196
wb_get_volt:
177
wb_get_volt:
197
	mov	dx, 0x295
-
 
198
	;mov	edi, vcoeff		; <-- possible differences for miscellaneous chip
178
	;mov	edi, wb_coeff		; <-- possible differences for miscellaneous chip
199
	mov	esi, Vcore
179
	mov	esi, hwm_voltages
200
	xor	ecx, ecx	
180
	xor	ecx, ecx
201
@@:	mov	eax, ecx
181
@@:	mov	eax, ecx
202
	add	al, 0x20
182
	add	al, 0x20
203
	out	dx, al
183
	call	[IO_Read]
204
	inc	edx
-
 
205
	in	al, dx
-
 
206
	fld	dword [edi + ecx * 4]
184
	fld	dword [edi + ecx * 4]
207
	push	eax
185
	push	eax
208
	fild	dword [esp]
186
	fild	dword [esp]
209
	fmulp	st1, st0
187
	fmulp	st1, st0
210
	fstp	dword [esi + ecx * 4]
188
	fstp	dword [esi + ecx * 4]
211
	pop	eax
189
	pop	eax
212
	inc	ecx
190
	inc	ecx
213
	dec	edx
-
 
214
	cmp	ecx, 7
191
	cmp	ecx, 7
215
	jb	@b
192
	jb	@b
216
	ret
193
	ret
Line 217... Line 194...
217
 
194
 
Line 222... Line 199...
222
		dd 0.0608		; Vin2 (+12V)
199
		dd 0.0608		; Vin2 (+12V)
223
		dd 0.0822857142857145	; -12V
200
		dd 0.0822857142857145	; -12V
224
		dd -0.02408		; -5V ; false
201
		dd -0.02408		; -5V ; false
Line 225... Line 202...
225
		
202
		
226
wb_n12v_const	dd -14.9142857142857
-
 
227
;-----------------------------------
-
 
228
wb_get_name:
-
 
229
; Âîçâðàùàåò èìÿ ÷èïà
-
 
230
; Out : EDX - pointer to string (size:string - Pascal style)
-
 
231
	mov	al, [wb_chip_id]
-
 
232
	and	al, 0xFE	; 0x20 = 0x21, 0x60 = 0x61, etc
-
 
233
	mov	edx, msg_wb27HF
-
 
234
	cmp	al, 0x20
203
wb_n12v_const	dd -14.9142857142857
235
	je	@f
-
 
236
	mov	edx, msg_wb27THF
-
 
237
	cmp	al, 0x90
-
 
238
	je	@f
-
 
239
	mov	edx, msg_wb37THF
-
 
240
	cmp	al, 0x80
-
 
241
	je	@f
-
 
242
	mov	edx, msg_wb97HF
-
 
243
	cmp	al, 0x60
-
 
244
	je	@f
-
 
245
	mov	edx, msg_wb27EHF
-
 
246
	cmp	al, 0x88
-
 
247
	je	@f
-
 
248
	mov	edx, msg_wb27THFA
-
 
249
	cmp	al, 0x1A
-
 
250
	je	@f
-
 
251
	mov	edx, msg_wbunk
-