sound: oxygen: handle AK5385 ADC on Claro halo cards
authorClemens Ladisch <clemens@ladisch.de>
Fri, 20 Feb 2009 08:31:14 +0000 (09:31 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 20 Feb 2009 10:14:09 +0000 (11:14 +0100)
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>
sound/pci/oxygen/oxygen.c

index f2c37f3..1d8e2b2 100644 (file)
@@ -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) {