Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1fe53268 authored by Dmitry Eremin-Solenikov's avatar Dmitry Eremin-Solenikov Committed by Ingo Molnar
Browse files

ARM: support generic per-device coherent dma mem



Signed-off-by: default avatarDmitry Baryshkov <dbaryshkov@gmail.com>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: Russell King <rmk@arm.linux.org.uk>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 538c29d4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ config ARM
	select HAVE_KRETPROBES if (HAVE_KPROBES)
	select HAVE_FTRACE if (!XIP_KERNEL)
	select HAVE_DYNAMIC_FTRACE if (HAVE_FTRACE)
	select HAVE_GENERIC_DMA_COHERENT
	help
	  The ARM series is a line of low-power-consumption RISC chip designs
	  licensed by ARM Ltd and targeted at embedded applications and
+8 −0
Original line number Diff line number Diff line
@@ -274,6 +274,11 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
void *
dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp)
{
	void *memory;

	if (dma_alloc_from_coherent(dev, size, handle, &memory))
		return memory;

	if (arch_is_coherent()) {
		void *virt;

@@ -362,6 +367,9 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr

	WARN_ON(irqs_disabled());

	if (dma_release_from_coherent(dev, get_order(size), cpu_addr))
		return;

	if (arch_is_coherent()) {
		kfree(cpu_addr);
		return;
+2 −0
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@

#include <linux/scatterlist.h>

#include <asm-generic/dma-coherent.h>

/*
 * DMA-consistent mapping functions.  These allocate/free a region of
 * uncached, unwrite-buffered mapped memory space for use with DMA