mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
use broken-out patches for the coldfire to make it easier to follow differences against the bsp
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16547 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
90
target/linux/coldfire/patches/037-m5445x_edma_callback.patch
Normal file
90
target/linux/coldfire/patches/037-m5445x_edma_callback.patch
Normal file
@@ -0,0 +1,90 @@
|
||||
From acd937ac924aefd22ea9a66ea621ab80a4f9b594 Mon Sep 17 00:00:00 2001
|
||||
From: Kurt Mahan <kmahan@freescale.com>
|
||||
Date: Mon, 10 Dec 2007 03:37:19 -0700
|
||||
Subject: [PATCH] Update EDMA driver to allow callback/arg changes.
|
||||
|
||||
LTIBName: m5445x-edma-callback
|
||||
Signed-off-by: Kurt Mahan <kmahan@freescale.com>
|
||||
---
|
||||
drivers/spi/coldfire_edma.c | 27 +++++++++++++++++++++++++++
|
||||
include/asm-m68k/coldfire_edma.h | 20 ++++++++++++++++++++
|
||||
2 files changed, 47 insertions(+), 0 deletions(-)
|
||||
|
||||
--- a/drivers/spi/coldfire_edma.c
|
||||
+++ b/drivers/spi/coldfire_edma.c
|
||||
@@ -206,6 +206,31 @@ int request_edma_channel(int channel,
|
||||
EXPORT_SYMBOL(request_edma_channel);
|
||||
|
||||
/**
|
||||
+ * set_edma_callback - Update the channel callback/arg
|
||||
+ * @channel: channel number
|
||||
+ * @handler: dma handler
|
||||
+ * @error_handler: dma error handler
|
||||
+ * @arg: argument to pass back
|
||||
+ *
|
||||
+ * Returns 0 if success or a negative value if failure
|
||||
+ */
|
||||
+int set_edma_callback(int channel,
|
||||
+ edma_irq_handler handler,
|
||||
+ edma_error_handler error_handler,
|
||||
+ void *arg )
|
||||
+{
|
||||
+ if (devp!=NULL && channel>=0 && channel<=EDMA_CHANNELS &&
|
||||
+ devp->dma_interrupt_handlers[channel].allocated) {
|
||||
+ devp->dma_interrupt_handlers[channel].irq_handler = handler;
|
||||
+ devp->dma_interrupt_handlers[channel].error_handler = error_handler;
|
||||
+ devp->dma_interrupt_handlers[channel].arg = arg;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ return -EINVAL;
|
||||
+}
|
||||
+EXPORT_SYMBOL(set_edma_callback);
|
||||
+
|
||||
+/**
|
||||
* free_edma_channel - Free the edma channel
|
||||
* @channel: channel number
|
||||
* @arg: argument created with
|
||||
@@ -216,8 +241,10 @@ int free_edma_channel(int channel, void
|
||||
{
|
||||
if (devp!=NULL && channel>=0 && channel<=EDMA_CHANNELS) {
|
||||
if (devp->dma_interrupt_handlers[channel].allocated) {
|
||||
+#if 0
|
||||
if (devp->dma_interrupt_handlers[channel].arg != arg)
|
||||
return -EBUSY;
|
||||
+#endif
|
||||
|
||||
devp->dma_interrupt_handlers[channel].allocated = 0;
|
||||
devp->dma_interrupt_handlers[channel].arg = NULL;
|
||||
--- a/include/asm-m68k/coldfire_edma.h
|
||||
+++ b/include/asm-m68k/coldfire_edma.h
|
||||
@@ -96,10 +96,30 @@ int request_edma_channel(int channel,
|
||||
void *dev,
|
||||
spinlock_t *lock,
|
||||
const char *device_id);
|
||||
+
|
||||
+/**
|
||||
+ * set_edma_callback - Update the channel callback/arg
|
||||
+ * @channel: channel number
|
||||
+ * @handler: dma handler
|
||||
+ * @error_handler: dma error handler
|
||||
+ * @arg: argument to pass back
|
||||
+ *
|
||||
+ * Returns 0 if success or a negative value if failure
|
||||
+ */
|
||||
+int set_edma_callback(int channel,
|
||||
+ edma_irq_handler handler,
|
||||
+ edma_error_handler error_handler,
|
||||
+ void *arg);
|
||||
|
||||
/* Free eDMA channel
|
||||
* channel - eDMA TCD number
|
||||
* dev - device
|
||||
*/
|
||||
int free_edma_channel(int channel, void *dev);
|
||||
+
|
||||
+/*
|
||||
+ * DMA Modes
|
||||
+ */
|
||||
+#define DMA_MODE_READ 0
|
||||
+#define DMA_MODE_WRITE 1
|
||||
#endif
|
||||
Reference in New Issue
Block a user