Rev 387 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 387 | Rev 413 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | format MS COFF |
3 | format MS COFF |
Line 4... | Line 4... | ||
4 | 4 | ||
- | 5 | ||
Line 5... | Line 6... | ||
5 | 6 | include 'proc32.inc' |
|
Line 6... | Line 7... | ||
6 | include 'proc32.inc' |
7 | include 'imports.inc' |
Line 50... | Line 51... | ||
50 | BIT29 EQU 0x20000000 |
51 | BIT29 EQU 0x20000000 |
51 | BIT30 EQU 0x40000000 |
52 | BIT30 EQU 0x40000000 |
52 | BIT31 EQU 0x80000000 |
53 | BIT31 EQU 0x80000000 |
53 | 54 | ||
Line 54... | Line -... | ||
54 | VID_INTEL equ 0x8086 |
- | |
55 | VID_NVIDIA equ 0x10DE |
- | |
56 | - | ||
57 | CTRL_ICH equ 0x2415 |
- | |
58 | CTRL_ICH0 equ 0x2425 |
- | |
59 | CTRL_ICH2 equ 0x2435 |
- | |
60 | CTRL_ICH3 equ 0x2445 |
- | |
61 | CTRL_ICH4 equ 0x24C5 |
- | |
62 | CTRL_ICH5 equ 0x24D5 |
- | |
63 | CTRL_ICH6 equ 0x266E |
- | |
64 | CTRL_ICH7 equ 0x27DE |
- | |
65 | - | ||
66 | CTRL_NFORCE equ 0x01B1 |
- | |
67 | CTRL_NFORCE2 equ 0x006A |
- | |
68 | CTRL_NFORCE3 equ 0x00DA |
- | |
69 | - | ||
Line 70... | Line 55... | ||
70 | 55 | ||
71 | PCM_OUT_BDL equ 0x10 ; PCM out buffer descriptors list |
56 | PCM_OUT_BDL equ 0x10 ; PCM out buffer descriptors list |
72 | PCM_OUT_CR_REG equ 0x1b ; PCM out Control Register |
57 | PCM_OUT_CR_REG equ 0x1b ; PCM out Control Register |
73 | PCM_OUT_LVI_REG equ 0x15 ; PCM last valid index |
58 | PCM_OUT_LVI_REG equ 0x15 ; PCM last valid index |
Line 264... | Line 249... | ||
264 | end virtual |
249 | end virtual |
265 | 250 | ||
Line 266... | Line 251... | ||
266 | EVENT_NOTIFY equ 0x00000200 |
251 | EVENT_NOTIFY equ 0x00000200 |
Line 267... | Line 252... | ||
267 | 252 | ||
268 | OS_BASE equ 0; 0x80400000 |
253 | OS_BASE equ 0; |
269 | new_app_base equ 0x60400000; 0x01000000 |
254 | SLOT_BASE equ OS_BASE+0x0080000 |
Line 270... | Line 255... | ||
270 | PROC_BASE equ OS_BASE+0x0080000 |
255 | new_app_base equ 0x80000000 |
271 | - | ||
272 | public START |
256 | |
273 | public STOP |
- | |
274 | public service_proc |
- | |
275 | - | ||
276 | extrn AttachIntHandler |
- | |
277 | extrn SysMsgBoardStr |
- | |
278 | extrn PciApi |
- | |
279 | extrn PciRead32 |
- | |
280 | extrn PciRead8 |
- | |
281 | extrn PciWrite8 |
- | |
282 | extrn AllocKernelSpace |
257 | public START |
283 | extrn MapPage |
- | |
284 | extrn RegService |
- | |
285 | extrn KernelAlloc |
- | |
Line 286... | Line 258... | ||
286 | extrn GetPgAddr |
258 | public service_proc |
Line -... | Line 259... | ||
- | 259 | public version |
|
- | 260 | ||
- | 261 | section '.flat' code readable align 16 |
|
- | 262 | ||
287 | extrn GetCurrentTask |
263 | proc START stdcall, state:dword |
288 | 264 | ||
289 | section '.flat' code readable align 16 |
265 | cmp [state], 1 |
290 | 266 | jne .stop |
|
291 | START: |
267 | |
Line 292... | Line 268... | ||
292 | if DEBUG |
268 | if DEBUG |
293 | mov esi, msgInit |
269 | mov esi, msgDetect |
294 | call SysMsgBoardStr |
270 | call SysMsgBoardStr |
Line 295... | Line 271... | ||
295 | end if |
271 | end if |
296 | 272 | ||
297 | call detect_controller |
273 | call detect_controller |
298 | test eax, eax |
274 | test eax, eax |
299 | jz .fail |
275 | jz .fail |
Line 300... | Line 276... | ||
300 | 276 | ||
301 | if DEBUG |
- | |
302 | mov esi,[ctrl.vendor_ids] |
277 | if DEBUG |
303 | call SysMsgBoardStr |
278 | mov esi,[ctrl.vendor_ids] |
304 | mov esi, [ctrl.ctrl_ids] |
279 | call SysMsgBoardStr |
Line -... | Line 280... | ||
- | 280 | mov esi, [ctrl.ctrl_ids] |
|
- | 281 | call SysMsgBoardStr |
|
305 | call SysMsgBoardStr |
282 | |
306 | 283 | end if |
|
307 | end if |
284 | call init_controller |
308 | 285 | test eax, eax |
|
Line 309... | Line 286... | ||
309 | call init_controller |
286 | jz .fail |
310 | test eax, eax |
287 | |
311 | jz .fail |
288 | jmp .fail ;force fail |
Line 312... | Line 289... | ||
312 | 289 | ||
313 | if DEBUG |
290 | if DEBUG |
314 | mov esi, msgInitCodec |
291 | mov esi, msgInitCodec |
Line 315... | Line 292... | ||
315 | call SysMsgBoardStr |
292 | call SysMsgBoardStr |
316 | end if |
293 | end if |
317 | 294 | ||
Line 318... | Line 295... | ||
318 | call init_codec |
295 | call init_codec |
319 | test eax, eax |
296 | test eax, eax |
Line 334... | Line 311... | ||
334 | call SysMsgBoardStr |
311 | call SysMsgBoardStr |
335 | 312 | ||
Line 336... | Line 313... | ||
336 | call create_primary_buff |
313 | call create_primary_buff |
Line 337... | Line -... | ||
337 | - | ||
338 | ; if REMAP_IRQ |
- | |
339 | - | ||
340 | ; call get_LPC_bus |
- | |
341 | ; cmp eax, -1 |
- | |
342 | ; jz .fail |
- | |
343 | - | ||
344 | ; mov [lpc_bus], 0 ;eax |
- | |
345 | ; call remap_irq |
- | |
346 | ; end if |
- | |
347 | 314 | ||
348 | mov eax, VALID_IRQ |
315 | mov eax, VALID_IRQ |
349 | mov ebx, [ctrl.int_line] |
316 | mov ebx, [ctrl.int_line] |
350 | mov esi, msgInvIRQ |
317 | mov esi, msgInvIRQ |
351 | bt eax, ebx |
318 | bt eax, ebx |
Line 359... | Line 326... | ||
359 | stdcall RegService, sz_sound_srv, service_proc |
326 | stdcall RegService, sz_sound_srv, service_proc |
360 | ret |
327 | ret |
361 | .fail: |
328 | .fail: |
362 | if DEBUG |
329 | if DEBUG |
363 | mov esi, msgFail |
330 | mov esi, msgFail |
364 | call SysMsgBoardStr |
331 | call SysMsgBoardStr |
365 | end if |
332 | end if |
366 | xor eax, eax |
333 | xor eax, eax |
367 | STOP: |
334 | ret |
368 | ret |
- | |
369 | 335 | .stop: |
|
- | 336 | call stop |
|
- | 337 | xor eax, eax |
|
- | 338 | ret |
|
- | 339 | endp |
|
- | 340 | ||
Line 370... | Line 341... | ||
370 | handle equ IOCTL.handle |
341 | handle equ IOCTL.handle |
371 | io_code equ IOCTL.io_code |
342 | io_code equ IOCTL.io_code |
372 | input equ IOCTL.input |
343 | input equ IOCTL.input |
373 | inp_size equ IOCTL.inp_size |
344 | inp_size equ IOCTL.inp_size |
Line 378... | Line 349... | ||
378 | proc service_proc stdcall, ioctl:dword |
349 | proc service_proc stdcall, ioctl:dword |
379 | 350 | ||
Line 380... | Line 351... | ||
380 | mov edi, [ioctl] |
351 | mov edi, [ioctl] |
381 | mov eax, [edi+io_code] |
352 | mov eax, [edi+io_code] |
382 | cmp eax, DEV_PLAY |
353 | cmp eax, DEV_PLAY |
383 | jne @F |
354 | jne @F |
384 | if DEBUG |
355 | if DEBUG |
385 | mov esi, msgPlay |
356 | mov esi, msgPlay |
386 | call SysMsgBoardStr |
357 | call SysMsgBoardStr |
387 | end if |
358 | end if |
388 | call play |
359 | call play |
389 | ret |
360 | ret |
390 | @@: |
361 | @@: |
391 | cmp eax, DEV_STOP |
362 | cmp eax, DEV_STOP |
392 | jne @F |
363 | jne @F |
393 | if DEBUG |
364 | if DEBUG |
394 | mov esi, msgStop |
365 | mov esi, msgStop |
395 | call SysMsgBoardStr |
366 | call SysMsgBoardStr |
396 | end if |
367 | end if |
397 | call stop |
368 | call stop |
398 | ret |
369 | ret |
399 | @@: |
370 | @@: |
400 | cmp eax, DEV_CALLBACK |
371 | cmp eax, DEV_CALLBACK |
401 | jne @F |
372 | jne @F |
402 | mov ebx, [edi+input] |
373 | mov ebx, [edi+input] |
403 | stdcall set_callback, [ebx] |
374 | stdcall set_callback, [ebx] |
404 | ret |
375 | ret |
405 | @@: |
376 | @@: |
406 | cmp eax, DEV_SET_MASTERVOL |
377 | cmp eax, DEV_SET_MASTERVOL |
407 | jne @F |
378 | jne @F |
408 | mov ebx, [edi+input] |
379 | mov eax, [edi+input] |
- | 380 | mov eax, [eax] |
|
409 | stdcall set_master_vol, [ebx] |
381 | call set_master_vol ;eax= vol |
410 | ret |
382 | ret |
411 | @@: |
383 | @@: |
412 | cmp eax, DEV_GET_MASTERVOL |
384 | cmp eax, DEV_GET_MASTERVOL |
413 | jne @F |
385 | jne @F |
414 | mov ebx, [edi+output] |
386 | mov ebx, [edi+output] |
415 | test ebx, ebx |
387 | add ebx, new_app_base |
416 | jz .fail |
- | |
417 | - | ||
418 | stdcall get_master_vol, ebx |
388 | stdcall get_master_vol, ebx |
419 | ret |
389 | ret |
420 | @@: |
390 | ;@@: |
421 | cmp eax, DEV_GET_INFO |
391 | ; cmp eax, DEV_GET_INFO |
422 | jne @F |
392 | ; jne @F |
423 | mov ebx, [edi+output] |
393 | ; mov ebx, [edi+output] |
424 | stdcall get_dev_info, ebx |
394 | ; stdcall get_dev_info, ebx |
425 | ret |
395 | ; ret |
426 | @@: |
396 | @@: |
427 | .fail: |
397 | .fail: |
428 | xor eax, eax |
398 | or eax, -1 |
429 | ret |
399 | ret |
430 | endp |
400 | endp |
Line 431... | Line 401... | ||
431 | 401 | ||
432 | restore handle |
402 | restore handle |
433 | restore io_code |
403 | restore io_code |
Line 437... | Line 407... | ||
437 | restore out_size |
407 | restore out_size |
438 | 408 | ||
Line 439... | Line 409... | ||
439 | 409 | ||
440 | align 4 |
- | |
441 | proc remap_irq ;for Intel chipsets ONLY !!! |
- | |
442 | mov eax, VALID_IRQ |
- | |
443 | bt eax, IRQ_LINE |
- | |
444 | jnc .exit |
- | |
445 | - | ||
446 | mov edx, 0x4D0 |
- | |
447 | in ax,dx |
- | |
448 | bts ax, IRQ_LINE |
- | |
449 | out dx, aX |
- | |
450 | - | ||
451 | stdcall PciWrite8, dword 0, dword 0xF8, dword 0x61, dword IRQ_LINE |
- | |
452 | mov [ctrl.int_line], IRQ_LINE |
- | |
453 | - | ||
454 | .exit: |
- | |
455 | ret |
- | |
456 | endp |
- | |
457 | - | ||
458 | align 4 |
410 | align 4 |
Line 459... | Line 411... | ||
459 | proc ac97_irq |
411 | proc ac97_irq |
460 | 412 | ||
461 | ; if DEBUG |
413 | ; if DEBUG |
462 | ; mov esi, msgIRQ |
414 | ; mov esi, msgIRQ |
Line 463... | Line -... | ||
463 | ; call SysMsgBoardStr |
- | |
464 | ; end if |
- | |
465 | - | ||
466 | mov edx, PCM_OUT_CR_REG |
- | |
467 | mov al, 0x14 |
- | |
468 | call [ctrl.ctrl_write8] |
- | |
469 | - | ||
470 | mov ax, 0x1c |
- | |
471 | mov edx, PCM_OUT_SR_REG |
- | |
472 | call [ctrl.ctrl_write16] |
- | |
473 | - | ||
474 | mov edx, PCM_OUT_CIV_REG |
- | |
475 | call [ctrl.ctrl_read8] |
- | |
476 | - | ||
477 | and eax, 0x1F |
- | |
478 | cmp eax, [civ_val] |
- | |
479 | je .skip |
- | |
480 | - | ||
481 | mov [civ_val], eax |
- | |
482 | dec eax |
- | |
483 | and eax, 0x1F |
- | |
484 | mov [ctrl.lvi_reg], eax |
- | |
485 | - | ||
486 | mov edx, PCM_OUT_LVI_REG |
- | |
487 | call [ctrl.ctrl_write8] |
- | |
488 | - | ||
489 | mov edx, PCM_OUT_CR_REG |
- | |
490 | mov ax, 0x1D |
- | |
491 | call [ctrl.ctrl_write8] |
- | |
492 | - | ||
493 | mov eax, [civ_val] |
- | |
Line 494... | Line 415... | ||
494 | add eax, 2 |
415 | ; call SysMsgBoardStr |
495 | and eax, 31 |
416 | ; end if |
Line 496... | Line 417... | ||
496 | mov ebx, dword [buff_list+eax*4] |
417 | |
497 | 418 | ||
498 | cmp [ctrl.user_callback], 0 |
419 | cmp [ctrl.user_callback], 0 |
Line 499... | Line 420... | ||
499 | je @f |
420 | je @f |
500 | 421 | ||
501 | stdcall [ctrl.user_callback], ebx |
422 | stdcall [ctrl.user_callback], ebx |
502 | @@: |
423 | @@: |
503 | ret |
424 | ret |
504 | 425 | ||
Line 505... | Line 426... | ||
505 | .skip: |
426 | .skip: |
506 | mov edx, PCM_OUT_CR_REG |
427 | mov edx, PCM_OUT_CR_REG |
Line 507... | Line 428... | ||
507 | mov ax, 0x1D |
428 | mov ax, 0x11 ;0x1D |
508 | call [ctrl.ctrl_write8] |
429 | call [ctrl.ctrl_write8] |
Line 509... | Line 430... | ||
509 | ret |
430 | ret |
510 | endp |
431 | endp |
511 | 432 | ||
512 | align 4 |
433 | align 4 |
513 | proc create_primary_buff |
434 | proc create_primary_buff |
Line 514... | Line 435... | ||
514 | 435 | ||
- | 436 | stdcall KernelAlloc, 0x10000 |
|
Line 515... | Line 437... | ||
515 | stdcall KernelAlloc, 0x10000 |
437 | mov [ctrl.buffer], eax |
516 | mov [ctrl.buffer], eax |
438 | |
517 | 439 | mov edi, eax |
|
518 | mov edi, eax |
440 | mov ecx, 0x10000/4 |
519 | mov ecx, 0x10000/4 |
441 | xor eax, eax |
520 | xor eax, eax |
442 | cld |
Line 521... | Line 443... | ||
521 | cld |
443 | rep stosd |
522 | rep stosd |
444 | |
Line 523... | Line 445... | ||
523 | 445 | mov eax, [ctrl.buffer] |
|
524 | stdcall GetPgAddr, [ctrl.buffer] |
446 | call GetPgAddr |
Line 525... | Line 447... | ||
525 | 447 | ||
526 | mov ebx, 0xC0002000 |
448 | mov ebx, 0xC0002000 |
Line 527... | Line 449... | ||
527 | mov ecx, 4 |
449 | mov ecx, 4 |
528 | mov edi, pcmout_bdl |
450 | mov edi, pcmout_bdl |
Line 529... | Line 451... | ||
529 | @@: |
451 | @@: |
530 | mov [edi], eax |
452 | mov [edi], eax |
Line 531... | Line 453... | ||
531 | mov [edi+4], ebx |
453 | mov [edi+4], ebx |
532 | 454 | ||
Line 533... | Line 455... | ||
533 | mov [edi+32], eax |
455 | mov [edi+32], eax |
534 | mov [edi+4+32], ebx |
456 | mov [edi+4+32], ebx |
Line 535... | Line 457... | ||
535 | 457 | ||
536 | mov [edi+64], eax |
458 | mov [edi+64], eax |
537 | mov [edi+4+64], ebx |
459 | mov [edi+4+64], ebx |
Line 538... | Line 460... | ||
538 | 460 | ||
539 | mov [edi+96], eax |
461 | mov [edi+96], eax |
540 | mov [edi+4+96], ebx |
462 | mov [edi+4+96], ebx |
541 | 463 | ||
542 | mov [edi+128], eax |
464 | mov [edi+128], eax |
543 | mov [edi+4+128], ebx |
465 | mov [edi+4+128], ebx |
544 | 466 | ||
545 | mov [edi+160], eax |
467 | mov [edi+160], eax |
546 | mov [edi+4+160], ebx |
468 | mov [edi+4+160], ebx |
547 | 469 | ||
548 | mov [edi+192], eax |
470 | mov [edi+192], eax |
549 | mov [edi+4+192], ebx |
471 | mov [edi+4+192], ebx |
550 | 472 | ||
551 | mov [edi+224], eax |
473 | mov [edi+224], eax |
552 | mov [edi+4+224], ebx |
474 | mov [edi+4+224], ebx |
553 | 475 | ||
554 | add eax, 0x4000 |
476 | add eax, 0x4000 |
555 | add edi, 8 |
477 | add edi, 8 |
- | 478 | loop @B |
|
556 | loop @B |
479 | |
557 | 480 | mov edi, buff_list |
|
558 | mov edi, buff_list |
481 | mov eax, [ctrl.buffer] |
559 | mov eax, [ctrl.buffer] |
482 | mov ecx, 4 |
560 | mov ecx, 4 |
483 | @@: |
561 | @@: |
484 | mov [edi], eax |
562 | mov [edi], eax |
485 | mov [edi+16], eax |
563 | mov [edi+16], eax |
486 | mov [edi+32], eax |
564 | mov [edi+32], eax |
487 | mov [edi+48], eax |
565 | mov [edi+48], eax |
488 | mov [edi+64], eax |
566 | mov [edi+64], eax |
489 | mov [edi+80], eax |
567 | mov [edi+80], eax |
- | |
568 | mov [edi+96], eax |
490 | mov [edi+96], eax |
569 | mov [edi+112], eax |
491 | mov [edi+112], eax |
Line 570... | Line 492... | ||
570 | 492 | ||
571 | add eax, 0x4000 |
493 | add eax, 0x4000 |
572 | add edi, 4 |
494 | add edi, 4 |
573 | loop @B |
495 | loop @B |
574 | 496 | ||
575 | mov ecx, pcmout_bdl |
497 | mov eax, pcmout_bdl |
576 | stdcall GetPgAddr, ecx |
498 | mov ebx, eax |
Line 577... | Line 499... | ||
577 | and ecx, 0xFFF |
499 | call GetPgAddr ;eax |
578 | add eax, ecx |
500 | and ebx, 0xFFF |
579 | 501 | add eax, ebx |
|
580 | mov edx, PCM_OUT_BDL |
502 | |
581 | call [ctrl.ctrl_write32] |
503 | mov edx, PCM_OUT_BDL |
582 | 504 | call [ctrl.ctrl_write32] |
|
Line 583... | Line 505... | ||
583 | mov eax, 16 |
505 | |
Line 584... | Line 506... | ||
584 | mov [ctrl.lvi_reg], eax |
506 | mov eax, 16 |
585 | mov edx, PCM_OUT_LVI_REG |
507 | mov [ctrl.lvi_reg], eax |
586 | call [ctrl.ctrl_write8] |
508 | mov edx, PCM_OUT_LVI_REG |
587 | 509 | call [ctrl.ctrl_write8] |
|
588 | ret |
510 | ret |
589 | endp |
511 | endp |
590 | 512 | ||
591 | align 4 |
513 | align 4 |
Line 592... | Line 514... | ||
592 | proc detect_controller |
514 | proc detect_controller |
593 | locals |
515 | locals |
594 | last_bus dd ? |
516 | last_bus dd ? |
595 | bus dd ? |
517 | bus dd ? |
596 | devfn dd ? |
518 | devfn dd ? |
597 | endl |
519 | endl |
598 | 520 | ||
599 | xor eax, eax |
521 | xor eax, eax |
600 | mov [bus], eax |
522 | mov [bus], eax |
601 | inc eax |
523 | inc eax |
602 | call PciApi |
524 | call PciApi |
- | 525 | cmp eax, -1 |
|
603 | cmp eax, -1 |
526 | je .err |
604 | je .no_pci |
527 | |
605 | 528 | mov [last_bus], eax |
|
606 | mov [last_bus], eax |
529 | |
607 | 530 | .next_bus: |
|
608 | .next_bus: |
531 | and [devfn], 0 |
609 | and [devfn], 0 |
532 | .next_dev: |
610 | .next_dev: |
533 | stdcall PciRead32, [bus], [devfn], dword 0 |
611 | stdcall PciRead32, [bus], [devfn], dword 0 |
534 | test eax, eax |
612 | test eax, eax |
535 | jz .next |
613 | jz .next |
536 | cmp eax, -1 |
614 | cmp eax, -1 |
537 | je .next |
615 | je .next |
538 | |
Line 616... | Line 539... | ||
616 | 539 | mov edi, devices |
|
617 | mov edi, devices |
540 | @@: |
Line 618... | Line 541... | ||
618 | @@: |
541 | mov ebx, [edi] |
619 | mov ebx, [edi] |
542 | test ebx, ebx |
620 | test ebx, ebx |
543 | jz .next |
621 | jz .next |
544 | |
622 | 545 | cmp eax, ebx |
|
623 | cmp eax, ebx |
546 | je .found |
624 | je .found |
547 | add edi, 12 |
625 | add edi, 12 |
548 | jmp @B |
626 | jmp @B |
549 | |
627 | 550 | .next: |
|
Line 628... | Line -... | ||
628 | .next: inc [devfn] |
- | |
629 | cmp [devfn], 256 |
- | |
630 | jb .next_dev |
- | |
631 | mov eax, [bus] |
- | |
632 | inc eax |
- | |
633 | mov [bus], eax |
- | |
634 | cmp eax, [last_bus] |
- | |
635 | jna .next_bus |
- | |
636 | xor eax, eax |
- | |
637 | ret |
551 | inc [devfn] |
638 | .found: |
552 | cmp [devfn], 256 |
639 | mov ebx, [bus] |
553 | jb .next_dev |
640 | mov [ctrl.bus], ebx |
554 | mov eax, [bus] |
641 | 555 | inc eax |
|
642 | mov ecx, [devfn] |
556 | mov [bus], eax |
643 | mov [ctrl.devfn], ecx |
- | |
644 | - | ||
645 | mov edx, eax |
557 | cmp eax, [last_bus] |
646 | and edx, 0xFFFF |
- | |
647 | mov [ctrl.vendor], edx |
558 | jna .next_bus |
648 | shr eax, 16 |
559 | xor eax, eax |
649 | mov [ctrl.dev_id], eax |
560 | ret |
650 | 561 | .found: |
|
Line 651... | Line 562... | ||
651 | mov ebx, [edi+4] |
562 | mov ebx, [bus] |
652 | mov [ctrl.ctrl_ids], ebx |
- | |
653 | mov esi, [edi+8] |
- | |
654 | mov [ctrl.ctrl_setup], esi |
563 | mov [ctrl.bus], ebx |
655 | - | ||
656 | cmp ebx, VID_INTEL |
- | |
657 | jne @F |
- | |
658 | mov [ctrl.vendor_ids], msg_Intel |
- | |
659 | ret |
- | |
660 | @@: |
- | |
661 | cmp ebx, VID_NVIDIA |
- | |
662 | jne @F |
- | |
663 | mov [ctrl.vendor_ids], msg_NVidia |
- | |
Line 664... | Line 564... | ||
664 | @@: |
564 | |
665 | cmp ebx, 0x1274 |
- | |
666 | jne @F |
565 | mov ecx, [devfn] |
667 | mov [ctrl.vendor_ids], msgEnsoniq |
- | |
668 | ret |
- | |
669 | @@: |
- | |
670 | mov [ctrl.vendor_ids], 0 ;something wrong ? |
- | |
Line 671... | Line 566... | ||
671 | ret |
566 | mov [ctrl.devfn], ecx |
672 | .no_pci: |
- | |
673 | mov esi, msgPCI |
- | |
674 | call SysMsgBoardStr |
567 | |
675 | .err: |
- | |
676 | xor eax, eax |
568 | mov edx, eax |
677 | ret |
569 | and edx, 0xFFFF |
678 | endp |
- | |
679 | - | ||
680 | align 4 |
570 | mov [ctrl.vendor], edx |
681 | proc get_LPC_bus ;for Intel chipsets ONLY !!! |
- | |
682 | locals |
- | |
683 | last_bus dd ? |
- | |
684 | bus dd ? |
571 | shr eax, 16 |
685 | endl |
- | |
686 | - | ||
Line 687... | Line 572... | ||
687 | xor eax, eax |
572 | mov [ctrl.dev_id], eax |
688 | mov [bus], eax |
573 | |
Line 689... | Line -... | ||
689 | inc eax |
- | |
690 | call [PciApi] |
- | |
691 | cmp eax, -1 |
- | |
692 | je .err |
574 | mov ebx, [edi+4] |
693 | - | ||
694 | mov [last_bus], eax |
575 | mov [ctrl.ctrl_ids], ebx |
Line 695... | Line 576... | ||
695 | .next_bus: |
576 | mov esi, [edi+8] |
696 | stdcall PciRead32, [bus], dword 0xF8, dword 0 |
- | |
697 | test eax, eax |
- | |
698 | jz .next |
- | |
699 | cmp eax, -1 |
- | |
700 | je .next |
577 | mov [ctrl.ctrl_setup], esi |
701 | 578 | ||
Line 702... | Line 579... | ||
702 | cmp eax, 0x24D08086 |
579 | cmp ebx, 0x1274 |
703 | je .found |
580 | jne @F |
Line 704... | Line 581... | ||
704 | .next: |
581 | mov [ctrl.vendor_ids], msgEnsoniq |
705 | mov eax, [bus] |
582 | ret |
Line 706... | Line 583... | ||
706 | inc eax |
583 | @@: |
707 | cmp eax, [last_bus] |
584 | mov [ctrl.vendor_ids], 0 ;something wrong ? |
708 | mov [bus], eax |
585 | ret |
Line 709... | Line -... | ||
709 | jna .next_bus |
- | |
710 | .err: |
586 | .err: |
711 | xor eax, eax |
587 | xor eax, eax |
Line 712... | Line 588... | ||
712 | dec eax |
588 | ret |
713 | ret |
589 | endp |
714 | .found: |
590 | |
715 | mov eax, [bus] |
591 | align 4 |
716 | ret |
592 | proc init_controller |
Line 717... | Line 593... | ||
717 | endp |
593 | |
718 | 594 | mov esi, msgPCIcmd |
|
719 | align 4 |
595 | call SysMsgBoardStr |
720 | proc init_controller |
596 | |
721 | - | ||
722 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 4 |
- | |
723 | mov ebx, eax |
- | |
724 | and eax, 0xFFFF |
- | |
725 | mov [ctrl.pci_cmd], eax |
- | |
726 | shr ebx, 16 |
- | |
727 | mov [ctrl.pci_stat], ebx |
- | |
728 | - | ||
729 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x10 |
- | |
730 | and eax,0xFFFE |
- | |
731 | mov [ctrl.codec_io_base], eax |
- | |
732 | - | ||
733 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x14 |
- | |
Line 734... | Line -... | ||
734 | and eax, 0xFFC0 |
- | |
735 | mov [ctrl.ctrl_io_base], eax |
- | |
736 | - | ||
737 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x18 |
- | |
738 | mov [ctrl.codec_mem_base], eax |
- | |
739 | - | ||
740 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x1C |
- | |
741 | mov [ctrl.ctrl_mem_base], eax |
- | |
742 | - | ||
743 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x3C |
- | |
744 | and eax, 0xFF |
- | |
745 | mov [ctrl.int_line], eax |
- | |
746 | - | ||
747 | stdcall PciRead8, [ctrl.bus], [ctrl.devfn], dword 0x41 |
597 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 4 |
748 | and eax, 0xFF |
598 | mov ebx, eax |
749 | mov [ctrl.cfg_reg], eax |
599 | and eax, 0xFFFF |
750 | 600 | mov [ctrl.pci_cmd], eax |
|
751 | call [ctrl.ctrl_setup] |
601 | shr ebx, 16 |
752 | xor eax, eax |
602 | mov [ctrl.pci_stat], ebx |
753 | inc eax |
603 | |
754 | ret |
604 | call dword2str |
755 | endp |
605 | call SysMsgBoardStr |
Line 756... | Line 606... | ||
756 | 606 | ||
757 | align 4 |
607 | mov esi, msgIObase |
Line 758... | Line 608... | ||
758 | proc set_ICH |
608 | call SysMsgBoardStr |
759 | mov [ctrl.codec_read16], codec_io_r16 ;virtual |
609 | |
760 | mov [ctrl.codec_write16], codec_io_w16 ;virtual |
- | |
761 | - | ||
762 | mov [ctrl.ctrl_read8 ], ctrl_io_r8 ;virtual |
- | |
763 | mov [ctrl.ctrl_read16], ctrl_io_r16 ;virtual |
610 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x10 |
Line 764... | Line 611... | ||
764 | mov [ctrl.ctrl_read32], ctrl_io_r32 ;virtual |
611 | ; and eax, -16 |
765 | 612 | mov [ctrl.ctrl_io_base], eax |
|
Line 766... | Line -... | ||
766 | mov [ctrl.ctrl_write8 ], ctrl_io_w8 ;virtual |
- | |
767 | mov [ctrl.ctrl_write16], ctrl_io_w16 ;virtual |
613 | |
768 | mov [ctrl.ctrl_write32], ctrl_io_w32 ;virtual |
614 | call dword2str |
Line -... | Line 615... | ||
- | 615 | call SysMsgBoardStr |
|
769 | ret |
616 | |
770 | endp |
617 | mov esi, msgIRQline |
Line 771... | Line 618... | ||
771 | 618 | call SysMsgBoardStr |
|
772 | PG_SW equ 0x003 |
619 | |
Line -... | Line 620... | ||
- | 620 | stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x3C |
|
- | 621 | and eax, 0xFF |
|
773 | PG_NOCACHE equ 0x018 |
622 | mov [ctrl.int_line], eax |
774 | 623 | ||
Line 775... | Line 624... | ||
775 | align 4 |
624 | call dword2str |
776 | proc set_ICH4 |
625 | call SysMsgBoardStr |
777 | stdcall AllocKernelSpace, dword 0x2000 |
626 | |
778 | mov edi, eax |
627 | call [ctrl.ctrl_setup] |
779 | stdcall MapPage, edi,[ctrl.codec_mem_base],PG_SW+PG_NOCACHE |
628 | xor eax, eax |
Line 780... | Line 629... | ||
780 | mov [ctrl.codec_mem_base], edi |
629 | inc eax |
781 | add edi, 0x1000 |
630 | ret |
782 | stdcall MapPage, edi, [ctrl.ctrl_mem_base],PG_SW+PG_NOCACHE |
- | |
Line 783... | Line 631... | ||
783 | mov [ctrl.ctrl_mem_base], edi |
631 | endp |
784 | 632 | ||
- | 633 | align 4 |
|
- | 634 | proc set_ICH |
|
Line 785... | Line 635... | ||
785 | mov [ctrl.codec_read16], codec_mem_r16 ;virtual |
635 | mov [ctrl.codec_read16], codec_io_r16 ;virtual |
786 | mov [ctrl.codec_write16], codec_mem_w16 ;virtual |
- | |
787 | 636 | mov [ctrl.codec_write16], codec_io_w16 ;virtual |
|
Line 788... | Line -... | ||
788 | mov [ctrl.ctrl_read8 ], ctrl_mem_r8 ;virtual |
- | |
789 | mov [ctrl.ctrl_read16], ctrl_mem_r16 ;virtual |
- | |
790 | mov [ctrl.ctrl_read32], ctrl_mem_r32 ;virtual |
637 | |
791 | 638 | mov [ctrl.ctrl_read8 ], ctrl_io_r8 ;virtual |
|
792 | mov [ctrl.ctrl_write8 ], ctrl_mem_w8 ;virtual |
- | |
793 | mov [ctrl.ctrl_write16], ctrl_mem_w16 ;virtual |
- | |
794 | mov [ctrl.ctrl_write32], ctrl_mem_w32 ;virtual |
- | |
Line -... | Line 639... | ||
- | 639 | mov [ctrl.ctrl_read16], ctrl_io_r16 ;virtual |
|
- | 640 | mov [ctrl.ctrl_read32], ctrl_io_r32 ;virtual |
|
- | 641 | ||
- | 642 | mov [ctrl.ctrl_write8 ], ctrl_io_w8 ;virtual |
|
- | 643 | mov [ctrl.ctrl_write16], ctrl_io_w16 ;virtual |
|
- | 644 | mov [ctrl.ctrl_write32], ctrl_io_w32 ;virtual |
|
- | 645 | ret |
|
- | 646 | endp |
|
- | 647 | ||
- | 648 | align 4 |
|
- | 649 | proc reset_controller |
|
- | 650 | ||
- | 651 | xor eax, eax |
|
- | 652 | mov edx, PCM_IN_CR_REG |
|
- | 653 | call [ctrl.ctrl_write8] |
|
- | 654 | ||
- | 655 | mov edx, PCM_OUT_CR_REG |
|
- | 656 | call [ctrl.ctrl_write8] |
|
- | 657 | ||
- | 658 | mov edx, MC_IN_CR_REG |
|
- | 659 | call [ctrl.ctrl_write8] |
|
- | 660 | ||
- | 661 | mov eax, RR |
|
- | 662 | mov edx, PCM_IN_CR_REG |
|
- | 663 | call [ctrl.ctrl_write8] |
|
795 | ret |
664 | |
796 | endp |
665 | mov edx, PCM_OUT_CR_REG |
797 | 666 | call [ctrl.ctrl_write8] |
|
798 | align 4 |
667 | |
799 | proc reset_controller |
668 | mov edx, MC_IN_CR_REG |
800 | 669 | call [ctrl.ctrl_write8] |
|
801 | xor eax, eax |
670 | ret |
802 | mov edx, PCM_IN_CR_REG |
671 | endp |
803 | call [ctrl.ctrl_write8] |
672 | |
Line 804... | Line 673... | ||
804 | 673 | align 4 |
|
805 | mov edx, PCM_OUT_CR_REG |
674 | proc init_codec |
806 | call [ctrl.ctrl_write8] |
675 | locals |
807 | 676 | counter dd ? |
|
Line 808... | Line 677... | ||
808 | mov edx, MC_IN_CR_REG |
677 | endl |
809 | call [ctrl.ctrl_write8] |
678 | |
810 | 679 | mov esi, msgControl |
|
811 | mov eax, RR |
680 | call SysMsgBoardStr |
Line 812... | Line 681... | ||
812 | mov edx, PCM_IN_CR_REG |
681 | |
813 | call [ctrl.ctrl_write8] |
682 | mov edx, GLOB_CTRL |
Line 814... | Line 683... | ||
814 | 683 | call [ctrl.ctrl_read32] |
|
815 | mov edx, PCM_OUT_CR_REG |
684 | call dword2str |
816 | call [ctrl.ctrl_write8] |
685 | call SysMsgBoardStr |
817 | 686 | ||
818 | mov edx, MC_IN_CR_REG |
687 | mov esi, msgStatus |
Line 819... | Line 688... | ||
819 | call [ctrl.ctrl_write8] |
688 | call SysMsgBoardStr |
820 | 689 | ||
821 | ret |
690 | mov edx, CTRL_STAT |
822 | endp |
691 | call [ctrl.ctrl_read32] |
823 | 692 | ||
824 | align 4 |
693 | call dword2str |
825 | proc init_codec |
694 | call SysMsgBoardStr |
826 | locals |
695 | |
827 | counter dd ? |
696 | test eax, CTRL_ST_CREADY |
828 | endl |
697 | jnz .ready |
829 | 698 | ||
Line 830... | Line 699... | ||
830 | call reset_codec |
699 | call reset_codec |
831 | and eax, eax |
700 | and eax, eax |
832 | jz .err |
701 | jz .err |
833 | 702 | ||
Line 834... | Line 703... | ||
834 | xor edx, edx ;ac_reg_0 |
703 | xor edx, edx ;ac_reg_0 |
835 | call [ctrl.codec_write16] |
704 | call [ctrl.codec_write16] |
836 | 705 | ||
Line 990... | Line 859... | ||
990 | ret |
859 | ret |
991 | endp |
860 | endp |
992 | 861 | ||
Line 993... | Line 862... | ||
993 | align 4 |
862 | align 4 |
994 | proc play |
863 | play: |
995 | - | ||
996 | mov eax, 16 |
864 | mov eax, 16 |
997 | mov [ctrl.lvi_reg], eax |
865 | mov [ctrl.lvi_reg], eax |
998 | mov edx, PCM_OUT_LVI_REG |
866 | mov edx, PCM_OUT_LVI_REG |
999 | call [ctrl.ctrl_write8] |
867 | call [ctrl.ctrl_write8] |
1000 | 868 | ||
1001 | mov edx, PCM_OUT_CR_REG |
869 | mov edx, PCM_OUT_CR_REG |
1002 | mov ax, 0x1D |
870 | mov ax, 0x1D |
1003 | call [ctrl.ctrl_write8] |
871 | call [ctrl.ctrl_write8] |
- | 872 | xor eax, eax |
|
1004 | ret |
873 | ret |
1005 | endp |
- | |
Line 1006... | Line 874... | ||
1006 | 874 | ||
1007 | align 4 |
875 | align 4 |
1008 | proc stop |
876 | stop: |
1009 | mov edx, PCM_OUT_CR_REG |
877 | mov edx, PCM_OUT_CR_REG |
1010 | mov ax, 0x14 |
878 | mov ax, 0x0 |
1011 | call [ctrl.ctrl_write8] |
879 | call [ctrl.ctrl_write8] |
1012 | 880 | ||
1013 | mov eax, 16 |
- | |
1014 | mov [ctrl.lvi_reg], eax |
881 | mov ax, 0x1c |
1015 | mov edx, PCM_OUT_LVI_REG |
882 | mov edx, PCM_OUT_SR_REG |
1016 | call [ctrl.ctrl_write8] |
- | |
- | 883 | call [ctrl.ctrl_write16] |
|
1017 | 884 | xor eax, eax |
|
1018 | ret |
- | |
Line 1019... | Line 885... | ||
1019 | endp |
885 | ret |
1020 | 886 | ||
1021 | align 4 |
887 | align 4 |
1022 | proc get_dev_info stdcall, p_info:dword |
888 | proc get_dev_info stdcall, p_info:dword |
Line 1049... | Line 915... | ||
1049 | mov [CTRL_INFO.glob_sta], eax |
915 | mov [CTRL_INFO.glob_sta], eax |
1050 | 916 | ||
Line 1051... | Line 917... | ||
1051 | mov ebx, [ctrl.pci_cmd] |
917 | mov ebx, [ctrl.pci_cmd] |
1052 | mov [CTRL_INFO.pci_cmd], ebx |
918 | mov [CTRL_INFO.pci_cmd], ebx |
1053 | - | ||
1054 | ret |
919 | ret |
1055 | endp |
920 | endp |
Line 1056... | Line 921... | ||
1056 | 921 | ||
1057 | align 4 |
922 | align 4 |
Line 1117... | Line 982... | ||
1117 | 982 | ||
Line 1118... | Line 983... | ||
1118 | align 4 |
983 | align 4 |
1119 | proc codec_check_ready |
984 | proc codec_check_ready |
Line 1120... | Line 985... | ||
1120 | 985 | ||
1121 | mov edx, CTRL_ST |
986 | mov edx, CTRL_ST |
1122 | call [ctrl.ctrl_read32] |
987 | call [ctrl.ctrl_read32] |
1123 | and eax, CTRL_ST_CREADY |
988 | and eax, CTRL_ST_CREADY |
1124 | jz .not_ready |
- | |
1125 | - | ||
1126 | xor eax, wax |
- | |
1127 | inc eax |
- | |
Line -... | Line 989... | ||
- | 989 | jz .not_ready |
|
- | 990 | ||
1128 | ret |
991 | xor eax, wax |
1129 | 992 | inc eax |
|
1130 | align 4 |
993 | ret |
1131 | .not_ready: |
994 | .not_ready: |
1132 | xor eax, eax |
995 | xor eax, eax |
Line 1133... | Line 996... | ||
1133 | ret |
996 | ret |
1134 | endp |
997 | endp |
1135 | 998 | ||
Line 1174... | Line 1037... | ||
1174 | @@: |
1037 | @@: |
1175 | rdtsc |
1038 | rdtsc |
1176 | sub eax, ebx |
1039 | sub eax, ebx |
1177 | sbb edx, ecx |
1040 | sbb edx, ecx |
1178 | jb @B |
1041 | js @B |
1179 | 1042 | ||
Line 1180... | Line 1043... | ||
1180 | pop eax |
1043 | pop eax |
1181 | pop ebx |
1044 | pop ebx |
1182 | pop edx |
1045 | pop edx |
1183 | pop ecx |
1046 | pop ecx |
Line 1188... | Line 1051... | ||
1188 | ; CONTROLLER IO functions |
1051 | ; CONTROLLER IO functions |
1189 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1052 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1190 | 1053 | ||
Line 1191... | Line 1054... | ||
1191 | align 4 |
1054 | align 4 |
1192 | proc codec_io_r16 |
1055 | codec_io_r16: |
1193 | add edx, [ctrl.codec_io_base] |
- | |
1194 | in ax, dx |
- | |
1195 | ret |
- | |
1196 | endp |
- | |
1197 | - | ||
1198 | align 4 |
- | |
1199 | proc codec_io_w16 |
- | |
1200 | add edx, [ctrl.codec_io_base] |
1056 | add edx, [ctrl.codec_io_base] |
1201 | out dx, ax |
- | |
1202 | ret |
- | |
1203 | endp |
- | |
1204 | - | ||
1205 | align 4 |
- | |
1206 | proc ctrl_io_r8 |
- | |
1207 | add edx, [ctrl.ctrl_io_base] |
- | |
1208 | in al, dx |
- | |
1209 | ret |
- | |
1210 | endp |
- | |
1211 | - | ||
1212 | align 4 |
- | |
1213 | proc ctrl_io_r16 |
- | |
1214 | add edx, [ctrl.ctrl_io_base] |
- | |
1215 | in ax, dx |
1057 | in ax, dx |
1216 | ret |
- | |
1217 | endp |
- | |
1218 | - | ||
1219 | align 4 |
- | |
1220 | proc ctrl_io_r32 |
- | |
1221 | add edx, [ctrl.ctrl_io_base] |
- | |
1222 | in eax, dx |
1058 | ret |
1223 | ret |
- | |
1224 | endp |
- | |
1225 | - | ||
1226 | align 4 |
- | |
1227 | proc ctrl_io_w8 |
- | |
1228 | add edx, [ctrl.ctrl_io_base] |
- | |
1229 | out dx, al |
- | |
1230 | ret |
- | |
1231 | endp |
- | |
1232 | - | ||
1233 | align 4 |
- | |
1234 | proc ctrl_io_w16 |
- | |
1235 | add edx, [ctrl.ctrl_io_base] |
- | |
1236 | out dx, ax |
- | |
1237 | ret |
- | |
1238 | endp |
- | |
Line 1239... | Line 1059... | ||
1239 | 1059 | ||
1240 | align 4 |
1060 | align 4 |
1241 | proc ctrl_io_w32 |
1061 | codec_io_w16: |
1242 | add edx, [ctrl.ctrl_io_base] |
1062 | add edx, [ctrl.codec_io_base] |
1243 | out dx, eax |
1063 | out dx, ax |
1244 | ret |
- | |
1245 | endp |
- | |
1246 | - | ||
1247 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
1248 | ; MEMORY MAPPED IO (os depended) |
- | |
Line 1249... | Line 1064... | ||
1249 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1064 | ret |
1250 | 1065 | ||
1251 | align 4 |
1066 | align 4 |
1252 | proc codec_mem_r16 |
1067 | ctrl_io_r8: |
1253 | add edx, [ctrl.codec_mem_base] |
1068 | add edx, [ctrl.ctrl_io_base] |
1254 | mov ax, word [edx] |
- | |
Line 1255... | Line 1069... | ||
1255 | ret |
1069 | in al, dx |
1256 | endp |
1070 | ret |
1257 | 1071 | ||
1258 | align 4 |
1072 | align 4 |
1259 | proc codec_mem_w16 |
1073 | ctrl_io_r16: |
1260 | add edx, [ctrl.codec_mem_base] |
- | |
Line 1261... | Line 1074... | ||
1261 | mov word [edx], ax |
1074 | add edx, [ctrl.ctrl_io_base] |
1262 | ret |
1075 | in ax, dx |
1263 | endp |
1076 | ret |
1264 | 1077 | ||
1265 | align 4 |
1078 | align 4 |
1266 | proc ctrl_mem_r8 |
- | |
Line 1267... | Line 1079... | ||
1267 | add edx, [ctrl.ctrl_mem_base] |
1079 | ctrl_io_r32: |
1268 | mov al, [edx] |
1080 | add edx, [ctrl.ctrl_io_base] |
1269 | ret |
1081 | in eax, dx |
1270 | endp |
1082 | ret |
1271 | 1083 | ||
1272 | align 4 |
- | |
Line 1273... | Line 1084... | ||
1273 | proc ctrl_mem_r16 |
1084 | align 4 |
1274 | add edx, [ctrl.ctrl_mem_base] |
1085 | ctrl_io_w8: |
1275 | mov ax, [edx] |
1086 | add edx, [ctrl.ctrl_io_base] |
1276 | ret |
1087 | out dx, al |
1277 | endp |
1088 | ret |
1278 | - | ||
Line 1279... | Line 1089... | ||
1279 | align 4 |
1089 | |
1280 | proc ctrl_mem_r32 |
1090 | align 4 |
1281 | add edx, [ctrl.ctrl_mem_base] |
1091 | ctrl_io_w16: |
1282 | mov eax, [edx] |
1092 | add edx, [ctrl.ctrl_io_base] |
- | 1093 | out dx, ax |
|
Line 1283... | Line -... | ||
1283 | ret |
- | |
1284 | endp |
- | |
Line 1285... | Line 1094... | ||
1285 | 1094 | ret |
|
1286 | align 4 |
1095 | |
1287 | proc ctrl_mem_w8 |
1096 | align 4 |
1288 | add edx, [ctrl.ctrl_mem_base] |
1097 | ctrl_io_w32: |
1289 | mov [edx], al |
1098 | add edx, [ctrl.ctrl_io_base] |
- | 1099 | out dx, eax |
|
- | 1100 | ret |
|
- | 1101 | ||
- | 1102 | ||
- | 1103 | align 4 |
|
- | 1104 | dword2str: |
|
- | 1105 | mov esi, hex_buff |
|
1290 | 1106 | mov ecx, -8 |
|
Line 1291... | Line -... | ||
1291 | ret |
- | |
1292 | endp |
1107 | @@: |
1293 | 1108 | rol eax, 4 |
|
1294 | align 4 |
- | |
1295 | proc ctrl_mem_w16 |
- | |
1296 | add edx, [ctrl.ctrl_mem_base] |
- | |
Line 1297... | Line 1109... | ||
1297 | mov [edx], ax |
1109 | mov ebx, eax |
Line 1298... | Line 1110... | ||
1298 | ret |
1110 | and ebx, 0x0F |
1299 | endp |
1111 | mov bl, [ebx+hexletters] |
1300 | - | ||
1301 | align 4 |
- | |
1302 | proc ctrl_mem_w32 |
- | |
1303 | add edx, [ctrl.ctrl_mem_base] |
- | |
1304 | mov [edx], eax |
- | |
1305 | ret |
- | |
1306 | endp |
- | |
1307 | - | ||
1308 | - | ||
1309 | include "codec.inc" |
- | |
1310 | - | ||
1311 | align 4 |
1112 | mov [8+esi+ecx], bl |
1312 | devices dd (CTRL_ICH shl 16)+VID_INTEL,msg_ICH, set_ICH |
- | |
1313 | dd (CTRL_ICH0 shl 16)+VID_INTEL,msg_ICH0,set_ICH |
1113 | inc ecx |
Line 1314... | Line -... | ||
1314 | dd (CTRL_ICH2 shl 16)+VID_INTEL,msg_ICH2,set_ICH |
- | |
1315 | dd (CTRL_ICH3 shl 16)+VID_INTEL,msg_ICH3,set_ICH |
- | |
1316 | dd (CTRL_ICH4 shl 16)+VID_INTEL,msg_ICH4,set_ICH4 |
- | |
1317 | dd (CTRL_ICH5 shl 16)+VID_INTEL,msg_ICH5,set_ICH4 |
- | |
1318 | dd (CTRL_ICH6 shl 16)+VID_INTEL,msg_ICH6,set_ICH4 |
- | |
1319 | dd (CTRL_ICH7 shl 16)+VID_INTEL,msg_ICH7,set_ICH4 |
- | |
1320 | - | ||
1321 | dd (CTRL_NFORCE shl 16)+VID_NVIDIA,msg_NForce, set_ICH |
- | |
1322 | dd (CTRL_NFORCE2 shl 16)+VID_NVIDIA,msg_NForce2,set_ICH |
- | |
1323 | dd (CTRL_NFORCE3 shl 16)+VID_NVIDIA,msg_NForce3,set_ICH |
- | |
1324 | dd (0x5000 shl 16)+0x1274,msgEnsoniq,set_ICH |
- | |
1325 | - | ||
1326 | dd 0 ;terminator |
- | |
1327 | 1114 | jnz @B |
|
Line 1328... | Line 1115... | ||
1328 | msg_ICH db 'Intel ICH', 13,10, 0 |
1115 | ret |
- | 1116 | ||
Line 1329... | Line -... | ||
1329 | msg_ICH0 db 'Intel ICH0', 13,10, 0 |
- | |
1330 | msg_ICH2 db 'Intel ICH2', 13,10, 0 |
1117 | hexletters db '0123456789ABCDEF' |
Line 1331... | Line 1118... | ||
1331 | msg_ICH3 db 'Intel ICH3', 13,10, 0 |
1118 | hex_buff db 8 dup(0),13,10,0 |
1332 | msg_ICH4 db 'Intel ICH4', 13,10, 0 |
- | |
1333 | msg_ICH5 db 'Intel ICH5', 13,10, 0 |
1119 | |
1334 | msg_ICH6 db 'Intel ICH6', 13,10, 0 |
1120 | |
1335 | msg_ICH7 db 'Intel ICH7', 13,10, 0 |
1121 | include "codec.inc" |
1336 | msg_Intel db 'Intel Corp. ', 0 |
1122 | |
1337 | 1123 | align 4 |
|
1338 | msg_NForce db 'NForce', 13,10, 0 |
1124 | devices dd (0x5000 shl 16)+0x1274,msgEnsoniq,set_ICH |
1339 | msg_NForce2 db 'NForce 2', 13,10, 0 |
1125 | dd (0x5880 shl 16)+0x1274,msgVibra128,set_ICH |
1340 | msg_NForce3 db 'NForce 3', 13,10, 0 |
1126 | dd 0 ;terminator |
1341 | msg_NVidia db 'NVidea', 0 |
1127 | |
1342 | 1128 | version dd 0x00040004 |
|
1343 | msgEnsoniq db 'Ensonic 1371',0 |
1129 | |
1344 | 1130 | msgEnsoniq db 'Ensonic 1371',13,10,0 |
|
1345 | szKernel db 'KERNEL', 0 |
1131 | msgVibra128 db 'Sound Blaster AudioPCI Vibra 128',13,10,0 |
1346 | sz_sound_srv db 'SOUND',0 |
1132 | |
1347 | 1133 | sz_sound_srv db 'SOUND',0 |
|
1348 | msgInit db 'detect hardware...',13,10,0 |
1134 | |
1349 | msgPCI db 'PCI accsess not supported',13,10,0 |
1135 | msgDetect db 'detect hardware...',13,10,0 |
1350 | msgFail db 'device not found',13,10,0 |
1136 | msgFail db 'device not found',13,10,0 |
- | 1137 | msgAttchIRQ db 'IRQ line not supported', 13,10, 0 |
|
- | 1138 | msgInvIRQ db 'IRQ line not assigned or invalid', 13,10, 0 |
|
- | 1139 | msgPlay db 'start play', 13,10,0 |
|
- | 1140 | msgStop db 'stop play', 13,10,0 |
|
- | 1141 | msgNotify db 'call notify',13,10,0 |
|
Line 1351... | Line 1142... | ||
1351 | msgAttchIRQ db 'IRQ line not supported', 13,10, 0 |
1142 | msgIRQ db 'AC97 IRQ', 13,10,0 |
Line 1352... | Line 1143... | ||
1352 | msgInvIRQ db 'IRQ line not assigned or invalid', 13,10, 0 |
1143 | msgInitCtrl db 'init controller',13,10,0 |
1353 | msgPlay db 'start play', 13,10,0 |
1144 | msgInitCodec db 'init codec',13,10,0 |