Commit 6250b9ce authored by Takashi Iwai's avatar Takashi Iwai

Merge branch 'topic/noncached-mmap' into topic/misc

parents 8b296c8f c32d977b
...@@ -1022,6 +1022,10 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, struct vm_area_s ...@@ -1022,6 +1022,10 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, struct vm_area_s
#define snd_pcm_lib_mmap_iomem NULL #define snd_pcm_lib_mmap_iomem NULL
#endif #endif
int snd_pcm_lib_mmap_noncached(struct snd_pcm_substream *substream,
struct vm_area_struct *area);
#define snd_pcm_lib_mmap_vmalloc snd_pcm_lib_mmap_noncached
static inline void snd_pcm_limit_isa_dma_size(int dma, size_t *max) static inline void snd_pcm_limit_isa_dma_size(int dma, size_t *max)
{ {
*max = dma < 4 ? 64 * 1024 : 128 * 1024; *max = dma < 4 ? 64 * 1024 : 128 * 1024;
......
...@@ -3165,9 +3165,7 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, ...@@ -3165,9 +3165,7 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream,
long size; long size;
unsigned long offset; unsigned long offset;
#ifdef pgprot_noncached
area->vm_page_prot = pgprot_noncached(area->vm_page_prot); area->vm_page_prot = pgprot_noncached(area->vm_page_prot);
#endif
area->vm_flags |= VM_IO; area->vm_flags |= VM_IO;
size = area->vm_end - area->vm_start; size = area->vm_end - area->vm_start;
offset = area->vm_pgoff << PAGE_SHIFT; offset = area->vm_pgoff << PAGE_SHIFT;
...@@ -3181,6 +3179,15 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, ...@@ -3181,6 +3179,15 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream,
EXPORT_SYMBOL(snd_pcm_lib_mmap_iomem); EXPORT_SYMBOL(snd_pcm_lib_mmap_iomem);
#endif /* SNDRV_PCM_INFO_MMAP */ #endif /* SNDRV_PCM_INFO_MMAP */
/* mmap callback with pgprot_noncached */
int snd_pcm_lib_mmap_noncached(struct snd_pcm_substream *substream,
struct vm_area_struct *area)
{
area->vm_page_prot = pgprot_noncached(area->vm_page_prot);
return snd_pcm_default_mmap(substream, area);
}
EXPORT_SYMBOL(snd_pcm_lib_mmap_noncached);
/* /*
* mmap DMA buffer * mmap DMA buffer
*/ */
......
...@@ -905,6 +905,7 @@ static struct snd_pcm_ops vx_pcm_playback_ops = { ...@@ -905,6 +905,7 @@ static struct snd_pcm_ops vx_pcm_playback_ops = {
.trigger = vx_pcm_trigger, .trigger = vx_pcm_trigger,
.pointer = vx_pcm_playback_pointer, .pointer = vx_pcm_playback_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
...@@ -1125,6 +1126,7 @@ static struct snd_pcm_ops vx_pcm_capture_ops = { ...@@ -1125,6 +1126,7 @@ static struct snd_pcm_ops vx_pcm_capture_ops = {
.trigger = vx_pcm_trigger, .trigger = vx_pcm_trigger,
.pointer = vx_pcm_capture_pointer, .pointer = vx_pcm_capture_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
......
...@@ -691,6 +691,7 @@ static struct snd_pcm_ops snd_sgio2audio_playback1_ops = { ...@@ -691,6 +691,7 @@ static struct snd_pcm_ops snd_sgio2audio_playback1_ops = {
.trigger = snd_sgio2audio_pcm_trigger, .trigger = snd_sgio2audio_pcm_trigger,
.pointer = snd_sgio2audio_pcm_pointer, .pointer = snd_sgio2audio_pcm_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
static struct snd_pcm_ops snd_sgio2audio_playback2_ops = { static struct snd_pcm_ops snd_sgio2audio_playback2_ops = {
...@@ -703,6 +704,7 @@ static struct snd_pcm_ops snd_sgio2audio_playback2_ops = { ...@@ -703,6 +704,7 @@ static struct snd_pcm_ops snd_sgio2audio_playback2_ops = {
.trigger = snd_sgio2audio_pcm_trigger, .trigger = snd_sgio2audio_pcm_trigger,
.pointer = snd_sgio2audio_pcm_pointer, .pointer = snd_sgio2audio_pcm_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
static struct snd_pcm_ops snd_sgio2audio_capture_ops = { static struct snd_pcm_ops snd_sgio2audio_capture_ops = {
...@@ -715,6 +717,7 @@ static struct snd_pcm_ops snd_sgio2audio_capture_ops = { ...@@ -715,6 +717,7 @@ static struct snd_pcm_ops snd_sgio2audio_capture_ops = {
.trigger = snd_sgio2audio_pcm_trigger, .trigger = snd_sgio2audio_pcm_trigger,
.pointer = snd_sgio2audio_pcm_pointer, .pointer = snd_sgio2audio_pcm_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
/* /*
......
...@@ -277,6 +277,7 @@ static struct snd_pcm_ops pdacf_pcm_capture_ops = { ...@@ -277,6 +277,7 @@ static struct snd_pcm_ops pdacf_pcm_capture_ops = {
.trigger = pdacf_pcm_trigger, .trigger = pdacf_pcm_trigger,
.pointer = pdacf_pcm_capture_pointer, .pointer = pdacf_pcm_capture_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
......
...@@ -911,6 +911,7 @@ static struct snd_pcm_ops capture_pcm_ops = { ...@@ -911,6 +911,7 @@ static struct snd_pcm_ops capture_pcm_ops = {
.trigger = capture_pcm_trigger, .trigger = capture_pcm_trigger,
.pointer = capture_pcm_pointer, .pointer = capture_pcm_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
static struct snd_pcm_ops playback_pcm_ops = { static struct snd_pcm_ops playback_pcm_ops = {
...@@ -923,6 +924,7 @@ static struct snd_pcm_ops playback_pcm_ops = { ...@@ -923,6 +924,7 @@ static struct snd_pcm_ops playback_pcm_ops = {
.trigger = playback_pcm_trigger, .trigger = playback_pcm_trigger,
.pointer = playback_pcm_pointer, .pointer = playback_pcm_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
static const struct uac_format_type_i_discrete_descriptor * static const struct uac_format_type_i_discrete_descriptor *
......
...@@ -1997,6 +1997,7 @@ static struct snd_pcm_ops snd_usb_playback_ops = { ...@@ -1997,6 +1997,7 @@ static struct snd_pcm_ops snd_usb_playback_ops = {
.trigger = snd_usb_pcm_playback_trigger, .trigger = snd_usb_pcm_playback_trigger,
.pointer = snd_usb_pcm_pointer, .pointer = snd_usb_pcm_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
static struct snd_pcm_ops snd_usb_capture_ops = { static struct snd_pcm_ops snd_usb_capture_ops = {
...@@ -2009,6 +2010,7 @@ static struct snd_pcm_ops snd_usb_capture_ops = { ...@@ -2009,6 +2010,7 @@ static struct snd_pcm_ops snd_usb_capture_ops = {
.trigger = snd_usb_pcm_capture_trigger, .trigger = snd_usb_pcm_capture_trigger,
.pointer = snd_usb_pcm_pointer, .pointer = snd_usb_pcm_pointer,
.page = snd_pcm_lib_get_vmalloc_page, .page = snd_pcm_lib_get_vmalloc_page,
.mmap = snd_pcm_lib_mmap_vmalloc,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment