Rev 431 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 431 | Rev 465 | ||
---|---|---|---|
Line 9... | Line 9... | ||
9 | 9 | ||
10 | 10 | ||
Line -... | Line 11... | ||
- | 11 | include 'proc32.inc' |
|
- | 12 | include 'imports.inc' |
|
11 | include 'proc32.inc' |
13 | |
Line 12... | Line 14... | ||
12 | include 'imports.inc' |
14 | API_VERSION equ 0x01000100 |
Line 13... | Line 15... | ||
13 | 15 | ||
Line 55... | Line 57... | ||
55 | BIT28 EQU 0x10000000 |
57 | BIT28 EQU 0x10000000 |
56 | BIT29 EQU 0x20000000 |
58 | BIT29 EQU 0x20000000 |
57 | BIT30 EQU 0x40000000 |
59 | BIT30 EQU 0x40000000 |
58 | BIT31 EQU 0x80000000 |
60 | BIT31 EQU 0x80000000 |
Line -... | Line 61... | ||
- | 61 | ||
- | 62 | PCM_4 equ BIT20 |
|
- | 63 | PCM_6 equ BIT21 |
|
59 | 64 | ||
60 | VID_INTEL equ 0x8086 |
65 | VID_INTEL equ 0x8086 |
Line 61... | Line 66... | ||
61 | VID_NVIDIA equ 0x10DE |
66 | VID_NVIDIA equ 0x10DE |
62 | 67 | ||
Line 90... | Line 95... | ||
90 | MC_IN_CR_REG equ 0x2b ; MIC in Control Register |
95 | MC_IN_CR_REG equ 0x2b ; MIC in Control Register |
91 | RR equ BIT1 ; reset registers. Nukes all regs |
96 | RR equ BIT1 ; reset registers. Nukes all regs |
Line 92... | Line 97... | ||
92 | 97 | ||
93 | CODEC_MASTER_VOL_REG equ 0x02 |
98 | CODEC_MASTER_VOL_REG equ 0x02 |
94 | CODEC_AUX_VOL equ 0x04 ; |
99 | CODEC_AUX_VOL equ 0x04 ; |
95 | CODEC_PCM_OUT_REG equ 18h ; PCM output volume |
100 | CODEC_PCM_OUT_REG equ 0x18 ; PCM output volume |
96 | CODEC_EXT_AUDIO_REG equ 28h ; extended audio |
101 | CODEC_EXT_AUDIO_REG equ 0x28 ; extended audio |
97 | CODEC_EXT_AUDIO_CTRL_REG equ 2ah ; extended audio control |
102 | CODEC_EXT_AUDIO_CTRL_REG equ 0x2a ; extended audio control |
98 | CODEC_PCM_FRONT_DACRATE_REG equ 2ch ; PCM out sample rate |
103 | CODEC_PCM_FRONT_DACRATE_REG equ 0x2c ; PCM out sample rate |
99 | CODEC_PCM_SURND_DACRATE_REG equ 2eh ; surround sound sample rate |
104 | CODEC_PCM_SURND_DACRATE_REG equ 0x2e ; surround sound sample rate |
Line 100... | Line 105... | ||
100 | CODEC_PCM_LFE_DACRATE_REG equ 30h ; LFE sample rate |
105 | CODEC_PCM_LFE_DACRATE_REG equ 0x30 ; LFE sample rate |
101 | 106 | ||
102 | GLOB_CTRL equ 0x2C ; Global Control |
107 | GLOB_CTRL equ 0x2C ; Global Control |
Line 116... | Line 121... | ||
116 | CTRL_CNT_GIE equ 0x00000001 ; GPI Interrupt Enable |
121 | CTRL_CNT_GIE equ 0x00000001 ; GPI Interrupt Enable |
Line 117... | Line 122... | ||
117 | 122 | ||
118 | CODEC_REG_POWERDOWN equ 0x26 |
123 | CODEC_REG_POWERDOWN equ 0x26 |
Line -... | Line 124... | ||
- | 124 | CODEC_REG_ST equ 0x26 |
|
119 | CODEC_REG_ST equ 0x26 |
125 | |
120 | 126 | SRV_GETVERSION equ 0 |
|
121 | DEV_PLAY equ 1 |
127 | DEV_PLAY equ 1 |
122 | DEV_STOP equ 2 |
128 | DEV_STOP equ 2 |
123 | DEV_CALLBACK equ 3 |
129 | DEV_CALLBACK equ 3 |
Line 274... | Line 280... | ||
274 | IOCTL IOCTL |
280 | IOCTL IOCTL |
275 | end virtual |
281 | end virtual |
Line 276... | Line 282... | ||
276 | 282 | ||
Line 277... | Line 283... | ||
277 | EVENT_NOTIFY equ 0x00000200 |
283 | EVENT_NOTIFY equ 0x00000200 |
278 | 284 | ||
279 | OS_BASE equ 0; |
- | |
Line 280... | Line 285... | ||
280 | SLOT_BASE equ OS_BASE+0x0080000 |
285 | OS_BASE equ 0x80000000 |
281 | new_app_base equ 0x80000000 |
286 | SLOT_BASE equ OS_BASE+0x0080000 |
282 | 287 | ||
Line 356... | Line 361... | ||
356 | mov esi, msgAttchIRQ |
361 | mov esi, msgAttchIRQ |
357 | bt eax, ebx |
362 | bt eax, ebx |
358 | jnc .fail |
363 | jnc .fail |
Line 359... | Line 364... | ||
359 | 364 | ||
- | 365 | stdcall AttachIntHandler, ebx, ac97_irq |
|
360 | stdcall AttachIntHandler, ebx, ac97_irq |
366 | .reg: |
361 | stdcall RegService, sz_sound_srv, service_proc |
367 | stdcall RegService, sz_sound_srv, service_proc |
362 | ret |
368 | ret |
363 | .fail: |
369 | .fail: |
364 | if DEBUG |
370 | if DEBUG |
Line 383... | Line 389... | ||
383 | align 4 |
389 | align 4 |
384 | proc service_proc stdcall, ioctl:dword |
390 | proc service_proc stdcall, ioctl:dword |
Line 385... | Line 391... | ||
385 | 391 | ||
386 | mov edi, [ioctl] |
392 | mov edi, [ioctl] |
- | 393 | mov eax, [edi+io_code] |
|
- | 394 | ||
- | 395 | cmp eax, SRV_GETVERSION |
|
- | 396 | jne @F |
|
- | 397 | ||
- | 398 | mov eax, [edi+output] |
|
- | 399 | cmp [edi+out_size], 4 |
|
- | 400 | jne .fail |
|
- | 401 | ||
- | 402 | mov [eax], dword API_VERSION |
|
- | 403 | xor eax, eax |
|
- | 404 | ret |
|
387 | mov eax, [edi+io_code] |
405 | @@: |
388 | cmp eax, DEV_PLAY |
406 | cmp eax, DEV_PLAY |
389 | jne @F |
407 | jne @F |
390 | if DEBUG |
408 | if DEBUG |
391 | mov esi, msgPlay |
409 | mov esi, msgPlay |
Line 417... | Line 435... | ||
417 | ret |
435 | ret |
418 | @@: |
436 | @@: |
419 | cmp eax, DEV_GET_MASTERVOL |
437 | cmp eax, DEV_GET_MASTERVOL |
420 | jne @F |
438 | jne @F |
421 | mov ebx, [edi+output] |
439 | mov ebx, [edi+output] |
422 | add ebx, new_app_base |
- | |
423 | stdcall get_master_vol, ebx |
440 | stdcall get_master_vol, ebx |
424 | ret |
441 | ret |
425 | ;@@: |
442 | ;@@: |
426 | ; cmp eax, DEV_GET_INFO |
443 | ; cmp eax, DEV_GET_INFO |
427 | ; jne @F |
444 | ; jne @F |
Line 870... | Line 887... | ||
870 | jnz .wait |
887 | jnz .wait |
871 | .err: |
888 | .err: |
872 | xor eax, eax ; timeout error |
889 | xor eax, eax ; timeout error |
873 | ret |
890 | ret |
874 | .ready: |
891 | .ready: |
- | 892 | mov eax, 2 ;force set 16-bit 2-channel PCM |
|
- | 893 | mov edx, GLOB_CTRL |
|
- | 894 | call [ctrl.ctrl_write32] |
|
- | 895 | mov eax, 5000 ; wait 5 ms |
|
- | 896 | call StallExec |
|
- | 897 | ||
875 | call detect_codec |
898 | call detect_codec |
Line 876... | Line 899... | ||
876 | 899 | ||
877 | xor eax, eax |
900 | xor eax, eax |
878 | inc eax |
901 | inc eax |
Line 1355... | Line 1378... | ||
1355 | dd (CTRL_CK8S shl 16)+VID_NVIDIA,msg_CK8S,set_ICH |
1378 | dd (CTRL_CK8S shl 16)+VID_NVIDIA,msg_CK8S,set_ICH |
1356 | dd (CTRL_MCP51 shl 16)+VID_NVIDIA,msg_MCP51,set_ICH |
1379 | dd (CTRL_MCP51 shl 16)+VID_NVIDIA,msg_MCP51,set_ICH |
Line 1357... | Line 1380... | ||
1357 | 1380 | ||
Line -... | Line 1381... | ||
- | 1381 | dd 0 ;terminator |
|
1358 | dd 0 ;terminator |
1382 | |
Line 1359... | Line 1383... | ||
1359 | 1383 | ||
1360 | version dd 0x00040004 |
1384 | version dd (5 shl 16) or (API_VERSION and 0xFFFF) |
1361 | 1385 | ||
1362 | msg_ICH db 'Intel ICH', 13,10, 0 |
1386 | msg_ICH db 'Intel ICH', 13,10, 0 |
Line 1413... | Line 1437... | ||
1413 | codec CODEC |
1437 | codec CODEC |
1414 | ctrl AC_CNTRL |
1438 | ctrl AC_CNTRL |
Line 1415... | Line 1439... | ||
1415 | 1439 | ||
1416 | lpc_bus rd 1 |
1440 | lpc_bus rd 1 |
1417 | civ_val rd 1 |
- | |
1418 | - |