]> git.sur5r.net Git - u-boot/commitdiff
imx: Move some header files from arch-mxs to imx-common
authorStefan Roese <sr@denx.de>
Tue, 9 Apr 2013 21:06:07 +0000 (21:06 +0000)
committerStefano Babic <sbabic@denx.de>
Mon, 22 Apr 2013 08:22:22 +0000 (10:22 +0200)
The following headers are moved to a i.MX common location:

- regs-common.h
- regs-apbh.h
- regs-bch.h
- regs-gpmi.h
- dma.h

This way this header can be re-used also by other i.MX platforms.
For example the i.MX6 which will need it for the upcoming NAND
support.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Marek Vasut <marex@denx.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
29 files changed:
arch/arm/cpu/arm926ejs/mxs/mxs.c
arch/arm/include/asm/arch-mxs/dma.h [deleted file]
arch/arm/include/asm/arch-mxs/imx-regs.h
arch/arm/include/asm/arch-mxs/regs-apbh.h [deleted file]
arch/arm/include/asm/arch-mxs/regs-bch.h [deleted file]
arch/arm/include/asm/arch-mxs/regs-clkctrl-mx23.h
arch/arm/include/asm/arch-mxs/regs-clkctrl-mx28.h
arch/arm/include/asm/arch-mxs/regs-common.h [deleted file]
arch/arm/include/asm/arch-mxs/regs-digctl.h
arch/arm/include/asm/arch-mxs/regs-gpmi.h [deleted file]
arch/arm/include/asm/arch-mxs/regs-i2c.h
arch/arm/include/asm/arch-mxs/regs-lcdif.h
arch/arm/include/asm/arch-mxs/regs-lradc.h
arch/arm/include/asm/arch-mxs/regs-ocotp.h
arch/arm/include/asm/arch-mxs/regs-pinctrl.h
arch/arm/include/asm/arch-mxs/regs-power-mx23.h
arch/arm/include/asm/arch-mxs/regs-power-mx28.h
arch/arm/include/asm/arch-mxs/regs-rtc.h
arch/arm/include/asm/arch-mxs/regs-ssp.h
arch/arm/include/asm/arch-mxs/regs-timrot.h
arch/arm/include/asm/imx-common/dma.h [new file with mode: 0644]
arch/arm/include/asm/imx-common/regs-apbh.h [new file with mode: 0644]
arch/arm/include/asm/imx-common/regs-bch.h [new file with mode: 0644]
arch/arm/include/asm/imx-common/regs-common.h [new file with mode: 0644]
arch/arm/include/asm/imx-common/regs-gpmi.h [new file with mode: 0644]
drivers/dma/apbh_dma.c
drivers/mmc/mxsmmc.c
drivers/mtd/nand/mxs_nand.c
drivers/spi/mxs_spi.c

index e2b41965db5d8b3c98b12ef984962fd06106b9b4..6616f4e7786e9382572aeb4c15aa9576f09ac73e 100644 (file)
@@ -30,7 +30,7 @@
 #include <asm/errno.h>
 #include <asm/io.h>
 #include <asm/arch/clock.h>
-#include <asm/arch/dma.h>
+#include <asm/imx-common/dma.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/imx-regs.h>
diff --git a/arch/arm/include/asm/arch-mxs/dma.h b/arch/arm/include/asm/arch-mxs/dma.h
deleted file mode 100644 (file)
index 1ac8696..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Freescale i.MX28 APBH DMA
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * 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
- *
- */
-
-#ifndef __DMA_H__
-#define __DMA_H__
-
-#include <linux/list.h>
-#include <linux/compiler.h>
-
-#ifndef        CONFIG_ARCH_DMA_PIO_WORDS
-#define        DMA_PIO_WORDS           15
-#else
-#define        DMA_PIO_WORDS           CONFIG_ARCH_DMA_PIO_WORDS
-#endif
-
-#define MXS_DMA_ALIGNMENT      32
-
-/*
- * MXS DMA channels
- */
-#if defined(CONFIG_MX23)
-enum {
-       MXS_DMA_CHANNEL_AHB_APBH_LCDIF = 0,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP0,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP1,
-       MXS_DMA_CHANNEL_AHB_APBH_RESERVED0,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI0,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
-       MXS_MAX_DMA_CHANNELS,
-};
-#elif defined(CONFIG_MX28)
-enum {
-       MXS_DMA_CHANNEL_AHB_APBH_SSP0 = 0,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP1,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP2,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP3,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI0,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI4,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI5,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI6,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI7,
-       MXS_DMA_CHANNEL_AHB_APBH_HSADC,
-       MXS_DMA_CHANNEL_AHB_APBH_LCDIF,
-       MXS_DMA_CHANNEL_AHB_APBH_RESERVED0,
-       MXS_DMA_CHANNEL_AHB_APBH_RESERVED1,
-       MXS_MAX_DMA_CHANNELS,
-};
-#endif
-
-/*
- * MXS DMA hardware command.
- *
- * This structure describes the in-memory layout of an entire DMA command,
- * including space for the maximum number of PIO accesses. See the appropriate
- * reference manual for a detailed description of what these fields mean to the
- * DMA hardware.
- */
-#define        MXS_DMA_DESC_COMMAND_MASK       0x3
-#define        MXS_DMA_DESC_COMMAND_OFFSET     0
-#define        MXS_DMA_DESC_COMMAND_NO_DMAXFER 0x0
-#define        MXS_DMA_DESC_COMMAND_DMA_WRITE  0x1
-#define        MXS_DMA_DESC_COMMAND_DMA_READ   0x2
-#define        MXS_DMA_DESC_COMMAND_DMA_SENSE  0x3
-#define        MXS_DMA_DESC_CHAIN              (1 << 2)
-#define        MXS_DMA_DESC_IRQ                (1 << 3)
-#define        MXS_DMA_DESC_NAND_LOCK          (1 << 4)
-#define        MXS_DMA_DESC_NAND_WAIT_4_READY  (1 << 5)
-#define        MXS_DMA_DESC_DEC_SEM            (1 << 6)
-#define        MXS_DMA_DESC_WAIT4END           (1 << 7)
-#define        MXS_DMA_DESC_HALT_ON_TERMINATE  (1 << 8)
-#define        MXS_DMA_DESC_TERMINATE_FLUSH    (1 << 9)
-#define        MXS_DMA_DESC_PIO_WORDS_MASK     (0xf << 12)
-#define        MXS_DMA_DESC_PIO_WORDS_OFFSET   12
-#define        MXS_DMA_DESC_BYTES_MASK         (0xffff << 16)
-#define        MXS_DMA_DESC_BYTES_OFFSET       16
-
-struct mxs_dma_cmd {
-       unsigned long           next;
-       unsigned long           data;
-       union {
-               dma_addr_t      address;
-               unsigned long   alternate;
-       };
-       unsigned long           pio_words[DMA_PIO_WORDS];
-};
-
-/*
- * MXS DMA command descriptor.
- *
- * This structure incorporates an MXS DMA hardware command structure, along
- * with metadata.
- */
-#define        MXS_DMA_DESC_FIRST      (1 << 0)
-#define        MXS_DMA_DESC_LAST       (1 << 1)
-#define        MXS_DMA_DESC_READY      (1 << 31)
-
-struct mxs_dma_desc {
-       struct mxs_dma_cmd      cmd;
-       unsigned int            flags;
-       dma_addr_t              address;
-       void                    *buffer;
-       struct list_head        node;
-} __aligned(MXS_DMA_ALIGNMENT);
-
-/**
- * MXS DMA channel
- *
- * This structure represents a single DMA channel. The MXS platform code
- * maintains an array of these structures to represent every DMA channel in the
- * system (see mxs_dma_channels).
- */
-#define        MXS_DMA_FLAGS_IDLE      0
-#define        MXS_DMA_FLAGS_BUSY      (1 << 0)
-#define        MXS_DMA_FLAGS_FREE      0
-#define        MXS_DMA_FLAGS_ALLOCATED (1 << 16)
-#define        MXS_DMA_FLAGS_VALID     (1 << 31)
-
-struct mxs_dma_chan {
-       const char *name;
-       unsigned long dev;
-       struct mxs_dma_device *dma;
-       unsigned int flags;
-       unsigned int active_num;
-       unsigned int pending_num;
-       struct list_head active;
-       struct list_head done;
-};
-
-struct mxs_dma_desc *mxs_dma_desc_alloc(void);
-void mxs_dma_desc_free(struct mxs_dma_desc *);
-int mxs_dma_desc_append(int channel, struct mxs_dma_desc *pdesc);
-
-int mxs_dma_go(int chan);
-void mxs_dma_init(void);
-int mxs_dma_init_channel(int chan);
-int mxs_dma_release(int chan);
-
-#endif /* __DMA_H__ */
index 8f6749776004c8ddf5eaea9b003056fb23c7d4f4..dc21e34012a1289ac94f9f7a05bea4d9faf647a0 100644 (file)
 #ifndef __IMX_REGS_H__
 #define __IMX_REGS_H__
 
-#include <asm/arch/regs-apbh.h>
+#include <asm/imx-common/regs-apbh.h>
 #include <asm/arch/regs-base.h>
-#include <asm/arch/regs-bch.h>
+#include <asm/imx-common/regs-bch.h>
 #include <asm/arch/regs-digctl.h>
-#include <asm/arch/regs-gpmi.h>
+#include <asm/imx-common/regs-gpmi.h>
 #include <asm/arch/regs-i2c.h>
 #include <asm/arch/regs-lcdif.h>
 #include <asm/arch/regs-lradc.h>
diff --git a/arch/arm/include/asm/arch-mxs/regs-apbh.h b/arch/arm/include/asm/arch-mxs/regs-apbh.h
deleted file mode 100644 (file)
index fcef4b8..0000000
+++ /dev/null
@@ -1,587 +0,0 @@
-/*
- * Freescale i.MX28 APBH Register Definitions
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * 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
- *
- */
-
-#ifndef __REGS_APBH_H__
-#define __REGS_APBH_H__
-
-#include <asm/arch/regs-common.h>
-
-#ifndef        __ASSEMBLY__
-
-#if defined(CONFIG_MX23)
-struct mxs_apbh_regs {
-       mxs_reg_32(hw_apbh_ctrl0)
-       mxs_reg_32(hw_apbh_ctrl1)
-       mxs_reg_32(hw_apbh_ctrl2)
-       mxs_reg_32(hw_apbh_channel_ctrl)
-
-       union {
-       struct {
-               mxs_reg_32(hw_apbh_ch_curcmdar)
-               mxs_reg_32(hw_apbh_ch_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch_cmd)
-               mxs_reg_32(hw_apbh_ch_bar)
-               mxs_reg_32(hw_apbh_ch_sema)
-               mxs_reg_32(hw_apbh_ch_debug1)
-               mxs_reg_32(hw_apbh_ch_debug2)
-       } ch[8];
-       struct {
-               mxs_reg_32(hw_apbh_ch0_curcmdar)
-               mxs_reg_32(hw_apbh_ch0_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch0_cmd)
-               mxs_reg_32(hw_apbh_ch0_bar)
-               mxs_reg_32(hw_apbh_ch0_sema)
-               mxs_reg_32(hw_apbh_ch0_debug1)
-               mxs_reg_32(hw_apbh_ch0_debug2)
-               mxs_reg_32(hw_apbh_ch1_curcmdar)
-               mxs_reg_32(hw_apbh_ch1_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch1_cmd)
-               mxs_reg_32(hw_apbh_ch1_bar)
-               mxs_reg_32(hw_apbh_ch1_sema)
-               mxs_reg_32(hw_apbh_ch1_debug1)
-               mxs_reg_32(hw_apbh_ch1_debug2)
-               mxs_reg_32(hw_apbh_ch2_curcmdar)
-               mxs_reg_32(hw_apbh_ch2_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch2_cmd)
-               mxs_reg_32(hw_apbh_ch2_bar)
-               mxs_reg_32(hw_apbh_ch2_sema)
-               mxs_reg_32(hw_apbh_ch2_debug1)
-               mxs_reg_32(hw_apbh_ch2_debug2)
-               mxs_reg_32(hw_apbh_ch3_curcmdar)
-               mxs_reg_32(hw_apbh_ch3_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch3_cmd)
-               mxs_reg_32(hw_apbh_ch3_bar)
-               mxs_reg_32(hw_apbh_ch3_sema)
-               mxs_reg_32(hw_apbh_ch3_debug1)
-               mxs_reg_32(hw_apbh_ch3_debug2)
-               mxs_reg_32(hw_apbh_ch4_curcmdar)
-               mxs_reg_32(hw_apbh_ch4_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch4_cmd)
-               mxs_reg_32(hw_apbh_ch4_bar)
-               mxs_reg_32(hw_apbh_ch4_sema)
-               mxs_reg_32(hw_apbh_ch4_debug1)
-               mxs_reg_32(hw_apbh_ch4_debug2)
-               mxs_reg_32(hw_apbh_ch5_curcmdar)
-               mxs_reg_32(hw_apbh_ch5_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch5_cmd)
-               mxs_reg_32(hw_apbh_ch5_bar)
-               mxs_reg_32(hw_apbh_ch5_sema)
-               mxs_reg_32(hw_apbh_ch5_debug1)
-               mxs_reg_32(hw_apbh_ch5_debug2)
-               mxs_reg_32(hw_apbh_ch6_curcmdar)
-               mxs_reg_32(hw_apbh_ch6_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch6_cmd)
-               mxs_reg_32(hw_apbh_ch6_bar)
-               mxs_reg_32(hw_apbh_ch6_sema)
-               mxs_reg_32(hw_apbh_ch6_debug1)
-               mxs_reg_32(hw_apbh_ch6_debug2)
-               mxs_reg_32(hw_apbh_ch7_curcmdar)
-               mxs_reg_32(hw_apbh_ch7_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch7_cmd)
-               mxs_reg_32(hw_apbh_ch7_bar)
-               mxs_reg_32(hw_apbh_ch7_sema)
-               mxs_reg_32(hw_apbh_ch7_debug1)
-               mxs_reg_32(hw_apbh_ch7_debug2)
-       };
-       };
-       mxs_reg_32(hw_apbh_version)
-};
-
-#elif defined(CONFIG_MX28)
-struct mxs_apbh_regs {
-       mxs_reg_32(hw_apbh_ctrl0)
-       mxs_reg_32(hw_apbh_ctrl1)
-       mxs_reg_32(hw_apbh_ctrl2)
-       mxs_reg_32(hw_apbh_channel_ctrl)
-       mxs_reg_32(hw_apbh_devsel)
-       mxs_reg_32(hw_apbh_dma_burst_size)
-       mxs_reg_32(hw_apbh_debug)
-
-       uint32_t        reserved[36];
-
-       union {
-       struct {
-               mxs_reg_32(hw_apbh_ch_curcmdar)
-               mxs_reg_32(hw_apbh_ch_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch_cmd)
-               mxs_reg_32(hw_apbh_ch_bar)
-               mxs_reg_32(hw_apbh_ch_sema)
-               mxs_reg_32(hw_apbh_ch_debug1)
-               mxs_reg_32(hw_apbh_ch_debug2)
-       } ch[16];
-       struct {
-               mxs_reg_32(hw_apbh_ch0_curcmdar)
-               mxs_reg_32(hw_apbh_ch0_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch0_cmd)
-               mxs_reg_32(hw_apbh_ch0_bar)
-               mxs_reg_32(hw_apbh_ch0_sema)
-               mxs_reg_32(hw_apbh_ch0_debug1)
-               mxs_reg_32(hw_apbh_ch0_debug2)
-               mxs_reg_32(hw_apbh_ch1_curcmdar)
-               mxs_reg_32(hw_apbh_ch1_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch1_cmd)
-               mxs_reg_32(hw_apbh_ch1_bar)
-               mxs_reg_32(hw_apbh_ch1_sema)
-               mxs_reg_32(hw_apbh_ch1_debug1)
-               mxs_reg_32(hw_apbh_ch1_debug2)
-               mxs_reg_32(hw_apbh_ch2_curcmdar)
-               mxs_reg_32(hw_apbh_ch2_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch2_cmd)
-               mxs_reg_32(hw_apbh_ch2_bar)
-               mxs_reg_32(hw_apbh_ch2_sema)
-               mxs_reg_32(hw_apbh_ch2_debug1)
-               mxs_reg_32(hw_apbh_ch2_debug2)
-               mxs_reg_32(hw_apbh_ch3_curcmdar)
-               mxs_reg_32(hw_apbh_ch3_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch3_cmd)
-               mxs_reg_32(hw_apbh_ch3_bar)
-               mxs_reg_32(hw_apbh_ch3_sema)
-               mxs_reg_32(hw_apbh_ch3_debug1)
-               mxs_reg_32(hw_apbh_ch3_debug2)
-               mxs_reg_32(hw_apbh_ch4_curcmdar)
-               mxs_reg_32(hw_apbh_ch4_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch4_cmd)
-               mxs_reg_32(hw_apbh_ch4_bar)
-               mxs_reg_32(hw_apbh_ch4_sema)
-               mxs_reg_32(hw_apbh_ch4_debug1)
-               mxs_reg_32(hw_apbh_ch4_debug2)
-               mxs_reg_32(hw_apbh_ch5_curcmdar)
-               mxs_reg_32(hw_apbh_ch5_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch5_cmd)
-               mxs_reg_32(hw_apbh_ch5_bar)
-               mxs_reg_32(hw_apbh_ch5_sema)
-               mxs_reg_32(hw_apbh_ch5_debug1)
-               mxs_reg_32(hw_apbh_ch5_debug2)
-               mxs_reg_32(hw_apbh_ch6_curcmdar)
-               mxs_reg_32(hw_apbh_ch6_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch6_cmd)
-               mxs_reg_32(hw_apbh_ch6_bar)
-               mxs_reg_32(hw_apbh_ch6_sema)
-               mxs_reg_32(hw_apbh_ch6_debug1)
-               mxs_reg_32(hw_apbh_ch6_debug2)
-               mxs_reg_32(hw_apbh_ch7_curcmdar)
-               mxs_reg_32(hw_apbh_ch7_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch7_cmd)
-               mxs_reg_32(hw_apbh_ch7_bar)
-               mxs_reg_32(hw_apbh_ch7_sema)
-               mxs_reg_32(hw_apbh_ch7_debug1)
-               mxs_reg_32(hw_apbh_ch7_debug2)
-               mxs_reg_32(hw_apbh_ch8_curcmdar)
-               mxs_reg_32(hw_apbh_ch8_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch8_cmd)
-               mxs_reg_32(hw_apbh_ch8_bar)
-               mxs_reg_32(hw_apbh_ch8_sema)
-               mxs_reg_32(hw_apbh_ch8_debug1)
-               mxs_reg_32(hw_apbh_ch8_debug2)
-               mxs_reg_32(hw_apbh_ch9_curcmdar)
-               mxs_reg_32(hw_apbh_ch9_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch9_cmd)
-               mxs_reg_32(hw_apbh_ch9_bar)
-               mxs_reg_32(hw_apbh_ch9_sema)
-               mxs_reg_32(hw_apbh_ch9_debug1)
-               mxs_reg_32(hw_apbh_ch9_debug2)
-               mxs_reg_32(hw_apbh_ch10_curcmdar)
-               mxs_reg_32(hw_apbh_ch10_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch10_cmd)
-               mxs_reg_32(hw_apbh_ch10_bar)
-               mxs_reg_32(hw_apbh_ch10_sema)
-               mxs_reg_32(hw_apbh_ch10_debug1)
-               mxs_reg_32(hw_apbh_ch10_debug2)
-               mxs_reg_32(hw_apbh_ch11_curcmdar)
-               mxs_reg_32(hw_apbh_ch11_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch11_cmd)
-               mxs_reg_32(hw_apbh_ch11_bar)
-               mxs_reg_32(hw_apbh_ch11_sema)
-               mxs_reg_32(hw_apbh_ch11_debug1)
-               mxs_reg_32(hw_apbh_ch11_debug2)
-               mxs_reg_32(hw_apbh_ch12_curcmdar)
-               mxs_reg_32(hw_apbh_ch12_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch12_cmd)
-               mxs_reg_32(hw_apbh_ch12_bar)
-               mxs_reg_32(hw_apbh_ch12_sema)
-               mxs_reg_32(hw_apbh_ch12_debug1)
-               mxs_reg_32(hw_apbh_ch12_debug2)
-               mxs_reg_32(hw_apbh_ch13_curcmdar)
-               mxs_reg_32(hw_apbh_ch13_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch13_cmd)
-               mxs_reg_32(hw_apbh_ch13_bar)
-               mxs_reg_32(hw_apbh_ch13_sema)
-               mxs_reg_32(hw_apbh_ch13_debug1)
-               mxs_reg_32(hw_apbh_ch13_debug2)
-               mxs_reg_32(hw_apbh_ch14_curcmdar)
-               mxs_reg_32(hw_apbh_ch14_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch14_cmd)
-               mxs_reg_32(hw_apbh_ch14_bar)
-               mxs_reg_32(hw_apbh_ch14_sema)
-               mxs_reg_32(hw_apbh_ch14_debug1)
-               mxs_reg_32(hw_apbh_ch14_debug2)
-               mxs_reg_32(hw_apbh_ch15_curcmdar)
-               mxs_reg_32(hw_apbh_ch15_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch15_cmd)
-               mxs_reg_32(hw_apbh_ch15_bar)
-               mxs_reg_32(hw_apbh_ch15_sema)
-               mxs_reg_32(hw_apbh_ch15_debug1)
-               mxs_reg_32(hw_apbh_ch15_debug2)
-       };
-       };
-       mxs_reg_32(hw_apbh_version)
-};
-#endif
-
-#endif
-
-#define        APBH_CTRL0_SFTRST                               (1 << 31)
-#define        APBH_CTRL0_CLKGATE                              (1 << 30)
-#define        APBH_CTRL0_AHB_BURST8_EN                        (1 << 29)
-#define        APBH_CTRL0_APB_BURST_EN                         (1 << 28)
-#if defined(CONFIG_MX23)
-#define        APBH_CTRL0_RSVD0_MASK                           (0xf << 24)
-#define        APBH_CTRL0_RSVD0_OFFSET                         24
-#define        APBH_CTRL0_RESET_CHANNEL_MASK                   (0xff << 16)
-#define        APBH_CTRL0_RESET_CHANNEL_OFFSET                 16
-#define        APBH_CTRL0_CLKGATE_CHANNEL_MASK                 (0xff << 8)
-#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               8
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP0                 0x02
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP1                 0x04
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x10
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x20
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x40
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x80
-#elif defined(CONFIG_MX28)
-#define        APBH_CTRL0_RSVD0_MASK                           (0xfff << 16)
-#define        APBH_CTRL0_RSVD0_OFFSET                         16
-#define        APBH_CTRL0_CLKGATE_CHANNEL_MASK                 0xffff
-#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               0
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP0                 0x0001
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP1                 0x0002
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP2                 0x0004
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP3                 0x0008
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x0010
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x0020
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x0040
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x0080
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND4                0x0100
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND5                0x0200
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND6                0x0400
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND7                0x0800
-#define        APBH_CTRL0_CLKGATE_CHANNEL_HSADC                0x1000
-#define        APBH_CTRL0_CLKGATE_CHANNEL_LCDIF                0x2000
-#endif
-
-#define        APBH_CTRL1_CH15_CMDCMPLT_IRQ_EN                 (1 << 31)
-#define        APBH_CTRL1_CH14_CMDCMPLT_IRQ_EN                 (1 << 30)
-#define        APBH_CTRL1_CH13_CMDCMPLT_IRQ_EN                 (1 << 29)
-#define        APBH_CTRL1_CH12_CMDCMPLT_IRQ_EN                 (1 << 28)
-#define        APBH_CTRL1_CH11_CMDCMPLT_IRQ_EN                 (1 << 27)
-#define        APBH_CTRL1_CH10_CMDCMPLT_IRQ_EN                 (1 << 26)
-#define        APBH_CTRL1_CH9_CMDCMPLT_IRQ_EN                  (1 << 25)
-#define        APBH_CTRL1_CH8_CMDCMPLT_IRQ_EN                  (1 << 24)
-#define        APBH_CTRL1_CH7_CMDCMPLT_IRQ_EN                  (1 << 23)
-#define        APBH_CTRL1_CH6_CMDCMPLT_IRQ_EN                  (1 << 22)
-#define        APBH_CTRL1_CH5_CMDCMPLT_IRQ_EN                  (1 << 21)
-#define        APBH_CTRL1_CH4_CMDCMPLT_IRQ_EN                  (1 << 20)
-#define        APBH_CTRL1_CH3_CMDCMPLT_IRQ_EN                  (1 << 19)
-#define        APBH_CTRL1_CH2_CMDCMPLT_IRQ_EN                  (1 << 18)
-#define        APBH_CTRL1_CH1_CMDCMPLT_IRQ_EN                  (1 << 17)
-#define        APBH_CTRL1_CH0_CMDCMPLT_IRQ_EN                  (1 << 16)
-#define        APBH_CTRL1_CH_CMDCMPLT_IRQ_EN_OFFSET            16
-#define        APBH_CTRL1_CH_CMDCMPLT_IRQ_EN_MASK              (0xffff << 16)
-#define        APBH_CTRL1_CH15_CMDCMPLT_IRQ                    (1 << 15)
-#define        APBH_CTRL1_CH14_CMDCMPLT_IRQ                    (1 << 14)
-#define        APBH_CTRL1_CH13_CMDCMPLT_IRQ                    (1 << 13)
-#define        APBH_CTRL1_CH12_CMDCMPLT_IRQ                    (1 << 12)
-#define        APBH_CTRL1_CH11_CMDCMPLT_IRQ                    (1 << 11)
-#define        APBH_CTRL1_CH10_CMDCMPLT_IRQ                    (1 << 10)
-#define        APBH_CTRL1_CH9_CMDCMPLT_IRQ                     (1 << 9)
-#define        APBH_CTRL1_CH8_CMDCMPLT_IRQ                     (1 << 8)
-#define        APBH_CTRL1_CH7_CMDCMPLT_IRQ                     (1 << 7)
-#define        APBH_CTRL1_CH6_CMDCMPLT_IRQ                     (1 << 6)
-#define        APBH_CTRL1_CH5_CMDCMPLT_IRQ                     (1 << 5)
-#define        APBH_CTRL1_CH4_CMDCMPLT_IRQ                     (1 << 4)
-#define        APBH_CTRL1_CH3_CMDCMPLT_IRQ                     (1 << 3)
-#define        APBH_CTRL1_CH2_CMDCMPLT_IRQ                     (1 << 2)
-#define        APBH_CTRL1_CH1_CMDCMPLT_IRQ                     (1 << 1)
-#define        APBH_CTRL1_CH0_CMDCMPLT_IRQ                     (1 << 0)
-
-#define        APBH_CTRL2_CH15_ERROR_STATUS                    (1 << 31)
-#define        APBH_CTRL2_CH14_ERROR_STATUS                    (1 << 30)
-#define        APBH_CTRL2_CH13_ERROR_STATUS                    (1 << 29)
-#define        APBH_CTRL2_CH12_ERROR_STATUS                    (1 << 28)
-#define        APBH_CTRL2_CH11_ERROR_STATUS                    (1 << 27)
-#define        APBH_CTRL2_CH10_ERROR_STATUS                    (1 << 26)
-#define        APBH_CTRL2_CH9_ERROR_STATUS                     (1 << 25)
-#define        APBH_CTRL2_CH8_ERROR_STATUS                     (1 << 24)
-#define        APBH_CTRL2_CH7_ERROR_STATUS                     (1 << 23)
-#define        APBH_CTRL2_CH6_ERROR_STATUS                     (1 << 22)
-#define        APBH_CTRL2_CH5_ERROR_STATUS                     (1 << 21)
-#define        APBH_CTRL2_CH4_ERROR_STATUS                     (1 << 20)
-#define        APBH_CTRL2_CH3_ERROR_STATUS                     (1 << 19)
-#define        APBH_CTRL2_CH2_ERROR_STATUS                     (1 << 18)
-#define        APBH_CTRL2_CH1_ERROR_STATUS                     (1 << 17)
-#define        APBH_CTRL2_CH0_ERROR_STATUS                     (1 << 16)
-#define        APBH_CTRL2_CH15_ERROR_IRQ                       (1 << 15)
-#define        APBH_CTRL2_CH14_ERROR_IRQ                       (1 << 14)
-#define        APBH_CTRL2_CH13_ERROR_IRQ                       (1 << 13)
-#define        APBH_CTRL2_CH12_ERROR_IRQ                       (1 << 12)
-#define        APBH_CTRL2_CH11_ERROR_IRQ                       (1 << 11)
-#define        APBH_CTRL2_CH10_ERROR_IRQ                       (1 << 10)
-#define        APBH_CTRL2_CH9_ERROR_IRQ                        (1 << 9)
-#define        APBH_CTRL2_CH8_ERROR_IRQ                        (1 << 8)
-#define        APBH_CTRL2_CH7_ERROR_IRQ                        (1 << 7)
-#define        APBH_CTRL2_CH6_ERROR_IRQ                        (1 << 6)
-#define        APBH_CTRL2_CH5_ERROR_IRQ                        (1 << 5)
-#define        APBH_CTRL2_CH4_ERROR_IRQ                        (1 << 4)
-#define        APBH_CTRL2_CH3_ERROR_IRQ                        (1 << 3)
-#define        APBH_CTRL2_CH2_ERROR_IRQ                        (1 << 2)
-#define        APBH_CTRL2_CH1_ERROR_IRQ                        (1 << 1)
-#define        APBH_CTRL2_CH0_ERROR_IRQ                        (1 << 0)
-
-#if defined(CONFIG_MX28)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_MASK            (0xffff << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_OFFSET          16
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP0            (0x0001 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP1            (0x0002 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP2            (0x0004 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP3            (0x0008 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND0           (0x0010 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND1           (0x0020 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND2           (0x0040 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND3           (0x0080 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND4           (0x0100 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND5           (0x0200 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND6           (0x0400 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND7           (0x0800 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_HSADC           (0x1000 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_LCDIF           (0x2000 << 16)
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_MASK           0xffff
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_OFFSET         0
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP0           0x0001
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP1           0x0002
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP2           0x0004
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP3           0x0008
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND0          0x0010
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND1          0x0020
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND2          0x0040
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND3          0x0080
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND4          0x0100
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND5          0x0200
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND6          0x0400
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND7          0x0800
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_HSADC          0x1000
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_LCDIF          0x2000
-#endif
-
-#if defined(CONFIG_MX23)
-#define        APBH_DEVSEL_CH7_MASK                            (0xf << 28)
-#define        APBH_DEVSEL_CH7_OFFSET                          28
-#define        APBH_DEVSEL_CH6_MASK                            (0xf << 24)
-#define        APBH_DEVSEL_CH6_OFFSET                          24
-#define        APBH_DEVSEL_CH5_MASK                            (0xf << 20)
-#define        APBH_DEVSEL_CH5_OFFSET                          20
-#define        APBH_DEVSEL_CH4_MASK                            (0xf << 16)
-#define        APBH_DEVSEL_CH4_OFFSET                          16
-#define        APBH_DEVSEL_CH3_MASK                            (0xf << 12)
-#define        APBH_DEVSEL_CH3_OFFSET                          12
-#define        APBH_DEVSEL_CH2_MASK                            (0xf << 8)
-#define        APBH_DEVSEL_CH2_OFFSET                          8
-#define        APBH_DEVSEL_CH1_MASK                            (0xf << 4)
-#define        APBH_DEVSEL_CH1_OFFSET                          4
-#define        APBH_DEVSEL_CH0_MASK                            (0xf << 0)
-#define        APBH_DEVSEL_CH0_OFFSET                          0
-#elif defined(CONFIG_MX28)
-#define        APBH_DEVSEL_CH15_MASK                           (0x3 << 30)
-#define        APBH_DEVSEL_CH15_OFFSET                         30
-#define        APBH_DEVSEL_CH14_MASK                           (0x3 << 28)
-#define        APBH_DEVSEL_CH14_OFFSET                         28
-#define        APBH_DEVSEL_CH13_MASK                           (0x3 << 26)
-#define        APBH_DEVSEL_CH13_OFFSET                         26
-#define        APBH_DEVSEL_CH12_MASK                           (0x3 << 24)
-#define        APBH_DEVSEL_CH12_OFFSET                         24
-#define        APBH_DEVSEL_CH11_MASK                           (0x3 << 22)
-#define        APBH_DEVSEL_CH11_OFFSET                         22
-#define        APBH_DEVSEL_CH10_MASK                           (0x3 << 20)
-#define        APBH_DEVSEL_CH10_OFFSET                         20
-#define        APBH_DEVSEL_CH9_MASK                            (0x3 << 18)
-#define        APBH_DEVSEL_CH9_OFFSET                          18
-#define        APBH_DEVSEL_CH8_MASK                            (0x3 << 16)
-#define        APBH_DEVSEL_CH8_OFFSET                          16
-#define        APBH_DEVSEL_CH7_MASK                            (0x3 << 14)
-#define        APBH_DEVSEL_CH7_OFFSET                          14
-#define        APBH_DEVSEL_CH6_MASK                            (0x3 << 12)
-#define        APBH_DEVSEL_CH6_OFFSET                          12
-#define        APBH_DEVSEL_CH5_MASK                            (0x3 << 10)
-#define        APBH_DEVSEL_CH5_OFFSET                          10
-#define        APBH_DEVSEL_CH4_MASK                            (0x3 << 8)
-#define        APBH_DEVSEL_CH4_OFFSET                          8
-#define        APBH_DEVSEL_CH3_MASK                            (0x3 << 6)
-#define        APBH_DEVSEL_CH3_OFFSET                          6
-#define        APBH_DEVSEL_CH2_MASK                            (0x3 << 4)
-#define        APBH_DEVSEL_CH2_OFFSET                          4
-#define        APBH_DEVSEL_CH1_MASK                            (0x3 << 2)
-#define        APBH_DEVSEL_CH1_OFFSET                          2
-#define        APBH_DEVSEL_CH0_MASK                            (0x3 << 0)
-#define        APBH_DEVSEL_CH0_OFFSET                          0
-#endif
-
-#if defined(CONFIG_MX28)
-#define        APBH_DMA_BURST_SIZE_CH15_MASK                   (0x3 << 30)
-#define        APBH_DMA_BURST_SIZE_CH15_OFFSET                 30
-#define        APBH_DMA_BURST_SIZE_CH14_MASK                   (0x3 << 28)
-#define        APBH_DMA_BURST_SIZE_CH14_OFFSET                 28
-#define        APBH_DMA_BURST_SIZE_CH13_MASK                   (0x3 << 26)
-#define        APBH_DMA_BURST_SIZE_CH13_OFFSET                 26
-#define        APBH_DMA_BURST_SIZE_CH12_MASK                   (0x3 << 24)
-#define        APBH_DMA_BURST_SIZE_CH12_OFFSET                 24
-#define        APBH_DMA_BURST_SIZE_CH11_MASK                   (0x3 << 22)
-#define        APBH_DMA_BURST_SIZE_CH11_OFFSET                 22
-#define        APBH_DMA_BURST_SIZE_CH10_MASK                   (0x3 << 20)
-#define        APBH_DMA_BURST_SIZE_CH10_OFFSET                 20
-#define        APBH_DMA_BURST_SIZE_CH9_MASK                    (0x3 << 18)
-#define        APBH_DMA_BURST_SIZE_CH9_OFFSET                  18
-#define        APBH_DMA_BURST_SIZE_CH8_MASK                    (0x3 << 16)
-#define        APBH_DMA_BURST_SIZE_CH8_OFFSET                  16
-#define        APBH_DMA_BURST_SIZE_CH8_BURST0                  (0x0 << 16)
-#define        APBH_DMA_BURST_SIZE_CH8_BURST4                  (0x1 << 16)
-#define        APBH_DMA_BURST_SIZE_CH8_BURST8                  (0x2 << 16)
-#define        APBH_DMA_BURST_SIZE_CH7_MASK                    (0x3 << 14)
-#define        APBH_DMA_BURST_SIZE_CH7_OFFSET                  14
-#define        APBH_DMA_BURST_SIZE_CH6_MASK                    (0x3 << 12)
-#define        APBH_DMA_BURST_SIZE_CH6_OFFSET                  12
-#define        APBH_DMA_BURST_SIZE_CH5_MASK                    (0x3 << 10)
-#define        APBH_DMA_BURST_SIZE_CH5_OFFSET                  10
-#define        APBH_DMA_BURST_SIZE_CH4_MASK                    (0x3 << 8)
-#define        APBH_DMA_BURST_SIZE_CH4_OFFSET                  8
-#define        APBH_DMA_BURST_SIZE_CH3_MASK                    (0x3 << 6)
-#define        APBH_DMA_BURST_SIZE_CH3_OFFSET                  6
-#define        APBH_DMA_BURST_SIZE_CH3_BURST0                  (0x0 << 6)
-#define        APBH_DMA_BURST_SIZE_CH3_BURST4                  (0x1 << 6)
-#define        APBH_DMA_BURST_SIZE_CH3_BURST8                  (0x2 << 6)
-
-#define        APBH_DMA_BURST_SIZE_CH2_MASK                    (0x3 << 4)
-#define        APBH_DMA_BURST_SIZE_CH2_OFFSET                  4
-#define        APBH_DMA_BURST_SIZE_CH2_BURST0                  (0x0 << 4)
-#define        APBH_DMA_BURST_SIZE_CH2_BURST4                  (0x1 << 4)
-#define        APBH_DMA_BURST_SIZE_CH2_BURST8                  (0x2 << 4)
-#define        APBH_DMA_BURST_SIZE_CH1_MASK                    (0x3 << 2)
-#define        APBH_DMA_BURST_SIZE_CH1_OFFSET                  2
-#define        APBH_DMA_BURST_SIZE_CH1_BURST0                  (0x0 << 2)
-#define        APBH_DMA_BURST_SIZE_CH1_BURST4                  (0x1 << 2)
-#define        APBH_DMA_BURST_SIZE_CH1_BURST8                  (0x2 << 2)
-
-#define        APBH_DMA_BURST_SIZE_CH0_MASK                    0x3
-#define        APBH_DMA_BURST_SIZE_CH0_OFFSET                  0
-#define        APBH_DMA_BURST_SIZE_CH0_BURST0                  0x0
-#define        APBH_DMA_BURST_SIZE_CH0_BURST4                  0x1
-#define        APBH_DMA_BURST_SIZE_CH0_BURST8                  0x2
-
-#define        APBH_DEBUG_GPMI_ONE_FIFO                        (1 << 0)
-#endif
-
-#define        APBH_CHn_CURCMDAR_CMD_ADDR_MASK                 0xffffffff
-#define        APBH_CHn_CURCMDAR_CMD_ADDR_OFFSET               0
-
-#define        APBH_CHn_NXTCMDAR_CMD_ADDR_MASK                 0xffffffff
-#define        APBH_CHn_NXTCMDAR_CMD_ADDR_OFFSET               0
-
-#define        APBH_CHn_CMD_XFER_COUNT_MASK                    (0xffff << 16)
-#define        APBH_CHn_CMD_XFER_COUNT_OFFSET                  16
-#define        APBH_CHn_CMD_CMDWORDS_MASK                      (0xf << 12)
-#define        APBH_CHn_CMD_CMDWORDS_OFFSET                    12
-#define        APBH_CHn_CMD_HALTONTERMINATE                    (1 << 8)
-#define        APBH_CHn_CMD_WAIT4ENDCMD                        (1 << 7)
-#define        APBH_CHn_CMD_SEMAPHORE                          (1 << 6)
-#define        APBH_CHn_CMD_NANDWAIT4READY                     (1 << 5)
-#define        APBH_CHn_CMD_NANDLOCK                           (1 << 4)
-#define        APBH_CHn_CMD_IRQONCMPLT                         (1 << 3)
-#define        APBH_CHn_CMD_CHAIN                              (1 << 2)
-#define        APBH_CHn_CMD_COMMAND_MASK                       0x3
-#define        APBH_CHn_CMD_COMMAND_OFFSET                     0
-#define        APBH_CHn_CMD_COMMAND_NO_DMA_XFER                0x0
-#define        APBH_CHn_CMD_COMMAND_DMA_WRITE                  0x1
-#define        APBH_CHn_CMD_COMMAND_DMA_READ                   0x2
-#define        APBH_CHn_CMD_COMMAND_DMA_SENSE                  0x3
-
-#define        APBH_CHn_BAR_ADDRESS_MASK                       0xffffffff
-#define        APBH_CHn_BAR_ADDRESS_OFFSET                     0
-
-#define        APBH_CHn_SEMA_RSVD2_MASK                        (0xff << 24)
-#define        APBH_CHn_SEMA_RSVD2_OFFSET                      24
-#define        APBH_CHn_SEMA_PHORE_MASK                        (0xff << 16)
-#define        APBH_CHn_SEMA_PHORE_OFFSET                      16
-#define        APBH_CHn_SEMA_RSVD1_MASK                        (0xff << 8)
-#define        APBH_CHn_SEMA_RSVD1_OFFSET                      8
-#define        APBH_CHn_SEMA_INCREMENT_SEMA_MASK               (0xff << 0)
-#define        APBH_CHn_SEMA_INCREMENT_SEMA_OFFSET             0
-
-#define        APBH_CHn_DEBUG1_REQ                             (1 << 31)
-#define        APBH_CHn_DEBUG1_BURST                           (1 << 30)
-#define        APBH_CHn_DEBUG1_KICK                            (1 << 29)
-#define        APBH_CHn_DEBUG1_END                             (1 << 28)
-#define        APBH_CHn_DEBUG1_SENSE                           (1 << 27)
-#define        APBH_CHn_DEBUG1_READY                           (1 << 26)
-#define        APBH_CHn_DEBUG1_LOCK                            (1 << 25)
-#define        APBH_CHn_DEBUG1_NEXTCMDADDRVALID                (1 << 24)
-#define        APBH_CHn_DEBUG1_RD_FIFO_EMPTY                   (1 << 23)
-#define        APBH_CHn_DEBUG1_RD_FIFO_FULL                    (1 << 22)
-#define        APBH_CHn_DEBUG1_WR_FIFO_EMPTY                   (1 << 21)
-#define        APBH_CHn_DEBUG1_WR_FIFO_FULL                    (1 << 20)
-#define        APBH_CHn_DEBUG1_RSVD1_MASK                      (0x7fff << 5)
-#define        APBH_CHn_DEBUG1_RSVD1_OFFSET                    5
-#define        APBH_CHn_DEBUG1_STATEMACHINE_MASK               0x1f
-#define        APBH_CHn_DEBUG1_STATEMACHINE_OFFSET             0
-#define        APBH_CHn_DEBUG1_STATEMACHINE_IDLE               0x00
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD1           0x01
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD3           0x02
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD2           0x03
-#define        APBH_CHn_DEBUG1_STATEMACHINE_XFER_DECODE        0x04
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_WAIT           0x05
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD4           0x06
-#define        APBH_CHn_DEBUG1_STATEMACHINE_PIO_REQ            0x07
-#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_FLUSH         0x08
-#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_WAIT          0x09
-#define        APBH_CHn_DEBUG1_STATEMACHINE_WRITE              0x0c
-#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_REQ           0x0d
-#define        APBH_CHn_DEBUG1_STATEMACHINE_CHECK_CHAIN        0x0e
-#define        APBH_CHn_DEBUG1_STATEMACHINE_XFER_COMPLETE      0x0f
-#define        APBH_CHn_DEBUG1_STATEMACHINE_TERMINATE          0x14
-#define        APBH_CHn_DEBUG1_STATEMACHINE_WAIT_END           0x15
-#define        APBH_CHn_DEBUG1_STATEMACHINE_WRITE_WAIT         0x1c
-#define        APBH_CHn_DEBUG1_STATEMACHINE_HALT_AFTER_TERM    0x1d
-#define        APBH_CHn_DEBUG1_STATEMACHINE_CHECK_WAIT         0x1e
-#define        APBH_CHn_DEBUG1_STATEMACHINE_WAIT_READY         0x1f
-
-#define        APBH_CHn_DEBUG2_APB_BYTES_MASK                  (0xffff << 16)
-#define        APBH_CHn_DEBUG2_APB_BYTES_OFFSET                16
-#define        APBH_CHn_DEBUG2_AHB_BYTES_MASK                  0xffff
-#define        APBH_CHn_DEBUG2_AHB_BYTES_OFFSET                0
-
-#define        APBH_VERSION_MAJOR_MASK                         (0xff << 24)
-#define        APBH_VERSION_MAJOR_OFFSET                       24
-#define        APBH_VERSION_MINOR_MASK                         (0xff << 16)
-#define        APBH_VERSION_MINOR_OFFSET                       16
-#define        APBH_VERSION_STEP_MASK                          0xffff
-#define        APBH_VERSION_STEP_OFFSET                        0
-
-#endif /* __REGS_APBH_H__ */
diff --git a/arch/arm/include/asm/arch-mxs/regs-bch.h b/arch/arm/include/asm/arch-mxs/regs-bch.h
deleted file mode 100644 (file)
index 40baa4d..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Freescale i.MX28 BCH Register Definitions
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * 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
- *
- */
-
-#ifndef __MX28_REGS_BCH_H__
-#define __MX28_REGS_BCH_H__
-
-#include <asm/arch/regs-common.h>
-
-#ifndef        __ASSEMBLY__
-struct mxs_bch_regs {
-       mxs_reg_32(hw_bch_ctrl)
-       mxs_reg_32(hw_bch_status0)
-       mxs_reg_32(hw_bch_mode)
-       mxs_reg_32(hw_bch_encodeptr)
-       mxs_reg_32(hw_bch_dataptr)
-       mxs_reg_32(hw_bch_metaptr)
-
-       uint32_t        reserved[4];
-
-       mxs_reg_32(hw_bch_layoutselect)
-       mxs_reg_32(hw_bch_flash0layout0)
-       mxs_reg_32(hw_bch_flash0layout1)
-       mxs_reg_32(hw_bch_flash1layout0)
-       mxs_reg_32(hw_bch_flash1layout1)
-       mxs_reg_32(hw_bch_flash2layout0)
-       mxs_reg_32(hw_bch_flash2layout1)
-       mxs_reg_32(hw_bch_flash3layout0)
-       mxs_reg_32(hw_bch_flash3layout1)
-       mxs_reg_32(hw_bch_dbgkesread)
-       mxs_reg_32(hw_bch_dbgcsferead)
-       mxs_reg_32(hw_bch_dbgsyndegread)
-       mxs_reg_32(hw_bch_dbgahbmread)
-       mxs_reg_32(hw_bch_blockname)
-       mxs_reg_32(hw_bch_version)
-};
-#endif
-
-#define        BCH_CTRL_SFTRST                                 (1 << 31)
-#define        BCH_CTRL_CLKGATE                                (1 << 30)
-#define        BCH_CTRL_DEBUGSYNDROME                          (1 << 22)
-#define        BCH_CTRL_M2M_LAYOUT_MASK                        (0x3 << 18)
-#define        BCH_CTRL_M2M_LAYOUT_OFFSET                      18
-#define        BCH_CTRL_M2M_ENCODE                             (1 << 17)
-#define        BCH_CTRL_M2M_ENABLE                             (1 << 16)
-#define        BCH_CTRL_DEBUG_STALL_IRQ_EN                     (1 << 10)
-#define        BCH_CTRL_COMPLETE_IRQ_EN                        (1 << 8)
-#define        BCH_CTRL_BM_ERROR_IRQ                           (1 << 3)
-#define        BCH_CTRL_DEBUG_STALL_IRQ                        (1 << 2)
-#define        BCH_CTRL_COMPLETE_IRQ                           (1 << 0)
-
-#define        BCH_STATUS0_HANDLE_MASK                         (0xfff << 20)
-#define        BCH_STATUS0_HANDLE_OFFSET                       20
-#define        BCH_STATUS0_COMPLETED_CE_MASK                   (0xf << 16)
-#define        BCH_STATUS0_COMPLETED_CE_OFFSET                 16
-#define        BCH_STATUS0_STATUS_BLK0_MASK                    (0xff << 8)
-#define        BCH_STATUS0_STATUS_BLK0_OFFSET                  8
-#define        BCH_STATUS0_STATUS_BLK0_ZERO                    (0x00 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERROR1                  (0x01 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERROR2                  (0x02 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERROR3                  (0x03 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERROR4                  (0x04 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_UNCORRECTABLE           (0xfe << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERASED                  (0xff << 8)
-#define        BCH_STATUS0_ALLONES                             (1 << 4)
-#define        BCH_STATUS0_CORRECTED                           (1 << 3)
-#define        BCH_STATUS0_UNCORRECTABLE                       (1 << 2)
-
-#define        BCH_MODE_ERASE_THRESHOLD_MASK                   0xff
-#define        BCH_MODE_ERASE_THRESHOLD_OFFSET                 0
-
-#define        BCH_ENCODEPTR_ADDR_MASK                         0xffffffff
-#define        BCH_ENCODEPTR_ADDR_OFFSET                       0
-
-#define        BCH_DATAPTR_ADDR_MASK                           0xffffffff
-#define        BCH_DATAPTR_ADDR_OFFSET                         0
-
-#define        BCH_METAPTR_ADDR_MASK                           0xffffffff
-#define        BCH_METAPTR_ADDR_OFFSET                         0
-
-#define        BCH_LAYOUTSELECT_CS15_SELECT_MASK               (0x3 << 30)
-#define        BCH_LAYOUTSELECT_CS15_SELECT_OFFSET             30
-#define        BCH_LAYOUTSELECT_CS14_SELECT_MASK               (0x3 << 28)
-#define        BCH_LAYOUTSELECT_CS14_SELECT_OFFSET             28
-#define        BCH_LAYOUTSELECT_CS13_SELECT_MASK               (0x3 << 26)
-#define        BCH_LAYOUTSELECT_CS13_SELECT_OFFSET             26
-#define        BCH_LAYOUTSELECT_CS12_SELECT_MASK               (0x3 << 24)
-#define        BCH_LAYOUTSELECT_CS12_SELECT_OFFSET             24
-#define        BCH_LAYOUTSELECT_CS11_SELECT_MASK               (0x3 << 22)
-#define        BCH_LAYOUTSELECT_CS11_SELECT_OFFSET             22
-#define        BCH_LAYOUTSELECT_CS10_SELECT_MASK               (0x3 << 20)
-#define        BCH_LAYOUTSELECT_CS10_SELECT_OFFSET             20
-#define        BCH_LAYOUTSELECT_CS9_SELECT_MASK                (0x3 << 18)
-#define        BCH_LAYOUTSELECT_CS9_SELECT_OFFSET              18
-#define        BCH_LAYOUTSELECT_CS8_SELECT_MASK                (0x3 << 16)
-#define        BCH_LAYOUTSELECT_CS8_SELECT_OFFSET              16
-#define        BCH_LAYOUTSELECT_CS7_SELECT_MASK                (0x3 << 14)
-#define        BCH_LAYOUTSELECT_CS7_SELECT_OFFSET              14
-#define        BCH_LAYOUTSELECT_CS6_SELECT_MASK                (0x3 << 12)
-#define        BCH_LAYOUTSELECT_CS6_SELECT_OFFSET              12
-#define        BCH_LAYOUTSELECT_CS5_SELECT_MASK                (0x3 << 10)
-#define        BCH_LAYOUTSELECT_CS5_SELECT_OFFSET              10
-#define        BCH_LAYOUTSELECT_CS4_SELECT_MASK                (0x3 << 8)
-#define        BCH_LAYOUTSELECT_CS4_SELECT_OFFSET              8
-#define        BCH_LAYOUTSELECT_CS3_SELECT_MASK                (0x3 << 6)
-#define        BCH_LAYOUTSELECT_CS3_SELECT_OFFSET              6
-#define        BCH_LAYOUTSELECT_CS2_SELECT_MASK                (0x3 << 4)
-#define        BCH_LAYOUTSELECT_CS2_SELECT_OFFSET              4
-#define        BCH_LAYOUTSELECT_CS1_SELECT_MASK                (0x3 << 2)
-#define        BCH_LAYOUTSELECT_CS1_SELECT_OFFSET              2
-#define        BCH_LAYOUTSELECT_CS0_SELECT_MASK                (0x3 << 0)
-#define        BCH_LAYOUTSELECT_CS0_SELECT_OFFSET              0
-
-#define        BCH_FLASHLAYOUT0_NBLOCKS_MASK                   (0xff << 24)
-#define        BCH_FLASHLAYOUT0_NBLOCKS_OFFSET                 24
-#define        BCH_FLASHLAYOUT0_META_SIZE_MASK                 (0xff << 16)
-#define        BCH_FLASHLAYOUT0_META_SIZE_OFFSET               16
-#define        BCH_FLASHLAYOUT0_ECC0_MASK                      (0xf << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_OFFSET                    12
-#define        BCH_FLASHLAYOUT0_ECC0_NONE                      (0x0 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC2                      (0x1 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC4                      (0x2 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC6                      (0x3 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC8                      (0x4 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC10                     (0x5 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC12                     (0x6 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC14                     (0x7 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC16                     (0x8 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC18                     (0x9 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC20                     (0xa << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC22                     (0xb << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC24                     (0xc << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC26                     (0xd << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC28                     (0xe << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC30                     (0xf << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC32                     (0x10 << 12)
-#define        BCH_FLASHLAYOUT0_GF13_0_GF14_1                  (1 << 10)
-#define        BCH_FLASHLAYOUT0_DATA0_SIZE_MASK                0xfff
-#define        BCH_FLASHLAYOUT0_DATA0_SIZE_OFFSET              0
-
-#define        BCH_FLASHLAYOUT1_PAGE_SIZE_MASK                 (0xffff << 16)
-#define        BCH_FLASHLAYOUT1_PAGE_SIZE_OFFSET               16
-#define        BCH_FLASHLAYOUT1_ECCN_MASK                      (0xf << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_OFFSET                    12
-#define        BCH_FLASHLAYOUT1_ECCN_NONE                      (0x0 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC2                      (0x1 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC4                      (0x2 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC6                      (0x3 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC8                      (0x4 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC10                     (0x5 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC12                     (0x6 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC14                     (0x7 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC16                     (0x8 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC18                     (0x9 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC20                     (0xa << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC22                     (0xb << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC24                     (0xc << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC26                     (0xd << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC28                     (0xe << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC30                     (0xf << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC32                     (0x10 << 12)
-#define        BCH_FLASHLAYOUT1_GF13_0_GF14_1                  (1 << 10)
-#define        BCH_FLASHLAYOUT1_DATAN_SIZE_MASK                0xfff
-#define        BCH_FLASHLAYOUT1_DATAN_SIZE_OFFSET              0
-
-#define        BCH_DEBUG0_RSVD1_MASK                           (0x1f << 27)
-#define        BCH_DEBUG0_RSVD1_OFFSET                         27
-#define        BCH_DEBUG0_ROM_BIST_ENABLE                      (1 << 26)
-#define        BCH_DEBUG0_ROM_BIST_COMPLETE                    (1 << 25)
-#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_MASK       (0x1ff << 16)
-#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_OFFSET     16
-#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_NORMAL     (0x0 << 16)
-#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_TEST_MODE  (0x1 << 16)
-#define        BCH_DEBUG0_KES_DEBUG_SHIFT_SYND                 (1 << 15)
-#define        BCH_DEBUG0_KES_DEBUG_PAYLOAD_FLAG               (1 << 14)
-#define        BCH_DEBUG0_KES_DEBUG_MODE4K                     (1 << 13)
-#define        BCH_DEBUG0_KES_DEBUG_KICK                       (1 << 12)
-#define        BCH_DEBUG0_KES_STANDALONE                       (1 << 11)
-#define        BCH_DEBUG0_KES_DEBUG_STEP                       (1 << 10)
-#define        BCH_DEBUG0_KES_DEBUG_STALL                      (1 << 9)
-#define        BCH_DEBUG0_BM_KES_TEST_BYPASS                   (1 << 8)
-#define        BCH_DEBUG0_RSVD0_MASK                           (0x3 << 6)
-#define        BCH_DEBUG0_RSVD0_OFFSET                         6
-#define        BCH_DEBUG0_DEBUG_REG_SELECT_MASK                0x3f
-#define        BCH_DEBUG0_DEBUG_REG_SELECT_OFFSET              0
-
-#define        BCH_DBGKESREAD_VALUES_MASK                      0xffffffff
-#define        BCH_DBGKESREAD_VALUES_OFFSET                    0
-
-#define        BCH_DBGCSFEREAD_VALUES_MASK                     0xffffffff
-#define        BCH_DBGCSFEREAD_VALUES_OFFSET                   0
-
-#define        BCH_DBGSYNDGENREAD_VALUES_MASK                  0xffffffff
-#define        BCH_DBGSYNDGENREAD_VALUES_OFFSET                0
-
-#define        BCH_DBGAHBMREAD_VALUES_MASK                     0xffffffff
-#define        BCH_DBGAHBMREAD_VALUES_OFFSET                   0
-
-#define        BCH_BLOCKNAME_NAME_MASK                         0xffffffff
-#define        BCH_BLOCKNAME_NAME_OFFSET                       0
-
-#define        BCH_VERSION_MAJOR_MASK                          (0xff << 24)
-#define        BCH_VERSION_MAJOR_OFFSET                        24
-#define        BCH_VERSION_MINOR_MASK                          (0xff << 16)
-#define        BCH_VERSION_MINOR_OFFSET                        16
-#define        BCH_VERSION_STEP_MASK                           0xffff
-#define        BCH_VERSION_STEP_OFFSET                         0
-
-#endif /* __MX28_REGS_BCH_H__ */
index 62810eca419bd179c688fa083e5f4699c59f940f..c3cba337f9199ea28fef729fbf1f994e4d232cf4 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef __MX23_REGS_CLKCTRL_H__
 #define __MX23_REGS_CLKCTRL_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_clkctrl_regs {
index 23e9adc25a28ee1cf8251b4b00ef70fe6bb67d46..1c2c82e1bd0b0f1b91f6e298e588071fefe4afe7 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef __MX28_REGS_CLKCTRL_H__
 #define __MX28_REGS_CLKCTRL_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_clkctrl_regs {
diff --git a/arch/arm/include/asm/arch-mxs/regs-common.h b/arch/arm/include/asm/arch-mxs/regs-common.h
deleted file mode 100644 (file)
index bcea419..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Freescale i.MXS Register Accessors
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * 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
- *
- */
-
-#ifndef __MXS_REGS_COMMON_H__
-#define __MXS_REGS_COMMON_H__
-
-/*
- * The i.MXS has interesting feature when it comes to register access. There
- * are four kinds of access to one particular register. Those are:
- *
- * 1) Common read/write access. To use this mode, just write to the address of
- *    the register.
- * 2) Set bits only access. To set bits, write which bits you want to set to the
- *    address of the register + 0x4.
- * 3) Clear bits only access. To clear bits, write which bits you want to clear
- *    to the address of the register + 0x8.
- * 4) Toggle bits only access. To toggle bits, write which bits you want to
- *    toggle to the address of the register + 0xc.
- *
- * IMPORTANT NOTE: Not all registers support accesses 2-4! Also, not all bits
- * can be set/cleared by pure write as in access type 1, some need to be
- * explicitly set/cleared by using access type 2-3.
- *
- * The following macros and structures allow the user to either access the
- * register in all aforementioned modes (by accessing reg_name, reg_name_set,
- * reg_name_clr, reg_name_tog) or pass the register structure further into
- * various functions with correct type information (by accessing reg_name_reg).
- *
- */
-
-#define        __mxs_reg_8(name)               \
-       uint8_t name[4];                \
-       uint8_t name##_set[4];          \
-       uint8_t name##_clr[4];          \
-       uint8_t name##_tog[4];          \
-
-#define        __mxs_reg_32(name)              \
-       uint32_t name;                  \
-       uint32_t name##_set;            \
-       uint32_t name##_clr;            \
-       uint32_t name##_tog;
-
-struct mxs_register_8 {
-       __mxs_reg_8(reg)
-};
-
-struct mxs_register_32 {
-       __mxs_reg_32(reg)
-};
-
-#define        mxs_reg_8(name)                         \
-       union {                                         \
-               struct { __mxs_reg_8(name) };           \
-               struct mxs_register_8 name##_reg;       \
-       };
-
-#define        mxs_reg_32(name)                                \
-       union {                                         \
-               struct { __mxs_reg_32(name) };          \
-               struct mxs_register_32 name##_reg;      \
-       };
-
-#endif /* __MXS_REGS_COMMON_H__ */
index d0433254d5b8a0e21a35c1a71a80c22006c61996..d4a39668b0822f4bcddc553ab2ae10f626463ae0 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef __MX28_REGS_DIGCTL_H__
 #define __MX28_REGS_DIGCTL_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_digctl_regs {
diff --git a/arch/arm/include/asm/arch-mxs/regs-gpmi.h b/arch/arm/include/asm/arch-mxs/regs-gpmi.h
deleted file mode 100644 (file)
index 624d618..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Freescale i.MX28 GPMI Register Definitions
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * 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
- *
- */
-
-#ifndef __MX28_REGS_GPMI_H__
-#define __MX28_REGS_GPMI_H__
-
-#include <asm/arch/regs-common.h>
-
-#ifndef        __ASSEMBLY__
-struct mxs_gpmi_regs {
-       mxs_reg_32(hw_gpmi_ctrl0)
-       mxs_reg_32(hw_gpmi_compare)
-       mxs_reg_32(hw_gpmi_eccctrl)
-       mxs_reg_32(hw_gpmi_ecccount)
-       mxs_reg_32(hw_gpmi_payload)
-       mxs_reg_32(hw_gpmi_auxiliary)
-       mxs_reg_32(hw_gpmi_ctrl1)
-       mxs_reg_32(hw_gpmi_timing0)
-       mxs_reg_32(hw_gpmi_timing1)
-
-       uint32_t        reserved[4];
-
-       mxs_reg_32(hw_gpmi_data)
-       mxs_reg_32(hw_gpmi_stat)
-       mxs_reg_32(hw_gpmi_debug)
-       mxs_reg_32(hw_gpmi_version)
-};
-#endif
-
-#define        GPMI_CTRL0_SFTRST                               (1 << 31)
-#define        GPMI_CTRL0_CLKGATE                              (1 << 30)
-#define        GPMI_CTRL0_RUN                                  (1 << 29)
-#define        GPMI_CTRL0_DEV_IRQ_EN                           (1 << 28)
-#define        GPMI_CTRL0_LOCK_CS                              (1 << 27)
-#define        GPMI_CTRL0_UDMA                                 (1 << 26)
-#define        GPMI_CTRL0_COMMAND_MODE_MASK                    (0x3 << 24)
-#define        GPMI_CTRL0_COMMAND_MODE_OFFSET                  24
-#define        GPMI_CTRL0_COMMAND_MODE_WRITE                   (0x0 << 24)
-#define        GPMI_CTRL0_COMMAND_MODE_READ                    (0x1 << 24)
-#define        GPMI_CTRL0_COMMAND_MODE_READ_AND_COMPARE        (0x2 << 24)
-#define        GPMI_CTRL0_COMMAND_MODE_WAIT_FOR_READY          (0x3 << 24)
-#define        GPMI_CTRL0_WORD_LENGTH                          (1 << 23)
-#define        GPMI_CTRL0_CS_MASK                              (0x7 << 20)
-#define        GPMI_CTRL0_CS_OFFSET                            20
-#define        GPMI_CTRL0_ADDRESS_MASK                         (0x7 << 17)
-#define        GPMI_CTRL0_ADDRESS_OFFSET                       17
-#define        GPMI_CTRL0_ADDRESS_NAND_DATA                    (0x0 << 17)
-#define        GPMI_CTRL0_ADDRESS_NAND_CLE                     (0x1 << 17)
-#define        GPMI_CTRL0_ADDRESS_NAND_ALE                     (0x2 << 17)
-#define        GPMI_CTRL0_ADDRESS_INCREMENT                    (1 << 16)
-#define        GPMI_CTRL0_XFER_COUNT_MASK                      0xffff
-#define        GPMI_CTRL0_XFER_COUNT_OFFSET                    0
-
-#define        GPMI_COMPARE_MASK_MASK                          (0xffff << 16)
-#define        GPMI_COMPARE_MASK_OFFSET                        16
-#define        GPMI_COMPARE_REFERENCE_MASK                     0xffff
-#define        GPMI_COMPARE_REFERENCE_OFFSET                   0
-
-#define        GPMI_ECCCTRL_HANDLE_MASK                        (0xffff << 16)
-#define        GPMI_ECCCTRL_HANDLE_OFFSET                      16
-#define        GPMI_ECCCTRL_ECC_CMD_MASK                       (0x3 << 13)
-#define        GPMI_ECCCTRL_ECC_CMD_OFFSET                     13
-#define        GPMI_ECCCTRL_ECC_CMD_DECODE                     (0x0 << 13)
-#define        GPMI_ECCCTRL_ECC_CMD_ENCODE                     (0x1 << 13)
-#define        GPMI_ECCCTRL_ENABLE_ECC                         (1 << 12)
-#define        GPMI_ECCCTRL_BUFFER_MASK_MASK                   0x1ff
-#define        GPMI_ECCCTRL_BUFFER_MASK_OFFSET                 0
-#define        GPMI_ECCCTRL_BUFFER_MASK_BCH_AUXONLY            0x100
-#define        GPMI_ECCCTRL_BUFFER_MASK_BCH_PAGE               0x1ff
-
-#define        GPMI_ECCCOUNT_COUNT_MASK                        0xffff
-#define        GPMI_ECCCOUNT_COUNT_OFFSET                      0
-
-#define        GPMI_PAYLOAD_ADDRESS_MASK                       (0x3fffffff << 2)
-#define        GPMI_PAYLOAD_ADDRESS_OFFSET                     2
-
-#define        GPMI_AUXILIARY_ADDRESS_MASK                     (0x3fffffff << 2)
-#define        GPMI_AUXILIARY_ADDRESS_OFFSET                   2
-
-#define        GPMI_CTRL1_DECOUPLE_CS                          (1 << 24)
-#define        GPMI_CTRL1_WRN_DLY_SEL_MASK                     (0x3 << 22)
-#define        GPMI_CTRL1_WRN_DLY_SEL_OFFSET                   22
-#define        GPMI_CTRL1_TIMEOUT_IRQ_EN                       (1 << 20)
-#define        GPMI_CTRL1_GANGED_RDYBUSY                       (1 << 19)
-#define        GPMI_CTRL1_BCH_MODE                             (1 << 18)
-#define        GPMI_CTRL1_DLL_ENABLE                           (1 << 17)
-#define        GPMI_CTRL1_HALF_PERIOD                          (1 << 16)
-#define        GPMI_CTRL1_RDN_DELAY_MASK                       (0xf << 12)
-#define        GPMI_CTRL1_RDN_DELAY_OFFSET                     12
-#define        GPMI_CTRL1_DMA2ECC_MODE                         (1 << 11)
-#define        GPMI_CTRL1_DEV_IRQ                              (1 << 10)
-#define        GPMI_CTRL1_TIMEOUT_IRQ                          (1 << 9)
-#define        GPMI_CTRL1_BURST_EN                             (1 << 8)
-#define        GPMI_CTRL1_ABORT_WAIT_REQUEST                   (1 << 7)
-#define        GPMI_CTRL1_ABORT_WAIT_FOR_READY_CHANNEL_MASK    (0x7 << 4)
-#define        GPMI_CTRL1_ABORT_WAIT_FOR_READY_CHANNEL_OFFSET  4
-#define        GPMI_CTRL1_DEV_RESET                            (1 << 3)
-#define        GPMI_CTRL1_ATA_IRQRDY_POLARITY                  (1 << 2)
-#define        GPMI_CTRL1_CAMERA_MODE                          (1 << 1)
-#define        GPMI_CTRL1_GPMI_MODE                            (1 << 0)
-
-#define        GPMI_TIMING0_ADDRESS_SETUP_MASK                 (0xff << 16)
-#define        GPMI_TIMING0_ADDRESS_SETUP_OFFSET               16
-#define        GPMI_TIMING0_DATA_HOLD_MASK                     (0xff << 8)
-#define        GPMI_TIMING0_DATA_HOLD_OFFSET                   8
-#define        GPMI_TIMING0_DATA_SETUP_MASK                    0xff
-#define        GPMI_TIMING0_DATA_SETUP_OFFSET                  0
-
-#define        GPMI_TIMING1_DEVICE_BUSY_TIMEOUT_MASK           (0xffff << 16)
-#define        GPMI_TIMING1_DEVICE_BUSY_TIMEOUT_OFFSET         16
-
-#define        GPMI_TIMING2_UDMA_TRP_MASK                      (0xff << 24)
-#define        GPMI_TIMING2_UDMA_TRP_OFFSET                    24
-#define        GPMI_TIMING2_UDMA_ENV_MASK                      (0xff << 16)
-#define        GPMI_TIMING2_UDMA_ENV_OFFSET                    16
-#define        GPMI_TIMING2_UDMA_HOLD_MASK                     (0xff << 8)
-#define        GPMI_TIMING2_UDMA_HOLD_OFFSET                   8
-#define        GPMI_TIMING2_UDMA_SETUP_MASK                    0xff
-#define        GPMI_TIMING2_UDMA_SETUP_OFFSET                  0
-
-#define        GPMI_DATA_DATA_MASK                             0xffffffff
-#define        GPMI_DATA_DATA_OFFSET                           0
-
-#define        GPMI_STAT_READY_BUSY_MASK                       (0xff << 24)
-#define        GPMI_STAT_READY_BUSY_OFFSET                     24
-#define        GPMI_STAT_RDY_TIMEOUT_MASK                      (0xff << 16)
-#define        GPMI_STAT_RDY_TIMEOUT_OFFSET                    16
-#define        GPMI_STAT_DEV7_ERROR                            (1 << 15)
-#define        GPMI_STAT_DEV6_ERROR                            (1 << 14)
-#define        GPMI_STAT_DEV5_ERROR                            (1 << 13)
-#define        GPMI_STAT_DEV4_ERROR                            (1 << 12)
-#define        GPMI_STAT_DEV3_ERROR                            (1 << 11)
-#define        GPMI_STAT_DEV2_ERROR                            (1 << 10)
-#define        GPMI_STAT_DEV1_ERROR                            (1 << 9)
-#define        GPMI_STAT_DEV0_ERROR                            (1 << 8)
-#define        GPMI_STAT_ATA_IRQ                               (1 << 4)
-#define        GPMI_STAT_INVALID_BUFFER_MASK                   (1 << 3)
-#define        GPMI_STAT_FIFO_EMPTY                            (1 << 2)
-#define        GPMI_STAT_FIFO_FULL                             (1 << 1)
-#define        GPMI_STAT_PRESENT                               (1 << 0)
-
-#define        GPMI_DEBUG_WAIT_FOR_READY_END_MASK              (0xff << 24)
-#define        GPMI_DEBUG_WAIT_FOR_READY_END_OFFSET            24
-#define        GPMI_DEBUG_DMA_SENSE_MASK                       (0xff << 16)
-#define        GPMI_DEBUG_DMA_SENSE_OFFSET                     16
-#define        GPMI_DEBUG_DMAREQ_MASK                          (0xff << 8)
-#define        GPMI_DEBUG_DMAREQ_OFFSET                        8
-#define        GPMI_DEBUG_CMD_END_MASK                         0xff
-#define        GPMI_DEBUG_CMD_END_OFFSET                       0
-
-#define        GPMI_VERSION_MAJOR_MASK                         (0xff << 24)
-#define        GPMI_VERSION_MAJOR_OFFSET                       24
-#define        GPMI_VERSION_MINOR_MASK                         (0xff << 16)
-#define        GPMI_VERSION_MINOR_OFFSET                       16
-#define        GPMI_VERSION_STEP_MASK                          0xffff
-#define        GPMI_VERSION_STEP_OFFSET                        0
-
-#define        GPMI_DEBUG2_UDMA_STATE_MASK                     (0xf << 24)
-#define        GPMI_DEBUG2_UDMA_STATE_OFFSET                   24
-#define        GPMI_DEBUG2_BUSY                                (1 << 23)
-#define        GPMI_DEBUG2_PIN_STATE_MASK                      (0x7 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_OFFSET                    20
-#define        GPMI_DEBUG2_PIN_STATE_PSM_IDLE                  (0x0 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_BYTCNT                (0x1 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_ADDR                  (0x2 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_STALL                 (0x3 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_STROBE                (0x4 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_ATARDY                (0x5 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_DHOLD                 (0x6 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_DONE                  (0x7 << 20)
-#define        GPMI_DEBUG2_MAIN_STATE_MASK                     (0xf << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_OFFSET                   16
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_IDLE                 (0x0 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_BYTCNT               (0x1 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFE               (0x2 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFR               (0x3 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_DMAREQ               (0x4 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_DMAACK               (0x5 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFF               (0x6 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_LDFIFO               (0x7 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_LDDMAR               (0x8 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_RDCMP                (0x9 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_DONE                 (0xa << 16)
-#define        GPMI_DEBUG2_SYND2GPMI_BE_MASK                   (0xf << 12)
-#define        GPMI_DEBUG2_SYND2GPMI_BE_OFFSET                 12
-#define        GPMI_DEBUG2_GPMI2SYND_VALID                     (1 << 11)
-#define        GPMI_DEBUG2_GPMI2SYND_READY                     (1 << 10)
-#define        GPMI_DEBUG2_SYND2GPMI_VALID                     (1 << 9)
-#define        GPMI_DEBUG2_SYND2GPMI_READY                     (1 << 8)
-#define        GPMI_DEBUG2_VIEW_DELAYED_RDN                    (1 << 7)
-#define        GPMI_DEBUG2_UPDATE_WINDOW                       (1 << 6)
-#define        GPMI_DEBUG2_RDN_TAP_MASK                        0x3f
-#define        GPMI_DEBUG2_RDN_TAP_OFFSET                      0
-
-#define        GPMI_DEBUG3_APB_WORD_CNTR_MASK                  (0xffff << 16)
-#define        GPMI_DEBUG3_APB_WORD_CNTR_OFFSET                16
-#define        GPMI_DEBUG3_DEV_WORD_CNTR_MASK                  0xffff
-#define        GPMI_DEBUG3_DEV_WORD_CNTR_OFFSET                0
-
-#endif /* __MX28_REGS_GPMI_H__ */
index 067cfd394730268523a3a9894f1b9dbba93a12cb..d062b5be24bc0a9f24e1a82679f84dd027d43c29 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef __MX28_REGS_I2C_H__
 #define __MX28_REGS_I2C_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_i2c_regs {
index b90b2d437a9a06cfcc92f2f66b5c23172343836f..e3e3864ef7430a634adec93a30e924d39f3635f7 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef __MX28_REGS_LCDIF_H__
 #define __MX28_REGS_LCDIF_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_lcdif_regs {
index 28d838242232da1cc2c32414e23dff2a4359cea3..23fd0e3ac1405bd09a7327414375b069e40ece83 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef __MX28_REGS_LRADC_H__
 #define __MX28_REGS_LRADC_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_lradc_regs {
index 3269892f99dbb8d4797c627eeb5c6efa7650a5f6..5af3855b585fbb31691c91a49f0e88f11b0b64d0 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef __MX28_REGS_OCOTP_H__
 #define __MX28_REGS_OCOTP_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_ocotp_regs {
index d5841709c4a3c12e4650acb7282be24260365781..191093bf1ecf59464a96b96b17c9786059600ab3 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef __MX28_REGS_PINCTRL_H__
 #define __MX28_REGS_PINCTRL_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_pinctrl_regs {
index 51a981a7c6c2825bbae63fb3671f8a9194d26d32..a7430c4efddc19b1ca26165a88e1c09ecc0ebbda 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef __MX23_REGS_POWER_H__
 #define __MX23_REGS_POWER_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_power_regs {
index 257ee88e82eef99f708edb14dbb6860d7e13d7b5..4a73b1c650a40b32ed69f250f1a6e917c3da948b 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef __MX28_REGS_POWER_H__
 #define __MX28_REGS_POWER_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_power_regs {
index 6b2dd332e3040ee70e5ddb5efa2298f1a028f3dc..19265465c727be416767947c77d9623b38aafc7a 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef __MX28_REGS_RTC_H__
 #define __MX28_REGS_RTC_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_rtc_regs {
index 5920f9b4dc7bf3b2a9daf82a610dbfe59b748c6b..0b61fa9d57a96504bc39feecb59ea7919550fee3 100644 (file)
@@ -25,7 +25,7 @@
 #ifndef __MX28_REGS_SSP_H__
 #define __MX28_REGS_SSP_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 #if defined(CONFIG_MX23)
index f8537f1636a7a99122291023f846bee41458e591..df343bd6be2e82dc98ad5aac7db819e90423641c 100644 (file)
@@ -25,7 +25,7 @@
 #ifndef __MX28_REGS_TIMROT_H__
 #define __MX28_REGS_TIMROT_H__
 
-#include <asm/arch/regs-common.h>
+#include <asm/imx-common/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_timrot_regs {
diff --git a/arch/arm/include/asm/imx-common/dma.h b/arch/arm/include/asm/imx-common/dma.h
new file mode 100644 (file)
index 0000000..1ac8696
--- /dev/null
@@ -0,0 +1,165 @@
+/*
+ * Freescale i.MX28 APBH DMA
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * 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
+ *
+ */
+
+#ifndef __DMA_H__
+#define __DMA_H__
+
+#include <linux/list.h>
+#include <linux/compiler.h>
+
+#ifndef        CONFIG_ARCH_DMA_PIO_WORDS
+#define        DMA_PIO_WORDS           15
+#else
+#define        DMA_PIO_WORDS           CONFIG_ARCH_DMA_PIO_WORDS
+#endif
+
+#define MXS_DMA_ALIGNMENT      32
+
+/*
+ * MXS DMA channels
+ */
+#if defined(CONFIG_MX23)
+enum {
+       MXS_DMA_CHANNEL_AHB_APBH_LCDIF = 0,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP0,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP1,
+       MXS_DMA_CHANNEL_AHB_APBH_RESERVED0,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI0,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
+       MXS_MAX_DMA_CHANNELS,
+};
+#elif defined(CONFIG_MX28)
+enum {
+       MXS_DMA_CHANNEL_AHB_APBH_SSP0 = 0,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP1,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP2,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP3,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI0,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI4,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI5,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI6,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI7,
+       MXS_DMA_CHANNEL_AHB_APBH_HSADC,
+       MXS_DMA_CHANNEL_AHB_APBH_LCDIF,
+       MXS_DMA_CHANNEL_AHB_APBH_RESERVED0,
+       MXS_DMA_CHANNEL_AHB_APBH_RESERVED1,
+       MXS_MAX_DMA_CHANNELS,
+};
+#endif
+
+/*
+ * MXS DMA hardware command.
+ *
+ * This structure describes the in-memory layout of an entire DMA command,
+ * including space for the maximum number of PIO accesses. See the appropriate
+ * reference manual for a detailed description of what these fields mean to the
+ * DMA hardware.
+ */
+#define        MXS_DMA_DESC_COMMAND_MASK       0x3
+#define        MXS_DMA_DESC_COMMAND_OFFSET     0
+#define        MXS_DMA_DESC_COMMAND_NO_DMAXFER 0x0
+#define        MXS_DMA_DESC_COMMAND_DMA_WRITE  0x1
+#define        MXS_DMA_DESC_COMMAND_DMA_READ   0x2
+#define        MXS_DMA_DESC_COMMAND_DMA_SENSE  0x3
+#define        MXS_DMA_DESC_CHAIN              (1 << 2)
+#define        MXS_DMA_DESC_IRQ                (1 << 3)
+#define        MXS_DMA_DESC_NAND_LOCK          (1 << 4)
+#define        MXS_DMA_DESC_NAND_WAIT_4_READY  (1 << 5)
+#define        MXS_DMA_DESC_DEC_SEM            (1 << 6)
+#define        MXS_DMA_DESC_WAIT4END           (1 << 7)
+#define        MXS_DMA_DESC_HALT_ON_TERMINATE  (1 << 8)
+#define        MXS_DMA_DESC_TERMINATE_FLUSH    (1 << 9)
+#define        MXS_DMA_DESC_PIO_WORDS_MASK     (0xf << 12)
+#define        MXS_DMA_DESC_PIO_WORDS_OFFSET   12
+#define        MXS_DMA_DESC_BYTES_MASK         (0xffff << 16)
+#define        MXS_DMA_DESC_BYTES_OFFSET       16
+
+struct mxs_dma_cmd {
+       unsigned long           next;
+       unsigned long           data;
+       union {
+               dma_addr_t      address;
+               unsigned long   alternate;
+       };
+       unsigned long           pio_words[DMA_PIO_WORDS];
+};
+
+/*
+ * MXS DMA command descriptor.
+ *
+ * This structure incorporates an MXS DMA hardware command structure, along
+ * with metadata.
+ */
+#define        MXS_DMA_DESC_FIRST      (1 << 0)
+#define        MXS_DMA_DESC_LAST       (1 << 1)
+#define        MXS_DMA_DESC_READY      (1 << 31)
+
+struct mxs_dma_desc {
+       struct mxs_dma_cmd      cmd;
+       unsigned int            flags;
+       dma_addr_t              address;
+       void                    *buffer;
+       struct list_head        node;
+} __aligned(MXS_DMA_ALIGNMENT);
+
+/**
+ * MXS DMA channel
+ *
+ * This structure represents a single DMA channel. The MXS platform code
+ * maintains an array of these structures to represent every DMA channel in the
+ * system (see mxs_dma_channels).
+ */
+#define        MXS_DMA_FLAGS_IDLE      0
+#define        MXS_DMA_FLAGS_BUSY      (1 << 0)
+#define        MXS_DMA_FLAGS_FREE      0
+#define        MXS_DMA_FLAGS_ALLOCATED (1 << 16)
+#define        MXS_DMA_FLAGS_VALID     (1 << 31)
+
+struct mxs_dma_chan {
+       const char *name;
+       unsigned long dev;
+       struct mxs_dma_device *dma;
+       unsigned int flags;
+       unsigned int active_num;
+       unsigned int pending_num;
+       struct list_head active;
+       struct list_head done;
+};
+
+struct mxs_dma_desc *mxs_dma_desc_alloc(void);
+void mxs_dma_desc_free(struct mxs_dma_desc *);
+int mxs_dma_desc_append(int channel, struct mxs_dma_desc *pdesc);
+
+int mxs_dma_go(int chan);
+void mxs_dma_init(void);
+int mxs_dma_init_channel(int chan);
+int mxs_dma_release(int chan);
+
+#endif /* __DMA_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-apbh.h b/arch/arm/include/asm/imx-common/regs-apbh.h
new file mode 100644 (file)
index 0000000..a5de927
--- /dev/null
@@ -0,0 +1,587 @@
+/*
+ * Freescale i.MX28 APBH Register Definitions
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * 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
+ *
+ */
+
+#ifndef __REGS_APBH_H__
+#define __REGS_APBH_H__
+
+#include <asm/imx-common/regs-common.h>
+
+#ifndef        __ASSEMBLY__
+
+#if defined(CONFIG_MX23)
+struct mxs_apbh_regs {
+       mxs_reg_32(hw_apbh_ctrl0)
+       mxs_reg_32(hw_apbh_ctrl1)
+       mxs_reg_32(hw_apbh_ctrl2)
+       mxs_reg_32(hw_apbh_channel_ctrl)
+
+       union {
+       struct {
+               mxs_reg_32(hw_apbh_ch_curcmdar)
+               mxs_reg_32(hw_apbh_ch_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch_cmd)
+               mxs_reg_32(hw_apbh_ch_bar)
+               mxs_reg_32(hw_apbh_ch_sema)
+               mxs_reg_32(hw_apbh_ch_debug1)
+               mxs_reg_32(hw_apbh_ch_debug2)
+       } ch[8];
+       struct {
+               mxs_reg_32(hw_apbh_ch0_curcmdar)
+               mxs_reg_32(hw_apbh_ch0_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch0_cmd)
+               mxs_reg_32(hw_apbh_ch0_bar)
+               mxs_reg_32(hw_apbh_ch0_sema)
+               mxs_reg_32(hw_apbh_ch0_debug1)
+               mxs_reg_32(hw_apbh_ch0_debug2)
+               mxs_reg_32(hw_apbh_ch1_curcmdar)
+               mxs_reg_32(hw_apbh_ch1_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch1_cmd)
+               mxs_reg_32(hw_apbh_ch1_bar)
+               mxs_reg_32(hw_apbh_ch1_sema)
+               mxs_reg_32(hw_apbh_ch1_debug1)
+               mxs_reg_32(hw_apbh_ch1_debug2)
+               mxs_reg_32(hw_apbh_ch2_curcmdar)
+               mxs_reg_32(hw_apbh_ch2_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch2_cmd)
+               mxs_reg_32(hw_apbh_ch2_bar)
+               mxs_reg_32(hw_apbh_ch2_sema)
+               mxs_reg_32(hw_apbh_ch2_debug1)
+               mxs_reg_32(hw_apbh_ch2_debug2)
+               mxs_reg_32(hw_apbh_ch3_curcmdar)
+               mxs_reg_32(hw_apbh_ch3_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch3_cmd)
+               mxs_reg_32(hw_apbh_ch3_bar)
+               mxs_reg_32(hw_apbh_ch3_sema)
+               mxs_reg_32(hw_apbh_ch3_debug1)
+               mxs_reg_32(hw_apbh_ch3_debug2)
+               mxs_reg_32(hw_apbh_ch4_curcmdar)
+               mxs_reg_32(hw_apbh_ch4_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch4_cmd)
+               mxs_reg_32(hw_apbh_ch4_bar)
+               mxs_reg_32(hw_apbh_ch4_sema)
+               mxs_reg_32(hw_apbh_ch4_debug1)
+               mxs_reg_32(hw_apbh_ch4_debug2)
+               mxs_reg_32(hw_apbh_ch5_curcmdar)
+               mxs_reg_32(hw_apbh_ch5_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch5_cmd)
+               mxs_reg_32(hw_apbh_ch5_bar)
+               mxs_reg_32(hw_apbh_ch5_sema)
+               mxs_reg_32(hw_apbh_ch5_debug1)
+               mxs_reg_32(hw_apbh_ch5_debug2)
+               mxs_reg_32(hw_apbh_ch6_curcmdar)
+               mxs_reg_32(hw_apbh_ch6_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch6_cmd)
+               mxs_reg_32(hw_apbh_ch6_bar)
+               mxs_reg_32(hw_apbh_ch6_sema)
+               mxs_reg_32(hw_apbh_ch6_debug1)
+               mxs_reg_32(hw_apbh_ch6_debug2)
+               mxs_reg_32(hw_apbh_ch7_curcmdar)
+               mxs_reg_32(hw_apbh_ch7_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch7_cmd)
+               mxs_reg_32(hw_apbh_ch7_bar)
+               mxs_reg_32(hw_apbh_ch7_sema)
+               mxs_reg_32(hw_apbh_ch7_debug1)
+               mxs_reg_32(hw_apbh_ch7_debug2)
+       };
+       };
+       mxs_reg_32(hw_apbh_version)
+};
+
+#elif defined(CONFIG_MX28)
+struct mxs_apbh_regs {
+       mxs_reg_32(hw_apbh_ctrl0)
+       mxs_reg_32(hw_apbh_ctrl1)
+       mxs_reg_32(hw_apbh_ctrl2)
+       mxs_reg_32(hw_apbh_channel_ctrl)
+       mxs_reg_32(hw_apbh_devsel)
+       mxs_reg_32(hw_apbh_dma_burst_size)
+       mxs_reg_32(hw_apbh_debug)
+
+       uint32_t        reserved[36];
+
+       union {
+       struct {
+               mxs_reg_32(hw_apbh_ch_curcmdar)
+               mxs_reg_32(hw_apbh_ch_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch_cmd)
+               mxs_reg_32(hw_apbh_ch_bar)
+               mxs_reg_32(hw_apbh_ch_sema)
+               mxs_reg_32(hw_apbh_ch_debug1)
+               mxs_reg_32(hw_apbh_ch_debug2)
+       } ch[16];
+       struct {
+               mxs_reg_32(hw_apbh_ch0_curcmdar)
+               mxs_reg_32(hw_apbh_ch0_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch0_cmd)
+               mxs_reg_32(hw_apbh_ch0_bar)
+               mxs_reg_32(hw_apbh_ch0_sema)
+               mxs_reg_32(hw_apbh_ch0_debug1)
+               mxs_reg_32(hw_apbh_ch0_debug2)
+               mxs_reg_32(hw_apbh_ch1_curcmdar)
+               mxs_reg_32(hw_apbh_ch1_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch1_cmd)
+               mxs_reg_32(hw_apbh_ch1_bar)
+               mxs_reg_32(hw_apbh_ch1_sema)
+               mxs_reg_32(hw_apbh_ch1_debug1)
+               mxs_reg_32(hw_apbh_ch1_debug2)
+               mxs_reg_32(hw_apbh_ch2_curcmdar)
+               mxs_reg_32(hw_apbh_ch2_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch2_cmd)
+               mxs_reg_32(hw_apbh_ch2_bar)
+               mxs_reg_32(hw_apbh_ch2_sema)
+               mxs_reg_32(hw_apbh_ch2_debug1)
+               mxs_reg_32(hw_apbh_ch2_debug2)
+               mxs_reg_32(hw_apbh_ch3_curcmdar)
+               mxs_reg_32(hw_apbh_ch3_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch3_cmd)
+               mxs_reg_32(hw_apbh_ch3_bar)
+               mxs_reg_32(hw_apbh_ch3_sema)
+               mxs_reg_32(hw_apbh_ch3_debug1)
+               mxs_reg_32(hw_apbh_ch3_debug2)
+               mxs_reg_32(hw_apbh_ch4_curcmdar)
+               mxs_reg_32(hw_apbh_ch4_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch4_cmd)
+               mxs_reg_32(hw_apbh_ch4_bar)
+               mxs_reg_32(hw_apbh_ch4_sema)
+               mxs_reg_32(hw_apbh_ch4_debug1)
+               mxs_reg_32(hw_apbh_ch4_debug2)
+               mxs_reg_32(hw_apbh_ch5_curcmdar)
+               mxs_reg_32(hw_apbh_ch5_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch5_cmd)
+               mxs_reg_32(hw_apbh_ch5_bar)
+               mxs_reg_32(hw_apbh_ch5_sema)
+               mxs_reg_32(hw_apbh_ch5_debug1)
+               mxs_reg_32(hw_apbh_ch5_debug2)
+               mxs_reg_32(hw_apbh_ch6_curcmdar)
+               mxs_reg_32(hw_apbh_ch6_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch6_cmd)
+               mxs_reg_32(hw_apbh_ch6_bar)
+               mxs_reg_32(hw_apbh_ch6_sema)
+               mxs_reg_32(hw_apbh_ch6_debug1)
+               mxs_reg_32(hw_apbh_ch6_debug2)
+               mxs_reg_32(hw_apbh_ch7_curcmdar)
+               mxs_reg_32(hw_apbh_ch7_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch7_cmd)
+               mxs_reg_32(hw_apbh_ch7_bar)
+               mxs_reg_32(hw_apbh_ch7_sema)
+               mxs_reg_32(hw_apbh_ch7_debug1)
+               mxs_reg_32(hw_apbh_ch7_debug2)
+               mxs_reg_32(hw_apbh_ch8_curcmdar)
+               mxs_reg_32(hw_apbh_ch8_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch8_cmd)
+               mxs_reg_32(hw_apbh_ch8_bar)
+               mxs_reg_32(hw_apbh_ch8_sema)
+               mxs_reg_32(hw_apbh_ch8_debug1)
+               mxs_reg_32(hw_apbh_ch8_debug2)
+               mxs_reg_32(hw_apbh_ch9_curcmdar)
+               mxs_reg_32(hw_apbh_ch9_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch9_cmd)
+               mxs_reg_32(hw_apbh_ch9_bar)
+               mxs_reg_32(hw_apbh_ch9_sema)
+               mxs_reg_32(hw_apbh_ch9_debug1)
+               mxs_reg_32(hw_apbh_ch9_debug2)
+               mxs_reg_32(hw_apbh_ch10_curcmdar)
+               mxs_reg_32(hw_apbh_ch10_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch10_cmd)
+               mxs_reg_32(hw_apbh_ch10_bar)
+               mxs_reg_32(hw_apbh_ch10_sema)
+               mxs_reg_32(hw_apbh_ch10_debug1)
+               mxs_reg_32(hw_apbh_ch10_debug2)
+               mxs_reg_32(hw_apbh_ch11_curcmdar)
+               mxs_reg_32(hw_apbh_ch11_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch11_cmd)
+               mxs_reg_32(hw_apbh_ch11_bar)
+               mxs_reg_32(hw_apbh_ch11_sema)
+               mxs_reg_32(hw_apbh_ch11_debug1)
+               mxs_reg_32(hw_apbh_ch11_debug2)
+               mxs_reg_32(hw_apbh_ch12_curcmdar)
+               mxs_reg_32(hw_apbh_ch12_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch12_cmd)
+               mxs_reg_32(hw_apbh_ch12_bar)
+               mxs_reg_32(hw_apbh_ch12_sema)
+               mxs_reg_32(hw_apbh_ch12_debug1)
+               mxs_reg_32(hw_apbh_ch12_debug2)
+               mxs_reg_32(hw_apbh_ch13_curcmdar)
+               mxs_reg_32(hw_apbh_ch13_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch13_cmd)
+               mxs_reg_32(hw_apbh_ch13_bar)
+               mxs_reg_32(hw_apbh_ch13_sema)
+               mxs_reg_32(hw_apbh_ch13_debug1)
+               mxs_reg_32(hw_apbh_ch13_debug2)
+               mxs_reg_32(hw_apbh_ch14_curcmdar)
+               mxs_reg_32(hw_apbh_ch14_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch14_cmd)
+               mxs_reg_32(hw_apbh_ch14_bar)
+               mxs_reg_32(hw_apbh_ch14_sema)
+               mxs_reg_32(hw_apbh_ch14_debug1)
+               mxs_reg_32(hw_apbh_ch14_debug2)
+               mxs_reg_32(hw_apbh_ch15_curcmdar)
+               mxs_reg_32(hw_apbh_ch15_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch15_cmd)
+               mxs_reg_32(hw_apbh_ch15_bar)
+               mxs_reg_32(hw_apbh_ch15_sema)
+               mxs_reg_32(hw_apbh_ch15_debug1)
+               mxs_reg_32(hw_apbh_ch15_debug2)
+       };
+       };
+       mxs_reg_32(hw_apbh_version)
+};
+#endif
+
+#endif
+
+#define        APBH_CTRL0_SFTRST                               (1 << 31)
+#define        APBH_CTRL0_CLKGATE                              (1 << 30)
+#define        APBH_CTRL0_AHB_BURST8_EN                        (1 << 29)
+#define        APBH_CTRL0_APB_BURST_EN                         (1 << 28)
+#if defined(CONFIG_MX23)
+#define        APBH_CTRL0_RSVD0_MASK                           (0xf << 24)
+#define        APBH_CTRL0_RSVD0_OFFSET                         24
+#define        APBH_CTRL0_RESET_CHANNEL_MASK                   (0xff << 16)
+#define        APBH_CTRL0_RESET_CHANNEL_OFFSET                 16
+#define        APBH_CTRL0_CLKGATE_CHANNEL_MASK                 (0xff << 8)
+#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               8
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP0                 0x02
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP1                 0x04
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x10
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x20
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x40
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x80
+#elif defined(CONFIG_MX28)
+#define        APBH_CTRL0_RSVD0_MASK                           (0xfff << 16)
+#define        APBH_CTRL0_RSVD0_OFFSET                         16
+#define        APBH_CTRL0_CLKGATE_CHANNEL_MASK                 0xffff
+#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               0
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP0                 0x0001
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP1                 0x0002
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP2                 0x0004
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP3                 0x0008
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x0010
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x0020
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x0040
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x0080
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND4                0x0100
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND5                0x0200
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND6                0x0400
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND7                0x0800
+#define        APBH_CTRL0_CLKGATE_CHANNEL_HSADC                0x1000
+#define        APBH_CTRL0_CLKGATE_CHANNEL_LCDIF                0x2000
+#endif
+
+#define        APBH_CTRL1_CH15_CMDCMPLT_IRQ_EN                 (1 << 31)
+#define        APBH_CTRL1_CH14_CMDCMPLT_IRQ_EN                 (1 << 30)
+#define        APBH_CTRL1_CH13_CMDCMPLT_IRQ_EN                 (1 << 29)
+#define        APBH_CTRL1_CH12_CMDCMPLT_IRQ_EN                 (1 << 28)
+#define        APBH_CTRL1_CH11_CMDCMPLT_IRQ_EN                 (1 << 27)
+#define        APBH_CTRL1_CH10_CMDCMPLT_IRQ_EN                 (1 << 26)
+#define        APBH_CTRL1_CH9_CMDCMPLT_IRQ_EN                  (1 << 25)
+#define        APBH_CTRL1_CH8_CMDCMPLT_IRQ_EN                  (1 << 24)
+#define        APBH_CTRL1_CH7_CMDCMPLT_IRQ_EN                  (1 << 23)
+#define        APBH_CTRL1_CH6_CMDCMPLT_IRQ_EN                  (1 << 22)
+#define        APBH_CTRL1_CH5_CMDCMPLT_IRQ_EN                  (1 << 21)
+#define        APBH_CTRL1_CH4_CMDCMPLT_IRQ_EN                  (1 << 20)
+#define        APBH_CTRL1_CH3_CMDCMPLT_IRQ_EN                  (1 << 19)
+#define        APBH_CTRL1_CH2_CMDCMPLT_IRQ_EN                  (1 << 18)
+#define        APBH_CTRL1_CH1_CMDCMPLT_IRQ_EN                  (1 << 17)
+#define        APBH_CTRL1_CH0_CMDCMPLT_IRQ_EN                  (1 << 16)
+#define        APBH_CTRL1_CH_CMDCMPLT_IRQ_EN_OFFSET            16
+#define        APBH_CTRL1_CH_CMDCMPLT_IRQ_EN_MASK              (0xffff << 16)
+#define        APBH_CTRL1_CH15_CMDCMPLT_IRQ                    (1 << 15)
+#define        APBH_CTRL1_CH14_CMDCMPLT_IRQ                    (1 << 14)
+#define        APBH_CTRL1_CH13_CMDCMPLT_IRQ                    (1 << 13)
+#define        APBH_CTRL1_CH12_CMDCMPLT_IRQ                    (1 << 12)
+#define        APBH_CTRL1_CH11_CMDCMPLT_IRQ                    (1 << 11)
+#define        APBH_CTRL1_CH10_CMDCMPLT_IRQ                    (1 << 10)
+#define        APBH_CTRL1_CH9_CMDCMPLT_IRQ                     (1 << 9)
+#define        APBH_CTRL1_CH8_CMDCMPLT_IRQ                     (1 << 8)
+#define        APBH_CTRL1_CH7_CMDCMPLT_IRQ                     (1 << 7)
+#define        APBH_CTRL1_CH6_CMDCMPLT_IRQ                     (1 << 6)
+#define        APBH_CTRL1_CH5_CMDCMPLT_IRQ                     (1 << 5)
+#define        APBH_CTRL1_CH4_CMDCMPLT_IRQ                     (1 << 4)
+#define        APBH_CTRL1_CH3_CMDCMPLT_IRQ                     (1 << 3)
+#define        APBH_CTRL1_CH2_CMDCMPLT_IRQ                     (1 << 2)
+#define        APBH_CTRL1_CH1_CMDCMPLT_IRQ                     (1 << 1)
+#define        APBH_CTRL1_CH0_CMDCMPLT_IRQ                     (1 << 0)
+
+#define        APBH_CTRL2_CH15_ERROR_STATUS                    (1 << 31)
+#define        APBH_CTRL2_CH14_ERROR_STATUS                    (1 << 30)
+#define        APBH_CTRL2_CH13_ERROR_STATUS                    (1 << 29)
+#define        APBH_CTRL2_CH12_ERROR_STATUS                    (1 << 28)
+#define        APBH_CTRL2_CH11_ERROR_STATUS                    (1 << 27)
+#define        APBH_CTRL2_CH10_ERROR_STATUS                    (1 << 26)
+#define        APBH_CTRL2_CH9_ERROR_STATUS                     (1 << 25)
+#define        APBH_CTRL2_CH8_ERROR_STATUS                     (1 << 24)
+#define        APBH_CTRL2_CH7_ERROR_STATUS                     (1 << 23)
+#define        APBH_CTRL2_CH6_ERROR_STATUS                     (1 << 22)
+#define        APBH_CTRL2_CH5_ERROR_STATUS                     (1 << 21)
+#define        APBH_CTRL2_CH4_ERROR_STATUS                     (1 << 20)
+#define        APBH_CTRL2_CH3_ERROR_STATUS                     (1 << 19)
+#define        APBH_CTRL2_CH2_ERROR_STATUS                     (1 << 18)
+#define        APBH_CTRL2_CH1_ERROR_STATUS                     (1 << 17)
+#define        APBH_CTRL2_CH0_ERROR_STATUS                     (1 << 16)
+#define        APBH_CTRL2_CH15_ERROR_IRQ                       (1 << 15)
+#define        APBH_CTRL2_CH14_ERROR_IRQ                       (1 << 14)
+#define        APBH_CTRL2_CH13_ERROR_IRQ                       (1 << 13)
+#define        APBH_CTRL2_CH12_ERROR_IRQ                       (1 << 12)
+#define        APBH_CTRL2_CH11_ERROR_IRQ                       (1 << 11)
+#define        APBH_CTRL2_CH10_ERROR_IRQ                       (1 << 10)
+#define        APBH_CTRL2_CH9_ERROR_IRQ                        (1 << 9)
+#define        APBH_CTRL2_CH8_ERROR_IRQ                        (1 << 8)
+#define        APBH_CTRL2_CH7_ERROR_IRQ                        (1 << 7)
+#define        APBH_CTRL2_CH6_ERROR_IRQ                        (1 << 6)
+#define        APBH_CTRL2_CH5_ERROR_IRQ                        (1 << 5)
+#define        APBH_CTRL2_CH4_ERROR_IRQ                        (1 << 4)
+#define        APBH_CTRL2_CH3_ERROR_IRQ                        (1 << 3)
+#define        APBH_CTRL2_CH2_ERROR_IRQ                        (1 << 2)
+#define        APBH_CTRL2_CH1_ERROR_IRQ                        (1 << 1)
+#define        APBH_CTRL2_CH0_ERROR_IRQ                        (1 << 0)
+
+#if defined(CONFIG_MX28)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_MASK            (0xffff << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_OFFSET          16
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP0            (0x0001 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP1            (0x0002 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP2            (0x0004 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP3            (0x0008 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND0           (0x0010 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND1           (0x0020 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND2           (0x0040 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND3           (0x0080 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND4           (0x0100 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND5           (0x0200 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND6           (0x0400 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND7           (0x0800 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_HSADC           (0x1000 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_LCDIF           (0x2000 << 16)
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_MASK           0xffff
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_OFFSET         0
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP0           0x0001
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP1           0x0002
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP2           0x0004
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP3           0x0008
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND0          0x0010
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND1          0x0020
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND2          0x0040
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND3          0x0080
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND4          0x0100
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND5          0x0200
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND6          0x0400
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND7          0x0800
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_HSADC          0x1000
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_LCDIF          0x2000
+#endif
+
+#if defined(CONFIG_MX23)
+#define        APBH_DEVSEL_CH7_MASK                            (0xf << 28)
+#define        APBH_DEVSEL_CH7_OFFSET                          28
+#define        APBH_DEVSEL_CH6_MASK                            (0xf << 24)
+#define        APBH_DEVSEL_CH6_OFFSET                          24
+#define        APBH_DEVSEL_CH5_MASK                            (0xf << 20)
+#define        APBH_DEVSEL_CH5_OFFSET                          20
+#define        APBH_DEVSEL_CH4_MASK                            (0xf << 16)
+#define        APBH_DEVSEL_CH4_OFFSET                          16
+#define        APBH_DEVSEL_CH3_MASK                            (0xf << 12)
+#define        APBH_DEVSEL_CH3_OFFSET                          12
+#define        APBH_DEVSEL_CH2_MASK                            (0xf << 8)
+#define        APBH_DEVSEL_CH2_OFFSET                          8
+#define        APBH_DEVSEL_CH1_MASK                            (0xf << 4)
+#define        APBH_DEVSEL_CH1_OFFSET                          4
+#define        APBH_DEVSEL_CH0_MASK                            (0xf << 0)
+#define        APBH_DEVSEL_CH0_OFFSET                          0
+#elif defined(CONFIG_MX28)
+#define        APBH_DEVSEL_CH15_MASK                           (0x3 << 30)
+#define        APBH_DEVSEL_CH15_OFFSET                         30
+#define        APBH_DEVSEL_CH14_MASK                           (0x3 << 28)
+#define        APBH_DEVSEL_CH14_OFFSET                         28
+#define        APBH_DEVSEL_CH13_MASK                           (0x3 << 26)
+#define        APBH_DEVSEL_CH13_OFFSET                         26
+#define        APBH_DEVSEL_CH12_MASK                           (0x3 << 24)
+#define        APBH_DEVSEL_CH12_OFFSET                         24
+#define        APBH_DEVSEL_CH11_MASK                           (0x3 << 22)
+#define        APBH_DEVSEL_CH11_OFFSET                         22
+#define        APBH_DEVSEL_CH10_MASK                           (0x3 << 20)
+#define        APBH_DEVSEL_CH10_OFFSET                         20
+#define        APBH_DEVSEL_CH9_MASK                            (0x3 << 18)
+#define        APBH_DEVSEL_CH9_OFFSET                          18
+#define        APBH_DEVSEL_CH8_MASK                            (0x3 << 16)
+#define        APBH_DEVSEL_CH8_OFFSET                          16
+#define        APBH_DEVSEL_CH7_MASK                            (0x3 << 14)
+#define        APBH_DEVSEL_CH7_OFFSET                          14
+#define        APBH_DEVSEL_CH6_MASK                            (0x3 << 12)
+#define        APBH_DEVSEL_CH6_OFFSET                          12
+#define        APBH_DEVSEL_CH5_MASK                            (0x3 << 10)
+#define        APBH_DEVSEL_CH5_OFFSET                          10
+#define        APBH_DEVSEL_CH4_MASK                            (0x3 << 8)
+#define        APBH_DEVSEL_CH4_OFFSET                          8
+#define        APBH_DEVSEL_CH3_MASK                            (0x3 << 6)
+#define        APBH_DEVSEL_CH3_OFFSET                          6
+#define        APBH_DEVSEL_CH2_MASK                            (0x3 << 4)
+#define        APBH_DEVSEL_CH2_OFFSET                          4
+#define        APBH_DEVSEL_CH1_MASK                            (0x3 << 2)
+#define        APBH_DEVSEL_CH1_OFFSET                          2
+#define        APBH_DEVSEL_CH0_MASK                            (0x3 << 0)
+#define        APBH_DEVSEL_CH0_OFFSET                          0
+#endif
+
+#if defined(CONFIG_MX28)
+#define        APBH_DMA_BURST_SIZE_CH15_MASK                   (0x3 << 30)
+#define        APBH_DMA_BURST_SIZE_CH15_OFFSET                 30
+#define        APBH_DMA_BURST_SIZE_CH14_MASK                   (0x3 << 28)
+#define        APBH_DMA_BURST_SIZE_CH14_OFFSET                 28
+#define        APBH_DMA_BURST_SIZE_CH13_MASK                   (0x3 << 26)
+#define        APBH_DMA_BURST_SIZE_CH13_OFFSET                 26
+#define        APBH_DMA_BURST_SIZE_CH12_MASK                   (0x3 << 24)
+#define        APBH_DMA_BURST_SIZE_CH12_OFFSET                 24
+#define        APBH_DMA_BURST_SIZE_CH11_MASK                   (0x3 << 22)
+#define        APBH_DMA_BURST_SIZE_CH11_OFFSET                 22
+#define        APBH_DMA_BURST_SIZE_CH10_MASK                   (0x3 << 20)
+#define        APBH_DMA_BURST_SIZE_CH10_OFFSET                 20
+#define        APBH_DMA_BURST_SIZE_CH9_MASK                    (0x3 << 18)
+#define        APBH_DMA_BURST_SIZE_CH9_OFFSET                  18
+#define        APBH_DMA_BURST_SIZE_CH8_MASK                    (0x3 << 16)
+#define        APBH_DMA_BURST_SIZE_CH8_OFFSET                  16
+#define        APBH_DMA_BURST_SIZE_CH8_BURST0                  (0x0 << 16)
+#define        APBH_DMA_BURST_SIZE_CH8_BURST4                  (0x1 << 16)
+#define        APBH_DMA_BURST_SIZE_CH8_BURST8                  (0x2 << 16)
+#define        APBH_DMA_BURST_SIZE_CH7_MASK                    (0x3 << 14)
+#define        APBH_DMA_BURST_SIZE_CH7_OFFSET                  14
+#define        APBH_DMA_BURST_SIZE_CH6_MASK                    (0x3 << 12)
+#define        APBH_DMA_BURST_SIZE_CH6_OFFSET                  12
+#define        APBH_DMA_BURST_SIZE_CH5_MASK                    (0x3 << 10)
+#define        APBH_DMA_BURST_SIZE_CH5_OFFSET                  10
+#define        APBH_DMA_BURST_SIZE_CH4_MASK                    (0x3 << 8)
+#define        APBH_DMA_BURST_SIZE_CH4_OFFSET                  8
+#define        APBH_DMA_BURST_SIZE_CH3_MASK                    (0x3 << 6)
+#define        APBH_DMA_BURST_SIZE_CH3_OFFSET                  6
+#define        APBH_DMA_BURST_SIZE_CH3_BURST0                  (0x0 << 6)
+#define        APBH_DMA_BURST_SIZE_CH3_BURST4                  (0x1 << 6)
+#define        APBH_DMA_BURST_SIZE_CH3_BURST8                  (0x2 << 6)
+
+#define        APBH_DMA_BURST_SIZE_CH2_MASK                    (0x3 << 4)
+#define        APBH_DMA_BURST_SIZE_CH2_OFFSET                  4
+#define        APBH_DMA_BURST_SIZE_CH2_BURST0                  (0x0 << 4)
+#define        APBH_DMA_BURST_SIZE_CH2_BURST4                  (0x1 << 4)
+#define        APBH_DMA_BURST_SIZE_CH2_BURST8                  (0x2 << 4)
+#define        APBH_DMA_BURST_SIZE_CH1_MASK                    (0x3 << 2)
+#define        APBH_DMA_BURST_SIZE_CH1_OFFSET                  2
+#define        APBH_DMA_BURST_SIZE_CH1_BURST0                  (0x0 << 2)
+#define        APBH_DMA_BURST_SIZE_CH1_BURST4                  (0x1 << 2)
+#define        APBH_DMA_BURST_SIZE_CH1_BURST8                  (0x2 << 2)
+
+#define        APBH_DMA_BURST_SIZE_CH0_MASK                    0x3
+#define        APBH_DMA_BURST_SIZE_CH0_OFFSET                  0
+#define        APBH_DMA_BURST_SIZE_CH0_BURST0                  0x0
+#define        APBH_DMA_BURST_SIZE_CH0_BURST4                  0x1
+#define        APBH_DMA_BURST_SIZE_CH0_BURST8                  0x2
+
+#define        APBH_DEBUG_GPMI_ONE_FIFO                        (1 << 0)
+#endif
+
+#define        APBH_CHn_CURCMDAR_CMD_ADDR_MASK                 0xffffffff
+#define        APBH_CHn_CURCMDAR_CMD_ADDR_OFFSET               0
+
+#define        APBH_CHn_NXTCMDAR_CMD_ADDR_MASK                 0xffffffff
+#define        APBH_CHn_NXTCMDAR_CMD_ADDR_OFFSET               0
+
+#define        APBH_CHn_CMD_XFER_COUNT_MASK                    (0xffff << 16)
+#define        APBH_CHn_CMD_XFER_COUNT_OFFSET                  16
+#define        APBH_CHn_CMD_CMDWORDS_MASK                      (0xf << 12)
+#define        APBH_CHn_CMD_CMDWORDS_OFFSET                    12
+#define        APBH_CHn_CMD_HALTONTERMINATE                    (1 << 8)
+#define        APBH_CHn_CMD_WAIT4ENDCMD                        (1 << 7)
+#define        APBH_CHn_CMD_SEMAPHORE                          (1 << 6)
+#define        APBH_CHn_CMD_NANDWAIT4READY                     (1 << 5)
+#define        APBH_CHn_CMD_NANDLOCK                           (1 << 4)
+#define        APBH_CHn_CMD_IRQONCMPLT                         (1 << 3)
+#define        APBH_CHn_CMD_CHAIN                              (1 << 2)
+#define        APBH_CHn_CMD_COMMAND_MASK                       0x3
+#define        APBH_CHn_CMD_COMMAND_OFFSET                     0
+#define        APBH_CHn_CMD_COMMAND_NO_DMA_XFER                0x0
+#define        APBH_CHn_CMD_COMMAND_DMA_WRITE                  0x1
+#define        APBH_CHn_CMD_COMMAND_DMA_READ                   0x2
+#define        APBH_CHn_CMD_COMMAND_DMA_SENSE                  0x3
+
+#define        APBH_CHn_BAR_ADDRESS_MASK                       0xffffffff
+#define        APBH_CHn_BAR_ADDRESS_OFFSET                     0
+
+#define        APBH_CHn_SEMA_RSVD2_MASK                        (0xff << 24)
+#define        APBH_CHn_SEMA_RSVD2_OFFSET                      24
+#define        APBH_CHn_SEMA_PHORE_MASK                        (0xff << 16)
+#define        APBH_CHn_SEMA_PHORE_OFFSET                      16
+#define        APBH_CHn_SEMA_RSVD1_MASK                        (0xff << 8)
+#define        APBH_CHn_SEMA_RSVD1_OFFSET                      8
+#define        APBH_CHn_SEMA_INCREMENT_SEMA_MASK               (0xff << 0)
+#define        APBH_CHn_SEMA_INCREMENT_SEMA_OFFSET             0
+
+#define        APBH_CHn_DEBUG1_REQ                             (1 << 31)
+#define        APBH_CHn_DEBUG1_BURST                           (1 << 30)
+#define        APBH_CHn_DEBUG1_KICK                            (1 << 29)
+#define        APBH_CHn_DEBUG1_END                             (1 << 28)
+#define        APBH_CHn_DEBUG1_SENSE                           (1 << 27)
+#define        APBH_CHn_DEBUG1_READY                           (1 << 26)
+#define        APBH_CHn_DEBUG1_LOCK                            (1 << 25)
+#define        APBH_CHn_DEBUG1_NEXTCMDADDRVALID                (1 << 24)
+#define        APBH_CHn_DEBUG1_RD_FIFO_EMPTY                   (1 << 23)
+#define        APBH_CHn_DEBUG1_RD_FIFO_FULL                    (1 << 22)
+#define        APBH_CHn_DEBUG1_WR_FIFO_EMPTY                   (1 << 21)
+#define        APBH_CHn_DEBUG1_WR_FIFO_FULL                    (1 << 20)
+#define        APBH_CHn_DEBUG1_RSVD1_MASK                      (0x7fff << 5)
+#define        APBH_CHn_DEBUG1_RSVD1_OFFSET                    5
+#define        APBH_CHn_DEBUG1_STATEMACHINE_MASK               0x1f
+#define        APBH_CHn_DEBUG1_STATEMACHINE_OFFSET             0
+#define        APBH_CHn_DEBUG1_STATEMACHINE_IDLE               0x00
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD1           0x01
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD3           0x02
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD2           0x03
+#define        APBH_CHn_DEBUG1_STATEMACHINE_XFER_DECODE        0x04
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_WAIT           0x05
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD4           0x06
+#define        APBH_CHn_DEBUG1_STATEMACHINE_PIO_REQ            0x07
+#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_FLUSH         0x08
+#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_WAIT          0x09
+#define        APBH_CHn_DEBUG1_STATEMACHINE_WRITE              0x0c
+#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_REQ           0x0d
+#define        APBH_CHn_DEBUG1_STATEMACHINE_CHECK_CHAIN        0x0e
+#define        APBH_CHn_DEBUG1_STATEMACHINE_XFER_COMPLETE      0x0f
+#define        APBH_CHn_DEBUG1_STATEMACHINE_TERMINATE          0x14
+#define        APBH_CHn_DEBUG1_STATEMACHINE_WAIT_END           0x15
+#define        APBH_CHn_DEBUG1_STATEMACHINE_WRITE_WAIT         0x1c
+#define        APBH_CHn_DEBUG1_STATEMACHINE_HALT_AFTER_TERM    0x1d
+#define        APBH_CHn_DEBUG1_STATEMACHINE_CHECK_WAIT         0x1e
+#define        APBH_CHn_DEBUG1_STATEMACHINE_WAIT_READY         0x1f
+
+#define        APBH_CHn_DEBUG2_APB_BYTES_MASK                  (0xffff << 16)
+#define        APBH_CHn_DEBUG2_APB_BYTES_OFFSET                16
+#define        APBH_CHn_DEBUG2_AHB_BYTES_MASK                  0xffff
+#define        APBH_CHn_DEBUG2_AHB_BYTES_OFFSET                0
+
+#define        APBH_VERSION_MAJOR_MASK                         (0xff << 24)
+#define        APBH_VERSION_MAJOR_OFFSET                       24
+#define        APBH_VERSION_MINOR_MASK                         (0xff << 16)
+#define        APBH_VERSION_MINOR_OFFSET                       16
+#define        APBH_VERSION_STEP_MASK                          0xffff
+#define        APBH_VERSION_STEP_OFFSET                        0
+
+#endif /* __REGS_APBH_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-bch.h b/arch/arm/include/asm/imx-common/regs-bch.h
new file mode 100644 (file)
index 0000000..3a73de4
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * Freescale i.MX28 BCH Register Definitions
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * 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
+ *
+ */
+
+#ifndef __MX28_REGS_BCH_H__
+#define __MX28_REGS_BCH_H__
+
+#include <asm/imx-common/regs-common.h>
+
+#ifndef        __ASSEMBLY__
+struct mxs_bch_regs {
+       mxs_reg_32(hw_bch_ctrl)
+       mxs_reg_32(hw_bch_status0)
+       mxs_reg_32(hw_bch_mode)
+       mxs_reg_32(hw_bch_encodeptr)
+       mxs_reg_32(hw_bch_dataptr)
+       mxs_reg_32(hw_bch_metaptr)
+
+       uint32_t        reserved[4];
+
+       mxs_reg_32(hw_bch_layoutselect)
+       mxs_reg_32(hw_bch_flash0layout0)
+       mxs_reg_32(hw_bch_flash0layout1)
+       mxs_reg_32(hw_bch_flash1layout0)
+       mxs_reg_32(hw_bch_flash1layout1)
+       mxs_reg_32(hw_bch_flash2layout0)
+       mxs_reg_32(hw_bch_flash2layout1)
+       mxs_reg_32(hw_bch_flash3layout0)
+       mxs_reg_32(hw_bch_flash3layout1)
+       mxs_reg_32(hw_bch_dbgkesread)
+       mxs_reg_32(hw_bch_dbgcsferead)
+       mxs_reg_32(hw_bch_dbgsyndegread)
+       mxs_reg_32(hw_bch_dbgahbmread)
+       mxs_reg_32(hw_bch_blockname)
+       mxs_reg_32(hw_bch_version)
+};
+#endif
+
+#define        BCH_CTRL_SFTRST                                 (1 << 31)
+#define        BCH_CTRL_CLKGATE                                (1 << 30)
+#define        BCH_CTRL_DEBUGSYNDROME                          (1 << 22)
+#define        BCH_CTRL_M2M_LAYOUT_MASK                        (0x3 << 18)
+#define        BCH_CTRL_M2M_LAYOUT_OFFSET                      18
+#define        BCH_CTRL_M2M_ENCODE                             (1 << 17)
+#define        BCH_CTRL_M2M_ENABLE                             (1 << 16)
+#define        BCH_CTRL_DEBUG_STALL_IRQ_EN                     (1 << 10)
+#define        BCH_CTRL_COMPLETE_IRQ_EN                        (1 << 8)
+#define        BCH_CTRL_BM_ERROR_IRQ                           (1 << 3)
+#define        BCH_CTRL_DEBUG_STALL_IRQ                        (1 << 2)
+#define        BCH_CTRL_COMPLETE_IRQ                           (1 << 0)
+
+#define        BCH_STATUS0_HANDLE_MASK                         (0xfff << 20)
+#define        BCH_STATUS0_HANDLE_OFFSET                       20
+#define        BCH_STATUS0_COMPLETED_CE_MASK                   (0xf << 16)
+#define        BCH_STATUS0_COMPLETED_CE_OFFSET                 16
+#define        BCH_STATUS0_STATUS_BLK0_MASK                    (0xff << 8)
+#define        BCH_STATUS0_STATUS_BLK0_OFFSET                  8
+#define        BCH_STATUS0_STATUS_BLK0_ZERO                    (0x00 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERROR1                  (0x01 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERROR2                  (0x02 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERROR3                  (0x03 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERROR4                  (0x04 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_UNCORRECTABLE           (0xfe << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERASED                  (0xff << 8)
+#define        BCH_STATUS0_ALLONES                             (1 << 4)
+#define        BCH_STATUS0_CORRECTED                           (1 << 3)
+#define        BCH_STATUS0_UNCORRECTABLE                       (1 << 2)
+
+#define        BCH_MODE_ERASE_THRESHOLD_MASK                   0xff
+#define        BCH_MODE_ERASE_THRESHOLD_OFFSET                 0
+
+#define        BCH_ENCODEPTR_ADDR_MASK                         0xffffffff
+#define        BCH_ENCODEPTR_ADDR_OFFSET                       0
+
+#define        BCH_DATAPTR_ADDR_MASK                           0xffffffff
+#define        BCH_DATAPTR_ADDR_OFFSET                         0
+
+#define        BCH_METAPTR_ADDR_MASK                           0xffffffff
+#define        BCH_METAPTR_ADDR_OFFSET                         0
+
+#define        BCH_LAYOUTSELECT_CS15_SELECT_MASK               (0x3 << 30)
+#define        BCH_LAYOUTSELECT_CS15_SELECT_OFFSET             30
+#define        BCH_LAYOUTSELECT_CS14_SELECT_MASK               (0x3 << 28)
+#define        BCH_LAYOUTSELECT_CS14_SELECT_OFFSET             28
+#define        BCH_LAYOUTSELECT_CS13_SELECT_MASK               (0x3 << 26)
+#define        BCH_LAYOUTSELECT_CS13_SELECT_OFFSET             26
+#define        BCH_LAYOUTSELECT_CS12_SELECT_MASK               (0x3 << 24)
+#define        BCH_LAYOUTSELECT_CS12_SELECT_OFFSET             24
+#define        BCH_LAYOUTSELECT_CS11_SELECT_MASK               (0x3 << 22)
+#define        BCH_LAYOUTSELECT_CS11_SELECT_OFFSET             22
+#define        BCH_LAYOUTSELECT_CS10_SELECT_MASK               (0x3 << 20)
+#define        BCH_LAYOUTSELECT_CS10_SELECT_OFFSET             20
+#define        BCH_LAYOUTSELECT_CS9_SELECT_MASK                (0x3 << 18)
+#define        BCH_LAYOUTSELECT_CS9_SELECT_OFFSET              18
+#define        BCH_LAYOUTSELECT_CS8_SELECT_MASK                (0x3 << 16)
+#define        BCH_LAYOUTSELECT_CS8_SELECT_OFFSET              16
+#define        BCH_LAYOUTSELECT_CS7_SELECT_MASK                (0x3 << 14)
+#define        BCH_LAYOUTSELECT_CS7_SELECT_OFFSET              14
+#define        BCH_LAYOUTSELECT_CS6_SELECT_MASK                (0x3 << 12)
+#define        BCH_LAYOUTSELECT_CS6_SELECT_OFFSET              12
+#define        BCH_LAYOUTSELECT_CS5_SELECT_MASK                (0x3 << 10)
+#define        BCH_LAYOUTSELECT_CS5_SELECT_OFFSET              10
+#define        BCH_LAYOUTSELECT_CS4_SELECT_MASK                (0x3 << 8)
+#define        BCH_LAYOUTSELECT_CS4_SELECT_OFFSET              8
+#define        BCH_LAYOUTSELECT_CS3_SELECT_MASK                (0x3 << 6)
+#define        BCH_LAYOUTSELECT_CS3_SELECT_OFFSET              6
+#define        BCH_LAYOUTSELECT_CS2_SELECT_MASK                (0x3 << 4)
+#define        BCH_LAYOUTSELECT_CS2_SELECT_OFFSET              4
+#define        BCH_LAYOUTSELECT_CS1_SELECT_MASK                (0x3 << 2)
+#define        BCH_LAYOUTSELECT_CS1_SELECT_OFFSET              2
+#define        BCH_LAYOUTSELECT_CS0_SELECT_MASK                (0x3 << 0)
+#define        BCH_LAYOUTSELECT_CS0_SELECT_OFFSET              0
+
+#define        BCH_FLASHLAYOUT0_NBLOCKS_MASK                   (0xff << 24)
+#define        BCH_FLASHLAYOUT0_NBLOCKS_OFFSET                 24
+#define        BCH_FLASHLAYOUT0_META_SIZE_MASK                 (0xff << 16)
+#define        BCH_FLASHLAYOUT0_META_SIZE_OFFSET               16
+#define        BCH_FLASHLAYOUT0_ECC0_MASK                      (0xf << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_OFFSET                    12
+#define        BCH_FLASHLAYOUT0_ECC0_NONE                      (0x0 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC2                      (0x1 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC4                      (0x2 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC6                      (0x3 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC8                      (0x4 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC10                     (0x5 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC12                     (0x6 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC14                     (0x7 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC16                     (0x8 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC18                     (0x9 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC20                     (0xa << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC22                     (0xb << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC24                     (0xc << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC26                     (0xd << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC28                     (0xe << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC30                     (0xf << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC32                     (0x10 << 12)
+#define        BCH_FLASHLAYOUT0_GF13_0_GF14_1                  (1 << 10)
+#define        BCH_FLASHLAYOUT0_DATA0_SIZE_MASK                0xfff
+#define        BCH_FLASHLAYOUT0_DATA0_SIZE_OFFSET              0
+
+#define        BCH_FLASHLAYOUT1_PAGE_SIZE_MASK                 (0xffff << 16)
+#define        BCH_FLASHLAYOUT1_PAGE_SIZE_OFFSET               16
+#define        BCH_FLASHLAYOUT1_ECCN_MASK                      (0xf << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_OFFSET                    12
+#define        BCH_FLASHLAYOUT1_ECCN_NONE                      (0x0 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC2                      (0x1 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC4                      (0x2 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC6                      (0x3 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC8                      (0x4 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC10                     (0x5 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC12                     (0x6 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC14                     (0x7 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC16                     (0x8 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC18                     (0x9 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC20                     (0xa << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC22                     (0xb << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC24                     (0xc << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC26                     (0xd << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC28                     (0xe << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC30                     (0xf << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC32                     (0x10 << 12)
+#define        BCH_FLASHLAYOUT1_GF13_0_GF14_1                  (1 << 10)
+#define        BCH_FLASHLAYOUT1_DATAN_SIZE_MASK                0xfff
+#define        BCH_FLASHLAYOUT1_DATAN_SIZE_OFFSET              0
+
+#define        BCH_DEBUG0_RSVD1_MASK                           (0x1f << 27)
+#define        BCH_DEBUG0_RSVD1_OFFSET                         27
+#define        BCH_DEBUG0_ROM_BIST_ENABLE                      (1 << 26)
+#define        BCH_DEBUG0_ROM_BIST_COMPLETE                    (1 << 25)
+#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_MASK       (0x1ff << 16)
+#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_OFFSET     16
+#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_NORMAL     (0x0 << 16)
+#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_TEST_MODE  (0x1 << 16)
+#define        BCH_DEBUG0_KES_DEBUG_SHIFT_SYND                 (1 << 15)
+#define        BCH_DEBUG0_KES_DEBUG_PAYLOAD_FLAG               (1 << 14)
+#define        BCH_DEBUG0_KES_DEBUG_MODE4K                     (1 << 13)
+#define        BCH_DEBUG0_KES_DEBUG_KICK                       (1 << 12)
+#define        BCH_DEBUG0_KES_STANDALONE                       (1 << 11)
+#define        BCH_DEBUG0_KES_DEBUG_STEP                       (1 << 10)
+#define        BCH_DEBUG0_KES_DEBUG_STALL                      (1 << 9)
+#define        BCH_DEBUG0_BM_KES_TEST_BYPASS                   (1 << 8)
+#define        BCH_DEBUG0_RSVD0_MASK                           (0x3 << 6)
+#define        BCH_DEBUG0_RSVD0_OFFSET                         6
+#define        BCH_DEBUG0_DEBUG_REG_SELECT_MASK                0x3f
+#define        BCH_DEBUG0_DEBUG_REG_SELECT_OFFSET              0
+
+#define        BCH_DBGKESREAD_VALUES_MASK                      0xffffffff
+#define        BCH_DBGKESREAD_VALUES_OFFSET                    0
+
+#define        BCH_DBGCSFEREAD_VALUES_MASK                     0xffffffff
+#define        BCH_DBGCSFEREAD_VALUES_OFFSET                   0
+
+#define        BCH_DBGSYNDGENREAD_VALUES_MASK                  0xffffffff
+#define        BCH_DBGSYNDGENREAD_VALUES_OFFSET                0
+
+#define        BCH_DBGAHBMREAD_VALUES_MASK                     0xffffffff
+#define        BCH_DBGAHBMREAD_VALUES_OFFSET                   0
+
+#define        BCH_BLOCKNAME_NAME_MASK                         0xffffffff
+#define        BCH_BLOCKNAME_NAME_OFFSET                       0
+
+#define        BCH_VERSION_MAJOR_MASK                          (0xff << 24)
+#define        BCH_VERSION_MAJOR_OFFSET                        24
+#define        BCH_VERSION_MINOR_MASK                          (0xff << 16)
+#define        BCH_VERSION_MINOR_OFFSET                        16
+#define        BCH_VERSION_STEP_MASK                           0xffff
+#define        BCH_VERSION_STEP_OFFSET                         0
+
+#endif /* __MX28_REGS_BCH_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-common.h b/arch/arm/include/asm/imx-common/regs-common.h
new file mode 100644 (file)
index 0000000..bcea419
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Freescale i.MXS Register Accessors
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * 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
+ *
+ */
+
+#ifndef __MXS_REGS_COMMON_H__
+#define __MXS_REGS_COMMON_H__
+
+/*
+ * The i.MXS has interesting feature when it comes to register access. There
+ * are four kinds of access to one particular register. Those are:
+ *
+ * 1) Common read/write access. To use this mode, just write to the address of
+ *    the register.
+ * 2) Set bits only access. To set bits, write which bits you want to set to the
+ *    address of the register + 0x4.
+ * 3) Clear bits only access. To clear bits, write which bits you want to clear
+ *    to the address of the register + 0x8.
+ * 4) Toggle bits only access. To toggle bits, write which bits you want to
+ *    toggle to the address of the register + 0xc.
+ *
+ * IMPORTANT NOTE: Not all registers support accesses 2-4! Also, not all bits
+ * can be set/cleared by pure write as in access type 1, some need to be
+ * explicitly set/cleared by using access type 2-3.
+ *
+ * The following macros and structures allow the user to either access the
+ * register in all aforementioned modes (by accessing reg_name, reg_name_set,
+ * reg_name_clr, reg_name_tog) or pass the register structure further into
+ * various functions with correct type information (by accessing reg_name_reg).
+ *
+ */
+
+#define        __mxs_reg_8(name)               \
+       uint8_t name[4];                \
+       uint8_t name##_set[4];          \
+       uint8_t name##_clr[4];          \
+       uint8_t name##_tog[4];          \
+
+#define        __mxs_reg_32(name)              \
+       uint32_t name;                  \
+       uint32_t name##_set;            \
+       uint32_t name##_clr;            \
+       uint32_t name##_tog;
+
+struct mxs_register_8 {
+       __mxs_reg_8(reg)
+};
+
+struct mxs_register_32 {
+       __mxs_reg_32(reg)
+};
+
+#define        mxs_reg_8(name)                         \
+       union {                                         \
+               struct { __mxs_reg_8(name) };           \
+               struct mxs_register_8 name##_reg;       \
+       };
+
+#define        mxs_reg_32(name)                                \
+       union {                                         \
+               struct { __mxs_reg_32(name) };          \
+               struct mxs_register_32 name##_reg;      \
+       };
+
+#endif /* __MXS_REGS_COMMON_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-gpmi.h b/arch/arm/include/asm/imx-common/regs-gpmi.h
new file mode 100644 (file)
index 0000000..3409b94
--- /dev/null
@@ -0,0 +1,222 @@
+/*
+ * Freescale i.MX28 GPMI Register Definitions
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * 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
+ *
+ */
+
+#ifndef __MX28_REGS_GPMI_H__
+#define __MX28_REGS_GPMI_H__
+
+#include <asm/imx-common/regs-common.h>
+
+#ifndef        __ASSEMBLY__
+struct mxs_gpmi_regs {
+       mxs_reg_32(hw_gpmi_ctrl0)
+       mxs_reg_32(hw_gpmi_compare)
+       mxs_reg_32(hw_gpmi_eccctrl)
+       mxs_reg_32(hw_gpmi_ecccount)
+       mxs_reg_32(hw_gpmi_payload)
+       mxs_reg_32(hw_gpmi_auxiliary)
+       mxs_reg_32(hw_gpmi_ctrl1)
+       mxs_reg_32(hw_gpmi_timing0)
+       mxs_reg_32(hw_gpmi_timing1)
+
+       uint32_t        reserved[4];
+
+       mxs_reg_32(hw_gpmi_data)
+       mxs_reg_32(hw_gpmi_stat)
+       mxs_reg_32(hw_gpmi_debug)
+       mxs_reg_32(hw_gpmi_version)
+};
+#endif
+
+#define        GPMI_CTRL0_SFTRST                               (1 << 31)
+#define        GPMI_CTRL0_CLKGATE                              (1 << 30)
+#define        GPMI_CTRL0_RUN                                  (1 << 29)
+#define        GPMI_CTRL0_DEV_IRQ_EN                           (1 << 28)
+#define        GPMI_CTRL0_LOCK_CS                              (1 << 27)
+#define        GPMI_CTRL0_UDMA                                 (1 << 26)
+#define        GPMI_CTRL0_COMMAND_MODE_MASK                    (0x3 << 24)
+#define        GPMI_CTRL0_COMMAND_MODE_OFFSET                  24
+#define        GPMI_CTRL0_COMMAND_MODE_WRITE                   (0x0 << 24)
+#define        GPMI_CTRL0_COMMAND_MODE_READ                    (0x1 << 24)
+#define        GPMI_CTRL0_COMMAND_MODE_READ_AND_COMPARE        (0x2 << 24)
+#define        GPMI_CTRL0_COMMAND_MODE_WAIT_FOR_READY          (0x3 << 24)
+#define        GPMI_CTRL0_WORD_LENGTH                          (1 << 23)
+#define        GPMI_CTRL0_CS_MASK                              (0x7 << 20)
+#define        GPMI_CTRL0_CS_OFFSET                            20
+#define        GPMI_CTRL0_ADDRESS_MASK                         (0x7 << 17)
+#define        GPMI_CTRL0_ADDRESS_OFFSET                       17
+#define        GPMI_CTRL0_ADDRESS_NAND_DATA                    (0x0 << 17)
+#define        GPMI_CTRL0_ADDRESS_NAND_CLE                     (0x1 << 17)
+#define        GPMI_CTRL0_ADDRESS_NAND_ALE                     (0x2 << 17)
+#define        GPMI_CTRL0_ADDRESS_INCREMENT                    (1 << 16)
+#define        GPMI_CTRL0_XFER_COUNT_MASK                      0xffff
+#define        GPMI_CTRL0_XFER_COUNT_OFFSET                    0
+
+#define        GPMI_COMPARE_MASK_MASK                          (0xffff << 16)
+#define        GPMI_COMPARE_MASK_OFFSET                        16
+#define        GPMI_COMPARE_REFERENCE_MASK                     0xffff
+#define        GPMI_COMPARE_REFERENCE_OFFSET                   0
+
+#define        GPMI_ECCCTRL_HANDLE_MASK                        (0xffff << 16)
+#define        GPMI_ECCCTRL_HANDLE_OFFSET                      16
+#define        GPMI_ECCCTRL_ECC_CMD_MASK                       (0x3 << 13)
+#define        GPMI_ECCCTRL_ECC_CMD_OFFSET                     13
+#define        GPMI_ECCCTRL_ECC_CMD_DECODE                     (0x0 << 13)
+#define        GPMI_ECCCTRL_ECC_CMD_ENCODE                     (0x1 << 13)
+#define        GPMI_ECCCTRL_ENABLE_ECC                         (1 << 12)
+#define        GPMI_ECCCTRL_BUFFER_MASK_MASK                   0x1ff
+#define        GPMI_ECCCTRL_BUFFER_MASK_OFFSET                 0
+#define        GPMI_ECCCTRL_BUFFER_MASK_BCH_AUXONLY            0x100
+#define        GPMI_ECCCTRL_BUFFER_MASK_BCH_PAGE               0x1ff
+
+#define        GPMI_ECCCOUNT_COUNT_MASK                        0xffff
+#define        GPMI_ECCCOUNT_COUNT_OFFSET                      0
+
+#define        GPMI_PAYLOAD_ADDRESS_MASK                       (0x3fffffff << 2)
+#define        GPMI_PAYLOAD_ADDRESS_OFFSET                     2
+
+#define        GPMI_AUXILIARY_ADDRESS_MASK                     (0x3fffffff << 2)
+#define        GPMI_AUXILIARY_ADDRESS_OFFSET                   2
+
+#define        GPMI_CTRL1_DECOUPLE_CS                          (1 << 24)
+#define        GPMI_CTRL1_WRN_DLY_SEL_MASK                     (0x3 << 22)
+#define        GPMI_CTRL1_WRN_DLY_SEL_OFFSET                   22
+#define        GPMI_CTRL1_TIMEOUT_IRQ_EN                       (1 << 20)
+#define        GPMI_CTRL1_GANGED_RDYBUSY                       (1 << 19)
+#define        GPMI_CTRL1_BCH_MODE                             (1 << 18)
+#define        GPMI_CTRL1_DLL_ENABLE                           (1 << 17)
+#define        GPMI_CTRL1_HALF_PERIOD                          (1 << 16)
+#define        GPMI_CTRL1_RDN_DELAY_MASK                       (0xf << 12)
+#define        GPMI_CTRL1_RDN_DELAY_OFFSET                     12
+#define        GPMI_CTRL1_DMA2ECC_MODE                         (1 << 11)
+#define        GPMI_CTRL1_DEV_IRQ                              (1 << 10)
+#define        GPMI_CTRL1_TIMEOUT_IRQ                          (1 << 9)
+#define        GPMI_CTRL1_BURST_EN                             (1 << 8)
+#define        GPMI_CTRL1_ABORT_WAIT_REQUEST                   (1 << 7)
+#define        GPMI_CTRL1_ABORT_WAIT_FOR_READY_CHANNEL_MASK    (0x7 << 4)
+#define        GPMI_CTRL1_ABORT_WAIT_FOR_READY_CHANNEL_OFFSET  4
+#define        GPMI_CTRL1_DEV_RESET                            (1 << 3)
+#define        GPMI_CTRL1_ATA_IRQRDY_POLARITY                  (1 << 2)
+#define        GPMI_CTRL1_CAMERA_MODE                          (1 << 1)
+#define        GPMI_CTRL1_GPMI_MODE                            (1 << 0)
+
+#define        GPMI_TIMING0_ADDRESS_SETUP_MASK                 (0xff << 16)
+#define        GPMI_TIMING0_ADDRESS_SETUP_OFFSET               16
+#define        GPMI_TIMING0_DATA_HOLD_MASK                     (0xff << 8)
+#define        GPMI_TIMING0_DATA_HOLD_OFFSET                   8
+#define        GPMI_TIMING0_DATA_SETUP_MASK                    0xff
+#define        GPMI_TIMING0_DATA_SETUP_OFFSET                  0
+
+#define        GPMI_TIMING1_DEVICE_BUSY_TIMEOUT_MASK           (0xffff << 16)
+#define        GPMI_TIMING1_DEVICE_BUSY_TIMEOUT_OFFSET         16
+
+#define        GPMI_TIMING2_UDMA_TRP_MASK                      (0xff << 24)
+#define        GPMI_TIMING2_UDMA_TRP_OFFSET                    24
+#define        GPMI_TIMING2_UDMA_ENV_MASK                      (0xff << 16)
+#define        GPMI_TIMING2_UDMA_ENV_OFFSET                    16
+#define        GPMI_TIMING2_UDMA_HOLD_MASK                     (0xff << 8)
+#define        GPMI_TIMING2_UDMA_HOLD_OFFSET                   8
+#define        GPMI_TIMING2_UDMA_SETUP_MASK                    0xff
+#define        GPMI_TIMING2_UDMA_SETUP_OFFSET                  0
+
+#define        GPMI_DATA_DATA_MASK                             0xffffffff
+#define        GPMI_DATA_DATA_OFFSET                           0
+
+#define        GPMI_STAT_READY_BUSY_MASK                       (0xff << 24)
+#define        GPMI_STAT_READY_BUSY_OFFSET                     24
+#define        GPMI_STAT_RDY_TIMEOUT_MASK                      (0xff << 16)
+#define        GPMI_STAT_RDY_TIMEOUT_OFFSET                    16
+#define        GPMI_STAT_DEV7_ERROR                            (1 << 15)
+#define        GPMI_STAT_DEV6_ERROR                            (1 << 14)
+#define        GPMI_STAT_DEV5_ERROR                            (1 << 13)
+#define        GPMI_STAT_DEV4_ERROR                            (1 << 12)
+#define        GPMI_STAT_DEV3_ERROR                            (1 << 11)
+#define        GPMI_STAT_DEV2_ERROR                            (1 << 10)
+#define        GPMI_STAT_DEV1_ERROR                            (1 << 9)
+#define        GPMI_STAT_DEV0_ERROR                            (1 << 8)
+#define        GPMI_STAT_ATA_IRQ                               (1 << 4)
+#define        GPMI_STAT_INVALID_BUFFER_MASK                   (1 << 3)
+#define        GPMI_STAT_FIFO_EMPTY                            (1 << 2)
+#define        GPMI_STAT_FIFO_FULL                             (1 << 1)
+#define        GPMI_STAT_PRESENT                               (1 << 0)
+
+#define        GPMI_DEBUG_WAIT_FOR_READY_END_MASK              (0xff << 24)
+#define        GPMI_DEBUG_WAIT_FOR_READY_END_OFFSET            24
+#define        GPMI_DEBUG_DMA_SENSE_MASK                       (0xff << 16)
+#define        GPMI_DEBUG_DMA_SENSE_OFFSET                     16
+#define        GPMI_DEBUG_DMAREQ_MASK                          (0xff << 8)
+#define        GPMI_DEBUG_DMAREQ_OFFSET                        8
+#define        GPMI_DEBUG_CMD_END_MASK                         0xff
+#define        GPMI_DEBUG_CMD_END_OFFSET                       0
+
+#define        GPMI_VERSION_MAJOR_MASK                         (0xff << 24)
+#define        GPMI_VERSION_MAJOR_OFFSET                       24
+#define        GPMI_VERSION_MINOR_MASK                         (0xff << 16)
+#define        GPMI_VERSION_MINOR_OFFSET                       16
+#define        GPMI_VERSION_STEP_MASK                          0xffff
+#define        GPMI_VERSION_STEP_OFFSET                        0
+
+#define        GPMI_DEBUG2_UDMA_STATE_MASK                     (0xf << 24)
+#define        GPMI_DEBUG2_UDMA_STATE_OFFSET                   24
+#define        GPMI_DEBUG2_BUSY                                (1 << 23)
+#define        GPMI_DEBUG2_PIN_STATE_MASK                      (0x7 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_OFFSET                    20
+#define        GPMI_DEBUG2_PIN_STATE_PSM_IDLE                  (0x0 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_BYTCNT                (0x1 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_ADDR                  (0x2 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_STALL                 (0x3 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_STROBE                (0x4 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_ATARDY                (0x5 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_DHOLD                 (0x6 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_DONE                  (0x7 << 20)
+#define        GPMI_DEBUG2_MAIN_STATE_MASK                     (0xf << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_OFFSET                   16
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_IDLE                 (0x0 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_BYTCNT               (0x1 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFE               (0x2 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFR               (0x3 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_DMAREQ               (0x4 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_DMAACK               (0x5 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFF               (0x6 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_LDFIFO               (0x7 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_LDDMAR               (0x8 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_RDCMP                (0x9 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_DONE                 (0xa << 16)
+#define        GPMI_DEBUG2_SYND2GPMI_BE_MASK                   (0xf << 12)
+#define        GPMI_DEBUG2_SYND2GPMI_BE_OFFSET                 12
+#define        GPMI_DEBUG2_GPMI2SYND_VALID                     (1 << 11)
+#define        GPMI_DEBUG2_GPMI2SYND_READY                     (1 << 10)
+#define        GPMI_DEBUG2_SYND2GPMI_VALID                     (1 << 9)
+#define        GPMI_DEBUG2_SYND2GPMI_READY                     (1 << 8)
+#define        GPMI_DEBUG2_VIEW_DELAYED_RDN                    (1 << 7)
+#define        GPMI_DEBUG2_UPDATE_WINDOW                       (1 << 6)
+#define        GPMI_DEBUG2_RDN_TAP_MASK                        0x3f
+#define        GPMI_DEBUG2_RDN_TAP_OFFSET                      0
+
+#define        GPMI_DEBUG3_APB_WORD_CNTR_MASK                  (0xffff << 16)
+#define        GPMI_DEBUG3_APB_WORD_CNTR_OFFSET                16
+#define        GPMI_DEBUG3_DEV_WORD_CNTR_MASK                  0xffff
+#define        GPMI_DEBUG3_DEV_WORD_CNTR_OFFSET                0
+
+#endif /* __MX28_REGS_GPMI_H__ */
index 0c1cd831e01df689ef1c4a7ac421b55f5a299fa4..eb46bcfcbfa4aee2c8ec839332154ed9a1626ba5 100644 (file)
@@ -31,7 +31,8 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/arch/dma.h>
+#include <asm/imx-common/dma.h>
+#include <asm/imx-common/regs-apbh.h>
 
 static struct mxs_dma_chan mxs_dma_channels[MXS_MAX_DMA_CHANNELS];
 
index a89660f130bd5509245400f7155ebf3ba6ca4d31..fdaf9c763e85d66d98957c8793789fcd3ea43553 100644 (file)
@@ -41,7 +41,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/arch/dma.h>
+#include <asm/imx-common/dma.h>
 #include <bouncebuf.h>
 
 struct mxsmmc_priv {
index e38e15125407bb0f2361ac04e96edae893294c7d..c21fd692c2f39ada41e01746a68522149e92caee 100644 (file)
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
+#include <asm/imx-common/regs-bch.h>
+#include <asm/imx-common/regs-gpmi.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/arch/dma.h>
+#include <asm/imx-common/dma.h>
 
 #define        MXS_NAND_DMA_DESCRIPTOR_COUNT           4
 
index aa999f9a945583a740e75af2e831b56d7406dab4..db98a136e6565f4019d7fe5ec23ac2e3ca91a3d9 100644 (file)
@@ -31,7 +31,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/arch/dma.h>
+#include <asm/imx-common/dma.h>
 
 #define        MXS_SPI_MAX_TIMEOUT     1000000
 #define        MXS_SPI_PORT_OFFSET     0x2000