[ALSA] oxygen: move MIDI flag to model struct
authorClemens Ladisch <clemens@ladisch.de>
Wed, 19 Mar 2008 07:20:59 +0000 (08:20 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 24 Apr 2008 10:00:28 +0000 (12:00 +0200)
Put the flag that enables the MIDI port into the model structure instead
of passing it as a separate parameter to oxygen_pci_probe().

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/oxygen/hifier.c
sound/pci/oxygen/oxygen.c
sound/pci/oxygen/oxygen.h
sound/pci/oxygen/oxygen_lib.c
sound/pci/oxygen/virtuoso.c

index 143d83d..1e54a3c 100644 (file)
@@ -181,7 +181,7 @@ static int __devinit hifier_probe(struct pci_dev *pci,
                ++dev;
                return -ENOENT;
        }
-       err = oxygen_pci_probe(pci, index[dev], id[dev], 0, &model_hifier);
+       err = oxygen_pci_probe(pci, index[dev], id[dev], &model_hifier);
        if (err >= 0)
                ++dev;
        return err;
index e9031ed..511ef34 100644 (file)
@@ -336,6 +336,7 @@ static const struct oxygen_model model_meridian = {
                       CAPTURE_1_FROM_SPDIF |
                       CAPTURE_2_FROM_AC97_1,
        .dac_channels = 8,
+       .misc_flags = OXYGEN_MISC_MIDI,
        .function_flags = OXYGEN_FUNCTION_SPI |
                          OXYGEN_FUNCTION_ENABLE_SPI_4_5,
        .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
@@ -356,7 +357,7 @@ static int __devinit generic_oxygen_probe(struct pci_dev *pci,
                return -ENOENT;
        }
        is_meridian = pci_id->driver_data;
-       err = oxygen_pci_probe(pci, index[dev], id[dev], is_meridian,
+       err = oxygen_pci_probe(pci, index[dev], id[dev],
                               is_meridian ? &model_meridian : &model_generic);
        if (err >= 0)
                ++dev;
index fde995c..5103482 100644 (file)
@@ -103,6 +103,7 @@ struct oxygen_model {
        size_t model_data_size;
        unsigned int pcm_dev_cfg;
        u8 dac_channels;
+       u8 misc_flags;
        u8 function_flags;
        u16 dac_i2s_format;
        u16 adc_i2s_format;
@@ -110,7 +111,7 @@ struct oxygen_model {
 
 /* oxygen_lib.c */
 
-int oxygen_pci_probe(struct pci_dev *pci, int index, char *id, int midi,
+int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
                     const struct oxygen_model *model);
 void oxygen_pci_remove(struct pci_dev *pci);
 
index b7c7eb3..87df2b8 100644 (file)
@@ -253,11 +253,13 @@ static void oxygen_init(struct oxygen *chip)
                      OXYGEN_DMA_A_BURST_8 |
                      OXYGEN_DMA_MULTICH_BURST_8);
        oxygen_write16(chip, OXYGEN_INTERRUPT_MASK, 0);
-       oxygen_write8_masked(chip, OXYGEN_MISC, 0,
+       oxygen_write8_masked(chip, OXYGEN_MISC,
+                            chip->model->misc_flags,
                             OXYGEN_MISC_WRITE_PCI_SUBID |
                             OXYGEN_MISC_REC_C_FROM_SPDIF |
                             OXYGEN_MISC_REC_B_FROM_AC97 |
-                            OXYGEN_MISC_REC_A_FROM_MULTICH);
+                            OXYGEN_MISC_REC_A_FROM_MULTICH |
+                            OXYGEN_MISC_MIDI);
        oxygen_write8(chip, OXYGEN_REC_FORMAT,
                      (OXYGEN_FORMAT_16 << OXYGEN_REC_FORMAT_A_SHIFT) |
                      (OXYGEN_FORMAT_16 << OXYGEN_REC_FORMAT_B_SHIFT) |
@@ -400,7 +402,7 @@ static void oxygen_card_free(struct snd_card *card)
 }
 
 int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
-                    int midi, const struct oxygen_model *model)
+                    const struct oxygen_model *model)
 {
        struct snd_card *card;
        struct oxygen *chip;
@@ -472,9 +474,7 @@ int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
        if (err < 0)
                goto err_card;
 
-       oxygen_write8_masked(chip, OXYGEN_MISC,
-                            midi ? OXYGEN_MISC_MIDI : 0, OXYGEN_MISC_MIDI);
-       if (midi) {
+       if (model->misc_flags & OXYGEN_MISC_MIDI) {
                err = snd_mpu401_uart_new(card, 0, MPU401_HW_CMIPCI,
                                          chip->addr + OXYGEN_MPU401,
                                          MPU401_INFO_INTEGRATED, 0, 0,
index 5bf3661..fa79db6 100644 (file)
@@ -353,6 +353,7 @@ static const struct oxygen_model model_xonar = {
                       CAPTURE_0_FROM_I2S_2 |
                       CAPTURE_1_FROM_SPDIF,
        .dac_channels = 8,
+       .misc_flags = OXYGEN_MISC_MIDI,
        .function_flags = OXYGEN_FUNCTION_SPI |
                          OXYGEN_FUNCTION_ENABLE_SPI_4_5,
        .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
@@ -371,7 +372,7 @@ static int __devinit xonar_probe(struct pci_dev *pci,
                ++dev;
                return -ENOENT;
        }
-       err = oxygen_pci_probe(pci, index[dev], id[dev], 1, &model_xonar);
+       err = oxygen_pci_probe(pci, index[dev], id[dev], &model_xonar);
        if (err >= 0)
                ++dev;
        return err;