mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
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:
parent
d76596b1ee
commit
dbbbd67444
4 changed files with 24 additions and 11 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue