提交 acfa634f 编写于 作者: T Takashi Iwai

ALSA: hda - Add Kconfig for the default buffer size

Add a Kconfig entry to specify the default buffer size.
Distros using PulseAudio can choose a larger value here.
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 30b45033
...@@ -14,6 +14,19 @@ menuconfig SND_HDA_INTEL ...@@ -14,6 +14,19 @@ menuconfig SND_HDA_INTEL
if SND_HDA_INTEL if SND_HDA_INTEL
config SND_HDA_PREALLOC_SIZE
int "Pre-allocated buffer size for HD-audio driver"
range 0 32768
default 64
help
Speficies the default pre-allocated buffer-size in kB for
HD-audio driver. A larger buffer (e.g. 2048) is preferred
for systems with PulseAudio. The default 64 is chosen just
from the compatibility reason.
Note that the pre-allocation size can be changed dynamically
via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too.
config SND_HDA_HWDEP config SND_HDA_HWDEP
bool "Build hwdep interface for HD-audio driver" bool "Build hwdep interface for HD-audio driver"
select SND_HWDEP select SND_HWDEP
......
...@@ -2075,6 +2075,8 @@ static void azx_pcm_free(struct snd_pcm *pcm) ...@@ -2075,6 +2075,8 @@ static void azx_pcm_free(struct snd_pcm *pcm)
} }
} }
#define MAX_PREALLOC_SIZE (32 * 1024 * 1024)
static int static int
azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec, azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
struct hda_pcm *cpcm) struct hda_pcm *cpcm)
...@@ -2083,6 +2085,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec, ...@@ -2083,6 +2085,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
struct snd_pcm *pcm; struct snd_pcm *pcm;
struct azx_pcm *apcm; struct azx_pcm *apcm;
int pcm_dev = cpcm->device; int pcm_dev = cpcm->device;
unsigned int size;
int s, err; int s, err;
if (pcm_dev >= HDA_MAX_PCMS) { if (pcm_dev >= HDA_MAX_PCMS) {
...@@ -2118,9 +2121,12 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec, ...@@ -2118,9 +2121,12 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
snd_pcm_set_ops(pcm, s, &azx_pcm_ops); snd_pcm_set_ops(pcm, s, &azx_pcm_ops);
} }
/* buffer pre-allocation */ /* buffer pre-allocation */
size = CONFIG_SND_HDA_PREALLOC_SIZE * 1024;
if (size > MAX_PREALLOC_SIZE)
size = MAX_PREALLOC_SIZE;
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG, snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG,
snd_dma_pci_data(chip->pci), snd_dma_pci_data(chip->pci),
1024 * 64, 32 * 1024 * 1024); size, MAX_PREALLOC_SIZE);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册