Subversion Repositories Kolibri OS

Rev

Rev 5173 | Rev 5234 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3171 hidnplayr 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
5173 hidnplayr 3
;; Copyright (C) KolibriOS team 2004-2014. All rights reserved. ;;
3171 hidnplayr 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
5070 hidnplayr 8
format PE DLL native 0.05
9
entry START
3171 hidnplayr 10
 
5070 hidnplayr 11
        DEBUG = 1
3171 hidnplayr 12
 
5070 hidnplayr 13
section '.flat' code readable writable executable
14
include '../proc32.inc'
3766 Serge 15
include '../struct.inc'
5168 hidnplayr 16
include '../pci.inc'
5070 hidnplayr 17
include '../macros.inc'
5077 clevermous 18
include '../peimport.inc'
3171 hidnplayr 19
 
20
VID_INTEL         = 0x8086
21
VID_NVIDIA        = 0x10DE
22
VID_VIA           = 0x1106
23
VID_SIS           = 0x1039
24
VID_FM801         = 0x1319
25
VID_CREATIVE      = 0x1102
26
VID_ATI           = 0x1002
27
VID_AMD           = 0x1022
28
VID_ULI           = 0x10B9
29
VID_TERA          = 0x6549
30
VID_RDC           = 0x17F3
31
VID_VMWARE        = 0x15AD
32
 
33
CTRL_ICH          = 0x2415
34
CTRL_ICH0         = 0x2425
35
CTRL_ICH2         = 0x2435
36
CTRL_ICH3         = 0x2445
37
CTRL_ICH4         = 0x24C5
38
CTRL_ICH5         = 0x24D5
39
CTRL_ICH6         = 0x266E
40
CTRL_ICH7         = 0x27DE
41
 
42
CTRL_NFORCE       = 0x01B1
43
CTRL_NFORCE2      = 0x006A
44
CTRL_NFORCE3      = 0x00DA
45
CTRL_MCP04        = 0x003A
46
CTRL_CK804        = 0x0059
47
CTRL_CK8          = 0x008A
48
CTRL_CK8S         = 0x00EA
49
CTRL_MCP51        = 0x026B
50
 
51
CTRL_VT82C686     = 0x3058
52
CTRL_VT8233_5     = 0x3059
53
 
54
CTRL_SIS          = 0x7012
55
 
56
CTRL_FM801        = 0x0801
57
 
58
CTRL_CT0200       = 0x0006  ; Dell OEM version (EMU10K1X)
59
 
60
CTRL_INTEL_SCH2          =  0x080a
61
CTRL_INTEL_HPT           =  0x0c0c
62
CTRL_INTEL_CPT           =  0x1c20
63
CTRL_INTEL_PGB           =  0x1d20
64
CTRL_INTEL_PPT1          =  0x1e20
65
CTRL_INTEL_82801F        =  0x2668
66
CTRL_INTEL_63XXESB       =  0x269a
67
CTRL_INTEL_82801G        =  0x27d8
68
CTRL_INTEL_82801H        =  0x284b
69
CTRL_INTEL_82801_UNK1    =  0x2911
70
CTRL_INTEL_82801I        =  0x293e
71
CTRL_INTEL_82801_UNK2    =  0x293f
72
CTRL_INTEL_82801JI       =  0x3a3e
73
CTRL_INTEL_82801JD       =  0x3a6e
74
CTRL_INTEL_PCH           =  0x3b56
75
CTRL_INTEL_PCH2          =  0x3b57
76
CTRL_INTEL_SCH           =  0x811b
77
CTRL_INTEL_LPT           =  0x8c20
78
 
79
CTRL_NVIDIA_MCP51        =  0x026c
80
CTRL_NVIDIA_MCP55        =  0x0371
81
CTRL_NVIDIA_MCP61_1      =  0x03e4
82
CTRL_NVIDIA_MCP61_2      =  0x03f0
83
CTRL_NVIDIA_MCP65_1      =  0x044a
84
CTRL_NVIDIA_MCP65_2      =  0x044b
85
CTRL_NVIDIA_MCP67_1      =  0x055c
86
CTRL_NVIDIA_MCP67_2      =  0x055d
87
CTRL_NVIDIA_MCP78_1      =  0x0774
88
CTRL_NVIDIA_MCP78_2      =  0x0775
89
CTRL_NVIDIA_MCP78_3      =  0x0776
90
CTRL_NVIDIA_MCP78_4      =  0x0777
91
CTRL_NVIDIA_MCP73_1      =  0x07fc
92
CTRL_NVIDIA_MCP73_2      =  0x07fd
93
CTRL_NVIDIA_MCP79_1      =  0x0ac0
94
CTRL_NVIDIA_MCP79_2      =  0x0ac1
95
CTRL_NVIDIA_MCP79_3      =  0x0ac2
96
CTRL_NVIDIA_MCP79_4      =  0x0ac3
97
CTRL_NVIDIA_0BE2         =  0x0be2
98
CTRL_NVIDIA_0BE3         =  0x0be3
99
CTRL_NVIDIA_0BE4         =  0x0be4
100
CTRL_NVIDIA_GT100        =  0x0be5
101
CTRL_NVIDIA_GT106        =  0x0be9
102
CTRL_NVIDIA_GT108        =  0x0bea
103
CTRL_NVIDIA_GT104        =  0x0beb
104
CTRL_NVIDIA_GT116        =  0x0bee
105
CTRL_NVIDIA_MCP89_1      =  0x0d94
106
CTRL_NVIDIA_MCP89_2      =  0x0d95
107
CTRL_NVIDIA_MCP89_3      =  0x0d96
108
CTRL_NVIDIA_MCP89_4      =  0x0d97
109
CTRL_NVIDIA_GF119        =  0x0e08
110
CTRL_NVIDIA_GF110_1      =  0x0e09
111
CTRL_NVIDIA_GF110_2      =  0x0e0c
112
 
113
CTRL_ATI_SB450           =  0x437b
114
CTRL_ATI_SB600           =  0x4383
115
 
116
CTRL_ATI_RS600           =  0x793b
117
CTRL_ATI_RS690           =  0x7919
118
CTRL_ATI_RS780           =  0x960f
119
CTRL_ATI_RS_UNK1         =  0x970f
120
CTRL_ATI_R600            =  0xaa00
121
CTRL_ATI_RV630           =  0xaa08
122
CTRL_ATI_RV610           =  0xaa10
123
CTRL_ATI_RV670           =  0xaa18
124
CTRL_ATI_RV635           =  0xaa20
125
CTRL_ATI_RV620           =  0xaa28
126
CTRL_ATI_RV770           =  0xaa30
127
CTRL_ATI_RV730           =  0xaa38
128
CTRL_ATI_RV710           =  0xaa40
129
CTRL_ATI_RV740           =  0xaa48
130
 
131
CTRL_AMD_HUDSON          =  0x780d
132
 
133
CTRL_VIA_VT82XX          =  0x3288
134
CTRL_VIA_VT61XX          =  0x9140
135
CTRL_VIA_VT71XX          =  0x9170
136
 
137
CTRL_SIS_966             =  0x7502
138
 
139
CTRL_ULI_M5461           =  0x5461
140
 
141
CTRL_CREATIVE_CA0110_IBG     =  0x0009
142
CTRL_CREATIVE_SOUND_CORE3D_1 =  0x0010
143
CTRL_CREATIVE_SOUND_CORE3D_2 =  0x0012
144
 
145
CTRL_TERA_UNK1           =  0x1200
146
 
147
CTRL_RDC_R3010           =  0x3010
148
 
149
CTRL_VMWARE_UNK1         =  0x1977
150
 
3765 Serge 151
struct  SRV
152
        srv_name        rb 16    ;ASCIIZ string
153
        magic           dd ?     ;+0x10 ;'SRV '
154
        size            dd ?     ;+0x14 ;size of structure SRV
155
        fd              dd ?     ;+0x18 ;next SRV descriptor
156
        bk              dd ?     ;+0x1C ;prev SRV descriptor
157
        base            dd ?     ;+0x20 ;service base address
158
        entry           dd ?     ;+0x24 ;service START function
159
        srv_proc        dd ?     ;+0x28 ;user mode service handler
160
        srv_proc_ex     dd ?     ;+0x2C ;kernel mode service handler
161
ends
162
 
163
 
5077 clevermous 164
proc START c uses ebx esi edi, state:dword, cmdline:dword
3171 hidnplayr 165
 
5077 clevermous 166
        mov     eax, [srv_entry]
3171 hidnplayr 167
        cmp     [state], 1
5077 clevermous 168
        jne     .stop
3171 hidnplayr 169
 
170
     if DEBUG
171
        mov     esi, msgInit
5070 hidnplayr 172
        invoke  SysMsgBoardStr
3171 hidnplayr 173
     end if
174
 
5077 clevermous 175
        test    eax, eax
176
        jnz     .done
3171 hidnplayr 177
        call    detect_controller
178
        ret
5077 clevermous 179
.stop:
180
        test    eax, eax
181
        jz      .done
182
        leave
183
        jmp     eax
184
.done:
3171 hidnplayr 185
        xor     eax, eax
186
        ret
187
endp
188
 
189
proc service_proc stdcall, ioctl:dword
190
 
191
        or      eax, -1
192
        ret
193
endp
194
 
195
proc detect_controller
196
 
5173 hidnplayr 197
        invoke  GetPCIList
198
        mov     edx, eax
3171 hidnplayr 199
 
5173 hidnplayr 200
  .loop:
201
        mov     ecx, [eax + PCIDEV.vendor_device_id]
3171 hidnplayr 202
        mov     edi, devices
203
  @@:
204
        mov     ebx, [edi]
205
        test    ebx, ebx
206
        jz      .next
207
 
5173 hidnplayr 208
        cmp     ecx, ebx
3171 hidnplayr 209
        je      .found
210
        add     edi, 8
5173 hidnplayr 211
        jmp     @b
5168 hidnplayr 212
 
3171 hidnplayr 213
  .next:
5173 hidnplayr 214
        mov     eax, [eax + PCIDEV.fd]
215
        cmp     eax, edx
216
        jne     .loop
5168 hidnplayr 217
 
3171 hidnplayr 218
     if DEBUG
5168 hidnplayr 219
        mov     esi, msgFail
220
        invoke  SysMsgBoardStr
221
 
3171 hidnplayr 222
        mov     esi, msgLoading
5070 hidnplayr 223
        invoke  SysMsgBoardStr
3171 hidnplayr 224
 
5168 hidnplayr 225
        mov     esi, sb16
5070 hidnplayr 226
        invoke  SysMsgBoardStr
3171 hidnplayr 227
 
228
        mov     esi, msgNewline
5070 hidnplayr 229
        invoke  SysMsgBoardStr
3171 hidnplayr 230
     end if
231
 
5168 hidnplayr 232
        invoke  GetService, sb16
3765 Serge 233
        test    eax, eax
5168 hidnplayr 234
        jz      .fail
3171 hidnplayr 235
 
3765 Serge 236
        mov     edx, [eax+SRV.entry]
237
        mov     [srv_entry], edx
3171 hidnplayr 238
        ret
239
 
5168 hidnplayr 240
  .found:
3171 hidnplayr 241
     if DEBUG
5168 hidnplayr 242
        mov     esi, msgLoading
5070 hidnplayr 243
        invoke  SysMsgBoardStr
5168 hidnplayr 244
 
245
        mov     esi, dword[edi+4]
246
        invoke  SysMsgBoardStr
247
 
248
        mov     esi, msgNewline
249
        invoke  SysMsgBoardStr
3171 hidnplayr 250
     end if
251
 
5168 hidnplayr 252
        invoke  GetService, dword[edi+4]
253
        test    eax, eax
254
        jz      .next
255
 
256
        mov     edx, [eax+SRV.entry]
257
        mov     [srv_entry], edx
258
        ret
259
 
260
  .fail:
3171 hidnplayr 261
        xor     eax, eax
262
        ret
263
 
264
endp
265
 
266
align 4
3765 Serge 267
devices         dd (CTRL_ICH  shl 16)+VID_INTEL, intelac97
268
                dd (CTRL_ICH0 shl 16)+VID_INTEL, intelac97
269
                dd (CTRL_ICH2 shl 16)+VID_INTEL, intelac97
270
                dd (CTRL_ICH3 shl 16)+VID_INTEL, intelac97
271
                dd (CTRL_ICH4 shl 16)+VID_INTEL, intelac97
272
                dd (CTRL_ICH5 shl 16)+VID_INTEL, intelac97
273
                dd (CTRL_ICH6 shl 16)+VID_INTEL, intelac97
274
                dd (CTRL_ICH7 shl 16)+VID_INTEL, intelac97
3171 hidnplayr 275
 
3765 Serge 276
                dd (CTRL_NFORCE  shl 16)+VID_NVIDIA, intelac97
277
                dd (CTRL_NFORCE2 shl 16)+VID_NVIDIA, intelac97
278
                dd (CTRL_NFORCE3 shl 16)+VID_NVIDIA, intelac97
279
                dd (CTRL_MCP04   shl 16)+VID_NVIDIA, intelac97
280
                dd (CTRL_CK804   shl 16)+VID_NVIDIA, intelac97
281
                dd (CTRL_CK8     shl 16)+VID_NVIDIA, intelac97
282
                dd (CTRL_CK8S    shl 16)+VID_NVIDIA, intelac97
283
                dd (CTRL_MCP51   shl 16)+VID_NVIDIA, intelac97
3171 hidnplayr 284
 
3765 Serge 285
                dd (CTRL_VT82C686  shl 16)+VID_VIA, vt823x
286
                dd (CTRL_VT8233_5  shl 16)+VID_VIA, vt823x
3171 hidnplayr 287
 
3765 Serge 288
                dd (CTRL_SIS  shl 16)+VID_SIS, sis
3171 hidnplayr 289
 
3765 Serge 290
                dd (CTRL_FM801 shl 16)+VID_FM801, fm801
3171 hidnplayr 291
 
3765 Serge 292
                dd (0x5000 shl 16)+0x1274, ensoniq
293
                dd (0x5880 shl 16)+0x1274, ensoniq
3171 hidnplayr 294
 
3765 Serge 295
                dd (CTRL_CT0200 shl 16)+VID_CREATIVE, emu10k1x
3171 hidnplayr 296
; Intel
3765 Serge 297
                dd (CTRL_INTEL_SCH2    shl 16)+VID_INTEL, intelhda
298
                dd (CTRL_INTEL_HPT     shl 16)+VID_INTEL, intelhda
299
                dd (CTRL_INTEL_CPT     shl 16)+VID_INTEL, intelhda
300
                dd (CTRL_INTEL_PGB     shl 16)+VID_INTEL, intelhda
301
                dd (CTRL_INTEL_PPT1    shl 16)+VID_INTEL, intelhda
302
                dd (CTRL_INTEL_82801F  shl 16)+VID_INTEL, intelhda
303
                dd (CTRL_INTEL_63XXESB shl 16)+VID_INTEL, intelhda
304
                dd (CTRL_INTEL_82801G  shl 16)+VID_INTEL, intelhda
305
                dd (CTRL_INTEL_82801H  shl 16)+VID_INTEL, intelhda
306
                dd (CTRL_INTEL_82801_UNK1  shl 16)+VID_INTEL, intelhda
307
                dd (CTRL_INTEL_82801I  shl 16)+VID_INTEL, intelhda
308
                dd (CTRL_INTEL_82801_UNK2  shl 16)+VID_INTEL, intelhda
309
                dd (CTRL_INTEL_82801JI shl 16)+VID_INTEL, intelhda
310
                dd (CTRL_INTEL_82801JD shl 16)+VID_INTEL, intelhda
311
                dd (CTRL_INTEL_PCH     shl 16)+VID_INTEL, intelhda
312
                dd (CTRL_INTEL_PCH2    shl 16)+VID_INTEL, intelhda
313
                dd (CTRL_INTEL_SCH     shl 16)+VID_INTEL, intelhda
314
                dd (CTRL_INTEL_LPT     shl 16)+VID_INTEL, intelhda
3171 hidnplayr 315
; Nvidia
3765 Serge 316
                dd (CTRL_NVIDIA_MCP51    shl 16)+VID_NVIDIA, intelhda
317
                dd (CTRL_NVIDIA_MCP55    shl 16)+VID_NVIDIA, intelhda
318
                dd (CTRL_NVIDIA_MCP61_1  shl 16)+VID_NVIDIA, intelhda
319
                dd (CTRL_NVIDIA_MCP61_2  shl 16)+VID_NVIDIA, intelhda
320
                dd (CTRL_NVIDIA_MCP65_1  shl 16)+VID_NVIDIA, intelhda
321
                dd (CTRL_NVIDIA_MCP65_2  shl 16)+VID_NVIDIA, intelhda
322
                dd (CTRL_NVIDIA_MCP67_1  shl 16)+VID_NVIDIA, intelhda
323
                dd (CTRL_NVIDIA_MCP67_2  shl 16)+VID_NVIDIA, intelhda
324
                dd (CTRL_NVIDIA_MCP73_1  shl 16)+VID_NVIDIA, intelhda
325
                dd (CTRL_NVIDIA_MCP73_2  shl 16)+VID_NVIDIA, intelhda
326
                dd (CTRL_NVIDIA_MCP78_1  shl 16)+VID_NVIDIA, intelhda
327
                dd (CTRL_NVIDIA_MCP78_2  shl 16)+VID_NVIDIA, intelhda
328
                dd (CTRL_NVIDIA_MCP78_3  shl 16)+VID_NVIDIA, intelhda
329
                dd (CTRL_NVIDIA_MCP78_4  shl 16)+VID_NVIDIA, intelhda
330
                dd (CTRL_NVIDIA_MCP79_1  shl 16)+VID_NVIDIA, intelhda
331
                dd (CTRL_NVIDIA_MCP79_2  shl 16)+VID_NVIDIA, intelhda
332
                dd (CTRL_NVIDIA_MCP79_3  shl 16)+VID_NVIDIA, intelhda
333
                dd (CTRL_NVIDIA_MCP79_4  shl 16)+VID_NVIDIA, intelhda
334
                dd (CTRL_NVIDIA_0BE2     shl 16)+VID_NVIDIA, intelhda
335
                dd (CTRL_NVIDIA_0BE3     shl 16)+VID_NVIDIA, intelhda
336
                dd (CTRL_NVIDIA_0BE4     shl 16)+VID_NVIDIA, intelhda
337
                dd (CTRL_NVIDIA_GT100    shl 16)+VID_NVIDIA, intelhda
338
                dd (CTRL_NVIDIA_GT106    shl 16)+VID_NVIDIA, intelhda
339
                dd (CTRL_NVIDIA_GT108    shl 16)+VID_NVIDIA, intelhda
340
                dd (CTRL_NVIDIA_GT104    shl 16)+VID_NVIDIA, intelhda
341
                dd (CTRL_NVIDIA_GT116    shl 16)+VID_NVIDIA, intelhda
342
                dd (CTRL_NVIDIA_MCP89_1  shl 16)+VID_NVIDIA, intelhda
343
                dd (CTRL_NVIDIA_MCP89_2  shl 16)+VID_NVIDIA, intelhda
344
                dd (CTRL_NVIDIA_MCP89_3  shl 16)+VID_NVIDIA, intelhda
345
                dd (CTRL_NVIDIA_MCP89_4  shl 16)+VID_NVIDIA, intelhda
346
                dd (CTRL_NVIDIA_GF119    shl 16)+VID_NVIDIA, intelhda
347
                dd (CTRL_NVIDIA_GF110_1  shl 16)+VID_NVIDIA, intelhda
348
                dd (CTRL_NVIDIA_GF110_2  shl 16)+VID_NVIDIA, intelhda
3171 hidnplayr 349
; ATI
3765 Serge 350
                dd (CTRL_ATI_SB450   shl 16)+VID_ATI, intelhda
351
                dd (CTRL_ATI_SB600   shl 16)+VID_ATI, intelhda
352
                dd (CTRL_ATI_RS600   shl 16)+VID_ATI, intelhda
353
                dd (CTRL_ATI_RS690   shl 16)+VID_ATI, intelhda
354
                dd (CTRL_ATI_RS780   shl 16)+VID_ATI, intelhda
355
                dd (CTRL_ATI_RS_UNK1 shl 16)+VID_ATI, intelhda
356
                dd (CTRL_ATI_R600    shl 16)+VID_ATI, intelhda
357
                dd (CTRL_ATI_RV610   shl 16)+VID_ATI, intelhda
358
                dd (CTRL_ATI_RV620   shl 16)+VID_ATI, intelhda
359
                dd (CTRL_ATI_RV630   shl 16)+VID_ATI, intelhda
360
                dd (CTRL_ATI_RV635   shl 16)+VID_ATI, intelhda
361
                dd (CTRL_ATI_RV670   shl 16)+VID_ATI, intelhda
362
                dd (CTRL_ATI_RV710   shl 16)+VID_ATI, intelhda
363
                dd (CTRL_ATI_RV730   shl 16)+VID_ATI, intelhda
364
                dd (CTRL_ATI_RV740   shl 16)+VID_ATI, intelhda
365
                dd (CTRL_ATI_RV770   shl 16)+VID_ATI, intelhda
3171 hidnplayr 366
; AMD
3765 Serge 367
                dd (CTRL_AMD_HUDSON shl 16)+VID_AMD, intelhda
3171 hidnplayr 368
; VIA
3765 Serge 369
                dd (CTRL_VIA_VT82XX shl 16)+VID_VIA, intelhda
370
                dd (CTRL_VIA_VT61XX shl 16)+VID_VIA, intelhda
371
                dd (CTRL_VIA_VT71XX shl 16)+VID_VIA, intelhda
3171 hidnplayr 372
; SiS
3765 Serge 373
                dd (CTRL_SIS_966    shl 16)+VID_SIS, intelhda
3171 hidnplayr 374
; ULI
3765 Serge 375
                dd (CTRL_ULI_M5461  shl 16)+VID_ULI, intelhda
3171 hidnplayr 376
; Teradici
3765 Serge 377
                dd (CTRL_TERA_UNK1  shl 16)+VID_ULI, intelhda
3171 hidnplayr 378
; Creative
3765 Serge 379
                dd (CTRL_CREATIVE_CA0110_IBG     shl 16)+VID_CREATIVE, intelhda
380
                dd (CTRL_CREATIVE_SOUND_CORE3D_1 shl 16)+VID_CREATIVE, intelhda
381
                dd (CTRL_CREATIVE_SOUND_CORE3D_2 shl 16)+VID_CREATIVE, intelhda
3171 hidnplayr 382
; RDC Semiconductor
3765 Serge 383
                dd (CTRL_RDC_R3010  shl 16)+VID_RDC, intelhda
3171 hidnplayr 384
; VMware
3765 Serge 385
                dd (CTRL_VMWARE_UNK1  shl 16)+VID_VMWARE, intelhda
3171 hidnplayr 386
 
5070 hidnplayr 387
                dd 0    ; terminator
3171 hidnplayr 388
 
389
 
3765 Serge 390
srv_entry       dd 0
391
 
3171 hidnplayr 392
intelac97       db 'INTELAC97', 0
393
vt823x          db 'VT823X', 0
394
sis             db 'SIS', 0
395
fm801           db 'FM801', 0
396
ensoniq         db 'ENSONIQ', 0
397
emu10k1x        db 'EMU10K1X', 0
398
intelhda        db 'INTEL_HDA', 0
5168 hidnplayr 399
sb16            db 'SB16', 0
3171 hidnplayr 400
 
401
msgInit         db 'Detecting hardware...',13,10,0
5168 hidnplayr 402
msgFail         db 'No compatible PCI soundcard found!',13,10,0
3171 hidnplayr 403
msgLoading      db 'Loading ',0
404
msgNewline      db 13,10,0
405
 
5070 hidnplayr 406
align 4
407
data fixups
5071 hidnplayr 408
end data