X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sound%2Fcore%2Fpcm_memory.c;h=ab70ba7b6e35c04f7ec5dfddec31b1538e5455ac;hb=da7238bfbc1c5267bb3c9a79e03b6c296839a07e;hp=8789b6ef5e2f5d7a1d0e189d3dbac0945ade644c;hpb=86090fcac5e27b630656fe3d963a6b80e26dac44;p=linux-2.6.git diff --git a/sound/core/pcm_memory.c b/sound/core/pcm_memory.c index 8789b6ef5..ab70ba7b6 100644 --- a/sound/core/pcm_memory.c +++ b/sound/core/pcm_memory.c @@ -23,18 +23,19 @@ #include #include #include +#include #include #include #include #include static int preallocate_dma = 1; -MODULE_PARM(preallocate_dma, "i"); +module_param(preallocate_dma, int, 0444); MODULE_PARM_DESC(preallocate_dma, "Preallocate DMA memory when the PCM devices are initialized."); MODULE_PARM_SYNTAX(preallocate_dma, SNDRV_BOOLEAN_TRUE_DESC); static int maximum_substreams = 4; -MODULE_PARM(maximum_substreams, "i"); +module_param(maximum_substreams, int, 0444); MODULE_PARM_DESC(maximum_substreams, "Maximum substreams with preallocated DMA memory."); MODULE_PARM_SYNTAX(maximum_substreams, SNDRV_BOOLEAN_TRUE_DESC); @@ -223,9 +224,13 @@ static int snd_pcm_lib_preallocate_pages1(snd_pcm_substream_t *substream, */ static inline void setup_pcm_id(snd_pcm_substream_t *subs) { - if (! subs->dma_device.id) + if (! subs->dma_device.id) { subs->dma_device.id = subs->pcm->device << 16 | subs->stream << 8 | (subs->number + 1); + if (subs->dma_device.type == SNDRV_DMA_TYPE_CONTINUOUS || + subs->dma_device.dev == NULL) + subs->dma_device.id |= (subs->pcm->card->number + 1) << 24; + } } /**