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>
This commit is contained in:
Clemens Ladisch 2008-09-22 09:03:42 +02:00
parent d76596b1ee
commit dbbbd67444
4 changed files with 24 additions and 11 deletions

View file

@ -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;
}

View file

@ -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,

View file

@ -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;

View file

@ -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,