linux/sound/core
Takashi Iwai 51e9f2e665 ALSA: Allocate larger pages in sgbuf
Most hardwares have limited buffer-descriptor table length.  This
also restricts the max buffer size of the sound driver.
For example, snd-hda-intel has 1MB buffer size limit, and this is
because it can have at most 256 BDL entries.  For supporting larger
buffers, we need to allocate larger pages even for sg-buffers.

This patch changes the sgbuf allocation code to try to allocate
larger pages first.  At each head of the allocated pages, the
number of allocated pages is stored in the lowest bits of the
corresponding entry of the table addr field.  This change isn't
visible as long as the driver uses snd_sgbuf_get_addr() helper.

Also, the patch adds a new function, snd_pcm_sgbuf_get_chunk_size().
This returns the size of the chunk on continuous pages starting at
the given position offset.  If the chunk reaches to a non-continuous
page, it returns the size to the boundary.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2008-08-25 09:57:38 +02:00
..
oss ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
seq ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
control_compat.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
control.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
device.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
hwdep_compat.c [PATCH] hwdep_compat missed __user annotations 2006-10-10 15:37:21 -07:00
hwdep.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
info_oss.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
info.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
init.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
isadma.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
jack.c ALSA: Add jack reporting API 2008-07-29 21:32:03 +02:00
Kconfig ALSA: Build jack detection 2008-07-29 21:32:06 +02:00
Makefile ALSA: Build jack detection 2008-07-29 21:32:06 +02:00
memalloc.c ALSA: Fix allocation size calculation in snd_dma_alloc_pages_fallback() 2008-08-25 09:57:19 +02:00
memory.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
misc.c [ALSA] sound: this amplifier only goes up to 7 2008-04-24 12:00:35 +02:00
pcm_compat.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
pcm_lib.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
pcm_memory.c ALSA: Allocate larger pages in sgbuf 2008-08-25 09:57:38 +02:00
pcm_misc.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
pcm_native.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
pcm_timer.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
pcm.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
rawmidi_compat.c [ALSA] Remove xxx_t typedefs: Raw MIDI 2006-01-03 12:17:35 +01:00
rawmidi.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
rtctimer.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
sgbuf.c ALSA: Allocate larger pages in sgbuf 2008-08-25 09:57:38 +02:00
sound_oss.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
sound.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
timer_compat.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
timer.c ALSA: fix a typo during snd_assert() removal 2008-08-15 11:48:04 +02:00
vmaster.c [ALSA] Keep private TLV entry in vmaster itself 2008-04-24 12:00:12 +02:00