31 Jan, 2011

1 commit

  • This card uses separate I2S outputs for the front speakers and
    headphones, and reverses the order of the three speaker outputs.
    To work around this, add a model-specific callback to adjust the
    controller's playback routing.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     

10 Jan, 2011

4 commits


06 Dec, 2010

2 commits

  • To help with debugging, add the registers of the model-specific
    codecs to the controller and AC97 register dump in the proc file.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     
  • The "Front Panel" switch on the Xonar D1/DX actually switches only the
    output direction, so mark it appropriately.

    The front panel microphone is controlled by the FMIC2MIC bit of the
    CM9780. It was unconditionally enabled on the D1/DX and never set on
    the ST(X); add a control for it. Selecting the front panel microphone
    as source does not actually disable the microphone jack, but this is
    bug-compatible with the Windows driver, and users rely on it.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     

06 Oct, 2010

1 commit


08 Sep, 2010

1 commit

  • For the WM8776 chip, this driver uses a different sample format and
    more features than the Windows driver. When rebooting from Linux into
    Windows, the latter driver does not reset the chip but assumes all its
    registers have their default settings, so we get garbled sound or, if
    the output happened to be muted before rebooting, no sound.

    To make that driver happy, hook our driver's cleanup function into the
    shutdown notifier and ensure that the chip gets reset.

    Signed-off-by: Clemens Ladisch
    Reported-and-tested-by: Nathan Schagen
    Cc:
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     

28 Sep, 2009

2 commits


19 Feb, 2009

3 commits

  • If the EEPROM was partially overwritten (which seems to happen before the OS is
    booted), restore its entire contents by deducing it from the remaining
    information.

    This does not have any effect on the Linux driver, which works even with
    incomplete information in the EEPROM, but it makes other drivers work again.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     
  • Under as yet unknown circumstances, the first word of the sound card's
    EEPROM gets overwritten. When this has happened, we cannot rely on the
    subsystem IDs that the kernel reads from the PCI configuration
    registers. Instead, we read the IDs directly from the EEPROM and do the
    ID matching manually.

    Because the model-specific driver cannot determine the model before
    calling oxygen_pci_probe(), that function now gets a get_model()
    callback as parameter. The customizing of the model structure, which
    was formerly done by the probe() callback, also has moved into
    get_model().

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     
  • Move the owner field out of the oxygen_model structure and make it
    a parameter of oxygen_pci_probe(), because the actual owner module does
    not depend on the card model. Furthermore, moving it out of the model
    structure allows us to create the card structure before the actual model
    is known.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     

22 Sep, 2008

5 commits


19 May, 2008

3 commits


24 Apr, 2008

7 commits


01 Feb, 2008

11 commits