2005-04-17 06:20:36 +08:00
|
|
|
#
|
|
|
|
# Makefile for ALSA
|
2007-10-15 15:50:19 +08:00
|
|
|
# Copyright (c) 1999,2001 by Jaroslav Kysela <perex@perex.cz>
|
2005-04-17 06:20:36 +08:00
|
|
|
#
|
|
|
|
|
2015-04-23 16:34:34 +08:00
|
|
|
snd-y := sound.o init.o memory.o control.o misc.o device.o
|
2015-05-27 19:45:45 +08:00
|
|
|
ifneq ($(CONFIG_SND_PROC_FS),)
|
2015-04-23 16:34:34 +08:00
|
|
|
snd-y += info.o
|
|
|
|
snd-$(CONFIG_SND_OSSEMUL) += info_oss.o
|
|
|
|
endif
|
2007-07-27 01:10:47 +08:00
|
|
|
snd-$(CONFIG_ISA_DMA_API) += isadma.o
|
2015-04-23 16:34:34 +08:00
|
|
|
snd-$(CONFIG_SND_OSSEMUL) += sound_oss.o
|
2008-02-18 20:03:13 +08:00
|
|
|
snd-$(CONFIG_SND_VMASTER) += vmaster.o
|
2015-04-27 21:20:56 +08:00
|
|
|
snd-$(CONFIG_SND_JACK) += ctljack.o jack.o
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2015-10-16 17:57:46 +08:00
|
|
|
snd-pcm-y := pcm.o pcm_native.o pcm_lib.o pcm_misc.o \
|
2014-01-09 14:48:12 +08:00
|
|
|
pcm_memory.o memalloc.o
|
2015-10-16 17:57:46 +08:00
|
|
|
snd-pcm-$(CONFIG_SND_PCM_TIMER) += pcm_timer.o
|
2014-01-09 14:48:12 +08:00
|
|
|
snd-pcm-$(CONFIG_SND_DMA_SGBUF) += sgbuf.o
|
2015-05-09 18:26:42 +08:00
|
|
|
snd-pcm-$(CONFIG_SND_PCM_ELD) += pcm_drm_eld.o
|
2015-05-09 18:26:47 +08:00
|
|
|
snd-pcm-$(CONFIG_SND_PCM_IEC958) += pcm_iec958.o
|
2005-04-17 06:20:36 +08:00
|
|
|
|
ALSA: pcm: Replace PCM hwptr tracking with tracepoints
ALSA PCM core has a mechanism tracking the PCM hwptr updates for
analyzing XRUNs. But its log is limited (up to 10) and its log output
is a kernel message, which is hard to handle.
In this patch, the hwptr logging is moved to the tracing
infrastructure instead of its own. Not only the hwptr updates but
also XRUN and hwptr errors are recorded on the trace log, so that user
can see such events at the exact timing.
The new "snd_pcm" entry will appear in the tracing events:
# ls -F /sys/kernel/debug/tracing/events/snd_pcm
enable filter hw_ptr_error/ hwptr/ xrun/
The hwptr is for the regular hwptr update events. An event trace
looks like:
aplay-26187 [004] d..3 4012.834761: hwptr: pcmC0D0p/sub0: POS: pos=488, old=0, base=0, period=1024, buf=16384
"POS" shows the hwptr update by the explicit position update call and
"IRQ" means the hwptr update by the interrupt,
i.e. snd_pcm_period_elapsed() call. The "pos" is the passed
ring-buffer offset by the caller, "old" is the previous hwptr, "base"
is the hwptr base position, "period" and "buf" are period- and
buffer-size of the target PCM substream.
(Note that the hwptr position displayed here isn't the ring-buffer
offset. It increments up to the PCM position boundary.)
The XRUN event appears similarly, but without "pos" field.
The hwptr error events appear with the PCM identifier and its reason
string, such as "Lost interrupt?".
The XRUN and hwptr error reports on kernel message are still left, can
be turned on/off via xrun_debug proc like before. But the bit 3, 4, 5
and 6 bits of xrun_debug proc are dropped by this patch. Also, along
with the change, the message strings have been reformatted to be a bit
more consistent.
Last but not least, the hwptr reporting is enabled only when
CONFIG_SND_PCM_XRUN_DEBUG is set.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2014-11-04 19:45:59 +08:00
|
|
|
# for trace-points
|
|
|
|
CFLAGS_pcm_lib.o := -I$(src)
|
2017-06-07 07:46:43 +08:00
|
|
|
CFLAGS_pcm_native.o := -I$(src)
|
ALSA: pcm: Replace PCM hwptr tracking with tracepoints
ALSA PCM core has a mechanism tracking the PCM hwptr updates for
analyzing XRUNs. But its log is limited (up to 10) and its log output
is a kernel message, which is hard to handle.
In this patch, the hwptr logging is moved to the tracing
infrastructure instead of its own. Not only the hwptr updates but
also XRUN and hwptr errors are recorded on the trace log, so that user
can see such events at the exact timing.
The new "snd_pcm" entry will appear in the tracing events:
# ls -F /sys/kernel/debug/tracing/events/snd_pcm
enable filter hw_ptr_error/ hwptr/ xrun/
The hwptr is for the regular hwptr update events. An event trace
looks like:
aplay-26187 [004] d..3 4012.834761: hwptr: pcmC0D0p/sub0: POS: pos=488, old=0, base=0, period=1024, buf=16384
"POS" shows the hwptr update by the explicit position update call and
"IRQ" means the hwptr update by the interrupt,
i.e. snd_pcm_period_elapsed() call. The "pos" is the passed
ring-buffer offset by the caller, "old" is the previous hwptr, "base"
is the hwptr base position, "period" and "buf" are period- and
buffer-size of the target PCM substream.
(Note that the hwptr position displayed here isn't the ring-buffer
offset. It increments up to the PCM position boundary.)
The XRUN event appears similarly, but without "pos" field.
The hwptr error events appear with the PCM identifier and its reason
string, such as "Lost interrupt?".
The XRUN and hwptr error reports on kernel message are still left, can
be turned on/off via xrun_debug proc like before. But the bit 3, 4, 5
and 6 bits of xrun_debug proc are dropped by this patch. Also, along
with the change, the message strings have been reformatted to be a bit
more consistent.
Last but not least, the hwptr reporting is enabled only when
CONFIG_SND_PCM_XRUN_DEBUG is set.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2014-11-04 19:45:59 +08:00
|
|
|
|
2013-08-12 16:42:37 +08:00
|
|
|
snd-pcm-dmaengine-objs := pcm_dmaengine.o
|
|
|
|
|
2005-04-17 06:20:36 +08:00
|
|
|
snd-rawmidi-objs := rawmidi.o
|
|
|
|
snd-timer-objs := timer.o
|
2008-10-25 00:16:50 +08:00
|
|
|
snd-hrtimer-objs := hrtimer.o
|
2005-04-17 06:20:36 +08:00
|
|
|
snd-rtctimer-objs := rtctimer.o
|
|
|
|
snd-hwdep-objs := hwdep.o
|
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>
2017-06-09 21:11:58 +08:00
|
|
|
snd-seq-device-objs := seq_device.o
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2011-12-23 13:06:40 +08:00
|
|
|
snd-compress-objs := compress_offload.o
|
|
|
|
|
2005-04-17 06:20:36 +08:00
|
|
|
obj-$(CONFIG_SND) += snd.o
|
|
|
|
obj-$(CONFIG_SND_HWDEP) += snd-hwdep.o
|
|
|
|
obj-$(CONFIG_SND_TIMER) += snd-timer.o
|
2008-10-25 00:16:50 +08:00
|
|
|
obj-$(CONFIG_SND_HRTIMER) += snd-hrtimer.o
|
2014-01-09 14:48:12 +08:00
|
|
|
obj-$(CONFIG_SND_PCM) += snd-pcm.o
|
2013-08-12 16:42:37 +08:00
|
|
|
obj-$(CONFIG_SND_DMAENGINE_PCM) += snd-pcm-dmaengine.o
|
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>
2017-06-09 21:11:58 +08:00
|
|
|
obj-$(CONFIG_SND_SEQ_DEVICE) += snd-seq-device.o
|
2005-04-17 06:20:36 +08:00
|
|
|
obj-$(CONFIG_SND_RAWMIDI) += snd-rawmidi.o
|
|
|
|
|
|
|
|
obj-$(CONFIG_SND_OSSEMUL) += oss/
|
|
|
|
obj-$(CONFIG_SND_SEQUENCER) += seq/
|
2011-12-23 13:06:40 +08:00
|
|
|
|
|
|
|
obj-$(CONFIG_SND_COMPRESS_OFFLOAD) += snd-compress.o
|