Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9116ae4 authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Jaroslav Kysela
Browse files

[ALSA] cmipci: make the test for integrated MIDI port address more robust



Unused bytes in the I/O register range are likely to have the value 0x00
instead of 0xff, so test against both values when checking for the
presence of the integrated MIDI port.

Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent dfe495d0
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -2827,7 +2827,7 @@ static int __devinit snd_cmipci_create(struct snd_card *card, struct pci_dev *pc
	};
	unsigned int val = 0;
	long iomidi;
	int integrated_midi;
	int integrated_midi = 0;
	int pcm_index, pcm_spdif_index;
	static struct pci_device_id intel_82437vx[] = {
		{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437VX) },
@@ -2939,11 +2939,14 @@ static int __devinit snd_cmipci_create(struct snd_card *card, struct pci_dev *pc
		return err;
	}

	integrated_midi = cm->chip_version > 33 &&
		snd_cmipci_read_b(cm, CM_REG_MPU_PCI + 1) != 0xff;
	if (integrated_midi && mpu_port[dev] == 1)
	if (cm->chip_version > 33 && mpu_port[dev] == 1) {
		val = snd_cmipci_read_b(cm, CM_REG_MPU_PCI + 1);
		if (val != 0x00 && val != 0xff) {
			iomidi = cm->iobase + CM_REG_MPU_PCI;
	else {
			integrated_midi = 1;
		}
	}
	if (!integrated_midi) {
		iomidi = mpu_port[dev];
		switch (iomidi) {
		case 0x320: val = CM_VMPU_320; break;