diff options
author | Takashi Iwai <tiwai@suse.de> | 2017-06-09 09:11:58 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2017-06-12 02:43:33 -0400 |
commit | 111b0cdb97d44cfe5dec1338a78ba8aff65c32e2 (patch) | |
tree | 41822f2d0878d180aa540a33ce4e79f19d34b10d /sound/isa | |
parent | 8272115578ce02566b4c6bbe45f09d0d55f4a1c6 (diff) |
ALSA: seq: Allow the modular sequencer registration
Many drivers bind the sequencer stuff in off-load by another driver
module, so that it's loaded only on demand. In the current code, this
mechanism doesn't work when the driver is built-in while the sequencer
is module. We check with IS_REACHABLE() and enable only when the
sequencer is in the same level of build.
However, this is basically a overshoot. The binder code
(snd-seq-device) is an individual module from the sequencer core
(snd-seq), and we just have to make the former a built-in while
keeping the latter a module for allowing the scenario like the above.
This patch achieves that by rewriting Kconfig slightly. Now, a driver
that provides the manual sequencer device binding should select
CONFIG_SND_SEQ_DEVICE in a way as
select SND_SEQ_DEVICE if SND_SEQUENCER != n
Note that the "!=n" is needed here to avoid the influence of the
sequencer core is module while the driver is built-in.
Also, since rawmidi.o may be linked with snd_seq_device.o when
built-in, we have to shuffle the code to make the linker happy.
(the kernel linker isn't smart enough yet to handle such a case.)
That is, snd_seq_device.c is moved to sound/core from sound/core/seq,
as well as Makefile.
Last but not least, the patch replaces the code using IS_REACHABLE()
with IS_ENABLED(), since now the condition meets always when enabled.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/isa')
-rw-r--r-- | sound/isa/Kconfig | 1 | ||||
-rw-r--r-- | sound/isa/sb/emu8000.c | 2 | ||||
-rw-r--r-- | sound/isa/sb/sb16.c | 2 |
3 files changed, 3 insertions, 2 deletions
diff --git a/sound/isa/Kconfig b/sound/isa/Kconfig index ea8ecc5bb826..cb54d9c0a77f 100644 --- a/sound/isa/Kconfig +++ b/sound/isa/Kconfig | |||
@@ -377,6 +377,7 @@ config SND_SBAWE | |||
377 | select SND_OPL3_LIB | 377 | select SND_OPL3_LIB |
378 | select SND_MPU401_UART | 378 | select SND_MPU401_UART |
379 | select SND_SB16_DSP | 379 | select SND_SB16_DSP |
380 | select SND_SEQ_DEVICE if SND_SEQUENCER != n | ||
380 | help | 381 | help |
381 | Say Y here to include support for Sound Blaster AWE soundcards | 382 | Say Y here to include support for Sound Blaster AWE soundcards |
382 | (including the Plug and Play version). | 383 | (including the Plug and Play version). |
diff --git a/sound/isa/sb/emu8000.c b/sound/isa/sb/emu8000.c index 0b5c4cf3abfa..d56973b770c7 100644 --- a/sound/isa/sb/emu8000.c +++ b/sound/isa/sb/emu8000.c | |||
@@ -1138,7 +1138,7 @@ snd_emu8000_new(struct snd_card *card, int index, long port, int seq_ports, | |||
1138 | snd_emu8000_free(hw); | 1138 | snd_emu8000_free(hw); |
1139 | return err; | 1139 | return err; |
1140 | } | 1140 | } |
1141 | #if IS_REACHABLE(CONFIG_SND_SEQUENCER) | 1141 | #if IS_ENABLED(CONFIG_SND_SEQUENCER) |
1142 | if (snd_seq_device_new(card, index, SNDRV_SEQ_DEV_ID_EMU8000, | 1142 | if (snd_seq_device_new(card, index, SNDRV_SEQ_DEV_ID_EMU8000, |
1143 | sizeof(struct snd_emu8000*), &awe) >= 0) { | 1143 | sizeof(struct snd_emu8000*), &awe) >= 0) { |
1144 | strcpy(awe->name, "EMU-8000"); | 1144 | strcpy(awe->name, "EMU-8000"); |
diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c index 31ab09b3b049..917a93d696c3 100644 --- a/sound/isa/sb/sb16.c +++ b/sound/isa/sb/sb16.c | |||
@@ -62,7 +62,7 @@ MODULE_SUPPORTED_DEVICE("{{Creative Labs,SB AWE 32}," | |||
62 | #define SNDRV_DEBUG_IRQ | 62 | #define SNDRV_DEBUG_IRQ |
63 | #endif | 63 | #endif |
64 | 64 | ||
65 | #if defined(SNDRV_SBAWE) && IS_REACHABLE(CONFIG_SND_SEQUENCER) | 65 | #if defined(SNDRV_SBAWE) && IS_ENABLED(CONFIG_SND_SEQUENCER) |
66 | #define SNDRV_SBAWE_EMU8000 | 66 | #define SNDRV_SBAWE_EMU8000 |
67 | #endif | 67 | #endif |
68 | 68 | ||