From 343c185b7d7383b1f5b5144e837045af28afc42b Mon Sep 17 00:00:00 2001 From: kaloz Date: Tue, 23 Jun 2009 21:04:37 +0000 Subject: 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 --- .../patches/037-m5445x_edma_callback.patch | 90 ++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 target/linux/coldfire/patches/037-m5445x_edma_callback.patch (limited to 'target/linux/coldfire/patches/037-m5445x_edma_callback.patch') diff --git a/target/linux/coldfire/patches/037-m5445x_edma_callback.patch b/target/linux/coldfire/patches/037-m5445x_edma_callback.patch new file mode 100644 index 0000000000..af2705c63b --- /dev/null +++ b/target/linux/coldfire/patches/037-m5445x_edma_callback.patch @@ -0,0 +1,90 @@ +From acd937ac924aefd22ea9a66ea621ab80a4f9b594 Mon Sep 17 00:00:00 2001 +From: Kurt Mahan +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 +--- + 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 -- cgit v1.2.3