summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2017-06-09 08:06:46 -0400
committerTakashi Iwai <tiwai@suse.de>2017-06-09 16:09:45 -0400
commit3d774d5ef066971aee1839150bf47d100d8e43d3 (patch)
treebd345c2cb848ad3b47ea1f5734d86974f10f64f7 /sound
parenteb3b705aaed9cab7efef8c905eda919b5fd902b9 (diff)
ALSA: seq: Allow the tristate build of OSS emulation
Currently OSS sequencer emulation is tied with ALSA sequencer core, both are built in the same level; i.e. when CONFIG_SND_SEQUENCER=y, the OSS sequencer emulation is also always built-in, even though the functionality can be built as an individual module. This patch changes the rule and allows users to build snd-seq-oss module while others are built-in. Essentially, it's just a few simple changes in Kconfig and Makefile. Some driver codes like opl3 need to convert from the simple ifdef to IS_ENABLED(). But that's all. You might wonder how about the dependency: right, it can be messy, but it still works. Since we rewrote the sequencer binding with the standard bus, the driver can be bound at any time on demand. So, the synthesizer driver module can be loaded individually from the OSS emulation core before/after it. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/core/Kconfig2
-rw-r--r--sound/core/seq/Makefile7
-rw-r--r--sound/core/seq/oss/Makefile2
-rw-r--r--sound/drivers/opl3/opl3_seq.c4
-rw-r--r--sound/drivers/opl3/opl3_voice.h5
-rw-r--r--sound/isa/sb/emu8000_callback.c6
-rw-r--r--sound/synth/emux/emux.c6
-rw-r--r--sound/synth/emux/emux_effect.c2
-rw-r--r--sound/synth/emux/emux_oss.c4
9 files changed, 18 insertions, 20 deletions
diff --git a/sound/core/Kconfig b/sound/core/Kconfig
index 3a9afc520d4e..d64dbee36986 100644
--- a/sound/core/Kconfig
+++ b/sound/core/Kconfig
@@ -110,7 +110,7 @@ config SND_PCM_TIMER
110 footprint, about 20KB on x86_64 platform. 110 footprint, about 20KB on x86_64 platform.
111 111
112config SND_SEQUENCER_OSS 112config SND_SEQUENCER_OSS
113 bool "OSS Sequencer API" 113 tristate "OSS Sequencer API"
114 depends on SND_SEQUENCER 114 depends on SND_SEQUENCER
115 depends on SND_OSSEMUL 115 depends on SND_OSSEMUL
116 help 116 help
diff --git a/sound/core/seq/Makefile b/sound/core/seq/Makefile
index b65fa5a1943b..3283b055e5ff 100644
--- a/sound/core/seq/Makefile
+++ b/sound/core/seq/Makefile
@@ -15,10 +15,9 @@ snd-seq-dummy-objs := seq_dummy.o
15snd-seq-virmidi-objs := seq_virmidi.o 15snd-seq-virmidi-objs := seq_virmidi.o
16 16
17obj-$(CONFIG_SND_SEQUENCER) += snd-seq.o snd-seq-device.o 17obj-$(CONFIG_SND_SEQUENCER) += snd-seq.o snd-seq-device.o
18ifeq ($(CONFIG_SND_SEQUENCER_OSS),y) 18obj-$(CONFIG_SND_SEQUENCER_OSS) += snd-seq-midi-event.o
19 obj-$(CONFIG_SND_SEQUENCER) += snd-seq-midi-event.o 19obj-$(CONFIG_SND_SEQUENCER_OSS) += oss/
20 obj-$(CONFIG_SND_SEQUENCER) += oss/ 20
21endif
22obj-$(CONFIG_SND_SEQ_DUMMY) += snd-seq-dummy.o 21obj-$(CONFIG_SND_SEQ_DUMMY) += snd-seq-dummy.o
23 22
24# Toplevel Module Dependency 23# Toplevel Module Dependency
diff --git a/sound/core/seq/oss/Makefile b/sound/core/seq/oss/Makefile
index b38406b8463c..4ea4e3eea6b7 100644
--- a/sound/core/seq/oss/Makefile
+++ b/sound/core/seq/oss/Makefile
@@ -7,4 +7,4 @@ snd-seq-oss-objs := seq_oss.o seq_oss_init.o seq_oss_timer.o seq_oss_ioctl.o \
7 seq_oss_event.o seq_oss_rw.o seq_oss_synth.o \ 7 seq_oss_event.o seq_oss_rw.o seq_oss_synth.o \
8 seq_oss_midi.o seq_oss_readq.o seq_oss_writeq.o 8 seq_oss_midi.o seq_oss_readq.o seq_oss_writeq.o
9 9
10obj-$(CONFIG_SND_SEQUENCER) += snd-seq-oss.o 10obj-$(CONFIG_SND_SEQUENCER_OSS) += snd-seq-oss.o
diff --git a/sound/drivers/opl3/opl3_seq.c b/sound/drivers/opl3/opl3_seq.c
index fdae5d7f421f..d3e91be8b23a 100644
--- a/sound/drivers/opl3/opl3_seq.c
+++ b/sound/drivers/opl3/opl3_seq.c
@@ -252,7 +252,7 @@ static int snd_opl3_seq_probe(struct device *_dev)
252 spin_lock_init(&opl3->sys_timer_lock); 252 spin_lock_init(&opl3->sys_timer_lock);
253 opl3->sys_timer_status = 0; 253 opl3->sys_timer_status = 0;
254 254
255#ifdef CONFIG_SND_SEQUENCER_OSS 255#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
256 snd_opl3_init_seq_oss(opl3, name); 256 snd_opl3_init_seq_oss(opl3, name);
257#endif 257#endif
258 return 0; 258 return 0;
@@ -267,7 +267,7 @@ static int snd_opl3_seq_remove(struct device *_dev)
267 if (opl3 == NULL) 267 if (opl3 == NULL)
268 return -EINVAL; 268 return -EINVAL;
269 269
270#ifdef CONFIG_SND_SEQUENCER_OSS 270#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
271 snd_opl3_free_seq_oss(opl3); 271 snd_opl3_free_seq_oss(opl3);
272#endif 272#endif
273 if (opl3->seq_client >= 0) { 273 if (opl3->seq_client >= 0) {
diff --git a/sound/drivers/opl3/opl3_voice.h b/sound/drivers/opl3/opl3_voice.h
index a371c075ac87..eaef435e0528 100644
--- a/sound/drivers/opl3/opl3_voice.h
+++ b/sound/drivers/opl3/opl3_voice.h
@@ -44,9 +44,12 @@ void snd_opl3_load_drums(struct snd_opl3 *opl3);
44void snd_opl3_drum_switch(struct snd_opl3 *opl3, int note, int on_off, int vel, struct snd_midi_channel *chan); 44void snd_opl3_drum_switch(struct snd_opl3 *opl3, int note, int on_off, int vel, struct snd_midi_channel *chan);
45 45
46/* Prototypes for opl3_oss.c */ 46/* Prototypes for opl3_oss.c */
47#ifdef CONFIG_SND_SEQUENCER_OSS 47#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
48void snd_opl3_init_seq_oss(struct snd_opl3 *opl3, char *name); 48void snd_opl3_init_seq_oss(struct snd_opl3 *opl3, char *name);
49void snd_opl3_free_seq_oss(struct snd_opl3 *opl3); 49void snd_opl3_free_seq_oss(struct snd_opl3 *opl3);
50#else
51#define snd_opl3_init_seq_oss(opl3, name) /* NOP */
52#define snd_opl3_free_seq_oss(opl3) /* NOP */
50#endif 53#endif
51 54
52#endif 55#endif
diff --git a/sound/isa/sb/emu8000_callback.c b/sound/isa/sb/emu8000_callback.c
index 72a9ac5efb40..d28d712f99f4 100644
--- a/sound/isa/sb/emu8000_callback.c
+++ b/sound/isa/sb/emu8000_callback.c
@@ -36,7 +36,7 @@ static void reset_voice(struct snd_emux *emu, int ch);
36static void terminate_voice(struct snd_emux_voice *vp); 36static void terminate_voice(struct snd_emux_voice *vp);
37static void sysex(struct snd_emux *emu, char *buf, int len, int parsed, 37static void sysex(struct snd_emux *emu, char *buf, int len, int parsed,
38 struct snd_midi_channel_set *chset); 38 struct snd_midi_channel_set *chset);
39#ifdef CONFIG_SND_SEQUENCER_OSS 39#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
40static int oss_ioctl(struct snd_emux *emu, int cmd, int p1, int p2); 40static int oss_ioctl(struct snd_emux *emu, int cmd, int p1, int p2);
41#endif 41#endif
42static int load_fx(struct snd_emux *emu, int type, int mode, 42static int load_fx(struct snd_emux *emu, int type, int mode,
@@ -76,7 +76,7 @@ static struct snd_emux_operators emu8000_ops = {
76 .sample_reset = snd_emu8000_sample_reset, 76 .sample_reset = snd_emu8000_sample_reset,
77 .load_fx = load_fx, 77 .load_fx = load_fx,
78 .sysex = sysex, 78 .sysex = sysex,
79#ifdef CONFIG_SND_SEQUENCER_OSS 79#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
80 .oss_ioctl = oss_ioctl, 80 .oss_ioctl = oss_ioctl,
81#endif 81#endif
82}; 82};
@@ -477,7 +477,7 @@ sysex(struct snd_emux *emu, char *buf, int len, int parsed, struct snd_midi_chan
477} 477}
478 478
479 479
480#ifdef CONFIG_SND_SEQUENCER_OSS 480#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
481/* 481/*
482 * OSS ioctl callback 482 * OSS ioctl callback
483 */ 483 */
diff --git a/sound/synth/emux/emux.c b/sound/synth/emux/emux.c
index 9312cd8a6fdd..b9981e8c0027 100644
--- a/sound/synth/emux/emux.c
+++ b/sound/synth/emux/emux.c
@@ -47,7 +47,7 @@ int snd_emux_new(struct snd_emux **remu)
47 mutex_init(&emu->register_mutex); 47 mutex_init(&emu->register_mutex);
48 48
49 emu->client = -1; 49 emu->client = -1;
50#ifdef CONFIG_SND_SEQUENCER_OSS 50#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
51 emu->oss_synth = NULL; 51 emu->oss_synth = NULL;
52#endif 52#endif
53 emu->max_voices = 0; 53 emu->max_voices = 0;
@@ -123,7 +123,7 @@ int snd_emux_register(struct snd_emux *emu, struct snd_card *card, int index, ch
123 snd_emux_init_voices(emu); 123 snd_emux_init_voices(emu);
124 124
125 snd_emux_init_seq(emu, card, index); 125 snd_emux_init_seq(emu, card, index);
126#ifdef CONFIG_SND_SEQUENCER_OSS 126#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
127 snd_emux_init_seq_oss(emu); 127 snd_emux_init_seq_oss(emu);
128#endif 128#endif
129 snd_emux_init_virmidi(emu, card); 129 snd_emux_init_virmidi(emu, card);
@@ -150,7 +150,7 @@ int snd_emux_free(struct snd_emux *emu)
150 150
151 snd_emux_proc_free(emu); 151 snd_emux_proc_free(emu);
152 snd_emux_delete_virmidi(emu); 152 snd_emux_delete_virmidi(emu);
153#ifdef CONFIG_SND_SEQUENCER_OSS 153#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
154 snd_emux_detach_seq_oss(emu); 154 snd_emux_detach_seq_oss(emu);
155#endif 155#endif
156 snd_emux_detach_seq(emu); 156 snd_emux_detach_seq(emu);
diff --git a/sound/synth/emux/emux_effect.c b/sound/synth/emux/emux_effect.c
index a447218b6160..9ac0bf531b4b 100644
--- a/sound/synth/emux/emux_effect.c
+++ b/sound/synth/emux/emux_effect.c
@@ -150,7 +150,7 @@ effect_get_offset(struct snd_midi_channel *chan, int lo, int hi, int mode)
150 return addr; 150 return addr;
151} 151}
152 152
153#ifdef CONFIG_SND_SEQUENCER_OSS 153#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
154/* change effects - for OSS sequencer compatibility */ 154/* change effects - for OSS sequencer compatibility */
155void 155void
156snd_emux_send_effect_oss(struct snd_emux_port *port, 156snd_emux_send_effect_oss(struct snd_emux_port *port,
diff --git a/sound/synth/emux/emux_oss.c b/sound/synth/emux/emux_oss.c
index 850fab4a8f3b..de19e108974a 100644
--- a/sound/synth/emux/emux_oss.c
+++ b/sound/synth/emux/emux_oss.c
@@ -23,8 +23,6 @@
23 */ 23 */
24 24
25 25
26#ifdef CONFIG_SND_SEQUENCER_OSS
27
28#include <linux/export.h> 26#include <linux/export.h>
29#include <linux/uaccess.h> 27#include <linux/uaccess.h>
30#include <sound/core.h> 28#include <sound/core.h>
@@ -505,5 +503,3 @@ fake_event(struct snd_emux *emu, struct snd_emux_port *port, int ch, int param,
505 ev.data.control.value = val; 503 ev.data.control.value = val;
506 snd_emux_event_input(&ev, 0, port, atomic, hop); 504 snd_emux_event_input(&ev, 0, port, atomic, hop);
507} 505}
508
509#endif /* CONFIG_SND_SEQUENCER_OSS */