]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - sound/pci/oxygen/virtuoso.c
[ALSA] virtuoso: add xonar_enable_output()
[linux-2.6-omap-h63xx.git] / sound / pci / oxygen / virtuoso.c
index e95dc5717ed714b95f8da21de12e3823fe5b1fdd..abd5313d19b5c2157bee4204be0328ef2e92b45e 100644 (file)
@@ -162,6 +162,14 @@ static void cs4362a_write(struct oxygen *chip, u8 reg, u8 value)
        oxygen_write_i2c(chip, I2C_DEVICE_CS4362A, reg, value);
 }
 
+static void xonar_enable_output(struct oxygen *chip)
+{
+       struct xonar_data *data = chip->model_data;
+
+       msleep(data->anti_pop_delay);
+       oxygen_set_bits16(chip, OXYGEN_GPIO_DATA, data->output_enable_bit);
+}
+
 static void xonar_common_init(struct oxygen *chip)
 {
        struct xonar_data *data = chip->model_data;
@@ -173,13 +181,12 @@ static void xonar_common_init(struct oxygen *chip)
                data->has_power = !!(oxygen_read8(chip, data->ext_power_reg)
                                     & data->ext_power_bit);
        }
-       oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL, GPIO_CS53x1_M_MASK);
+       oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL,
+                         GPIO_CS53x1_M_MASK | data->output_enable_bit);
        oxygen_write16_masked(chip, OXYGEN_GPIO_DATA,
                              GPIO_CS53x1_M_SINGLE, GPIO_CS53x1_M_MASK);
        oxygen_ac97_set_bits(chip, 0, CM9780_JACK, CM9780_FMIC2MIC);
-       msleep(data->anti_pop_delay);
-       oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL, data->output_enable_bit);
-       oxygen_set_bits16(chip, OXYGEN_GPIO_DATA, data->output_enable_bit);
+       xonar_enable_output(chip);
 }
 
 static void update_pcm1796_volume(struct oxygen *chip)