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

Commit e193ba29 authored by Russell King's avatar Russell King
Browse files

ARM: dma: add /proc/dma support to arch/arm/kernel/dma.c



We have our own private implementation for ISA-like DMA which has been
missing exposure via the /proc/dma interface.  Add support for this.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent f76348a3
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@
#include <linux/spinlock.h>
#include <linux/errno.h>
#include <linux/scatterlist.h>
#include <linux/seq_file.h>
#include <linux/proc_fs.h>

#include <asm/dma.h>

@@ -264,3 +266,37 @@ int get_dma_residue(unsigned int chan)
	return ret;
}
EXPORT_SYMBOL(get_dma_residue);

#ifdef CONFIG_PROC_FS
static int proc_dma_show(struct seq_file *m, void *v)
{
	int i;

	for (i = 0 ; i < MAX_DMA_CHANNELS ; i++) {
		dma_t *dma = dma_channel(i);
		if (dma && dma->lock)
			seq_printf(m, "%2d: %s\n", i, dma->device_id);
	}
	return 0;
}

static int proc_dma_open(struct inode *inode, struct file *file)
{
	return single_open(file, proc_dma_show, NULL);
}

static const struct file_operations proc_dma_operations = {
	.open		= proc_dma_open,
	.read		= seq_read,
	.llseek		= seq_lseek,
	.release	= single_release,
};

static int __init proc_dma_init(void)
{
	proc_create("dma", 0, NULL, &proc_dma_operations);
	return 0;
}

__initcall(proc_dma_init);
#endif