diff options
| -rw-r--r-- | include/sound/emu10k1.h | 1 | ||||
| -rw-r--r-- | sound/pci/emu10k1/emu10k1_main.c | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/include/sound/emu10k1.h b/include/sound/emu10k1.h index 14cb2718cb77..46e3c0bf3c94 100644 --- a/include/sound/emu10k1.h +++ b/include/sound/emu10k1.h | |||
| @@ -1055,6 +1055,7 @@ typedef struct { | |||
| 1055 | unsigned char emu10k2_chip; /* Audigy 1 or Audigy 2. */ | 1055 | unsigned char emu10k2_chip; /* Audigy 1 or Audigy 2. */ |
| 1056 | unsigned char ca0102_chip; /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */ | 1056 | unsigned char ca0102_chip; /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */ |
| 1057 | unsigned char ca0108_chip; /* Audigy 2 Value */ | 1057 | unsigned char ca0108_chip; /* Audigy 2 Value */ |
| 1058 | unsigned char ca_cardbus_chip; /* Audigy 2 ZS Notebook */ | ||
| 1058 | unsigned char ca0151_chip; /* P16V */ | 1059 | unsigned char ca0151_chip; /* P16V */ |
| 1059 | unsigned char spk71; /* Has 7.1 speakers */ | 1060 | unsigned char spk71; /* Has 7.1 speakers */ |
| 1060 | unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */ | 1061 | unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */ |
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c index e9cd8e054f25..53aeff0b783a 100644 --- a/sound/pci/emu10k1/emu10k1_main.c +++ b/sound/pci/emu10k1/emu10k1_main.c | |||
| @@ -579,6 +579,30 @@ static int __devinit snd_emu10k1_ecard_init(emu10k1_t * emu) | |||
| 579 | return 0; | 579 | return 0; |
| 580 | } | 580 | } |
| 581 | 581 | ||
| 582 | static int __devinit snd_emu10k1_cardbus_init(emu10k1_t * emu) | ||
| 583 | { | ||
| 584 | unsigned long special_port; | ||
| 585 | unsigned int value; | ||
| 586 | |||
| 587 | /* Special initialisation routine | ||
| 588 | * before the rest of the IO-Ports become active. | ||
| 589 | */ | ||
| 590 | special_port = emu->port + 0x38; | ||
| 591 | value = inl(special_port); | ||
| 592 | outl(0x00d00000, special_port); | ||
| 593 | value = inl(special_port); | ||
| 594 | outl(0x00d00001, special_port); | ||
| 595 | value = inl(special_port); | ||
| 596 | outl(0x00d0005f, special_port); | ||
| 597 | value = inl(special_port); | ||
| 598 | outl(0x00d0007f, special_port); | ||
| 599 | value = inl(special_port); | ||
| 600 | outl(0x0090007f, special_port); | ||
| 601 | value = inl(special_port); | ||
| 602 | |||
| 603 | return 0; | ||
| 604 | } | ||
| 605 | |||
| 582 | /* | 606 | /* |
| 583 | * Create the EMU10K1 instance | 607 | * Create the EMU10K1 instance |
| 584 | */ | 608 | */ |
| @@ -624,6 +648,16 @@ static emu_chip_details_t emu_chip_details[] = { | |||
| 624 | .ca0108_chip = 1, | 648 | .ca0108_chip = 1, |
| 625 | .spk71 = 1, | 649 | .spk71 = 1, |
| 626 | .ac97_chip = 1} , | 650 | .ac97_chip = 1} , |
| 651 | /* Audigy 2 ZS Notebook Cardbus card.*/ | ||
| 652 | /* Tested by James@superbug.co.uk 30th October 2005 */ | ||
| 653 | /* Not working yet, but progressing. */ | ||
| 654 | {.vendor = 0x1102, .device = 0x0008, .subsystem = 0x20011102, | ||
| 655 | .driver = "Audigy2", .name = "Audigy 2 ZS Notebook [SB0530]", | ||
| 656 | .id = "Audigy2", | ||
| 657 | .emu10k2_chip = 1, | ||
| 658 | .ca0108_chip = 1, | ||
| 659 | .ca_cardbus_chip = 1, | ||
| 660 | .spk71 = 1} , | ||
| 627 | {.vendor = 0x1102, .device = 0x0008, | 661 | {.vendor = 0x1102, .device = 0x0008, |
| 628 | .driver = "Audigy2", .name = "Audigy 2 Value [Unknown]", | 662 | .driver = "Audigy2", .name = "Audigy 2 Value [Unknown]", |
| 629 | .id = "Audigy2", | 663 | .id = "Audigy2", |
| @@ -1011,6 +1045,11 @@ int __devinit snd_emu10k1_create(snd_card_t * card, | |||
| 1011 | snd_emu10k1_free(emu); | 1045 | snd_emu10k1_free(emu); |
| 1012 | return err; | 1046 | return err; |
| 1013 | } | 1047 | } |
| 1048 | } else if (emu->card_capabilities->ca_cardbus_chip) { | ||
| 1049 | if ((err = snd_emu10k1_cardbus_init(emu)) < 0) { | ||
| 1050 | snd_emu10k1_free(emu); | ||
| 1051 | return err; | ||
| 1052 | } | ||
| 1014 | } else { | 1053 | } else { |
| 1015 | /* 5.1: Enable the additional AC97 Slots. If the emu10k1 version | 1054 | /* 5.1: Enable the additional AC97 Slots. If the emu10k1 version |
| 1016 | does not support this, it shouldn't do any harm */ | 1055 | does not support this, it shouldn't do any harm */ |
