Subversion Repositories Kolibri OS

Rev

Rev 500 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 500 Rev 2429
Line 1... Line 1...
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
Line 5... Line 5...
5
 
5
 
6
;
6
;
7
; Áèáëèîòåêà äëÿ ÷èïîâ WinBond
7
; ¨¡«¨®â¥ª  ¤«ï 稯®¢ WinBond
8
;
8
;
9
;
9
;
10
;    Äîïèñàòü ïîëó÷åíèå èíôû ñ äðóãèõ äàò÷èêîâ
10
;    „®¯¨á âì ¯®«ã祭¨¥ ¨­äë á ¤àã£¨å ¤ â稪®¢
11
;    W83627DHG ìîíèòîðèíã àíàëîãè÷åí W83627EHF, äîïèñàòü ó÷¸ò DIV_B2
11
;    W83627DHG ¬®­¨â®à¨­£  ­ «®£¨ç¥­ W83627EHF, ¤®¯¨á âì ãçñâ DIV_B2
12
;  + 16.03.06 Èñïðàâëåíà îøèáêà â wb_get_cpu_temper ñ äåñÿòûõ ãðàäóñà (áûëî 30.5 30.0 31.5 ...)
12
;  + 16.03.06 ˆá¯à ¢«¥­  ®è¨¡ª  ¢ wb_get_cpu_temper á ¤¥áïâëå £à ¤ãá  (¡ë«® 30.5 30.0 31.5 ...)
13
;
13
;
14
;
14
;
15
;    Î ìàðêèðîâêå (?) : H - H/W Monitor, G - Pb-free package, T - ACPI, S - Smart Card Reader Interface
15
;    Ž ¬ àª¨à®¢ª¥ (?) : H - H/W Monitor, G - Pb-free package, T - ACPI, S - Smart Card Reader Interface
16
;      D - SuperIO supporting Intel* PECI* & SST* interfaces, U - UART
16
;      D - SuperIO supporting Intel* PECI* & SST* interfaces, U - UART
17
;
17
;
18
;		   | Chip name  	 | ID		Vin	Fanin	PWM	Temp   ISA   SMBus
18
;                  | Chip name           | ID           Vin     Fanin   PWM     Temp   ISA   SMBus
19
msg_wb27HF:	db 'W83627HF', 0	; 0x20|0x21	 9	  3	 2	 3      +      +
19
msg_wb27HF:	db 'W83627HF', 0	; 0x20|0x21      9        3      2       3      +      +
20
msg_wb27THF:	db 'W83627THF', 0	; 0x90|0x91	 7	  3	 3	 3      +      +
20
msg_wb27THF:	db 'W83627THF', 0	; 0x90|0x91      7        3      3       3      +      +
21
msg_wb37THF:	db 'W83637THF', 0	; 0x80		 7	  3	 3	 3      +      +
21
msg_wb37THF:	db 'W83637THF', 0	; 0x80           7        3      3       3      +      +
22
msg_wb97HF:	db 'W83697HF', 0	; 0x60|0x61	 8	  2	 2	 2      +      -
22
msg_wb97HF:	db 'W83697HF', 0	; 0x60|0x61      8        2      2       2      +      -
Line 23... Line 23...
23
msg_wb27THFA:	db 'W83627THF-A', 0	; 0x1A
23
msg_wb27THFA:	db 'W83627THF-A', 0	; 0x1A
24
 
24
 
25
msg_w83627DHG:	db 'W83627DHG', 0	; 0xC1		 ?	  5	 ?	 3      +      +
25
msg_w83627DHG:	db 'W83627DHG', 0	; 0xC1           ?        5      ?       3      +      +
Line 26... Line 26...
26
msg_w83627EHF:	db 'W83627EHF', 0	; 0x88		 10	  5	 3	 3      +      +
26
msg_w83627EHF:	db 'W83627EHF', 0	; 0x88           10       5      3       3      +      +
27
msg_w83627EHG:	db 'W83627EHG', 0	; 0xA1		 10	  5	 3	 3      +      +
27
msg_w83627EHG:	db 'W83627EHG', 0	; 0xA1           10       5      3       3      +      +
28
 
28
 
29
 
29
 
30
;		db 'W83781D', 0		; 0x10|0x11	 7	  	 3	 3      +      +
30
;               db 'W83781D', 0         ; 0x10|0x11      7               3       3      +      +
31
;		db 'W83782D', 0		; 0x30		 9	   	 3	 3      +      +
31
;               db 'W83782D', 0         ; 0x30           9               3       3      +      +
Line 32... Line 32...
32
;		db 'AS99127F', 0	; 0x31           7               3       3      -      +
32
;               db 'AS99127F', 0        ; 0x31           7               3       3      -      +
33
;		db 'W83783S', 0		; 0x40|0x41	 5-6	   	 3	 1-2    -      +
33
;               db 'W83783S', 0         ; 0x40|0x41      5-6             3       1-2    -      +
34
;		db 'W83791D', 0		; 0x70|0x71	 10	   	 5	 3      -      +
34
;               db 'W83791D', 0         ; 0x70|0x71      10              5       3      -      +
Line 35... Line 35...
35
msg_wbunk:	db 'Unknown Winbond', 0	; other, non zero ;-)
35
msg_wbunk:	db 'Unknown Winbond', 0 ; other, non zero ;-)
36
 
36
 
37
uglobal
37
uglobal
38
wb_fans_num	db	0
38
wb_fans_num	db	0
39
endg
39
endg
40
 
40
 
Line 41... Line 41...
41
;-----------------------------------
41
;-----------------------------------
Line 51... Line 51...
51
	mov	al, 0x4f
51
	mov	al, 0x4f
52
	call	[IO_Read]
52
	call	[IO_Read]
53
	mov	ah, al		;!
53
	mov	ah, al		;!
54
	mov	al, 0x4e
54
	mov	al, 0x4e
55
	mov	bl, 0x80
55
	mov	bl, 0x80
56
	call	[IO_Write]	
56
	call	[IO_Write]
57
	mov	al, 0x4f
57
	mov	al, 0x4f
58
	call	[IO_Read]
58
	call	[IO_Read]
59
	cmp	ax, 0xa35c
59
	cmp	ax, 0xa35c
60
	jne	wb_no		; ýòî íå Winbond !!!
60
	jne	wb_no		; íâ® ­¥ Winbond !!!
Line 61... Line 61...
61
 
61
 
62
	; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà --
62
	; --- 㧭 ñ¬ ¨¤¥­â¨ä¨ª â®à 稯  --
63
	mov	al, 0x58
63
	mov	al, 0x58
64
	call	[IO_Read]
64
	call	[IO_Read]
65
	and	al, 0xFE	; 0x20 = 0x21, 0x60 = 0x61, etc
65
	and	al, 0xFE	; 0x20 = 0x21, 0x60 = 0x61, etc
66
	mov	byte[wb_fans_num], 3
66
	mov	byte[wb_fans_num], 3
Line 109... Line 109...
109
	fstp	dword[V12]
109
	fstp	dword[V12]
110
	ret
110
	ret
111
;-----------------------------------
111
;-----------------------------------
112
wb_get_temp:
112
wb_get_temp:
113
	; temp 1
113
	; temp 1
114
	mov	al, 0x4e	; Âûáèðàåì bank 1
114
	mov	al, 0x4e	; ‚롨ࠥ¬ bank 1
115
	mov	bl, 1
115
	mov	bl, 1
116
	call	[IO_Write]
116
	call	[IO_Write]
117
	mov	al, 0x50	; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
117
	mov	al, 0x50	; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë)
118
	call	[IO_Read]
118
	call	[IO_Read]
119
	mov	[hwm_temps], al
119
	mov	[hwm_temps], al
120
	mov	al, 0x51	; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû  (x.5`C)
120
	mov	al, 0x51	; ®«ãç ¥¬ ¬« ¤è¨© ¡ ©â ⥬¯¥à âãàë  (x.5`C)
121
	call	[IO_Read]
121
	call	[IO_Read]
122
	cmp	al, 0		; if al == 0 then x.0, else x.5
122
	cmp	al, 0		; if al == 0 then x.0, else x.5
123
	je	@f
123
	je	@f
124
	mov	al, 5
124
	mov	al, 5
125
@@:	mov	[hwm_temps + 1], al
125
@@:	mov	[hwm_temps + 1], al
Line 126... Line 126...
126
 
126
 
127
	; temp 2 (3 SYSTIN)
127
	; temp 2 (3 SYSTIN)
128
	mov	al, 0x4e	; Âûáèðàåì bank 0
128
	mov	al, 0x4e	; ‚롨ࠥ¬ bank 0
129
	xor	bl, bl
129
	xor	bl, bl
130
	call	[IO_Write]
130
	call	[IO_Write]
131
	mov	al, 0x27	; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
131
	mov	al, 0x27	; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë)
132
	call	[IO_Read]
132
	call	[IO_Read]
133
	mov	[hwm_temps + 2], al
133
	mov	[hwm_temps + 2], al
134
	
134
 
135
	; temp 3 (VTIN)
135
	; temp 3 (VTIN)
136
	mov	al, 0x4e	; Âûáèðàåì bank 2
136
	mov	al, 0x4e	; ‚롨ࠥ¬ bank 2
137
	mov	bl, 2
137
	mov	bl, 2
138
	call	[IO_Write]
138
	call	[IO_Write]
139
	mov	al, 0x50	; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
139
	mov	al, 0x50	; ®«ãç ¥¬ áâ à訩 ¡ ©â ⥬¯¥à âãàë (£à ¤ãáë)
140
	call	[IO_Read]
140
	call	[IO_Read]
141
	mov	[hwm_temps + 4], al
141
	mov	[hwm_temps + 4], al
142
	mov	al, 0x51	; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû  (x.5`C)
142
	mov	al, 0x51	; ®«ãç ¥¬ ¬« ¤è¨© ¡ ©â ⥬¯¥à âãàë  (x.5`C)
143
	call	[IO_Read]
143
	call	[IO_Read]
144
	cmp	al, 0		; if al == 0 then x.0, else x.5
144
	cmp	al, 0		; if al == 0 then x.0, else x.5
145
	je	@f
145
	je	@f
146
	mov	al, 5
146
	mov	al, 5
Line 147... Line 147...
147
@@:	mov	[hwm_temps + 5], al
147
@@:	mov	[hwm_temps + 5], al
148
 
148
 
149
	; Ïðîâåðêà òåìïåðàòóðû, äàò÷èêè ñ 127.5`C íå èñïîëüçóþòñÿ
149
	; à®¢¥àª  ⥬¯¥à âãàë, ¤ â稪¨ á 127.5`C ­¥ ¨á¯®«ì§ãîâáï
150
	mov	ecx, 3
150
	mov	ecx, 3
151
	mov	esi, hwm_temps
151
	mov	esi, hwm_temps
152
wb_check_temp:
152
wb_check_temp:
153
	cmp	word[esi + ecx * 2 - 2], 0x057F
153
	cmp	word[esi + ecx * 2 - 2], 0x057F
154
	jne	wb_temp_ok
154
	jne	wb_temp_ok
155
	mov	word[esi + ecx * 2 - 2], 0
155
	mov	word[esi + ecx * 2 - 2], 0
156
wb_temp_ok:
156
wb_temp_ok:
157
	loop	wb_check_temp
157
	loop	wb_check_temp
158
	
158
 
159
	ret
159
	ret
160
;-----------------------------------
160
;-----------------------------------
161
wb_get_fan_speed:
161
wb_get_fan_speed:
162
	; fan1
162
	; fan1
163
	mov	al, 0x47
163
	mov	al, 0x47
164
	call	[IO_Read]
164
	call	[IO_Read]
165
	and	al, 0x30
165
	and	al, 0x30
166
	shr	al, 4
166
	shr	al, 4
167
	mov	ebx, 1
167
	mov	ebx, 1
168
	mov	cl, al
168
	mov	cl, al
169
	shl	ebx, cl	; <- div1
169
	shl	ebx, cl ; <- div1
170
	xor	eax, eax
170
	xor	eax, eax
171
	mov	al,  0x28
171
	mov	al,  0x28
172
	call	[IO_Read]
172
	call	[IO_Read]
Line 176... Line 176...
176
	ret			; ???
176
	ret			; ???
177
@@:	mul	ebx
177
@@:	mul	ebx
178
	mov	ebx, eax
178
	mov	ebx, eax
179
	mov	eax, 1350000
179
	mov	eax, 1350000
180
	xor	edx, edx
180
	xor	edx, edx
-
 
181
	test	ebx, ebx
-
 
182
	jz	.div0
181
	div	ebx
183
	div	ebx
182
	mov	[hwm_rpms], eax
184
	mov	[hwm_rpms], eax
183
	
185
 
184
	mov	al, 0x47
186
	mov	al, 0x47
185
	call	[IO_Read]
187
	call	[IO_Read]
186
	shr	al, 6
188
	shr	al, 6
187
	mov	ebx, 1
189
	mov	ebx, 1
188
	mov	cl, al
190
	mov	cl, al
189
	shl	ebx, cl	; <- div2
191
	shl	ebx, cl ; <- div2
190
	xor	eax, eax
192
	xor	eax, eax
191
	mov	al,  0x29
193
	mov	al,  0x29
192
	call	[IO_Read]
194
	call	[IO_Read]
193
	cmp	al, 255
195
	cmp	al, 255
194
	jne	@f
196
	jne	@f
195
	xor	eax, eax
197
	xor	eax, eax
-
 
198
.div0:
196
	ret
199
	ret
197
@@:	mul	ebx
200
@@:	mul	ebx
198
	mov	ebx, eax
201
	mov	ebx, eax
199
	mov	eax, 1350000
202
	mov	eax, 1350000
200
	xor	edx, edx
203
	xor	edx, edx
-
 
204
	test	ebx, ebx
-
 
205
	jz	.div0
201
	div	ebx
206
	div	ebx
202
	mov	[hwm_rpms + 4], eax
207
	mov	[hwm_rpms + 4], eax
203
	
208
 
204
	mov	al, 0x4B
209
	mov	al, 0x4B
205
	call	[IO_Read]
210
	call	[IO_Read]
206
	shr	al, 6
211
	shr	al, 6
207
	mov	ebx, 1
212
	mov	ebx, 1
208
	mov	cl, al
213
	mov	cl, al
209
	shl	ebx, cl	; <- div3
214
	shl	ebx, cl ; <- div3
210
	xor	eax, eax
215
	xor	eax, eax
211
	mov	al,  0x2A
216
	mov	al,  0x2A
212
	call	[IO_Read]
217
	call	[IO_Read]
213
	cmp	al, 255
218
	cmp	al, 255
214
	jne	@f
219
	jne	@f
Line 216... Line 221...
216
	ret
221
	ret
217
@@:	mul	ebx
222
@@:	mul	ebx
218
	mov	ebx, eax
223
	mov	ebx, eax
219
	mov	eax, 1350000
224
	mov	eax, 1350000
220
	xor	edx, edx
225
	xor	edx, edx
-
 
226
	test	ebx, ebx
-
 
227
	jz	.div0
221
	div	ebx
228
	div	ebx
222
	mov	[hwm_rpms + 8], eax
229
	mov	[hwm_rpms + 8], eax
Line 223... Line 230...
223
 
230
 
224
	cmp	byte[wb_fans_num], 3
231
	cmp	byte[wb_fans_num], 3
Line 227... Line 234...
227
	mov	al, 0x59
234
	mov	al, 0x59
228
	call	[IO_Read]
235
	call	[IO_Read]
229
	and	al, 3
236
	and	al, 3
230
	mov	ebx, 1
237
	mov	ebx, 1
231
	mov	cl, al
238
	mov	cl, al
232
	shl	ebx, cl	; <- div4, äîïèñàòü ó÷¸ò DIV_B2
239
	shl	ebx, cl ; <- div4, ¤®¯¨á âì ãçñâ DIV_B2
233
	xor	eax, eax
240
	xor	eax, eax
234
	mov	al,  0x3F
241
	mov	al,  0x3F
235
	call	[IO_Read]
242
	call	[IO_Read]
236
	cmp	al, 255
243
	cmp	al, 255
237
	jne	@f
244
	jne	@f
Line 239... Line 246...
239
	ret
246
	ret
240
@@:	mul	ebx
247
@@:	mul	ebx
241
	mov	ebx, eax
248
	mov	ebx, eax
242
	mov	eax, 1350000
249
	mov	eax, 1350000
243
	xor	edx, edx
250
	xor	edx, edx
-
 
251
	test	ebx, ebx
-
 
252
	jz	.div0
244
	div	ebx
253
	div	ebx
245
	mov	[hwm_rpms + 12], eax
254
	mov	[hwm_rpms + 12], eax
246
	
255
 
247
	mov	al, 0x59
256
	mov	al, 0x59
248
	call	[IO_Read]
257
	call	[IO_Read]
249
	shr	al, 2
258
	shr	al, 2
250
	and	al, 3
259
	and	al, 3
251
	mov	ebx, 1
260
	mov	ebx, 1
252
	mov	cl, al
261
	mov	cl, al
253
	shl	ebx, cl	; <- div5, äîïèñàòü ó÷¸ò DIV_B2
262
	shl	ebx, cl ; <- div5, ¤®¯¨á âì ãçñâ DIV_B2
254
	xor	eax, eax
263
	xor	eax, eax
255
	mov	al, 0x4e	; Âûáèðàåì bank 5
264
	mov	al, 0x4e	; ‚롨ࠥ¬ bank 5
256
	mov	bl, 5
265
	mov	bl, 5
257
	call	[IO_Write]
266
	call	[IO_Write]
258
	mov	al,  0x53
267
	mov	al,  0x53
259
	call	[IO_Read]
268
	call	[IO_Read]
260
	cmp	al, 255
269
	cmp	al, 255
Line 263... Line 272...
263
	ret
272
	ret
264
@@:	mul	ebx
273
@@:	mul	ebx
265
	mov	ebx, eax
274
	mov	ebx, eax
266
	mov	eax, 1350000
275
	mov	eax, 1350000
267
	xor	edx, edx
276
	xor	edx, edx
-
 
277
	test	ebx, ebx
-
 
278
	jz	.wb_f_e
268
	div	ebx
279
	div	ebx
269
	mov	[hwm_rpms + 16], eax
280
	mov	[hwm_rpms + 16], eax
Line 270... Line 281...
270
 
281
 
271
.wb_f_e:
282
.wb_f_e:
272
	ret
283
	ret
273
;-----------------------------------
284
;-----------------------------------
274
wb_get_volt:
285
wb_get_volt:
275
	;mov	edi, wb_coeff		; <-- possible differences for miscellaneous chip
286
	;mov    edi, wb_coeff           ; <-- possible differences for miscellaneous chip
276
	mov	esi, hwm_voltages
287
	mov	esi, hwm_voltages
277
	xor	ecx, ecx
288
	xor	ecx, ecx
278
@@:	mov	eax, ecx
289
@@:	mov	eax, ecx
279
	add	al, 0x20
290
	add	al, 0x20
Line 294... Line 305...
294
		dd 0.016		; Vin1 (+3.3V)
305
		dd 0.016		; Vin1 (+3.3V)
295
		dd 0.02688		; AVcc (+5V)
306
		dd 0.02688		; AVcc (+5V)
296
		dd 0.0608		; Vin2 (+12V)
307
		dd 0.0608		; Vin2 (+12V)
297
		dd 0.0822857142857145	; -12V
308
		dd 0.0822857142857145	; -12V
298
		dd -0.02408		; -5V ; false
309
		dd -0.02408		; -5V ; false
299
		
310
 
300
wb_n12v_const	dd -14.9142857142857
311
wb_n12v_const	dd -14.9142857142857
Line 301... Line 312...
301
312
302
313