| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553 |
- From 7b5b08d99d5362e9c36fd7d42d6c06c2a848266c Mon Sep 17 00:00:00 2001
- From: Kurt Mahan <[email protected]>
- Date: Sun, 9 Dec 2007 02:21:19 -0700
- Subject: [PATCH] Update EDMA.
- LTIBName: m5445x-edma-update
- Signed-off-by: Kurt Mahan <[email protected]>
- ---
- drivers/spi/coldfire_edma.c | 261 +++++++++++++++++++++++---------------
- include/asm-m68k/coldfire_edma.h | 9 +-
- include/asm-m68k/mcf5445x_edma.h | 28 +++-
- 3 files changed, 188 insertions(+), 110 deletions(-)
- --- a/drivers/spi/coldfire_edma.c
- +++ b/drivers/spi/coldfire_edma.c
- @@ -20,76 +20,91 @@
- #include <linux/cdev.h>
- #include <linux/seq_file.h>
- #include <linux/proc_fs.h>
- +#ifdef CONFIG_M54455
- #include <asm/mcf5445x_edma.h>
- #include <asm/mcf5445x_intc.h>
- +#endif /* CONFIG_M54455 */
- #include <asm/coldfire_edma.h>
-
- -
- -/* callback handler data for each TCD */
- +/*
- + * Callback handler data for each TCD
- + */
- struct edma_isr_record {
- - edma_irq_handler irq_handler; /* interrupt handler */
- - edma_error_handler error_handler; /* error interrupt handler */
- - void* dev; /* device used for the channel */
- - int allocated; /* busy flag */
- - spinlock_t *lock; /* spin lock (if needs to be locked in interrupt) */
- - const char* device_id; /* device id string, used in proc file system */
- + edma_irq_handler irq_handler; /* interrupt handler */
- + edma_error_handler error_handler; /* error interrupt handler */
- + void *arg; /* argument to pass back */
- + int allocated; /* busy flag */
- + spinlock_t *lock; /* spin lock (optional) */
- + const char *device_id; /* dev id string, used in procfs */
- };
-
- -/* device structure */
- +/*
- + * Device structure
- + */
- struct coldfire_edma_dev {
- - struct cdev cdev; /* character device */
- - struct edma_isr_record dma_interrupt_handlers[EDMA_CHANNELS]; /* channel handlers */
- + struct cdev cdev; /* character device */
- + struct edma_isr_record dma_interrupt_handlers[EDMA_CHANNELS];
- };
-
- /* allocated major device number */
- static int coldfire_dma_major;
- +
- /* device driver structure */
- -static struct coldfire_edma_dev* devp = NULL;
- +static struct coldfire_edma_dev *devp = NULL;
-
- /* device driver file operations */
- struct file_operations coldfire_edma_fops = {
- .owner = THIS_MODULE,
- };
-
- -/* eDMA channel interrupt handler */
- +/**
- + * dmaisr - eDMA channel interrupt handler
- + * @irq: interrupt number
- + * @dev_id: argument
- + */
- static int dmaisr(int irq, void *dev_id)
- {
- int channel = irq - EDMA_INT_CONTROLLER_BASE - EDMA_INT_CHANNEL_BASE;
- int result = IRQ_HANDLED;
-
- - if (devp!=NULL && devp->dma_interrupt_handlers[channel].lock) {
- - spin_lock(devp->dma_interrupt_handlers[channel].lock);
- - }
- + if ((devp != NULL) &&
- + (devp->dma_interrupt_handlers[channel].irq_handler)) {
- + /* call user irq handler */
- + if (devp->dma_interrupt_handlers[channel].lock)
- + spin_lock(devp->dma_interrupt_handlers[channel].lock);
- +
- + result = devp->dma_interrupt_handlers[channel].irq_handler(
- + channel, devp->dma_interrupt_handlers[channel].arg);
-
- - if (devp!=NULL && devp->dma_interrupt_handlers[channel].irq_handler) {
- - result = devp->dma_interrupt_handlers[channel].irq_handler(channel,
- - devp->dma_interrupt_handlers[channel].dev);
- + if (devp->dma_interrupt_handlers[channel].lock)
- + spin_unlock(devp->dma_interrupt_handlers[channel].lock);
- } else {
- + /* no irq handler so just ack it */
- confirm_edma_interrupt_handled(channel);
- - printk(EDMA_DRIVER_NAME ": No handler for DMA channel %d\n", channel);
- - }
- -
- - if (devp!=NULL && devp->dma_interrupt_handlers[channel].lock) {
- - spin_unlock(devp->dma_interrupt_handlers[channel].lock);
- + printk(EDMA_DRIVER_NAME ": No handler for DMA channel %d\n",
- + channel);
- }
-
- return result;
- }
-
- -/* eDMA error interrupt handler */
- +/**
- + * dma_error_isr - eDMA error interrupt handler
- + * @irq: interrupt number
- + * @dev_id: argument
- + */
- static int dma_error_isr(int irq, void* dev_id)
- {
- u16 err;
- int i;
-
- err = MCF_EDMA_ERR;
- - for (i=0;i<EDMA_CHANNELS;i++) {
- + for (i=0; i<EDMA_CHANNELS; i++) {
- if (err & (1<<i)) {
- - if (devp!=NULL && devp->dma_interrupt_handlers[i].error_handler) {
- - devp->dma_interrupt_handlers[i].error_handler(i, devp->dma_interrupt_handlers[i].dev);
- - } else {
- + if (devp!=NULL && devp->dma_interrupt_handlers[i].error_handler)
- + devp->dma_interrupt_handlers[i].error_handler(i, devp->dma_interrupt_handlers[i].arg);
- + else
- printk(KERN_WARNING EDMA_DRIVER_NAME ": DMA error on channel %d\n", i);
- - }
- }
- }
-
- @@ -97,11 +112,26 @@ static int dma_error_isr(int irq, void*
- return IRQ_HANDLED;
- }
-
- -/* sets channel parameters */
- +/**
- + * set_edma_params - Set transfer control descriptor (TCD)
- + * @channel: channel number
- + * @source: source address
- + * @dest: destination address
- + * @attr: attributes
- + * @soff: source offset
- + * @nbytes: number of bytes to be transfered in minor loop
- + * @slast: last source address adjustment
- + * @citer: major loop count
- + * @biter: beginning minor loop count
- + * @doff: destination offset
- + * @dlast_sga: last destination address adjustment
- + * @major_int: generate interrupt after each major loop
- + * @disable_req: disable DMA request after major loop
- + */
- void set_edma_params(int channel, u32 source, u32 dest,
- - u32 attr, u32 soff, u32 nbytes, u32 slast,
- - u32 citer, u32 biter, u32 doff, u32 dlast_sga,
- - int major_int, int disable_req)
- + u32 attr, u32 soff, u32 nbytes, u32 slast,
- + u32 citer, u32 biter, u32 doff, u32 dlast_sga,
- + int major_int, int disable_req)
- {
-
- if (channel<0 || channel>EDMA_CHANNELS)
- @@ -117,45 +147,56 @@ void set_edma_params(int channel, u32 so
- MCF_EDMA_TCD_BITER(channel)=MCF_EDMA_TCD_BITER_BITER(biter);
- MCF_EDMA_TCD_DOFF(channel) = MCF_EDMA_TCD_DOFF_DOFF(doff);
- MCF_EDMA_TCD_DLAST_SGA(channel) = MCF_EDMA_TCD_DLAST_SGA_DLAST_SGA(dlast_sga);
- +
- /* interrupt at the end of major loop */
- - if (major_int) {
- + if (major_int)
- MCF_EDMA_TCD_CSR(channel) |= MCF_EDMA_TCD_CSR_INT_MAJOR;
- - } else {
- + else
- MCF_EDMA_TCD_CSR(channel) &= ~MCF_EDMA_TCD_CSR_INT_MAJOR;
- - }
- +
- /* disable request at the end of major loop of transfer or not*/
- - if (disable_req) {
- + if (disable_req)
- MCF_EDMA_TCD_CSR(channel) |= MCF_EDMA_TCD_CSR_D_REQ;
- - } else {
- + else
- MCF_EDMA_TCD_CSR(channel) &= ~MCF_EDMA_TCD_CSR_D_REQ;
- - }
- -
- }
- EXPORT_SYMBOL(set_edma_params);
-
- -/* init eDMA controller */
- +/**
- + * init_edma - Initialize the eDMA controller
- + */
- void init_edma(void)
- {
- MCF_EDMA_CR = 0;
- }
- EXPORT_SYMBOL(init_edma);
-
- -/* request eDMA channel */
- +/**
- + * request_edma_channel - Request an eDMA channel
- + * @channel: channel number
- + * @handler: dma handler
- + * @error_handler: dma error handler
- + * @arg: argument to pass back
- + * @lock: optional spinlock to hold over interrupt
- + * @device_id: device id
- + *
- + * Returns 0 if success or a negative value if failure
- + */
- int request_edma_channel(int channel,
- - edma_irq_handler handler,
- - edma_error_handler error_handler,
- - void* dev,
- - spinlock_t *lock,
- - const char* device_id )
- + edma_irq_handler handler,
- + edma_error_handler error_handler,
- + void *arg,
- + spinlock_t *lock,
- + const char *device_id )
- {
- if (devp!=NULL && channel>=0 && channel<=EDMA_CHANNELS) {
- - if (devp->dma_interrupt_handlers[channel].allocated) {
- + if (devp->dma_interrupt_handlers[channel].allocated)
- return -EBUSY;
- - }
- +
- devp->dma_interrupt_handlers[channel].allocated = 1;
- devp->dma_interrupt_handlers[channel].irq_handler = handler;
- devp->dma_interrupt_handlers[channel].error_handler = error_handler;
- - devp->dma_interrupt_handlers[channel].dev = dev;
- + devp->dma_interrupt_handlers[channel].arg = arg;
- devp->dma_interrupt_handlers[channel].lock = lock;
- devp->dma_interrupt_handlers[channel].device_id = device_id;
- return 0;
- @@ -164,16 +205,22 @@ int request_edma_channel(int channel,
- }
- EXPORT_SYMBOL(request_edma_channel);
-
- -/* free eDMA channel */
- -int free_edma_channel(int channel, void* dev)
- +/**
- + * free_edma_channel - Free the edma channel
- + * @channel: channel number
- + * @arg: argument created with
- + *
- + * Returns 0 if success or a negative value if failure
- + */
- +int free_edma_channel(int channel, void *arg)
- {
- if (devp!=NULL && channel>=0 && channel<=EDMA_CHANNELS) {
- if (devp->dma_interrupt_handlers[channel].allocated) {
- - if (devp->dma_interrupt_handlers[channel].dev != dev) {
- + if (devp->dma_interrupt_handlers[channel].arg != arg)
- return -EBUSY;
- - }
- +
- devp->dma_interrupt_handlers[channel].allocated = 0;
- - devp->dma_interrupt_handlers[channel].dev = NULL;
- + devp->dma_interrupt_handlers[channel].arg = NULL;
- devp->dma_interrupt_handlers[channel].irq_handler = NULL;
- devp->dma_interrupt_handlers[channel].error_handler = NULL;
- devp->dma_interrupt_handlers[channel].lock = NULL;
- @@ -184,7 +231,9 @@ int free_edma_channel(int channel, void*
- }
- EXPORT_SYMBOL(free_edma_channel);
-
- -/* clean-up device driver allocated resources */
- +/**
- + * coldfire_edma_cleanup - cleanup driver allocated resources
- + */
- static void coldfire_edma_cleanup(void)
- {
- dev_t devno;
- @@ -192,13 +241,10 @@ static void coldfire_edma_cleanup(void)
-
- /* free interrupts/memory */
- if (devp) {
- - for (i=0;i<EDMA_CHANNELS;i++)
- - {
- - MCF_INTC0_SIMR = EDMA_INT_CHANNEL_BASE+i;
- - free_irq(EDMA_INT_CHANNEL_BASE+EDMA_INT_CONTROLLER_BASE+i, devp);
- - }
- - MCF_INTC0_SIMR = EDMA_INT_CHANNEL_BASE+EDMA_CHANNELS;
- - free_irq(EDMA_INT_CHANNEL_BASE+EDMA_INT_CONTROLLER_BASE+EDMA_CHANNELS, devp);
- + for (i=0; i<EDMA_CHANNELS; i++)
- + free_irq(EDMA_INT_BASE+i, devp);
- +
- + free_irq(EDMA_INT_BASE+EDMA_INT_ERR, devp);
- cdev_del(&devp->cdev);
- kfree(devp);
- }
- @@ -209,30 +255,42 @@ static void coldfire_edma_cleanup(void)
- }
-
- #ifdef CONFIG_PROC_FS
- -/* proc file system support */
- +/*
- + * proc file system support
- + */
-
- #define FREE_CHANNEL "free"
- #define DEVICE_UNKNOWN "device unknown"
-
- +/**
- + * proc_edma_show - print out proc info
- + * @m: seq_file
- + * @v:
- + */
- static int proc_edma_show(struct seq_file *m, void *v)
- {
- int i;
-
- - if (devp==NULL) return 0;
- + if (devp == NULL)
- + return 0;
-
- for (i = 0 ; i < EDMA_CHANNELS ; i++) {
- if (devp->dma_interrupt_handlers[i].allocated) {
- if (devp->dma_interrupt_handlers[i].device_id)
- - seq_printf(m, "%2d: %s\n", i, devp->dma_interrupt_handlers[i].device_id);
- + seq_printf(m, "%2d: %s\n", i, devp->dma_interrupt_handlers[i].device_id);
- else
- seq_printf(m, "%2d: %s\n", i, DEVICE_UNKNOWN);
- - } else {
- + } else
- seq_printf(m, "%2d: %s\n", i, FREE_CHANNEL);
- - }
- }
- return 0;
- }
-
- +/**
- + * proc_edma_open - open the proc file
- + * @inode: inode ptr
- + * @file: file ptr
- + */
- static int proc_edma_open(struct inode *inode, struct file *file)
- {
- return single_open(file, proc_edma_show, NULL);
- @@ -245,6 +303,9 @@ static const struct file_operations proc
- .release = single_release,
- };
-
- +/**
- + * proc_edma_init - initialize proc filesystem
- + */
- static int __init proc_edma_init(void)
- {
- struct proc_dir_entry *e;
- @@ -258,7 +319,9 @@ static int __init proc_edma_init(void)
-
- #endif
-
- -/* initializes device driver */
- +/**
- + * coldfire_edma_init - eDMA module init
- + */
- static int __init coldfire_edma_init(void)
- {
- dev_t dev;
- @@ -267,8 +330,9 @@ static int __init coldfire_edma_init(voi
-
- /* allocate free major number */
- result = alloc_chrdev_region(&dev, DMA_DEV_MINOR, 1, EDMA_DRIVER_NAME);
- - if (result<0) {
- - printk(KERN_WARNING EDMA_DRIVER_NAME": can't get major %d\n", result);
- + if (result < 0) {
- + printk(KERN_WARNING EDMA_DRIVER_NAME": can't get major %d\n",
- + result);
- return result;
- }
- coldfire_dma_major = MAJOR(dev);
- @@ -280,71 +344,68 @@ static int __init coldfire_edma_init(voi
- goto fail;
- }
-
- - /* init handlers (no handlers for beggining) */
- - for (i=0;i<EDMA_CHANNELS;i++) {
- + /* init handlers (no handlers for beginning) */
- + for (i = 0; i < EDMA_CHANNELS; i++) {
- devp->dma_interrupt_handlers[i].irq_handler = NULL;
- devp->dma_interrupt_handlers[i].error_handler = NULL;
- - devp->dma_interrupt_handlers[i].dev = NULL;
- + devp->dma_interrupt_handlers[i].arg = NULL;
- devp->dma_interrupt_handlers[i].allocated = 0;
- devp->dma_interrupt_handlers[i].lock = NULL;
- devp->dma_interrupt_handlers[i].device_id = NULL;
- }
-
- - /* register char device */
- + /* register char device */
- cdev_init(&devp->cdev, &coldfire_edma_fops);
- devp->cdev.owner = THIS_MODULE;
- devp->cdev.ops = &coldfire_edma_fops;
- result = cdev_add(&devp->cdev, dev, 1);
- if (result) {
- - printk(KERN_NOTICE EDMA_DRIVER_NAME": Error %d adding coldfire-dma device\n", result);
- + printk(KERN_NOTICE EDMA_DRIVER_NAME
- + ": Error %d adding coldfire-dma device\n", result);
- result = -ENODEV;
- goto fail;
- }
-
- /* request/enable irq for each eDMA channel */
- - for (i=0;i<EDMA_CHANNELS;i++)
- - {
- - result = request_irq(EDMA_INT_CHANNEL_BASE+EDMA_INT_CONTROLLER_BASE+i,
- - dmaisr, SA_INTERRUPT, EDMA_DRIVER_NAME, devp);
- + for (i = 0; i < EDMA_CHANNELS;i++) {
- + result = request_irq(EDMA_INT_BASE + i,
- + dmaisr, IRQF_DISABLED,
- + EDMA_DRIVER_NAME, devp);
- if (result) {
- - printk(KERN_WARNING EDMA_DRIVER_NAME": Cannot request irq %d\n",
- - EDMA_INT_CHANNEL_BASE+EDMA_INT_CONTROLLER_BASE+i);
- + printk(KERN_WARNING EDMA_DRIVER_NAME
- + ": Cannot request irq %d\n",
- + (EDMA_INT_BASE + EDMA_INT_ERR+i));
- result = -EBUSY;
- goto fail;
- }
- -
- - MCF_INTC0_ICR(EDMA_INT_CHANNEL_BASE+i) = EDMA_IRQ_LEVEL;
- - MCF_INTC0_CIMR = EDMA_INT_CHANNEL_BASE+i;
- -
- }
-
- - /* request error interrupt */
- - result = request_irq(EDMA_INT_CHANNEL_BASE + EDMA_INT_CONTROLLER_BASE + EDMA_CHANNELS,
- - dma_error_isr, SA_INTERRUPT, EDMA_DRIVER_NAME, devp);
- + /* request error interrupt */
- + result = request_irq(EDMA_INT_BASE + EDMA_INT_ERR,
- + dma_error_isr, IRQF_DISABLED,
- + EDMA_DRIVER_NAME, devp);
- if (result) {
- - printk(KERN_WARNING EDMA_DRIVER_NAME": Cannot request irq %d\n",
- - EDMA_INT_CHANNEL_BASE+EDMA_INT_CONTROLLER_BASE+EDMA_CHANNELS);
- + printk(KERN_WARNING EDMA_DRIVER_NAME
- + ": Cannot request irq %d\n",
- + (EDMA_INT_BASE + EDMA_INT_ERR));
- result = -EBUSY;
- goto fail;
- }
-
- - /* enable error interrupt in interrupt controller */
- - MCF_INTC0_ICR(EDMA_INT_CHANNEL_BASE+EDMA_CHANNELS) = EDMA_IRQ_LEVEL;
- - MCF_INTC0_CIMR = EDMA_INT_CHANNEL_BASE+EDMA_CHANNELS;
- -
- #ifdef CONFIG_PROC_FS
- proc_edma_init();
- #endif
-
- printk(EDMA_DRIVER_NAME ": initialized successfully\n");
- -
- return 0;
- fail:
- coldfire_edma_cleanup();
- return result;
- -
- }
-
- +/**
- + * coldfire_edma_exit - eDMA module exit
- + */
- static void __exit coldfire_edma_exit(void)
- {
- coldfire_edma_cleanup();
- @@ -354,5 +415,5 @@ module_init(coldfire_edma_init);
- module_exit(coldfire_edma_exit);
-
- MODULE_LICENSE("GPL");
- -MODULE_AUTHOR("Yaroslav Vinogradov, Freescale Inc.");
- -MODULE_DESCRIPTION("eDMA library for Coldfire 5445x");
- +MODULE_AUTHOR("Freescale Semiconductor, Inc.");
- +MODULE_DESCRIPTION("eDMA library for Coldfire M5445x");
- --- a/include/asm-m68k/coldfire_edma.h
- +++ b/include/asm-m68k/coldfire_edma.h
- @@ -20,11 +20,14 @@
- #define EDMA_DRIVER_NAME "ColdFire-eDMA"
- #define DMA_DEV_MINOR 1
-
- +#ifdef CONFIG_M54455
- #define EDMA_INT_CHANNEL_BASE 8
- #define EDMA_INT_CONTROLLER_BASE 64
- +#define EDMA_INT_BASE (EDMA_INT_CHANNEL_BASE + \
- + EDMA_INT_CONTROLLER_BASE)
- #define EDMA_CHANNELS 16
- -
- -#define EDMA_IRQ_LEVEL 5
- +#define EDMA_INT_ERR 16 /* edma error interrupt */
- +#endif /* CONFIG_M54455 */
-
- typedef irqreturn_t (*edma_irq_handler)(int, void *);
- typedef void (*edma_error_handler)(int, void *);
- @@ -38,7 +41,7 @@ typedef void (*edma_error_handler)(int,
- * nbytes - number of bytes to be transfered in minor loop
- * slast - last source address adjustment
- * citer - major loop count
- - * biter - beggining minor loop count
- + * biter - begining minor loop count
- * doff - destination offset
- * dlast_sga - last destination address adjustment
- * major_int - generate interrupt after each major loop
- --- a/include/asm-m68k/mcf5445x_edma.h
- +++ b/include/asm-m68k/mcf5445x_edma.h
- @@ -11,11 +11,27 @@
- #ifndef __MCF5445X_EDMA_H__
- #define __MCF5445X_EDMA_H__
-
- -/*********************************************************************
- -*
- -* Enhanced DMA (EDMA)
- -*
- -*********************************************************************/
- +/*
- + * Enhanced DMA (EDMA)
- + */
- +
- +/* Channels */
- +#define MCF_EDMA_CHAN_DREQ0 0 /* External DMA request 0 */
- +#define MCF_EDMA_CHAN_DREQ1 1 /* External DMA request 1 */
- +#define MCF_EDMA_CHAN_UART0_RX 2 /* UART0 Receive */
- +#define MCF_EDMA_CHAN_UART0_TX 3 /* UART0 Transmit */
- +#define MCF_EDMA_CHAN_UART1_RX 4 /* UART1 Receive */
- +#define MCF_EDMA_CHAN_UART1_TX 5 /* UART1 Transmit */
- +#define MCF_EDMA_CHAN_UART2_RX 6 /* UART2 Receive */
- +#define MCF_EDMA_CHAN_UART2_TX 7 /* UART2 Transmit */
- +#define MCF_EDMA_CHAN_TIMER0 8 /* Timer 0 / SSI0 Rx */
- +#define MCF_EDMA_CHAN_TIMER1 9 /* Timer 1 / SSI1 Rx */
- +#define MCF_EDMA_CHAN_TIMER2 10 /* Timer 2 / SSI0 Tx */
- +#define MCF_EDMA_CHAN_TIMER3 11 /* Timer 3 / SSI1 Tx */
- +#define MCF_EDMA_CHAN_DSPI_RX 12 /* DSPI Receive */
- +#define MCF_EDMA_CHAN_DSPI_TX 13 /* DSPI Transmit */
- +#define MCF_EDMA_CHAN_ATA_RX 14 /* ATA Receive */
- +#define MCF_EDMA_CHAN_ATA_TX 15 /* ATA Transmit */
-
- /* Register read/write macros */
- #define MCF_EDMA_CR MCF_REG32(0xFC044000)
- @@ -1453,6 +1469,4 @@
- #define MCF_EDMA_TCD15_CSR_LINKCH(x) (((x)&0x003F)<<8)
- #define MCF_EDMA_TCD15_CSR_BWC(x) (((x)&0x0003)<<14)
-
- -/********************************************************************/
- -
- #endif /* __MCF5445X_EDMA_H__ */
|