ALSA: virtuoso: add Xonar Essence STX II daughterboard support
authorClemens Ladisch <clemens@ladisch.de>
Sun, 7 Sep 2014 19:47:33 +0000 (21:47 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 8 Sep 2014 08:57:45 +0000 (10:57 +0200)
Detect and handle the H6 daughterboard; it works the same as with the
ST, except that there is no conflict with the CS2000 chip.

Tested-by: Andreas Allacher <andreas.allacher@gmx.at>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/oxygen/xonar_pcm179x.c

index 3c0a679c4539b53f381258b3031b88c5cb1086bd..0d6a805e8b62c54018dd3449052b5e3f3f6599b9 100644 (file)
@@ -419,6 +419,7 @@ static void xonar_st_init_common(struct oxygen *chip)
 
        data->generic.output_enable_bit = GPIO_ST_OUTPUT_ENABLE;
        data->dacs = chip->model.dac_channels_mixer / 2;
+       data->h6 = chip->model.dac_channels_mixer > 2;
        data->hp_gain_offset = 2*-18;
 
        pcm1796_init(chip);
@@ -1142,8 +1143,18 @@ int get_xonar_pcm179x_model(struct oxygen *chip,
                break;
        case 0x85f4:
                chip->model = model_xonar_st;
-               /* TODO: daughterboard support */
-               chip->model.shortname = "Xonar STX II";
+               oxygen_clear_bits16(chip, OXYGEN_GPIO_CONTROL, GPIO_DB_MASK);
+               switch (oxygen_read16(chip, OXYGEN_GPIO_DATA) & GPIO_DB_MASK) {
+               default:
+                       chip->model.shortname = "Xonar STX II";
+                       break;
+               case GPIO_DB_H6:
+                       chip->model.shortname = "Xonar STX II+H6";
+                       chip->model.dac_channels_pcm = 8;
+                       chip->model.dac_channels_mixer = 8;
+                       chip->model.dac_mclks = OXYGEN_MCLKS(256, 128, 128);
+                       break;
+               }
                chip->model.init = xonar_stx_init;
                chip->model.resume = xonar_stx_resume;
                chip->model.set_dac_params = set_pcm1796_params;