diff options
| author | Clemens Ladisch <clemens@ladisch.de> | 2008-09-22 09:03:42 +0200 | 
|---|---|---|
| committer | Clemens Ladisch <clemens@ladisch.de> | 2008-09-22 09:03:42 +0200 | 
| commit | dbbbd6744439d95d2b0dc23c5cdca2c477377f76 (patch) | |
| tree | 6a149c7dbc7d0889cf8c348be2618210661bea84 | |
| parent | d76596b1ee7f5cdbd0b73d374ba72372a2c8b725 (diff) | |
| download | olio-linux-3.10-dbbbd6744439d95d2b0dc23c5cdca2c477377f76.tar.xz olio-linux-3.10-dbbbd6744439d95d2b0dc23c5cdca2c477377f76.zip  | |
ALSA: oxygen: configure MIDI via device_config
To enable the MIDI port, model drivers must now set flags in
device_config, not only in misc_flags.  This allows model drivers to
enable the UART without creating an ALSA MIDI device.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
| -rw-r--r-- | sound/pci/oxygen/oxygen.c | 1 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen.h | 21 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen_lib.c | 9 | ||||
| -rw-r--r-- | sound/pci/oxygen/virtuoso.c | 4 | 
4 files changed, 24 insertions, 11 deletions
diff --git a/sound/pci/oxygen/oxygen.c b/sound/pci/oxygen/oxygen.c index bb2e7d82d83..62888c7b61d 100644 --- a/sound/pci/oxygen/oxygen.c +++ b/sound/pci/oxygen/oxygen.c @@ -297,6 +297,7 @@ static int generic_probe(struct oxygen *chip, unsigned long driver_data)  					    CAPTURE_0_FROM_I2S_2 |  					    CAPTURE_1_FROM_SPDIF;  		chip->model.misc_flags = OXYGEN_MISC_MIDI; +		chip->model.device_config |= MIDI_OUTPUT | MIDI_INPUT;  	}  	return 0;  } diff --git a/sound/pci/oxygen/oxygen.h b/sound/pci/oxygen/oxygen.h index 30cd996d366..f82a96290f7 100644 --- a/sound/pci/oxygen/oxygen.h +++ b/sound/pci/oxygen/oxygen.h @@ -19,14 +19,19 @@  #define OXYGEN_IO_SIZE	0x100  /* model-specific configuration of outputs/inputs */ -#define PLAYBACK_0_TO_I2S	0x001 -#define PLAYBACK_1_TO_SPDIF	0x004 -#define PLAYBACK_2_TO_AC97_1	0x008 -#define CAPTURE_0_FROM_I2S_1	0x010 -#define CAPTURE_0_FROM_I2S_2	0x020 -#define CAPTURE_1_FROM_SPDIF	0x080 -#define CAPTURE_2_FROM_I2S_2	0x100 -#define CAPTURE_2_FROM_AC97_1	0x200 +#define PLAYBACK_0_TO_I2S	0x0001 +     /* PLAYBACK_0_TO_AC97_0		not implemented */ +#define PLAYBACK_1_TO_SPDIF	0x0004 +#define PLAYBACK_2_TO_AC97_1	0x0008 +#define CAPTURE_0_FROM_I2S_1	0x0010 +#define CAPTURE_0_FROM_I2S_2	0x0020 +     /* CAPTURE_0_FROM_AC97_0		not implemented */ +#define CAPTURE_1_FROM_SPDIF	0x0080 +#define CAPTURE_2_FROM_I2S_2	0x0100 +#define CAPTURE_2_FROM_AC97_1	0x0200 +     /* CAPTURE_3_FROM_I2S_3		not implemented */ +#define MIDI_OUTPUT		0x0800 +#define MIDI_INPUT		0x1000  enum {  	CONTROL_SPDIF_PCM, diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c index 02191c6a4e7..b1997216b4a 100644 --- a/sound/pci/oxygen/oxygen_lib.c +++ b/sound/pci/oxygen/oxygen_lib.c @@ -502,10 +502,15 @@ int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,  	if (err < 0)  		goto err_card; -	if (chip->model.misc_flags & OXYGEN_MISC_MIDI) { +	if (chip->model.device_config & (MIDI_OUTPUT | MIDI_INPUT)) { +		unsigned int info_flags = MPU401_INFO_INTEGRATED; +		if (chip->model.device_config & MIDI_OUTPUT) +			info_flags |= MPU401_INFO_OUTPUT; +		if (chip->model.device_config & MIDI_INPUT) +			info_flags |= MPU401_INFO_INPUT;  		err = snd_mpu401_uart_new(card, 0, MPU401_HW_CMIPCI,  					  chip->addr + OXYGEN_MPU401, -					  MPU401_INFO_INTEGRATED, 0, 0, +					  info_flags, 0, 0,  					  &chip->midi);  		if (err < 0)  			goto err_card; diff --git a/sound/pci/oxygen/virtuoso.c b/sound/pci/oxygen/virtuoso.c index f416e68338e..befada742ae 100644 --- a/sound/pci/oxygen/virtuoso.c +++ b/sound/pci/oxygen/virtuoso.c @@ -569,7 +569,9 @@ static const struct oxygen_model model_xonar_d2 = {  	.device_config = PLAYBACK_0_TO_I2S |  			 PLAYBACK_1_TO_SPDIF |  			 CAPTURE_0_FROM_I2S_2 | -			 CAPTURE_1_FROM_SPDIF, +			 CAPTURE_1_FROM_SPDIF | +			 MIDI_OUTPUT | +			 MIDI_INPUT,  	.dac_channels = 8,  	.dac_volume_min = 0x0f,  	.dac_volume_max = 0xff,  |