summaryrefslogtreecommitdiffstats
path: root/sound/pci/oxygen
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2009-02-20 09:31:14 +0100
committerTakashi Iwai <tiwai@suse.de>2009-02-20 11:14:09 +0100
commitd91b424d6d7bda0773b6b6b606d48d089c4f5115 (patch)
tree54b0bfb6eee59758376d0996bdf8f4972838efd7 /sound/pci/oxygen
parentsound: oxygen: automatically restore overwritten EEPROM (diff)
downloadlinux-d91b424d6d7bda0773b6b6b606d48d089c4f5115.tar.xz
linux-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.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sound/pci/oxygen/oxygen.c b/sound/pci/oxygen/oxygen.c
index f2c37f379d39..1d8e2b29745d 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) {