aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2008-09-22 03:03:42 -0400
committerClemens Ladisch <clemens@ladisch.de>2008-09-22 03:03:42 -0400
commitdbbbd6744439d95d2b0dc23c5cdca2c477377f76 (patch)
tree6a149c7dbc7d0889cf8c348be2618210661bea84
parentd76596b1ee7f5cdbd0b73d374ba72372a2c8b725 (diff)
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.c1
-rw-r--r--sound/pci/oxygen/oxygen.h21
-rw-r--r--sound/pci/oxygen/oxygen_lib.c9
-rw-r--r--sound/pci/oxygen/virtuoso.c4
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)
297 CAPTURE_0_FROM_I2S_2 | 297 CAPTURE_0_FROM_I2S_2 |
298 CAPTURE_1_FROM_SPDIF; 298 CAPTURE_1_FROM_SPDIF;
299 chip->model.misc_flags = OXYGEN_MISC_MIDI; 299 chip->model.misc_flags = OXYGEN_MISC_MIDI;
300 chip->model.device_config |= MIDI_OUTPUT | MIDI_INPUT;
300 } 301 }
301 return 0; 302 return 0;
302} 303}
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 @@
19#define OXYGEN_IO_SIZE 0x100 19#define OXYGEN_IO_SIZE 0x100
20 20
21/* model-specific configuration of outputs/inputs */ 21/* model-specific configuration of outputs/inputs */
22#define PLAYBACK_0_TO_I2S 0x001 22#define PLAYBACK_0_TO_I2S 0x0001
23#define PLAYBACK_1_TO_SPDIF 0x004 23 /* PLAYBACK_0_TO_AC97_0 not implemented */
24#define PLAYBACK_2_TO_AC97_1 0x008 24#define PLAYBACK_1_TO_SPDIF 0x0004
25#define CAPTURE_0_FROM_I2S_1 0x010 25#define PLAYBACK_2_TO_AC97_1 0x0008
26#define CAPTURE_0_FROM_I2S_2 0x020 26#define CAPTURE_0_FROM_I2S_1 0x0010
27#define CAPTURE_1_FROM_SPDIF 0x080 27#define CAPTURE_0_FROM_I2S_2 0x0020
28#define CAPTURE_2_FROM_I2S_2 0x100 28 /* CAPTURE_0_FROM_AC97_0 not implemented */
29#define CAPTURE_2_FROM_AC97_1 0x200 29#define CAPTURE_1_FROM_SPDIF 0x0080
30#define CAPTURE_2_FROM_I2S_2 0x0100
31#define CAPTURE_2_FROM_AC97_1 0x0200
32 /* CAPTURE_3_FROM_I2S_3 not implemented */
33#define MIDI_OUTPUT 0x0800
34#define MIDI_INPUT 0x1000
30 35
31enum { 36enum {
32 CONTROL_SPDIF_PCM, 37 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,
502 if (err < 0) 502 if (err < 0)
503 goto err_card; 503 goto err_card;
504 504
505 if (chip->model.misc_flags & OXYGEN_MISC_MIDI) { 505 if (chip->model.device_config & (MIDI_OUTPUT | MIDI_INPUT)) {
506 unsigned int info_flags = MPU401_INFO_INTEGRATED;
507 if (chip->model.device_config & MIDI_OUTPUT)
508 info_flags |= MPU401_INFO_OUTPUT;
509 if (chip->model.device_config & MIDI_INPUT)
510 info_flags |= MPU401_INFO_INPUT;
506 err = snd_mpu401_uart_new(card, 0, MPU401_HW_CMIPCI, 511 err = snd_mpu401_uart_new(card, 0, MPU401_HW_CMIPCI,
507 chip->addr + OXYGEN_MPU401, 512 chip->addr + OXYGEN_MPU401,
508 MPU401_INFO_INTEGRATED, 0, 0, 513 info_flags, 0, 0,
509 &chip->midi); 514 &chip->midi);
510 if (err < 0) 515 if (err < 0)
511 goto err_card; 516 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 = {
569 .device_config = PLAYBACK_0_TO_I2S | 569 .device_config = PLAYBACK_0_TO_I2S |
570 PLAYBACK_1_TO_SPDIF | 570 PLAYBACK_1_TO_SPDIF |
571 CAPTURE_0_FROM_I2S_2 | 571 CAPTURE_0_FROM_I2S_2 |
572 CAPTURE_1_FROM_SPDIF, 572 CAPTURE_1_FROM_SPDIF |
573 MIDI_OUTPUT |
574 MIDI_INPUT,
573 .dac_channels = 8, 575 .dac_channels = 8,
574 .dac_volume_min = 0x0f, 576 .dac_volume_min = 0x0f,
575 .dac_volume_max = 0xff, 577 .dac_volume_max = 0xff,