summaryrefslogtreecommitdiff
path: root/target/arm/bcm28xx/patches/3.18.8/0002-enable-MMAP-by-default-allow-overide-via-use_mmap.patch
blob: a476a7825e11f5199251f3f3b29819cc2f5a2880 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
diff -Nur linux-3.18.6.orig/sound/soc/bcm/bcm2708-i2s.c linux-3.18.6/sound/soc/bcm/bcm2708-i2s.c
--- linux-3.18.6.orig/sound/soc/bcm/bcm2708-i2s.c	2015-02-12 12:00:42.809186343 +0100
+++ linux-3.18.6/sound/soc/bcm/bcm2708-i2s.c	2015-02-12 13:35:35.929213859 +0100
@@ -171,6 +171,11 @@
 /* I2S pin configuration */
 static int bcm2708_i2s_gpio=BCM2708_I2S_GPIO_AUTO;
 
+static bool use_mmap = 1;
+module_param(use_mmap, bool, S_IRUGO);
+MODULE_PARM_DESC(use_mmap, "Use MMAP");
+
+
 /* General device struct */
 struct bcm2708_i2s_dev {
 	struct device				*dev;
@@ -874,7 +879,7 @@
 	.name		= "bcm2708-i2s-comp",
 };
 
-static const struct snd_pcm_hardware bcm2708_pcm_hardware = {
+static struct snd_pcm_hardware bcm2708_pcm_hardware = {
 	.info			= SNDRV_PCM_INFO_INTERLEAVED |
 				  SNDRV_PCM_INFO_JOINT_DUPLEX,
 	.formats		= SNDRV_PCM_FMTBIT_S16_LE |
@@ -966,6 +971,12 @@
 		return ret;
 	}
 
+	if (use_mmap) {
+		printk("Enable ALSA MMAP support for I2S\n");
+		bcm2708_pcm_hardware.info |= SNDRV_PCM_INFO_MMAP;
+		bcm2708_pcm_hardware.info |= SNDRV_PCM_INFO_MMAP_VALID;
+	}
+
 	ret = snd_dmaengine_pcm_register(&pdev->dev,
 				&bcm2708_dmaengine_pcm_config,
 				SND_DMAENGINE_PCM_FLAG_COMPAT);