From 44fb7aae82b37f5bb66cb1423e2babb11d90969e Mon Sep 17 00:00:00 2001 From: Clemens Ladisch Date: Mon, 21 Jan 2008 08:45:37 +0100 Subject: [PATCH] [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 Signed-off-by: Jaroslav Kysela --- sound/pci/oxygen/oxygen.c | 2 +- sound/pci/oxygen/oxygen.h | 2 +- sound/pci/oxygen/oxygen_lib.c | 6 ++++-- sound/pci/oxygen/virtuoso.c | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/sound/pci/oxygen/oxygen.c b/sound/pci/oxygen/oxygen.c index e0e54ab51e5..b11341f01c1 100644 --- a/sound/pci/oxygen/oxygen.c +++ b/sound/pci/oxygen/oxygen.c @@ -327,7 +327,7 @@ static int __devinit generic_oxygen_probe(struct pci_dev *pci, return -ENOENT; } 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) ++dev; return err; diff --git a/sound/pci/oxygen/oxygen.h b/sound/pci/oxygen/oxygen.h index 98cccc6ce9d..1c402cbc1c3 100644 --- a/sound/pci/oxygen/oxygen.h +++ b/sound/pci/oxygen/oxygen.h @@ -92,7 +92,7 @@ struct oxygen_model { /* 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); void oxygen_pci_remove(struct pci_dev *pci); diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c index bd0050b1214..b7079adc3d9 100644 --- a/sound/pci/oxygen/oxygen_lib.c +++ b/sound/pci/oxygen/oxygen_lib.c @@ -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, - const struct oxygen_model *model) + int midi, const struct oxygen_model *model) { struct snd_card *card; struct oxygen *chip; @@ -374,7 +374,9 @@ int __devinit oxygen_pci_probe(struct pci_dev *pci, int index, char *id, if (err < 0) 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, chip->addr + OXYGEN_MPU401, MPU401_INFO_INTEGRATED, 0, 0, diff --git a/sound/pci/oxygen/virtuoso.c b/sound/pci/oxygen/virtuoso.c index 1a0367b7ae3..73975711c07 100644 --- a/sound/pci/oxygen/virtuoso.c +++ b/sound/pci/oxygen/virtuoso.c @@ -266,7 +266,7 @@ static int __devinit xonar_probe(struct pci_dev *pci, ++dev; 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) ++dev; return err; -- 2.41.1