ALSA: virtuoso: initialize unknown GPIO bits
authorClemens Ladisch <clemens@ladisch.de>
Thu, 2 Dec 2010 10:36:51 +0000 (11:36 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 6 Dec 2010 13:47:50 +0000 (14:47 +0100)
Initialize the configuration of some unknown GPIO output bits (that
might not be used at all) to be the same as in the Windows driver, just
to be sure.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/oxygen/xonar_cs43xx.c
sound/pci/oxygen/xonar_pcm179x.c

index aa27c31049afba1d8d759cc4c5fb7ce7d04e1947..ae4e5b51248344c7e1f66a2849cf9bbe44ac169a 100644 (file)
@@ -63,6 +63,7 @@
 #define GPI_EXT_POWER          0x01
 #define GPIO_D1_OUTPUT_ENABLE  0x0001
 #define GPIO_D1_FRONT_PANEL    0x0002
+#define GPIO_D1_MAGIC          0x00c0
 #define GPIO_D1_INPUT_ROUTE    0x0100
 
 #define I2C_DEVICE_CS4398      0x9e    /* 10011, AD1=1, AD0=1, /W=0 */
@@ -169,7 +170,9 @@ static void xonar_d1_init(struct oxygen *chip)
        cs43xx_registers_init(chip);
 
        oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL,
-                         GPIO_D1_FRONT_PANEL | GPIO_D1_INPUT_ROUTE);
+                         GPIO_D1_FRONT_PANEL |
+                         GPIO_D1_MAGIC |
+                         GPIO_D1_INPUT_ROUTE);
        oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA,
                            GPIO_D1_FRONT_PANEL | GPIO_D1_INPUT_ROUTE);
 
index d491fd6c0be239906380ae6af8864f1bfe0e4f6f..fe4b2655a2528f28fe9cc0ec23aba7bb1820a0b0 100644 (file)
 #define GPIO_INPUT_ROUTE       0x0100
 
 #define GPIO_HDAV_OUTPUT_ENABLE        0x0001
+#define GPIO_HDAV_MAGIC                0x00c0
 
 #define GPIO_DB_MASK           0x0030
 #define GPIO_DB_H6             0x0000
 
 #define GPIO_ST_OUTPUT_ENABLE  0x0001
 #define GPIO_ST_HP_REAR                0x0002
+#define GPIO_ST_MAGIC          0x0040
 #define GPIO_ST_HP             0x0080
 
 #define I2C_DEVICE_PCM1796(i)  (0x98 + ((i) << 1))     /* 10011, ii, /W=0 */
@@ -350,7 +352,8 @@ static void xonar_hdav_init(struct oxygen *chip)
 
        pcm1796_init(chip);
 
-       oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL, GPIO_INPUT_ROUTE);
+       oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL,
+                         GPIO_HDAV_MAGIC | GPIO_INPUT_ROUTE);
        oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA, GPIO_INPUT_ROUTE);
 
        xonar_init_cs53x1(chip);
@@ -381,7 +384,8 @@ static void xonar_st_init_common(struct oxygen *chip)
        pcm1796_init(chip);
 
        oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL,
-                         GPIO_INPUT_ROUTE | GPIO_ST_HP_REAR | GPIO_ST_HP);
+                         GPIO_INPUT_ROUTE | GPIO_ST_HP_REAR |
+                         GPIO_ST_MAGIC | GPIO_ST_HP);
        oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA,
                            GPIO_INPUT_ROUTE | GPIO_ST_HP_REAR | GPIO_ST_HP);