diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2009-02-20 09:31:14 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-02-20 11:14:09 +0100 |
commit | d91b424d6d7bda0773b6b6b606d48d089c4f5115 (patch) | |
tree | 54b0bfb6eee59758376d0996bdf8f4972838efd7 /sound/pci/oxygen | |
parent | 1275d6f608abda23d101ada17dc39940192d4bc4 (diff) | |
download | linux-3.10-d91b424d6d7bda0773b6b6b606d48d089c4f5115.tar.gz linux-3.10-d91b424d6d7bda0773b6b6b606d48d089c4f5115.tar.bz2 linux-3.10-d91b424d6d7bda0773b6b6b606d48d089c4f5115.zip |
sound: oxygen: handle AK5385 ADC on Claro halo cards
The HT-Omega Claro halo's ADC is an AK5385 instead of a WM8785, so we
should handle the ADC parameters as we do with the X-Meridian.
Using the code for the wrong ADC does not seem to have any audible
effects, and the Windows driver does it, but it is nonetheless a good
idea to run the AK5385 with an oversampling ratio that is not outside
the documented limits.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/oxygen')
-rw-r--r-- | sound/pci/oxygen/oxygen.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sound/pci/oxygen/oxygen.c b/sound/pci/oxygen/oxygen.c index f2c37f379d3..1d8e2b29745 100644 --- a/sound/pci/oxygen/oxygen.c +++ b/sound/pci/oxygen/oxygen.c @@ -196,6 +196,12 @@ static void meridian_init(struct oxygen *chip) ak5385_init(chip); } +static void halo_init(struct oxygen *chip) +{ + ak4396_init(chip); + ak5385_init(chip); +} + static void generic_cleanup(struct oxygen *chip) { } @@ -211,6 +217,11 @@ static void meridian_resume(struct oxygen *chip) ak4396_registers_init(chip); } +static void halo_resume(struct oxygen *chip) +{ + ak4396_registers_init(chip); +} + static void set_ak4396_params(struct oxygen *chip, struct snd_pcm_hw_params *params) { @@ -335,6 +346,11 @@ static int __devinit get_oxygen_model(struct oxygen *chip, CAPTURE_0_FROM_I2S_2 | CAPTURE_1_FROM_SPDIF; break; + case MODEL_HALO: + chip->model.init = halo_init; + chip->model.resume = halo_resume; + chip->model.set_adc_params = set_ak5385_params; + break; } if (id->driver_data == MODEL_MERIDIAN || id->driver_data == MODEL_HALO) { |