Merge branch 'topic/noncached-mmap' into topic/misc
This commit is contained in:
@@ -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,
|
|||||||
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,
|
|||||||
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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user