[coldfire]: remove 2.6.25 support
[15.05/openwrt.git] / target / linux / coldfire / patches / 052-m547x_8x_dspi.patch
diff --git a/target/linux/coldfire/patches/052-m547x_8x_dspi.patch b/target/linux/coldfire/patches/052-m547x_8x_dspi.patch
deleted file mode 100644 (file)
index c9277f8..0000000
+++ /dev/null
@@ -1,1137 +0,0 @@
-From acc2bc0cd419c176820d4a384eb36498a066366d Mon Sep 17 00:00:00 2001
-From: Kurt Mahan <kmahan@freescale.com>
-Date: Wed, 30 Apr 2008 14:20:48 -0600
-Subject: [PATCH] DSPI support for M547x/M548x.
-
-LTIBName: m547x-8x-dspi
-Signed-off-by: Kurt Mahan <kmahan@freescale.com>
----
- arch/m68k/coldfire/Makefile           |    1 +
- arch/m68k/coldfire/m547x_8x-devices.c |  150 +++++++++++++
- drivers/spi/Makefile                  |    3 +-
- drivers/spi/spi_coldfire.c            |  382 ++++++++++++++++-----------------
- include/asm-m68k/m5485dspi.h          |  144 +++++++++++++
- include/asm-m68k/mcfqspi.h            |    1 +
- include/asm-m68k/mcfsim.h             |    1 +
- 7 files changed, 485 insertions(+), 197 deletions(-)
- create mode 100644 arch/m68k/coldfire/m547x_8x-devices.c
- create mode 100644 include/asm-m68k/m5485dspi.h
-
---- a/arch/m68k/coldfire/Makefile
-+++ b/arch/m68k/coldfire/Makefile
-@@ -10,4 +10,5 @@ endif
- obj-$(CONFIG_PCI)     += pci.o mcf5445x-pci.o iomap.o
- obj-$(CONFIG_M54455)  += mcf5445x-devices.o
-+obj-$(CONFIG_M547X_8X)        += m547x_8x-devices.o
- obj-$(CONFIG_MCD_DMA) += m547x_8x-dma.o
---- /dev/null
-+++ b/arch/m68k/coldfire/m547x_8x-devices.c
-@@ -0,0 +1,150 @@
-+/*
-+ * arch/m68k/coldfire/m547x_8x-devices.c
-+ *
-+ * Coldfire M547x/M548x Platform Device Configuration
-+ *
-+ * Copyright (c) 2008 Freescale Semiconductor, Inc.
-+ *    Kurt Mahan <kmahan@freescale.com>
-+ */
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/fsl_devices.h>
-+#include <linux/spi/spi.h>
-+
-+#include <asm/coldfire.h>
-+#include <asm/mcfsim.h>
-+#include <asm/mcfqspi.h>
-+
-+
-+#ifdef CONFIG_SPI
-+/*
-+ *
-+ * DSPI
-+ *
-+ */
-+
-+/* number of supported SPI selects */
-+#define SPI_NUM_CHIPSELECTS   4
-+
-+void coldfire_spi_cs_control(u8 cs, u8 command)
-+{
-+      /* nothing special required */
-+}
-+
-+static struct spi_board_info spi_board_info[] = {
-+      /* no board info */
-+};
-+
-+static int spi_irq_list[] = {
-+      /* IRQ, ICR Offset, ICR Val, Mask */
-+      64 + ISC_DSPI_OVRFW, 0, 0, 0,
-+      64 + ISC_DSPI_RFOF,  0, 0, 0,
-+      64 + ISC_DSPI_RFDF,  0, 0, 0,
-+      64 + ISC_DSPI_TFUF,  0, 0, 0,
-+      64 + ISC_DSPI_TCF,   0, 0, 0,
-+      64 + ISC_DSPI_TFFF,  0, 0, 0,
-+      64 + ISC_DSPI_EOQF,  0, 0, 0,
-+      0,0,0,0,
-+};
-+
-+static struct coldfire_spi_master coldfire_master_info = {
-+      .bus_num = 1,
-+      .num_chipselect = SPI_NUM_CHIPSELECTS,
-+      .irq_list = spi_irq_list,
-+      .irq_source = 0,        /* not used */
-+      .irq_vector = 0,        /* not used */
-+      .irq_mask = 0,          /* not used */
-+      .irq_lp = 0,            /* not used */
-+      .par_val = 0,           /* not used */
-+      .cs_control = coldfire_spi_cs_control,
-+};
-+
-+static struct resource coldfire_spi_resources[] = {
-+      [0] = {
-+              .name = "spi-par",
-+              .start = MCF_MBAR + 0x00000a50, /* PAR_DSPI */
-+              .end = MCF_MBAR + 0x00000a50,   /* PAR_DSPI */
-+              .flags = IORESOURCE_MEM
-+      },
-+
-+      [1] = {
-+              .name = "spi-module",
-+              .start = MCF_MBAR + 0x00008a00, /* DSPI MCR Base */
-+              .end = MCF_MBAR + 0x00008ab8,   /* DSPI mem map end */
-+              .flags = IORESOURCE_MEM
-+      },
-+
-+      [2] = {
-+              .name = "spi-int-level",
-+              .start = MCF_MBAR + 0x740,               /* ICR start */
-+              .end = MCF_MBAR + 0x740 + ISC_DSPI_EOQF, /* ICR end */
-+              .flags = IORESOURCE_MEM
-+      },
-+
-+      [3] = {
-+              .name = "spi-int-mask",
-+              .start = MCF_MBAR + 0x70c,      /* IMRL */
-+              .end = MCF_MBAR + 0x70c,        /* IMRL */
-+              .flags = IORESOURCE_MEM
-+      }
-+};
-+
-+static struct platform_device coldfire_spi = {
-+      .name = "spi_coldfire",
-+      .id = -1,
-+      .resource = coldfire_spi_resources,
-+      .num_resources = ARRAY_SIZE(coldfire_spi_resources),
-+      .dev = {
-+              .platform_data = &coldfire_master_info,
-+      }
-+};
-+
-+/**
-+ * m547x_8x_spi_init - Initialize SPI
-+ */
-+static int __init m547x_8x_spi_init(void)
-+{
-+      int retval;
-+
-+      /* initialize the DSPI PAR */
-+      MCF_GPIO_PAR_DSPI = (MCF_GPIO_PAR_DSPI_PAR_CS5 |
-+                           MCF_GPIO_PAR_DSPI_PAR_CS3_DSPICS |
-+                           MCF_GPIO_PAR_DSPI_PAR_CS2_DSPICS |
-+                           MCF_GPIO_PAR_DSPI_PAR_CS0_DSPICS |
-+                           MCF_GPIO_PAR_DSPI_PAR_SCK_SCK |
-+                           MCF_GPIO_PAR_DSPI_PAR_SIN_SIN |
-+                           MCF_GPIO_PAR_DSPI_PAR_SOUT_SOUT);
-+
-+      /* register device */
-+      retval = platform_device_register(&coldfire_spi);
-+      if (retval < 0) {
-+              printk(KERN_ERR "SPI-m547x_8x: platform_device_register failed with code=%d\n", retval);
-+              goto out;
-+      }
-+
-+      /* register board info */
-+      if (ARRAY_SIZE(spi_board_info))
-+              retval = spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
-+
-+out:
-+      return retval;
-+}
-+#endif
-+
-+
-+/**
-+ * m547x_8x_init_devices - Initialize M547X_8X devices
-+ *
-+ * Returns 0 on success.
-+ */
-+static int __init m547x_8x_init_devices(void)
-+{
-+#ifdef CONFIG_SPI
-+      m547x_8x_spi_init();
-+#endif
-+
-+      return 0;
-+}
-+arch_initcall(m547x_8x_init_devices);
---- a/drivers/spi/Makefile
-+++ b/drivers/spi/Makefile
-@@ -18,7 +18,8 @@ obj-$(CONFIG_SPI_BFIN)                       += spi_bfin5xx.
- obj-$(CONFIG_SPI_BITBANG)             += spi_bitbang.o
- obj-$(CONFIG_SPI_AU1550)              += au1550_spi.o
- obj-$(CONFIG_SPI_BUTTERFLY)           += spi_butterfly.o
--obj-$(CONFIG_SPI_COLDFIRE)            += spi_coldfire.o spi-m5445x.o
-+# obj-$(CONFIG_SPI_COLDFIRE)          += spi_coldfire.o spi-m5445x.o
-+obj-$(CONFIG_SPI_COLDFIRE)            += spi_coldfire.o
- obj-$(CONFIG_SPI_GPIO)                        += spi_gpio.o
- obj-$(CONFIG_SPI_IMX)                 += spi_imx.o
- obj-$(CONFIG_SPI_LM70_LLP)            += spi_lm70llp.o
---- a/drivers/spi/spi_coldfire.c
-+++ b/drivers/spi/spi_coldfire.c
-@@ -1,29 +1,39 @@
--/****************************************************************************/
--
- /*
-- *    spi_coldfire.c - Master QSPI/DSPI controller for the ColdFire processors
-+ * spi_coldfire.c - Master QSPI/DSPI controller for the ColdFire processors
-+ *
-  *
-  *    (C) Copyright 2005, Intec Automation,
-  *                        Mike Lavender (mike@steroidmicros)
-  *
-- *    (C) Copyright 2007, Freescale Inc,
-- *                        Yaroslav Vinogradov (yaroslav.vinogradov@freescale.com)
-+ *    (C) Copyright 2007-2008, Freescale Inc,
-+ *                    Yaroslav Vinogradov
-+ *                    Andrey Butok
-+ *                    Kurt Mahan
-  *
--
--     This program is free software; you can redistribute it and/or modify
--     it under the terms of the GNU General Public License as published by
--     the Free Software Foundation; either version 2 of the License, or
--     (at your option) any later version.
--
--     This program is distributed in the hope that it will be useful,
--     but WITHOUT ANY WARRANTY; without even the implied warranty of
--     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--     GNU General Public License for more details.
--
--     You should have received a copy of the GNU General Public License
--     along with this program; if not, write to the Free Software
--     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                     */
--/* ------------------------------------------------------------------------- */
-+ * This program is free software; you can redistribute  it and/or modify it
-+ * under  the terms of  the GNU General  Public License as published by the
-+ * Free Software Foundation;  either version 2 of the  License, or (at your
-+ * option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-+ *
-+ ***************************************************************************
-+ * Changes:
-+ *   v0.003   12 February 2008        Andrey Butok, Freescale Semiconductor
-+ *            Added suport of MCF5227x DSPI module.
-+ *   v0.002   2007    Yaroslav Vinogradov, Freescale Semiconductor
-+ *            Added suport of MCF5445x DSPI module.
-+ *   v0.001   2005            Mike Lavender, Intec Automation,
-+ *            Intial version. Coldfire QSPI master driver.
-+ *
-+ */
- /****************************************************************************/
-@@ -46,41 +56,52 @@
- #include <asm/mcfsim.h>
- #include <asm/mcfqspi.h>
- #include <asm/coldfire.h>
--#include <asm/virtconvert.h>
- #if defined(CONFIG_M54455)
-+      #include <asm/virtconvert.h>
-+
-       #define SPI_DSPI
-       #if defined(CONFIG_SPI_COLDFIRE_DSPI_EDMA)
-               #define SPI_DSPI_EDMA
-               #ifdef CONFIG_MMU
-                       #define SPI_USE_MMU
-               #endif
-+              #include <asm/mcf5445x_edma.h>
-       #endif
-+
-+      #include <asm/mcf5445x_dspi.h>
- #endif
--#ifdef SPI_DSPI
--#include <asm/mcf5445x_dspi.h>
-+#if defined(CONFIG_M547X_8X)
-+      #define SPI_DSPI
-+
-+      #include <asm/virtconvert.h>
-+      #include <asm/m5485dspi.h>
-+#endif
-+#ifdef CONFIG_M5227x
-+      #define SPI_DSPI
-+      #if defined(CONFIG_SPI_COLDFIRE_DSPI_EDMA)
-+              #define SPI_DSPI_EDMA
-+      #endif
- #endif
-+
- #if defined(SPI_DSPI_EDMA)
- /* edma buffer size in transfer units (32bits) */
- #define EDMA_BUFFER_SIZE      (PAGE_SIZE/4)
--#define EDMA_BUFSIZE_KMALLOC (EDMA_BUFFER_SIZE*4)
--
--#define DSPI_DMA_RX_TCD       12
--#define DSPI_DMA_TX_TCD 13
-+#define EDMA_BUFSIZE_KMALLOC  (EDMA_BUFFER_SIZE*4)
-+#define DSPI_DMA_RX_TCD               MCF_EDMA_CHAN_DSPI_RX
-+#define DSPI_DMA_TX_TCD       MCF_EDMA_CHAN_DSPI_TX
--#include <asm/coldfire_edma.h>
--#include <asm/mcf5445x_edma.h>
-+#include <asm/mcf_edma.h>
- #endif
--
- MODULE_AUTHOR("Mike Lavender");
--MODULE_DESCRIPTION("ColdFire QSPI Contoller");
-+MODULE_DESCRIPTION("ColdFire SPI Contoller");
- MODULE_LICENSE("GPL");
- #define DRIVER_NAME "Coldfire QSPI/DSPI"
-@@ -92,7 +113,6 @@ MODULE_LICENSE("GPL");
-  */
- #define QSPI_RAM_SIZE         0x10    /* 16 word table */
--
- #define QSPI_TRANSMIT_RAM     0x00
- #define QSPI_RECEIVE_RAM      0x10
- #define QSPI_COMMAND_RAM      0x20
-@@ -296,13 +316,10 @@ struct driver_data {
-       u32 *dspi_rser;         /* DSPI RSER register */
-       u32 *dspi_sr;           /* DSPI status register */
-       u8      dspi_ctas;              /* DSPI CTAS value*/
--      
- #if defined(SPI_DSPI_EDMA)
-       void*   edma_tx_buf;
-       void*   edma_rx_buf;
- #endif
--      
--              
- #else
-       u16 *qmr;          /* QSPI mode register      */
-       u16 *qdlyr;        /* QSPI delay register     */
-@@ -312,7 +329,11 @@ struct driver_data {
-       u16 *qdr;          /* QSPI data register      */
-       u16 *qcr;          /* QSPI command register   */
- #endif
-+#if defined(CONFIG_M532x) || defined(CONFIG_M537x)
-+      u16 *par;          /* Pin assignment register */
-+#else
-       u8  *par;          /* Pin assignment register */
-+#endif
-       u8  *int_icr;      /* Interrupt level and priority register */
-       u32 *int_mr;       /* Interrupt mask register */
-       void (*cs_control)(u8 cs, u8 command);
-@@ -327,8 +348,6 @@ struct driver_data {
-  * SPI local functions
-  */
--//#define SPI_COLDFIRE_DEBUG
--
- static void *next_transfer(struct driver_data *drv_data)
- {
-       struct spi_message *msg = drv_data->cur_msg;
-@@ -387,11 +406,9 @@ static int write(struct driver_data *drv
-       int tx_word;
- #if defined(SPI_DSPI)
--
- #if defined(SPI_DSPI_EDMA)
-       u32* edma_wr;
- #endif
--
-       u16 d16;
-       u8  d8;
-       u32 dspi_pushr;
-@@ -400,9 +417,9 @@ static int write(struct driver_data *drv
-       tx_word = is_word_transfer(drv_data);
--      // If we are in word mode, but only have a single byte to transfer
--      // then switch to byte mode temporarily.  Will switch back at the
--      // end of the transfer.
-+      /* If we are in word mode, but only have a single byte to transfer
-+       * then switch to byte mode temporarily.  Will switch back at the
-+       * end of the transfer. */
-       if (tx_word && ((drv_data->tx_end - drv_data->tx) == 1)) {
-               drv_data->flags |= TRAN_STATE_WORD_ODD_NUM;
-               set_8bit_transfer_mode(drv_data);
-@@ -411,12 +428,10 @@ static int write(struct driver_data *drv
- #if defined(SPI_DSPI)
--
- #if defined(SPI_DSPI_EDMA)
-       edma_wr = (u32*)(drv_data->edma_tx_buf);
- #endif
--
- #if defined(SPI_DSPI_EDMA)
-       while ((drv_data->tx < drv_data->tx_end) && (tx_count < EDMA_BUFFER_SIZE)) {
- #else
-@@ -432,19 +447,16 @@ static int write(struct driver_data *drv
-                       }
-                       dspi_pushr = MCF_DSPI_DTFR_TXDATA(d16)
--                                                | DSPI_CS(drv_data->cs)
--                                               | MCF_DSPI_DTFR_CTAS(drv_data->dspi_ctas)
--                                               //| MCF_DSPI_DTFR_CONT
--                                               ;
--
-+                                      | DSPI_CS(drv_data->cs)
-+                                      | MCF_DSPI_DTFR_CTAS(drv_data->dspi_ctas);
-                       drv_data->tx += 2;
- #if defined(SPI_DSPI_EDMA)
-                       if (drv_data->tx == drv_data->tx_end  || tx_count==EDMA_BUFFER_SIZE-1) {
--#else                 
-+#else
-                       if (drv_data->tx == drv_data->tx_end  || tx_count==DSPI_FIFO_SIZE-1) {
--#endif                                
--                              // last transfer in queue
-+#endif
-+                              /* last transfer in the queue */
-                               dspi_pushr |= MCF_DSPI_DTFR_EOQ;
-                               if (drv_data->cs_change) {
-                                       dspi_pushr &= ~MCF_DSPI_DTFR_CONT;
-@@ -453,14 +465,13 @@ static int write(struct driver_data *drv
-                       if (first) {
-                               first = 0;
--                              dspi_pushr |= MCF_DSPI_DTFR_CTCNT; // clear counter
-+                              dspi_pushr |= MCF_DSPI_DTFR_CTCNT; /* clear counter */
-                       }
- #if defined(SPI_DSPI_EDMA)
-                       *edma_wr = dspi_pushr;
--                      edma_wr++;                      
-+                      edma_wr++;
- #else
-                       *drv_data->dspi_dtfr = dspi_pushr;
--                      //MCF_DSPI_DTFR = dspi_pushr;
- #endif
-@@ -473,14 +484,13 @@ static int write(struct driver_data *drv
-                       dspi_pushr = MCF_DSPI_DTFR_TXDATA(d8)
-                                                | DSPI_CS(drv_data->cs)
--                                               /* | MCF_DSPI_DTFR_PCS5 | */
-                                                | MCF_DSPI_DTFR_CTAS(drv_data->dspi_ctas)
-                                                | MCF_DSPI_DTFR_CONT;
-                       drv_data->tx++;
-                       if (drv_data->tx == drv_data->tx_end  || tx_count==DSPI_FIFO_SIZE-1) {
--                              // last transfer in queue
-+                              /* last transfer in the queue */
-                               dspi_pushr |= MCF_DSPI_DTFR_EOQ;
-                               if (drv_data->cs_change) {
-                                       dspi_pushr &= ~MCF_DSPI_DTFR_CONT;
-@@ -489,16 +499,15 @@ static int write(struct driver_data *drv
-                       if (first) {
-                               first = 0;
--                              dspi_pushr |= MCF_DSPI_DTFR_CTCNT; // clear counter
-+                              dspi_pushr |= MCF_DSPI_DTFR_CTCNT; /* clear counter */
-                       }
- #if defined(SPI_DSPI_EDMA)
-                       *edma_wr = dspi_pushr;
--                      edma_wr++;                      
--#else                 
-+                      edma_wr++;
-+#else
-                       *drv_data->dspi_dtfr = dspi_pushr;
--                      //MCF_DSPI_DTFR = dspi_pushr;
--#endif                        
-+#endif
-               }
-               tx_count++;
-@@ -508,8 +517,8 @@ static int write(struct driver_data *drv
-       if (tx_count>0) {
--              // TODO: initiate eDMA transfer
--              set_edma_params(DSPI_DMA_TX_TCD,
-+              /* TBD: initiate eDMA transfer */
-+              mcf_edma_set_tcd_params(DSPI_DMA_TX_TCD,
- #ifdef SPI_USE_MMU
-                                       virt_to_phys(drv_data->edma_tx_buf),
- #else
-@@ -517,18 +526,18 @@ static int write(struct driver_data *drv
- #endif
-                                       (u32)drv_data->dspi_dtfr,
-                                       MCF_EDMA_TCD_ATTR_SSIZE_32BIT | MCF_EDMA_TCD_ATTR_DSIZE_32BIT,
--                                      4,  // soff
--                                      4,  // nbytes
--                                      0,  // slast
--                                      tx_count, // citer
--                                      tx_count, // biter
--                                      0, // doff
--                                      0, // dlastsga
--                                      0, // major_int
--                                      1  // disable_req
-+                                      4, /* soff */
-+                                      4, /* nbytes */
-+                                      0, /* slast */
-+                                      tx_count, /* citer */
-+                                      tx_count, /* biter */
-+                                      0, /* doff */
-+                                      0, /* dlastsga */
-+                                      0, /* major_int */
-+                                      1  /* disable_req */
-                                       );
--              set_edma_params(DSPI_DMA_RX_TCD,
-+              mcf_edma_set_tcd_params(DSPI_DMA_RX_TCD,
-                                       (u32)drv_data->dspi_drfr,
- #ifdef SPI_USE_MMU
-                                       virt_to_phys(drv_data->edma_rx_buf),
-@@ -536,20 +545,20 @@ static int write(struct driver_data *drv
-                                       drv_data->edma_rx_buf,
- #endif
-                                       MCF_EDMA_TCD_ATTR_SSIZE_32BIT | MCF_EDMA_TCD_ATTR_DSIZE_32BIT,
--                                      0,  // soff
--                                      4,  // nbytes
--                                      0,  // slast
--                                      tx_count, // citer
--                                      tx_count, // biter
--                                      4, // doff
--                                      0,  // dlastsga
--                    0,   // major_int
--                                      1       // disable_req
-+                                      0, /* soff */
-+                                      4, /* nbytes */
-+                                      0, /* slast */
-+                                      tx_count, /* citer */
-+                                      tx_count, /* biter */
-+                                      4, /* doff */
-+                                      0, /* dlastsga */
-+                                      0, /* major_int */
-+                                      1  /* disable_req */
-                                       );
--              start_edma_transfer(DSPI_DMA_TX_TCD); // transmit SPI data
--              start_edma_transfer(DSPI_DMA_RX_TCD); // receive SPI data
-+              start_edma_transfer(DSPI_DMA_TX_TCD); /* transmit SPI data */
-+              start_edma_transfer(DSPI_DMA_RX_TCD); /* receive SPI data */
-       }
- #endif
-@@ -583,9 +592,9 @@ static int write(struct driver_data *drv
-                         | QCR_CONT
-                         | (~((0x01 << drv_data->cs) << 8) & 0x0F00);
--              if (       (cmd_count == tx_count - 1)
--                      && (drv_data->tx == drv_data->tx_end)
--                      && (drv_data->cs_change) ) {
-+              if ( (cmd_count == tx_count - 1)
-+                   && (drv_data->tx == drv_data->tx_end)
-+                   && (drv_data->cs_change) ) {
-                       qcr &= ~QCR_CONT;
-               }
-               *drv_data->qcr = qcr;
-@@ -613,7 +622,6 @@ static int read(struct driver_data *drv_
-       rx_word = is_word_transfer(drv_data);
- #if defined(SPI_DSPI)
--
- #if defined(SPI_DSPI_EDMA)
-       rx_edma = (u32*) drv_data->edma_tx_buf;
-       while ((drv_data->rx < drv_data->rx_end) && (rx_count < EDMA_BUFFER_SIZE)) {
-@@ -646,10 +654,7 @@ static int read(struct driver_data *drv_
-               }
-               rx_count++;
-       }
--
--
- #else
--
-       *drv_data->qar = QSPI_RECEIVE_RAM;
-       while ((drv_data->rx < drv_data->rx_end) && (rx_count < QSPI_RAM_SIZE)) {
-               if (rx_word) {
-@@ -680,19 +685,18 @@ static inline void qspi_setup_chip(struc
-       *drv_data->mcr = chip->mcr_val;
--      // TODO: remove later
-+      /* TBD: remove later */
-+/* JKM -- validate */
-       chip->ctar_val = 0x78560118;
-       *drv_data->ctar = chip->ctar_val;
-       *drv_data->dspi_rser =  0
--                                                      | MCF_DSPI_DRSER_EOQFE
-+                              | MCF_DSPI_DRSER_EOQFE
- #if defined(SPI_DSPI_EDMA)
--                                                      | MCF_DSPI_DRSER_TFFFE
--                                                      | MCF_DSPI_DRSER_TFFFS
-+                              | MCF_DSPI_DRSER_TFFFE
-+                              | MCF_DSPI_DRSER_TFFFS
- #endif
--                                                      ;
--
--
-+                              ;
- #else
-       *drv_data->qmr = chip->qmr_val;
-       *drv_data->qdlyr = chip->qdlyr_val;
-@@ -770,7 +774,6 @@ static irqreturn_t qspi_interrupt(int ir
-                        * transfer tasklet
-                        */
-                       if (drv_data->flags & TRAN_STATE_WORD_ODD_NUM) {
--                              //*drv_data->qmr &= ~QMR_BITS;
-                               set_16bit_transfer_mode(drv_data);
-                       }
-@@ -857,10 +860,8 @@ static void pump_transfers(unsigned long
-       if (message->state == START_STATE) {
-               qspi_setup_chip(drv_data);
--              if (drv_data->cs_control) {
--                      //printk( "m s\n" );
--                      drv_data->cs_control(message->spi->chip_select, QSPI_CS_ASSERT);
--              }
-+              if (drv_data->cs_control)
-+                      drv_data->cs_control(message->spi->chip_select, QSPI_CS_ASSERT);
-       }
-       /* Delay if requested at end of transfer*/
-@@ -902,12 +903,12 @@ static void pump_transfers(unsigned long
- }
--static void pump_messages(struct work_struct * work)
-+static void pump_messages(struct work_struct *work)
- {
-       struct driver_data *drv_data;
-       unsigned long flags;
--      drv_data = container_of(work,  struct driver_data, pump_messages);
-+      drv_data = container_of(work, struct driver_data, pump_messages);
-       /* Lock queue and check for queue work */
-       spin_lock_irqsave(&drv_data->lock, flags);
-@@ -1002,7 +1003,7 @@ static int setup(struct spi_device *spi)
-       chip->mcr.cont_scke = 0;
-       chip->mcr.dconf = 0;
-       chip->mcr.frz = 0;
--      chip->mcr.mtfe = 1;
-+      chip->mcr.mtfe = 0;
-       chip->mcr.pcsse = 0;
-       chip->mcr.rooe = 0;
-       chip->mcr.pcsis = 0xFF;
-@@ -1019,7 +1020,7 @@ static int setup(struct spi_device *spi)
-       if ((spi->bits_per_word >= 4) && (spi->bits_per_word <= 16)) {
-               chip->ctar.fmsz = spi->bits_per_word-1;
-       } else {
--              printk(KERN_ERR "coldfire-qspi: invalid wordsize\n");
-+              printk(KERN_ERR "coldfire-spi: invalid wordsize\n");
-               kfree(chip);
-               return -ENODEV;
-       }
-@@ -1056,9 +1057,9 @@ static int setup(struct spi_device *spi)
- #else
--      chip->qwr.csiv = 1;    // Chip selects are active low
--      chip->qmr.master = 1;  // Must set to master mode
--      chip->qmr.dohie = 1;   // Data output high impediance enabled
-+      chip->qwr.csiv = 1;    /* Chip selects are active low */
-+      chip->qmr.master = 1;  /* Must set to master mode */
-+      chip->qmr.dohie = 1;   /* Data output high impediance enabled */
-       chip->void_write_data = chip_info->void_write_data;
-       chip->qdlyr.qcd = chip_info->del_cs_to_clk;
-@@ -1075,8 +1076,8 @@ static int setup(struct spi_device *spi)
-       chip->qmr.baud = baud_divisor;
--      //printk( "QSPI: spi->max_speed_hz %d\n", spi->max_speed_hz );
--      //printk( "QSPI: Baud set to %d\n", chip->qmr.baud );
-+      /*printk( "SPI: spi->max_speed_hz %d\n", spi->max_speed_hz );*/
-+      /*printk( "SPI: Baud set to %d\n", chip->qmr.baud );*/
-       if (spi->mode & SPI_CPHA)
-               chip->qmr.cpha = 1;
-@@ -1089,7 +1090,7 @@ static int setup(struct spi_device *spi)
-       } else if ((spi->bits_per_word >= 8) && (spi->bits_per_word <= 15)) {
-               chip->qmr.bits = spi->bits_per_word;
-       } else {
--              printk(KERN_ERR "coldfire-qspi: invalid wordsize\n");
-+              printk(KERN_ERR "coldfire-spi: invalid wordsize\n");
-               kfree(chip);
-               return -ENODEV;
-       }
-@@ -1112,7 +1113,7 @@ static int init_queue(struct driver_data
-       tasklet_init(&drv_data->pump_transfers,
-                       pump_transfers, (unsigned long)drv_data);
--      INIT_WORK(&drv_data->pump_messages, pump_messages/*, drv_data*/);
-+      INIT_WORK(&drv_data->pump_messages, pump_messages);
-       drv_data->workqueue = create_singlethread_workqueue(
-                                       drv_data->master->dev.parent->bus_id);
-@@ -1185,7 +1186,7 @@ static int destroy_queue(struct driver_d
- }
--static void cleanup(const struct spi_device *spi)
-+static void cleanup(struct spi_device *spi)
- {
-       struct chip_data *chip = spi_get_ctldata((struct spi_device *)spi);
-@@ -1213,11 +1214,7 @@ static int coldfire_spi_probe(struct pla
-       int status = 0;
-       int i;
--#if defined(SPI_DSPI_EDMA)
--      init_edma();
--#endif
--
--      platform_info = (struct coldfire_spi_master *)pdev->dev.platform_data;
-+      platform_info = (struct coldfire_spi_master *)pdev->dev.platform_data;
-       master = spi_alloc_master(dev, sizeof(struct driver_data));
-       if (!master)
-@@ -1241,7 +1238,7 @@ static int coldfire_spi_probe(struct pla
-                       drv_data->cs_control(i, QSPI_CS_INIT | QSPI_CS_DROP);
-       /* Setup register addresses */
--      memory_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "qspi-module");
-+      memory_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "spi-module");
-       if (!memory_resource) {
-               dev_dbg(dev, "can not find platform module memory\n");
-               goto out_error_master_alloc;
-@@ -1259,13 +1256,13 @@ static int coldfire_spi_probe(struct pla
-               dev_dbg(dev, "cannot allocate eDMA RX memory\n");
-               goto out_error_master_alloc;
-       }
--#endif        
-+#endif
-       
- #if defined(SPI_DSPI)
--      drv_data->mcr           = (void *)(memory_resource->start + 0x00000000);
--      drv_data->ctar          = (void *)(memory_resource->start + 0x0000000C);
--      drv_data->dspi_sr       = (void *)(memory_resource->start + 0x0000002C);
-+      drv_data->mcr       = (void *)(memory_resource->start + 0x00000000);
-+      drv_data->ctar      = (void *)(memory_resource->start + 0x0000000C);
-+      drv_data->dspi_sr   = (void *)(memory_resource->start + 0x0000002C);
-       drv_data->dspi_rser = (void *)(memory_resource->start + 0x00000030);
-       drv_data->dspi_dtfr = (void *)(memory_resource->start + 0x00000034);
-       drv_data->dspi_drfr = (void *)(memory_resource->start + 0x00000038);
-@@ -1283,7 +1280,7 @@ static int coldfire_spi_probe(struct pla
- #endif
-       /* Setup register addresses */
--      memory_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "qspi-par");
-+      memory_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "spi-par");
-       if (!memory_resource) {
-               dev_dbg(dev, "can not find platform par memory\n");
-               goto out_error_master_alloc;
-@@ -1292,7 +1289,7 @@ static int coldfire_spi_probe(struct pla
-       drv_data->par = (void *)memory_resource->start;
-       /* Setup register addresses */
--      memory_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "qspi-int-level");
-+      memory_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "spi-int-level");
-       if (!memory_resource) {
-               dev_dbg(dev, "can not find platform par memory\n");
-               goto out_error_master_alloc;
-@@ -1301,7 +1298,7 @@ static int coldfire_spi_probe(struct pla
-       drv_data->int_icr = (void *)memory_resource->start;
-       /* Setup register addresses */
--      memory_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "qspi-int-mask");
-+      memory_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "spi-int-mask");
-       if (!memory_resource) {
-               dev_dbg(dev, "can not find platform par memory\n");
-               goto out_error_master_alloc;
-@@ -1309,32 +1306,52 @@ static int coldfire_spi_probe(struct pla
-       drv_data->int_mr = (void *)memory_resource->start;
--      irq = platform_info->irq_vector;
-+      if (platform_info->irq_list) {
-+              /* multiple IRQs */
-+              int *irqlist = platform_info->irq_list;
-+              while ((irq = *irqlist++)) {
-+                      int off = *irqlist++;
-+                      int lvl = *irqlist++;
-+                      int msk = *irqlist++;
-+                      status = request_irq(irq, qspi_interrupt, IRQF_DISABLED,
-+                                           dev->bus_id, drv_data);
-+                      if (status < 0) {
-+                              dev_err(&pdev->dev, 
-+                                      "unable to attach ColdFire DSPI interrupt\n");
-+                              goto out_error_master_alloc;
-+                      }
-+
-+                      if (lvl)
-+                              *(drv_data->int_icr + off) = lvl;
--      status = request_irq(platform_info->irq_vector, qspi_interrupt, IRQF_DISABLED, dev->bus_id, drv_data);
--      if (status < 0) {
--              dev_err(&pdev->dev, "unable to attach ColdFire QSPI interrupt\n");
--              goto out_error_master_alloc;
-+                      if (msk)
-+                              *drv_data->int_mr &= ~msk;
-+              }
-       }
-+      else {
-+              irq = platform_info->irq_vector;
--      /* Now that we have all the addresses etc.  Let's set it up */
--      // TODO:
--      //*drv_data->par = platform_info->par_val;
-+              status = request_irq(platform_info->irq_vector, qspi_interrupt,
-+                                   IRQF_DISABLED, dev->bus_id, drv_data);
-+              if (status < 0) {
-+                      dev_err(&pdev->dev, "unable to attach ColdFire QSPI interrupt\n");
-+                      goto out_error_master_alloc;
-+              }
--      MCF_GPIO_PAR_DSPI = 0
--              | MCF_GPIO_PAR_DSPI_PCS5_PCS5
--              | MCF_GPIO_PAR_DSPI_PCS2_PCS2
--              | MCF_GPIO_PAR_DSPI_PCS1_PCS1
--              | MCF_GPIO_PAR_DSPI_PCS0_PCS0
--              | MCF_GPIO_PAR_DSPI_SIN_SIN
--              | MCF_GPIO_PAR_DSPI_SOUT_SOUT
--              | MCF_GPIO_PAR_DSPI_SCK_SCK;
-+              *drv_data->int_icr = platform_info->irq_lp;
-+              *drv_data->int_mr &= ~platform_info->irq_mask;
-+      }
-+
-+      /* Now that we have all the addresses etc.  Let's set it up */
-+      if (platform_info->par_val)
-+              *drv_data->par = platform_info->par_val;
--      *drv_data->int_icr = platform_info->irq_lp;
--      *drv_data->int_mr &= ~platform_info->irq_mask;
-+#ifdef CONFIG_M5227x
-+      MCF_GPIO_PAR_IRQ = 0x04; /* Mistake in RM documentation */
-+#endif
- #ifdef SPI_DSPI
--      drv_data->dspi_ctas = 0; // TODO: change later
-+      drv_data->dspi_ctas = 0; /* TBD: change later */
- #endif
-       /* Initial and start queue */
-@@ -1359,40 +1376,37 @@ static int coldfire_spi_probe(struct pla
-       }
- #if defined(SPI_DSPI_EDMA)
--      if (request_edma_channel(DSPI_DMA_TX_TCD,
--                                                      edma_tx_handler,
--                                                      NULL,
--                                                      pdev,
--                                                      NULL, /* spinlock */
--                                                      DRIVER_NAME
--                                                      )!=0)
--      {
-+      if (mcf_edma_request_channel(DSPI_DMA_TX_TCD,
-+                                   edma_tx_handler,
-+                                   NULL,
-+                                   pdev,
-+                                   NULL, /* spinlock */
-+                                   DRIVER_NAME
-+                                   )!=0) {
-               dev_err(&pdev->dev, "problem requesting edma transmit channel\n");
-               status = -EINVAL;
--        goto out_error_queue_alloc;
-+              goto out_error_queue_alloc;
-       }
--      if (request_edma_channel(DSPI_DMA_RX_TCD,
--                                                      edma_rx_handler,
--                                                      NULL,
--                                                      pdev,
--                                                      NULL, /* spinlock */
--                                                      DRIVER_NAME
--                                                      )!=0)
--      {
-+      if (mcf_edma_request_channel(DSPI_DMA_RX_TCD,
-+                                   edma_rx_handler,
-+                                   NULL,
-+                                   pdev,
-+                                   NULL, /* spinlock */
-+                                   DRIVER_NAME
-+                                   )!=0) {
-               dev_err(&pdev->dev, "problem requesting edma receive channel\n");
-               status = -EINVAL;
--        goto out_edma_transmit;
-+              goto out_edma_transmit;
-       }
- #endif
--      printk( "SPI: Coldfire master initialized\n" );
--      //dev_info(&pdev->dev, "driver initialized\n");
-+      printk(KERN_INFO "SPI: Coldfire master initialized\n" );
-       return status;
- #if defined(SPI_DSPI_EDMA)
- out_edma_transmit:
--      free_edma_channel(DSPI_DMA_TX_TCD, pdev);
-+      mcf_edma_free_channel(DSPI_DMA_TX_TCD, pdev);
- #endif
- out_error_queue_alloc:
-@@ -1417,8 +1431,8 @@ static int coldfire_spi_remove(struct pl
-               return 0;
- #if defined(SPI_DSPI_EDMA)
--      free_edma_channel(DSPI_DMA_TX_TCD, pdev);
--      free_edma_channel(DSPI_DMA_RX_TCD, pdev);
-+      mcf_edma_free_channel(DSPI_DMA_TX_TCD, pdev);
-+      mcf_edma_free_channel(DSPI_DMA_RX_TCD, pdev);
- #endif        
-       /* Remove the queue */
-@@ -1426,27 +1440,8 @@ static int coldfire_spi_remove(struct pl
-       if (status != 0)
-               return status;
--      /* Disable the SSP at the peripheral and SOC level */
--      /*write_SSCR0(0, drv_data->ioaddr);
--      pxa_set_cken(drv_data->master_info->clock_enable, 0);*/
--
--      /* Release DMA */
--      /*if (drv_data->master_info->enable_dma) {
--              if (drv_data->ioaddr == SSP1_VIRT) {
--                      DRCMRRXSSDR = 0;
--                      DRCMRTXSSDR = 0;
--              } else if (drv_data->ioaddr == SSP2_VIRT) {
--                      DRCMRRXSS2DR = 0;
--                      DRCMRTXSS2DR = 0;
--              } else if (drv_data->ioaddr == SSP3_VIRT) {
--                      DRCMRRXSS3DR = 0;
--                      DRCMRTXSS3DR = 0;
--              }
--              pxa_free_dma(drv_data->tx_channel);
--              pxa_free_dma(drv_data->rx_channel);
--      }*/
--
-       /* Release IRQ */
-+/* JKM -- check for list and remove list */
-       irq = platform_get_irq(pdev, 0);
-       if (irq >= 0)
-               free_irq(irq, drv_data);
-@@ -1496,8 +1491,6 @@ static int coldfire_spi_suspend(struct p
-       status = stop_queue(drv_data);
-       if (status != 0)
-               return status;
--      /*write_SSCR0(0, drv_data->ioaddr);
--      pxa_set_cken(drv_data->master_info->clock_enable, 0);*/
-       return 0;
- }
-@@ -1507,9 +1500,6 @@ static int coldfire_spi_resume(struct pl
-       struct driver_data *drv_data = platform_get_drvdata(pdev);
-       int status = 0;
--      /* Enable the SSP clock */
--      /*pxa_set_cken(drv_data->master_info->clock_enable, 1);*/
--
-       /* Start the queue running */
-       status = start_queue(drv_data);
-       if (status != 0) {
---- /dev/null
-+++ b/include/asm-m68k/m5485dspi.h
-@@ -0,0 +1,144 @@
-+/*
-+ * File:      mcf548x_dspi.h
-+ * Purpose:   Register and bit definitions for the MCF548X
-+ *
-+ * Notes:
-+ *
-+ */
-+
-+#ifndef _M5485DSPI_H_
-+#define _M5485DSPI_H_
-+
-+/*
-+ *
-+ * DMA Serial Peripheral Interface (DSPI)
-+ *
-+ */
-+
-+/* Register read/write macros */
-+#define MCF_DSPI_DMCR         MCF_REG32(0x008A00)
-+#define MCF_DSPI_DTCR         MCF_REG32(0x008A08)
-+#define MCF_DSPI_DCTAR0       MCF_REG32(0x008A0C)
-+#define MCF_DSPI_DCTAR1       MCF_REG32(0x008A10)
-+#define MCF_DSPI_DCTAR2       MCF_REG32(0x008A14)
-+#define MCF_DSPI_DCTAR3       MCF_REG32(0x008A18)
-+#define MCF_DSPI_DCTAR4       MCF_REG32(0x008A1C)
-+#define MCF_DSPI_DCTAR5       MCF_REG32(0x008A20)
-+#define MCF_DSPI_DCTAR6       MCF_REG32(0x008A24)
-+#define MCF_DSPI_DCTAR7       MCF_REG32(0x008A28)
-+#define MCF_DSPI_DCTARn(x)    MCF_REG32(0x008A0C+(x*4))
-+#define MCF_DSPI_DSR          MCF_REG32(0x008A2C)
-+#define MCF_DSPI_DRSER        MCF_REG32(0x008A30)
-+#define MCF_DSPI_DTFR         MCF_REG32(0x008A34)
-+#define MCF_DSPI_DRFR         MCF_REG32(0x008A38)
-+#define MCF_DSPI_DTFDR0       MCF_REG32(0x008A3C)
-+#define MCF_DSPI_DTFDR1       MCF_REG32(0x008A40)
-+#define MCF_DSPI_DTFDR2       MCF_REG32(0x008A44)
-+#define MCF_DSPI_DTFDR3       MCF_REG32(0x008A48)
-+#define MCF_DSPI_DTFDRn(x)    MCF_REG32(0x008A3C+(x*4))
-+#define MCF_DSPI_DRFDR0       MCF_REG32(0x008A7C)
-+#define MCF_DSPI_DRFDR1       MCF_REG32(0x008A80)
-+#define MCF_DSPI_DRFDR2       MCF_REG32(0x008A84)
-+#define MCF_DSPI_DRFDR3       MCF_REG32(0x008A88)
-+#define MCF_DSPI_DRFDRn(x)    MCF_REG32(0x008A7C+(x*4))
-+
-+/* Bit definitions and macros for MCF_DSPI_DMCR */
-+#define MCF_DSPI_DMCR_HALT             (0x00000001)
-+#define MCF_DSPI_DMCR_SMPL_PT(x)       (((x)&0x00000003)<<8)
-+#define MCF_DSPI_DMCR_CRXF             (0x00000400)
-+#define MCF_DSPI_DMCR_CTXF             (0x00000800)
-+#define MCF_DSPI_DMCR_DRXF             (0x00001000)
-+#define MCF_DSPI_DMCR_DTXF             (0x00002000)
-+#define MCF_DSPI_DMCR_CSIS0            (0x00010000)
-+#define MCF_DSPI_DMCR_CSIS2            (0x00040000)
-+#define MCF_DSPI_DMCR_CSIS3            (0x00080000)
-+#define MCF_DSPI_DMCR_CSIS5            (0x00200000)
-+#define MCF_DSPI_DMCR_ROOE             (0x01000000)
-+#define MCF_DSPI_DMCR_PCSSE            (0x02000000)
-+#define MCF_DSPI_DMCR_MTFE             (0x04000000)
-+#define MCF_DSPI_DMCR_FRZ              (0x08000000)
-+#define MCF_DSPI_DMCR_DCONF(x)         (((x)&0x00000003)<<28)
-+#define MCF_DSPI_DMCR_CSCK             (0x40000000)
-+#define MCF_DSPI_DMCR_MSTR             (0x80000000)
-+
-+/* Bit definitions and macros for MCF_DSPI_DTCR */
-+#define MCF_DSPI_DTCR_SPI_TCNT(x)      (((x)&0x0000FFFF)<<16)
-+
-+/* Bit definitions and macros for MCF_DSPI_DCTARn */
-+#define MCF_DSPI_DCTAR_BR(x)          (((x)&0x0000000F)<<0)
-+#define MCF_DSPI_DCTAR_DT(x)          (((x)&0x0000000F)<<4)
-+#define MCF_DSPI_DCTAR_ASC(x)         (((x)&0x0000000F)<<8)
-+#define MCF_DSPI_DCTAR_CSSCK(x)       (((x)&0x0000000F)<<12)
-+#define MCF_DSPI_DCTAR_PBR(x)         (((x)&0x00000003)<<16)
-+#define MCF_DSPI_DCTAR_PDT(x)         (((x)&0x00000003)<<18)
-+#define MCF_DSPI_DCTAR_PASC(x)        (((x)&0x00000003)<<20)
-+#define MCF_DSPI_DCTAR_PCSSCK(x)      (((x)&0x00000003)<<22)
-+#define MCF_DSPI_DCTAR_LSBFE          (0x01000000)
-+#define MCF_DSPI_DCTAR_CPHA           (0x02000000)
-+#define MCF_DSPI_DCTAR_CPOL           (0x04000000)
-+/* #define MCF_DSPI_DCTAR_TRSZ(x)        (((x)&0x0000000F)<<27) */
-+#define MCF_DSPI_DCTAR_FMSZ(x)        (((x)&0x0000000F)<<27)
-+#define MCF_DSPI_DCTAR_PCSSCK_1CLK    (0x00000000)
-+#define MCF_DSPI_DCTAR_PCSSCK_3CLK    (0x00400000)
-+#define MCF_DSPI_DCTAR_PCSSCK_5CLK    (0x00800000)
-+#define MCF_DSPI_DCTAR_PCSSCK_7CLK    (0x00A00000)
-+#define MCF_DSPI_DCTAR_PASC_1CLK      (0x00000000)
-+#define MCF_DSPI_DCTAR_PASC_3CLK      (0x00100000)
-+#define MCF_DSPI_DCTAR_PASC_5CLK      (0x00200000)
-+#define MCF_DSPI_DCTAR_PASC_7CLK      (0x00300000)
-+#define MCF_DSPI_DCTAR_PDT_1CLK       (0x00000000)
-+#define MCF_DSPI_DCTAR_PDT_3CLK       (0x00040000)
-+#define MCF_DSPI_DCTAR_PDT_5CLK       (0x00080000)
-+#define MCF_DSPI_DCTAR_PDT_7CLK       (0x000A0000)
-+#define MCF_DSPI_DCTAR_PBR_1CLK       (0x00000000)
-+#define MCF_DSPI_DCTAR_PBR_3CLK       (0x00010000)
-+#define MCF_DSPI_DCTAR_PBR_5CLK       (0x00020000)
-+#define MCF_DSPI_DCTAR_PBR_7CLK       (0x00030000)
-+
-+/* Bit definitions and macros for MCF_DSPI_DSR */
-+#define MCF_DSPI_DSR_RXPTR(x)          (((x)&0x0000000F)<<0)
-+#define MCF_DSPI_DSR_RXCTR(x)          (((x)&0x0000000F)<<4)
-+#define MCF_DSPI_DSR_TXPTR(x)          (((x)&0x0000000F)<<8)
-+#define MCF_DSPI_DSR_TXCTR(x)          (((x)&0x0000000F)<<12)
-+#define MCF_DSPI_DSR_RFDF              (0x00020000)
-+#define MCF_DSPI_DSR_RFOF              (0x00080000)
-+#define MCF_DSPI_DSR_TFFF              (0x02000000)
-+#define MCF_DSPI_DSR_TFUF              (0x08000000)
-+#define MCF_DSPI_DSR_EOQF              (0x10000000)
-+#define MCF_DSPI_DSR_TXRXS             (0x40000000)
-+#define MCF_DSPI_DSR_TCF               (0x80000000)
-+
-+/* Bit definitions and macros for MCF_DSPI_DRSER */
-+#define MCF_DSPI_DRSER_RFDFS           (0x00010000)
-+#define MCF_DSPI_DRSER_RFDFE           (0x00020000)
-+#define MCF_DSPI_DRSER_RFOFE           (0x00080000)
-+#define MCF_DSPI_DRSER_TFFFS           (0x01000000)
-+#define MCF_DSPI_DRSER_TFFFE           (0x02000000)
-+#define MCF_DSPI_DRSER_TFUFE           (0x08000000)
-+#define MCF_DSPI_DRSER_EOQFE           (0x10000000)
-+#define MCF_DSPI_DRSER_TCFE            (0x80000000)
-+
-+/* Bit definitions and macros for MCF_DSPI_DTFR */
-+#define MCF_DSPI_DTFR_TXDATA(x)        (((x)&0x0000FFFF)<<0)
-+#define MCF_DSPI_DTFR_CS0              (0x00010000)
-+#define MCF_DSPI_DTFR_CS2              (0x00040000)
-+#define MCF_DSPI_DTFR_CS3              (0x00080000)
-+#define MCF_DSPI_DTFR_CS5              (0x00200000)
-+#define MCF_DSPI_DTFR_CTCNT            (0x04000000)
-+#define MCF_DSPI_DTFR_EOQ              (0x08000000)
-+#define MCF_DSPI_DTFR_CTAS(x)          (((x)&0x00000007)<<28)
-+#define MCF_DSPI_DTFR_CONT             (0x80000000)
-+
-+/* Bit definitions and macros for MCF_DSPI_DRFR */
-+#define MCF_DSPI_DRFR_RXDATA(x)        (((x)&0x0000FFFF)<<0)
-+
-+/* Bit definitions and macros for MCF_DSPI_DTFDRn */
-+#define MCF_DSPI_DTFDRn_TXDATA(x)      (((x)&0x0000FFFF)<<0)
-+#define MCF_DSPI_DTFDRn_TXCMD(x)       (((x)&0x0000FFFF)<<16)
-+
-+/* Bit definitions and macros for MCF_DSPI_DRFDRn */
-+#define MCF_DSPI_DRFDRn_RXDATA(x)      (((x)&0x0000FFFF)<<0)
-+
-+/********************************************************************/
-+
-+#endif /* _M5485DSPI_H_ */
---- a/include/asm-m68k/mcfqspi.h
-+++ b/include/asm-m68k/mcfqspi.h
-@@ -36,6 +36,7 @@ struct coldfire_spi_master {
-       u32 irq_mask;
-       u8  irq_lp;
-       u8  par_val;
-+      u32 *irq_list;
-       void (*cs_control)(u8 cs, u8 command);
- };
---- a/include/asm-m68k/mcfsim.h
-+++ b/include/asm-m68k/mcfsim.h
-@@ -25,6 +25,7 @@
- #include <asm/mcf5445x_dtim.h>
- #elif defined(CONFIG_M547X_8X)
- #include <asm/m5485sim.h>
-+#include <asm/m5485gpio.h>
- #endif
- /*