[ALSA] oxygen: remove MIDI autodetection
The MIDI bit in the MISC register is set by default and cannot be used to detect the presence of a MIDI port. Instead, add a parameter to the oxygen_pci_probe() function so that model drivers can specify this. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
db2396d495
commit
44fb7aae82
|
@ -327,7 +327,7 @@ static int __devinit generic_oxygen_probe(struct pci_dev *pci,
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
model = pci_id->driver_data ? &model_meridian : &model_generic;
|
model = pci_id->driver_data ? &model_meridian : &model_generic;
|
||||||
err = oxygen_pci_probe(pci, index[dev], id[dev], model);
|
err = oxygen_pci_probe(pci, index[dev], id[dev], 1, model);
|
||||||
if (err >= 0)
|
if (err >= 0)
|
||||||
++dev;
|
++dev;
|
||||||
return err;
|
return err;
|
||||||
|
|
|
@ -92,7 +92,7 @@ struct oxygen_model {
|
||||||
|
|
||||||
/* oxygen_lib.c */
|
/* oxygen_lib.c */
|
||||||
|
|
||||||
int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
|
int oxygen_pci_probe(struct pci_dev *pci, int index, char *id, int midi,
|
||||||
const struct oxygen_model *model);
|
const struct oxygen_model *model);
|
||||||
void oxygen_pci_remove(struct pci_dev *pci);
|
void oxygen_pci_remove(struct pci_dev *pci);
|
||||||
|
|
||||||
|
|
|
@ -306,7 +306,7 @@ static void oxygen_card_free(struct snd_card *card)
|
||||||
}
|
}
|
||||||
|
|
||||||
int __devinit oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
|
int __devinit oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
|
||||||
const struct oxygen_model *model)
|
int midi, const struct oxygen_model *model)
|
||||||
{
|
{
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
struct oxygen *chip;
|
struct oxygen *chip;
|
||||||
|
@ -374,7 +374,9 @@ int __devinit oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto err_card;
|
goto err_card;
|
||||||
|
|
||||||
if (oxygen_read8(chip, OXYGEN_MISC) & OXYGEN_MISC_MIDI) {
|
oxygen_write8_masked(chip, OXYGEN_MISC,
|
||||||
|
midi ? OXYGEN_MISC_MIDI : 0, OXYGEN_MISC_MIDI);
|
||||||
|
if (midi) {
|
||||||
err = snd_mpu401_uart_new(card, 0, MPU401_HW_CMIPCI,
|
err = snd_mpu401_uart_new(card, 0, MPU401_HW_CMIPCI,
|
||||||
chip->addr + OXYGEN_MPU401,
|
chip->addr + OXYGEN_MPU401,
|
||||||
MPU401_INFO_INTEGRATED, 0, 0,
|
MPU401_INFO_INTEGRATED, 0, 0,
|
||||||
|
|
|
@ -266,7 +266,7 @@ static int __devinit xonar_probe(struct pci_dev *pci,
|
||||||
++dev;
|
++dev;
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
err = oxygen_pci_probe(pci, index[dev], id[dev], &model_xonar);
|
err = oxygen_pci_probe(pci, index[dev], id[dev], 1, &model_xonar);
|
||||||
if (err >= 0)
|
if (err >= 0)
|
||||||
++dev;
|
++dev;
|
||||||
return err;
|
return err;
|
||||||
|
|
Loading…
Reference in New Issue