aboutsummaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorBrad Figg <brad.figg@canonical.com>2009-12-07 12:24:47 -0800
committerJohn Rigby <john.rigby@linaro.org>2011-09-23 08:45:43 -0600
commit27953f7c01ff247e6a15cf753b67eec767428b1d (patch)
tree650e9997b4e40ddfed8c445b09eace4ab1d83daa /sound
parent92b8b8bfaec8285ff79b7e8163823baa13a7e8be (diff)
UBUNTU: SAUCE: (no-up) Increase the default prealloc buffer for HDA audio devices (non-modem)
This allows for buffering of up to 4 seconds of audio. This is intended to improve the audio experience. This patch is being carried by Fedora but is not upstream. We'll carry this indefinitely. Signed-off-by: Brad Figg <brad.figg@canonical.com> Signed-off-by: Andy Whitcroft <apw@canonical.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/hda_intel.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 486f6deb3ee..85397268b3c 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -2070,6 +2070,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
struct azx_pcm *apcm;
int pcm_dev = cpcm->device;
int s, err;
+ size_t prealloc_min = 64*1024; /* 64KB */
if (pcm_dev >= HDA_MAX_PCMS) {
snd_printk(KERN_ERR SFX "Invalid PCM device number %d\n",
@@ -2103,10 +2104,21 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
if (cpcm->stream[s].substreams)
snd_pcm_set_ops(pcm, s, &azx_pcm_ops);
}
+
/* buffer pre-allocation */
+
+ /* subtle, don't allocate a big buffer for modems...
+ * also, don't just test 32BIT_MASK, since azx supports
+ * 64-bit DMA in some cases.
+ */
+ /* lennart wants a 2.2MB buffer for 2sec of 48khz */
+ if (pcm->dev_class == SNDRV_PCM_CLASS_GENERIC &&
+ chip->pci->dma_mask >= DMA_32BIT_MASK)
+ prealloc_min = 4 * 1024 * 1024; /* 4MB */
+
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG,
snd_dma_pci_data(chip->pci),
- 1024 * 64, 32 * 1024 * 1024);
+ prealloc_min, 32 * 1024 * 1024);
return 0;
}