Subversion Repositories Kolibri OS

Rev

Rev 500 | Show entire file | Regard 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      +      +
Line 38... Line 38...
38
wb_fans_num	db	0
38
wb_fans_num	db	0
39
endg
39
endg
Line 40... Line 40...
40
 
40
 
41
;-----------------------------------
41
;-----------------------------------
42
wb_init:
42
wb_init:
43
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
43
; à®¢¥àª  ­ «¨ç¨ï ¨ ¨­¨æ¨ «¨§ æ¨ï
44
; OUT - CF = 1 - error
44
; OUT - CF = 1 - error
45
	cmp	byte[acc_type], 2	; Only ISA and SMBus
45
	cmp	byte[acc_type], 2	; Only ISA and SMBus
Line 46... Line 46...
46
	jae	wb_no
46
	jae	wb_no
Line 55... Line 55...
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]
Line 133... Line 133...
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
Line 146... Line 146...
146
	mov	al, 5
146
	mov	al, 5
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
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
Line 183... Line 185...
183
	
185
 
184
	mov	al, 0x47
186
	mov	al, 0x47
Line 191... Line 193...
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
Line 203... Line 208...
203
	
208
 
204
	mov	al, 0x4B
209
	mov	al, 0x4B
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
Line 246... Line 255...
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]
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: