[U-Boot] [PATCH 00/11] Add BF60x processor support to Blackfin architecture.

From: Sonic Zhang sonic.zhang@analog.com
ADSP-BF60x is the new generation Blackfin® dual-core processor announced by Analog Devices in late March, 2012. This patch set adds BF60x processor support to Das U-Boot Blackfin architecture.
For more information, see http://blackfin.uclinux.org .
In addition, the maintainer of the Blackfin system is changed to Sonic Zhang sonic.adi@gmail.com, because Mike Frysinger is no longer with Analog Devices any more.
Bob Liu (5): Blackfin: bf60x: new processor header files Blackfin: bf60x: add dma support Blackfin: bf60x: support big cplb page Blackfin: bf60x: add gpio support Blackfin: bf60x: add hw watchdog support
Scott Jiang (1): Blackfin: spi: add bf6xx spi driver
Sonic Zhang (4): Blackfin: bf60x: Port blackfin core architecture code to boot on bf60x. Blackfin: bf60x: add serial support blackfin: bf609: add board and headers files to support bf609 Blackfin: bf60x: add rsi/sdh support
Steven Miao (1): Blackfin: bf60x: add resume from hibernate
MAINTAINERS | 3 +- arch/blackfin/cpu/cpu.c | 4 +- arch/blackfin/cpu/gpio.c | 36 +- arch/blackfin/cpu/initcode.c | 370 ++- arch/blackfin/cpu/initcode.h | 52 + arch/blackfin/cpu/reset.c | 6 + arch/blackfin/cpu/serial.c | 81 +- arch/blackfin/cpu/serial.h | 222 +-- arch/blackfin/cpu/serial1.h | 275 ++ arch/blackfin/cpu/serial4.h | 139 + arch/blackfin/cpu/start.S | 2 + arch/blackfin/include/asm/blackfin_cdef.h | 3 + arch/blackfin/include/asm/blackfin_def.h | 5 + arch/blackfin/include/asm/blackfin_local.h | 3 + arch/blackfin/include/asm/config-pre.h | 4 + arch/blackfin/include/asm/cplb.h | 17 +- arch/blackfin/include/asm/dma.h | 113 +- arch/blackfin/include/asm/gpio.h | 2 +- arch/blackfin/include/asm/mach-bf533/BF531_def.h | 1 + arch/blackfin/include/asm/mach-bf561/BF561_def.h | 1 + arch/blackfin/include/asm/mach-bf609/BF609_cdef.h | 543 +++ arch/blackfin/include/asm/mach-bf609/BF609_def.h | 3758 ++++++++++++++++++++ arch/blackfin/include/asm/mach-bf609/anomaly.h | 128 + arch/blackfin/include/asm/mach-bf609/def_local.h | 5 + arch/blackfin/include/asm/mach-bf609/gpio.h | 151 + arch/blackfin/include/asm/mach-bf609/portmux.h | 257 ++ arch/blackfin/include/asm/mach-bf609/ports.h | 103 + arch/blackfin/include/asm/mach-common/bits/cgu.h | 80 + arch/blackfin/include/asm/mach-common/bits/dde.h | 88 + arch/blackfin/include/asm/mach-common/bits/dma.h | 48 +- arch/blackfin/include/asm/mach-common/bits/mpu.h | 6 +- arch/blackfin/include/asm/mach-common/bits/pll.h | 5 + arch/blackfin/include/asm/mach-common/bits/sdh.h | 38 +- .../blackfin/include/asm/mach-common/bits/spi6xx.h | 240 ++ arch/blackfin/include/asm/mach-common/bits/uart4.h | 66 + arch/blackfin/lib/board.c | 33 +- arch/blackfin/lib/clocks.c | 113 +- arch/blackfin/lib/string.c | 97 +- board/bf609-ezkit/Makefile | 55 + board/bf609-ezkit/bf609-ezkit.c | 67 + boards.cfg | 1 + common/cmd_reginfo.c | 19 +- drivers/mmc/bfin_sdh.c | 68 +- drivers/spi/Makefile | 1 + drivers/spi/bfin_spi6xx.c | 308 ++ include/configs/bf609-ezkit.h | 169 + include/configs/bfin_adi_common.h | 8 +- 47 files changed, 7373 insertions(+), 421 deletions(-) create mode 100644 arch/blackfin/cpu/serial1.h create mode 100644 arch/blackfin/cpu/serial4.h create mode 100644 arch/blackfin/include/asm/mach-bf609/BF609_cdef.h create mode 100644 arch/blackfin/include/asm/mach-bf609/BF609_def.h create mode 100644 arch/blackfin/include/asm/mach-bf609/anomaly.h create mode 100644 arch/blackfin/include/asm/mach-bf609/def_local.h create mode 100644 arch/blackfin/include/asm/mach-bf609/gpio.h create mode 100644 arch/blackfin/include/asm/mach-bf609/portmux.h create mode 100644 arch/blackfin/include/asm/mach-bf609/ports.h create mode 100644 arch/blackfin/include/asm/mach-common/bits/cgu.h create mode 100644 arch/blackfin/include/asm/mach-common/bits/dde.h create mode 100644 arch/blackfin/include/asm/mach-common/bits/spi6xx.h create mode 100644 arch/blackfin/include/asm/mach-common/bits/uart4.h create mode 100644 board/bf609-ezkit/Makefile create mode 100644 board/bf609-ezkit/bf609-ezkit.c create mode 100644 drivers/spi/bfin_spi6xx.c create mode 100644 include/configs/bf609-ezkit.h

From: Bob Liu lliubbo@gmail.com
Add header files for blackfin new processor bf60x.
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com --- arch/blackfin/include/asm/blackfin_cdef.h | 3 + arch/blackfin/include/asm/blackfin_def.h | 5 + arch/blackfin/include/asm/blackfin_local.h | 3 + arch/blackfin/include/asm/mach-bf609/BF609_cdef.h | 543 +++ arch/blackfin/include/asm/mach-bf609/BF609_def.h | 3758 +++++++++++++++++++++ arch/blackfin/include/asm/mach-bf609/anomaly.h | 128 + arch/blackfin/include/asm/mach-bf609/def_local.h | 5 + arch/blackfin/include/asm/mach-bf609/portmux.h | 257 ++ arch/blackfin/include/asm/mach-bf609/ports.h | 103 + arch/blackfin/include/asm/mach-common/bits/cgu.h | 80 + arch/blackfin/include/asm/mach-common/bits/dde.h | 88 + arch/blackfin/include/asm/mach-common/bits/mpu.h | 6 +- arch/blackfin/include/asm/mach-common/bits/pll.h | 5 + 13 files changed, 4983 insertions(+), 1 deletions(-) create mode 100644 arch/blackfin/include/asm/mach-bf609/BF609_cdef.h create mode 100644 arch/blackfin/include/asm/mach-bf609/BF609_def.h create mode 100644 arch/blackfin/include/asm/mach-bf609/anomaly.h create mode 100644 arch/blackfin/include/asm/mach-bf609/def_local.h create mode 100644 arch/blackfin/include/asm/mach-bf609/portmux.h create mode 100644 arch/blackfin/include/asm/mach-bf609/ports.h create mode 100644 arch/blackfin/include/asm/mach-common/bits/cgu.h create mode 100644 arch/blackfin/include/asm/mach-common/bits/dde.h
diff --git a/arch/blackfin/include/asm/blackfin_cdef.h b/arch/blackfin/include/asm/blackfin_cdef.h index a19f0f7..8608711 100644 --- a/arch/blackfin/include/asm/blackfin_cdef.h +++ b/arch/blackfin/include/asm/blackfin_cdef.h @@ -84,5 +84,8 @@ #ifdef __ADSPBF561__ # include "mach-bf561/BF561_cdef.h" #endif +#ifdef __ADSPBF609__ +# include "mach-bf609/BF609_cdef.h" +#endif
#endif /* __MACH_CDEF_BLACKFIN__ */ diff --git a/arch/blackfin/include/asm/blackfin_def.h b/arch/blackfin/include/asm/blackfin_def.h index f06d1f1..c96a3ec 100644 --- a/arch/blackfin/include/asm/blackfin_def.h +++ b/arch/blackfin/include/asm/blackfin_def.h @@ -136,5 +136,10 @@ # include "mach-bf561/anomaly.h" # include "mach-bf561/def_local.h" #endif +#ifdef __ADSPBF609__ +# include "mach-bf609/BF609_def.h" +# include "mach-bf609/anomaly.h" +# include "mach-bf609/def_local.h" +#endif
#endif /* __MACH_DEF_BLACKFIN__ */ diff --git a/arch/blackfin/include/asm/blackfin_local.h b/arch/blackfin/include/asm/blackfin_local.h index 49d0c9e..fc46ef4 100644 --- a/arch/blackfin/include/asm/blackfin_local.h +++ b/arch/blackfin/include/asm/blackfin_local.h @@ -61,6 +61,9 @@ extern u_long get_vco(void); extern u_long get_cclk(void); extern u_long get_sclk(void); +extern u_long get_sclk0(void); +extern u_long get_sclk1(void); +extern u_long get_dclk(void);
# define bfin_revid() (bfin_read_CHIPID() >> 28)
diff --git a/arch/blackfin/include/asm/mach-bf609/BF609_cdef.h b/arch/blackfin/include/asm/mach-bf609/BF609_cdef.h new file mode 100644 index 0000000..204a1a0 --- /dev/null +++ b/arch/blackfin/include/asm/mach-bf609/BF609_cdef.h @@ -0,0 +1,543 @@ +/* DO NOT EDIT THIS FILE + * Automatically generated by generate-cdef-headers.xsl + * DO NOT EDIT THIS FILE + */ + +#ifndef __BFIN_CDEF_ADSP_BF609_proc__ +#define __BFIN_CDEF_ADSP_BF609_proc__ + +#include "../mach-common/ADSP-EDN-core_cdef.h" + +#define bfin_read_CGU_STAT() bfin_read32(CGU_STAT) +#define bfin_read_CGU_CLKOUTSEL() bfin_read32(CGU_CLKOUTSEL) +#define bfin_read_CGU_CTL() bfin_read32(CGU_CTL) +#define bfin_write_CGU_CTL(val) bfin_write32(CGU_CTL, val) +#define bfin_read_CGU_DIV() bfin_read32(CGU_DIV) +#define bfin_write_CGU_DIV(val) bfin_write32(CGU_DIV, val) + +#define bfin_read_RCU0_CTL() bfin_read32(RCU0_CTL) +#define bfin_write_RCU0_CTL(val) bfin_write32(RCU0_CTL, val) + +#define bfin_read_CHIPID() bfin_read32(CHIPID) +#define bfin_write_CHIPID(val) bfin_write32(CHIPID, val) + +#define bfin_read_DMC0_CFG() bfin_read32(DMC0_CFG) +#define bfin_write_DMC0_CFG(val) bfin_write32(DMC0_CFG, val) +#define bfin_read_DMC0_TR0() bfin_read32(DMC0_TR0) +#define bfin_write_DMC0_TR0(val) bfin_write32(DMC0_TR0, val) +#define bfin_read_DMC0_TR1() bfin_read32(DMC0_TR1) +#define bfin_write_DMC0_TR1(val) bfin_write32(DMC0_TR1, val) +#define bfin_read_DMC0_TR2() bfin_read32(DMC0_TR2) +#define bfin_write_DMC0_TR2(val) bfin_write32(DMC0_TR2, val) +#define bfin_read_DMC0_MR() bfin_read32(DMC0_MR) +#define bfin_write_DMC0_MR(val) bfin_write32(DMC0_MR, val) +#define bfin_read_DMC0_EMR1() bfin_read32(DMC0_EMR1) +#define bfin_write_DMC0_EMR1(val) bfin_write32(DMC0_EMR1, val) +#define bfin_read_DMC0_CTL() bfin_read32(DMC0_CTL) +#define bfin_write_DMC0_CTL(val) bfin_write32(DMC0_CTL, val) +#define bfin_read_DMC0_STAT() bfin_read32(DMC0_STAT) +#define bfin_write_DMC0_STAT(val) bfin_write32(DMC0_STAT, val) +#define bfin_read_DMC0_DLLCTL() bfin_read32(DMC0_DLLCTL) +#define bfin_write_DMC0_DLLCTL(val) bfin_write32(DMC0_DLLCTL, val) + +#define bfin_read_SEC_CCTL() bfin_read32(SEC0_CCTL0) +#define bfin_write_SEC_CCTL(val) bfin_write32(SEC0_CCTL0, val) +#define bfin_read_SEC_GCTL() bfin_read32(SEC0_GCTL) +#define bfin_write_SEC_GCTL(val) bfin_write32(SEC0_GCTL, val) + +#define bfin_read_SEC_FCTL() bfin_read32(SEC0_FCTL) +#define bfin_write_SEC_FCTL(val) bfin_write32(SEC0_FCTL, val) +#define bfin_read_SEC_SCTL(sid) bfin_read32((SEC0_SCTL0 + (sid) * 8)) +#define bfin_write_SEC_SCTL(sid, val) bfin_write32((SEC0_SCTL0 + (sid) * 8), val) + +#define bfin_read_SMC_GCTL() bfin_read32(SMC_GCTL) +#define bfin_write_SMC_GCTL(val) bfin_write32(SMC_GCTL, val) +#define bfin_read_SMC_GSTAT() bfin_read32(SMC_GSTAT) +#define bfin_read_SMC_B0CTL() bfin_read32(SMC_B0CTL) +#define bfin_write_SMC_B0CTL(val) bfin_write32(SMC_B0CTL, val) +#define bfin_read_SMC_B0TIM() bfin_read32(SMC_B0TIM) +#define bfin_write_SMC_B0TIM(val) bfin_write32(SMC_B0TIM, val) +#define bfin_read_SMC_B0ETIM() bfin_read32(SMC_B0ETIM) +#define bfin_write_SMC_B0ETIM(val) bfin_write32(SMC_B0ETIM, val) +#define bfin_read_SMC_B1CTL() bfin_read32(SMC_B1CTL) +#define bfin_write_SMC_B1CTL(val) bfin_write32(SMC_B1CTL, val) +#define bfin_read_SMC_B1TIM() bfin_read32(SMC_B1TIM) +#define bfin_write_SMC_B1TIM(val) bfin_write32(SMC_B1TIM, val) +#define bfin_read_SMC_B1ETIM() bfin_read32(SMC_B1ETIM) +#define bfin_write_SMC_B1ETIM(val) bfin_write32(SMC_B1ETIM, val) +#define bfin_read_SMC_B2CTL() bfin_read32(SMC_B2CTL) +#define bfin_write_SMC_B2CTL(val) bfin_write32(SMC_B2CTL, val) +#define bfin_read_SMC_B2TIM() bfin_read32(SMC_B2TIM) +#define bfin_write_SMC_B2TIM(val) bfin_write32(SMC_B2TIM, val) +#define bfin_read_SMC_B2ETIM() bfin_read32(SMC_B2ETIM) +#define bfin_write_SMC_B2ETIM(val) bfin_write32(SMC_B2ETIM, val) +#define bfin_read_SMC_B3CTL() bfin_read32(SMC_B3CTL) +#define bfin_write_SMC_B3CTL(val) bfin_write32(SMC_B3CTL, val) +#define bfin_read_SMC_B3TIM() bfin_read32(SMC_B3TIM) +#define bfin_write_SMC_B3TIM(val) bfin_write32(SMC_B3TIM, val) +#define bfin_read_SMC_B3ETIM() bfin_read32(SMC_B3ETIM) +#define bfin_write_SMC_B3ETIM(val) bfin_write32(SMC_B3ETIM, val) + +#define bfin_read_DMA0_NEXT_DESC_PTR() bfin_readPTR(DMA0_DSCPTR_NXT) +#define bfin_write_DMA0_NEXT_DESC_PTR(val) bfin_writePTR(DMA0_DSCPTR_NXT, val) +#define bfin_read_DMA0_START_ADDR() bfin_readPTR(DMA0_ADDRSTART) +#define bfin_write_DMA0_START_ADDR(val) bfin_writePTR(DMA0_ADDRSTART, val) +#define bfin_read_DMA0_CONFIG() bfin_read32(DMA0_CFG) +#define bfin_write_DMA0_CONFIG(val) bfin_write32(DMA0_CFG, val) +#define bfin_read_DMA0_X_COUNT() bfin_read32(DMA0_XCNT) +#define bfin_write_DMA0_X_COUNT(val) bfin_write32(DMA0_XCNT, val) +#define bfin_read_DMA0_X_MODIFY() bfin_read32(DMA0_XMOD) +#define bfin_write_DMA0_X_MODIFY(val) bfin_write32(DMA0_XMOD, val) +#define bfin_read_DMA0_Y_COUNT() bfin_read32(DMA0_YCNT) +#define bfin_write_DMA0_Y_COUNT(val) bfin_write32(DMA0_YCNT, val) +#define bfin_read_DMA0_Y_MODIFY() bfin_read32(DMA0_YMOD) +#define bfin_write_DMA0_Y_MODIFY(val) bfin_write32(DMA0_YMOD, val) +#define bfin_read_DMA0_CURR_DESC_PTR() bfin_readPTR(DMA0_DSCPTR_CUR) +#define bfin_write_DMA0_CURR_DESC_PTR(val) bfin_writePTR(DMA0_DSCPTR_CUR, val) +#define bfin_read_DMA0_CURR_ADDR() bfin_readPTR(DMA0_ADDR_CUR) +#define bfin_write_DMA0_CURR_ADDR(val) bfin_writePTR(DMA0_ADDR_CUR, val) +#define bfin_read_DMA0_IRQ_STATUS() bfin_read32(DMA0_STAT) +#define bfin_write_DMA0_IRQ_STATUS(val) bfin_write32(DMA0_STAT, val) +#define bfin_read_DMA0_CURR_X_COUNT() bfin_read32(DMA0_XCNT_CUR) +#define bfin_write_DMA0_CURR_X_COUNT(val) bfin_write32(DMA0_XCNT_CUR, val) +#define bfin_read_DMA0_CURR_Y_COUNT() bfin_read32(DMA0_YCNT_CUR) +#define bfin_write_DMA0_CURR_Y_COUNT(val) bfin_write32(DMA0_YCNT_CUR, val) +#define bfin_read_DMA1_NEXT_DESC_PTR() bfin_readPTR(DMA1_DSCPTR_NXT) +#define bfin_write_DMA1_NEXT_DESC_PTR(val) bfin_writePTR(DMA1_DSCPTR_NXT, val) +#define bfin_read_DMA1_START_ADDR() bfin_readPTR(DMA1_ADDRSTART) +#define bfin_write_DMA1_START_ADDR(val) bfin_writePTR(DMA1_ADDRSTART, val) +#define bfin_read_DMA1_CONFIG() bfin_read32(DMA1_CFG) +#define bfin_write_DMA1_CONFIG(val) bfin_write32(DMA1_CFG, val) +#define bfin_read_DMA1_X_COUNT() bfin_read32(DMA1_XCNT) +#define bfin_write_DMA1_X_COUNT(val) bfin_write32(DMA1_XCNT, val) +#define bfin_read_DMA1_X_MODIFY() bfin_read32(DMA1_XMOD) +#define bfin_write_DMA1_X_MODIFY(val) bfin_write32(DMA1_XMOD, val) +#define bfin_read_DMA1_Y_COUNT() bfin_read32(DMA1_YCNT) +#define bfin_write_DMA1_Y_COUNT(val) bfin_write32(DMA1_YCNT, val) +#define bfin_read_DMA1_Y_MODIFY() bfin_read32(DMA1_YMOD) +#define bfin_write_DMA1_Y_MODIFY(val) bfin_write32(DMA1_YMOD, val) +#define bfin_read_DMA1_CURR_DESC_PTR() bfin_readPTR(DMA1_DSCPTR_CUR) +#define bfin_write_DMA1_CURR_DESC_PTR(val) bfin_writePTR(DMA1_DSCPTR_CUR, val) +#define bfin_read_DMA1_CURR_ADDR() bfin_readPTR(DMA1_ADDR_CUR) +#define bfin_write_DMA1_CURR_ADDR(val) bfin_writePTR(DMA1_ADDR_CUR, val) +#define bfin_read_DMA1_IRQ_STATUS() bfin_read32(DMA1_STAT) +#define bfin_write_DMA1_IRQ_STATUS(val) bfin_write32(DMA1_STAT, val) +#define bfin_read_DMA1_CURR_X_COUNT() bfin_read32(DMA1_XCNT_CUR) +#define bfin_write_DMA1_CURR_X_COUNT(val) bfin_write32(DMA1_XCNT_CUR, val) +#define bfin_read_DMA1_CURR_Y_COUNT() bfin_read32(DMA1_YCNT_CUR) +#define bfin_write_DMA1_CURR_Y_COUNT(val) bfin_write32(DMA1_YCNT_CUR, val) +#define bfin_read_DMA2_NEXT_DESC_PTR() bfin_readPTR(DMA2_DSCPTR_NXT) +#define bfin_write_DMA2_NEXT_DESC_PTR(val) bfin_writePTR(DMA2_DSCPTR_NXT, val) +#define bfin_read_DMA2_START_ADDR() bfin_readPTR(DMA2_ADDRSTART) +#define bfin_write_DMA2_START_ADDR(val) bfin_writePTR(DMA2_ADDRSTART, val) +#define bfin_read_DMA2_CONFIG() bfin_read32(DMA2_CFG) +#define bfin_write_DMA2_CONFIG(val) bfin_write32(DMA2_CFG, val) +#define bfin_read_DMA2_X_COUNT() bfin_read32(DMA2_XCNT) +#define bfin_write_DMA2_X_COUNT(val) bfin_write32(DMA2_XCNT, val) +#define bfin_read_DMA2_X_MODIFY() bfin_read32(DMA2_XMOD) +#define bfin_write_DMA2_X_MODIFY(val) bfin_write32(DMA2_XMOD, val) +#define bfin_read_DMA2_Y_COUNT() bfin_read32(DMA2_YCNT) +#define bfin_write_DMA2_Y_COUNT(val) bfin_write32(DMA2_YCNT, val) +#define bfin_read_DMA2_Y_MODIFY() bfin_read32(DMA2_YMOD) +#define bfin_write_DMA2_Y_MODIFY(val) bfin_write32(DMA2_YMOD, val) +#define bfin_read_DMA2_CURR_DESC_PTR() bfin_readPTR(DMA2_DSCPTR_CUR) +#define bfin_write_DMA2_CURR_DESC_PTR(val) bfin_writePTR(DMA2_DSCPTR_CUR, val) +#define bfin_read_DMA2_CURR_ADDR() bfin_readPTR(DMA2_ADDR_CUR) +#define bfin_write_DMA2_CURR_ADDR(val) bfin_writePTR(DMA2_ADDR_CUR, val) +#define bfin_read_DMA2_IRQ_STATUS() bfin_read32(DMA2_STAT) +#define bfin_write_DMA2_IRQ_STATUS(val) bfin_write32(DMA2_STAT, val) +#define bfin_read_DMA2_CURR_X_COUNT() bfin_read32(DMA2_XCNT_CUR) +#define bfin_write_DMA2_CURR_X_COUNT(val) bfin_write32(DMA2_XCNT_CUR, val) +#define bfin_read_DMA2_CURR_Y_COUNT() bfin_read32(DMA2_YCNT_CUR) +#define bfin_write_DMA2_CURR_Y_COUNT(val) bfin_write32(DMA2_YCNT_CUR, val) +#define bfin_read_DMA3_NEXT_DESC_PTR() bfin_readPTR(DMA3_DSCPTR_NXT) +#define bfin_write_DMA3_NEXT_DESC_PTR(val) bfin_writePTR(DMA3_DSCPTR_NXT, val) +#define bfin_read_DMA3_START_ADDR() bfin_readPTR(DMA3_ADDRSTART) +#define bfin_write_DMA3_START_ADDR(val) bfin_writePTR(DMA3_ADDRSTART, val) +#define bfin_read_DMA3_CONFIG() bfin_read32(DMA3_CFG) +#define bfin_write_DMA3_CONFIG(val) bfin_write32(DMA3_CFG, val) +#define bfin_read_DMA3_X_COUNT() bfin_read32(DMA3_XCNT) +#define bfin_write_DMA3_X_COUNT(val) bfin_write32(DMA3_XCNT, val) +#define bfin_read_DMA3_X_MODIFY() bfin_read32(DMA3_XMOD) +#define bfin_write_DMA3_X_MODIFY(val) bfin_write32(DMA3_XMOD, val) +#define bfin_read_DMA3_Y_COUNT() bfin_read32(DMA3_YCNT) +#define bfin_write_DMA3_Y_COUNT(val) bfin_write32(DMA3_YCNT, val) +#define bfin_read_DMA3_Y_MODIFY() bfin_read32(DMA3_YMOD) +#define bfin_write_DMA3_Y_MODIFY(val) bfin_write32(DMA3_YMOD, val) +#define bfin_read_DMA3_CURR_DESC_PTR() bfin_readPTR(DMA3_DSCPTR_CUR) +#define bfin_write_DMA3_CURR_DESC_PTR(val) bfin_writePTR(DMA3_DSCPTR_CUR, val) +#define bfin_read_DMA3_CURR_ADDR() bfin_readPTR(DMA3_ADDR_CUR) +#define bfin_write_DMA3_CURR_ADDR(val) bfin_writePTR(DMA3_ADDR_CUR, val) +#define bfin_read_DMA3_IRQ_STATUS() bfin_read32(DMA3_STAT) +#define bfin_write_DMA3_IRQ_STATUS(val) bfin_write32(DMA3_STAT, val) +#define bfin_read_DMA3_CURR_X_COUNT() bfin_read32(DMA3_XCNT_CUR) +#define bfin_write_DMA3_CURR_X_COUNT(val) bfin_write32(DMA3_XCNT_CUR, val) +#define bfin_read_DMA3_CURR_Y_COUNT() bfin_read32(DMA3_YCNT_CUR) +#define bfin_write_DMA3_CURR_Y_COUNT(val) bfin_write32(DMA3_YCNT_CUR, val) +#define bfin_read_DMA4_NEXT_DESC_PTR() bfin_readPTR(DMA4_DSCPTR_NXT) +#define bfin_write_DMA4_NEXT_DESC_PTR(val) bfin_writePTR(DMA4_DSCPTR_NXT, val) +#define bfin_read_DMA4_START_ADDR() bfin_readPTR(DMA4_ADDRSTART) +#define bfin_write_DMA4_START_ADDR(val) bfin_writePTR(DMA4_ADDRSTART, val) +#define bfin_read_DMA4_CONFIG() bfin_read32(DMA4_CFG) +#define bfin_write_DMA4_CONFIG(val) bfin_write32(DMA4_CFG, val) +#define bfin_read_DMA4_X_COUNT() bfin_read32(DMA4_XCNT) +#define bfin_write_DMA4_X_COUNT(val) bfin_write32(DMA4_XCNT, val) +#define bfin_read_DMA4_X_MODIFY() bfin_read32(DMA4_XMOD) +#define bfin_write_DMA4_X_MODIFY(val) bfin_write32(DMA4_XMOD, val) +#define bfin_read_DMA4_Y_COUNT() bfin_read32(DMA4_YCNT) +#define bfin_write_DMA4_Y_COUNT(val) bfin_write32(DMA4_YCNT, val) +#define bfin_read_DMA4_Y_MODIFY() bfin_read32(DMA4_YMOD) +#define bfin_write_DMA4_Y_MODIFY(val) bfin_write32(DMA4_YMOD, val) +#define bfin_read_DMA4_CURR_DESC_PTR() bfin_readPTR(DMA4_DSCPTR_CUR) +#define bfin_write_DMA4_CURR_DESC_PTR(val) bfin_writePTR(DMA4_DSCPTR_CUR, val) +#define bfin_read_DMA4_CURR_ADDR() bfin_readPTR(DMA4_ADDR_CUR) +#define bfin_write_DMA4_CURR_ADDR(val) bfin_writePTR(DMA4_ADDR_CUR, val) +#define bfin_read_DMA4_IRQ_STATUS() bfin_read32(DMA4_STAT) +#define bfin_write_DMA4_IRQ_STATUS(val) bfin_write32(DMA4_STAT, val) +#define bfin_read_DMA4_CURR_X_COUNT() bfin_read32(DMA4_XCNT_CUR) +#define bfin_write_DMA4_CURR_X_COUNT(val) bfin_write32(DMA4_XCNT_CUR, val) +#define bfin_read_DMA4_CURR_Y_COUNT() bfin_read32(DMA4_YCNT_CUR) +#define bfin_write_DMA4_CURR_Y_COUNT(val) bfin_write32(DMA4_YCNT_CUR, val) +#define bfin_read_DMA5_NEXT_DESC_PTR() bfin_readPTR(DMA5_DSCPTR_NXT) +#define bfin_write_DMA5_NEXT_DESC_PTR(val) bfin_writePTR(DMA5_DSCPTR_NXT, val) +#define bfin_read_DMA5_START_ADDR() bfin_readPTR(DMA5_ADDRSTART) +#define bfin_write_DMA5_START_ADDR(val) bfin_writePTR(DMA5_ADDRSTART, val) +#define bfin_read_DMA5_CONFIG() bfin_read32(DMA5_CFG) +#define bfin_write_DMA5_CONFIG(val) bfin_write32(DMA5_CFG, val) +#define bfin_read_DMA5_X_COUNT() bfin_read32(DMA5_XCNT) +#define bfin_write_DMA5_X_COUNT(val) bfin_write32(DMA5_XCNT, val) +#define bfin_read_DMA5_X_MODIFY() bfin_read32(DMA5_XMOD) +#define bfin_write_DMA5_X_MODIFY(val) bfin_write32(DMA5_XMOD, val) +#define bfin_read_DMA5_Y_COUNT() bfin_read32(DMA5_YCNT) +#define bfin_write_DMA5_Y_COUNT(val) bfin_write32(DMA5_YCNT, val) +#define bfin_read_DMA5_Y_MODIFY() bfin_read32(DMA5_YMOD) +#define bfin_write_DMA5_Y_MODIFY(val) bfin_write32(DMA5_YMOD, val) +#define bfin_read_DMA5_CURR_DESC_PTR() bfin_readPTR(DMA5_DSCPTR_CUR) +#define bfin_write_DMA5_CURR_DESC_PTR(val) bfin_writePTR(DMA5_DSCPTR_CUR, val) +#define bfin_read_DMA5_CURR_ADDR() bfin_readPTR(DMA5_ADDR_CUR) +#define bfin_write_DMA5_CURR_ADDR(val) bfin_writePTR(DMA5_ADDR_CUR, val) +#define bfin_read_DMA5_IRQ_STATUS() bfin_read32(DMA5_STAT) +#define bfin_write_DMA5_IRQ_STATUS(val) bfin_write32(DMA5_STAT, val) +#define bfin_read_DMA5_CURR_X_COUNT() bfin_read32(DMA5_XCNT_CUR) +#define bfin_write_DMA5_CURR_X_COUNT(val) bfin_write32(DMA5_XCNT_CUR, val) +#define bfin_read_DMA5_CURR_Y_COUNT() bfin_read32(DMA5_YCNT_CUR) +#define bfin_write_DMA5_CURR_Y_COUNT(val) bfin_write32(DMA5_YCNT_CUR, val) +#define bfin_read_DMA6_NEXT_DESC_PTR() bfin_read32(DMA6_DSCPTR_NXT) +#define bfin_write_DMA6_NEXT_DESC_PTR(val) bfin_write32(DMA6_DSCPTR_NXT, val) +#define bfin_read_DMA6_START_ADDR() bfin_readPTR(DMA6_ADDRSTART) +#define bfin_write_DMA6_START_ADDR(val) bfin_writePTR(DMA6_ADDRSTART, val) +#define bfin_read_DMA6_CONFIG() bfin_read32(DMA6_CFG) +#define bfin_write_DMA6_CONFIG(val) bfin_write32(DMA6_CFG, val) +#define bfin_read_DMA6_X_COUNT() bfin_read32(DMA6_XCNT) +#define bfin_write_DMA6_X_COUNT(val) bfin_write32(DMA6_XCNT, val) +#define bfin_read_DMA6_X_MODIFY() bfin_read32(DMA6_XMOD) +#define bfin_write_DMA6_X_MODIFY(val) bfin_write32(DMA6_XMOD, val) +#define bfin_read_DMA6_Y_COUNT() bfin_read32(DMA6_YCNT) +#define bfin_write_DMA6_Y_COUNT(val) bfin_write32(DMA6_YCNT, val) +#define bfin_read_DMA6_Y_MODIFY() bfin_read32(DMA6_YMOD) +#define bfin_write_DMA6_Y_MODIFY(val) bfin_write32(DMA6_YMOD, val) +#define bfin_read_DMA6_CURR_DESC_PTR() bfin_readPTR(DMA6_DSCPTR_CUR) +#define bfin_write_DMA6_CURR_DESC_PTR(val) bfin_writePTR(DMA6_DSCPTR_CUR, val) +#define bfin_read_DMA6_CURR_ADDR() bfin_readPTR(DMA6_ADDR_CUR) +#define bfin_write_DMA6_CURR_ADDR(val) bfin_writePTR(DMA6_ADDR_CUR, val) +#define bfin_read_DMA6_IRQ_STATUS() bfin_read32(DMA6_STAT) +#define bfin_write_DMA6_IRQ_STATUS(val) bfin_write32(DMA6_STAT, val) +#define bfin_read_DMA6_CURR_X_COUNT() bfin_read32(DMA6_XCNT_CUR) +#define bfin_write_DMA6_CURR_X_COUNT(val) bfin_write32(DMA6_XCNT_CUR, val) +#define bfin_read_DMA6_CURR_Y_COUNT() bfin_read32(DMA6_YCNT_CUR) +#define bfin_write_DMA6_CURR_Y_COUNT(val) bfin_write32(DMA6_YCNT_CUR, val) +#define bfin_read_DMA7_NEXT_DESC_PTR() bfin_readPTR(DMA7_DSCPTR_NXT) +#define bfin_write_DMA7_NEXT_DESC_PTR(val) bfin_writePTR(DMA7_DSCPTR_NXT, val) +#define bfin_read_DMA7_START_ADDR() bfin_readPTR(DMA7_ADDRSTART) +#define bfin_write_DMA7_START_ADDR(val) bfin_writePTR(DMA7_ADDRSTART, val) +#define bfin_read_DMA7_CONFIG() bfin_read32(DMA7_CFG) +#define bfin_write_DMA7_CONFIG(val) bfin_write32(DMA7_CFG, val) +#define bfin_read_DMA7_X_COUNT() bfin_read32(DMA7_XCNT) +#define bfin_write_DMA7_X_COUNT(val) bfin_write32(DMA7_XCNT, val) +#define bfin_read_DMA7_X_MODIFY() bfin_read32(DMA7_XMOD) +#define bfin_write_DMA7_X_MODIFY(val) bfin_write32(DMA7_XMOD, val) +#define bfin_read_DMA7_Y_COUNT() bfin_read32(DMA7_YCNT) +#define bfin_write_DMA7_Y_COUNT(val) bfin_write32(DMA7_YCNT, val) +#define bfin_read_DMA7_Y_MODIFY() bfin_read32(DMA7_YMOD) +#define bfin_write_DMA7_Y_MODIFY(val) bfin_write32(DMA7_YMOD, val) +#define bfin_read_DMA7_CURR_DESC_PTR() bfin_readPTR(DMA7_DSCPTR_CUR) +#define bfin_write_DMA7_CURR_DESC_PTR(val) bfin_writePTR(DMA7_DSCPTR_CUR, val) +#define bfin_read_DMA7_CURR_ADDR() bfin_readPTR(DMA7_ADDR_CUR) +#define bfin_write_DMA7_CURR_ADDR(val) bfin_writePTR(DMA7_ADDR_CUR, val) +#define bfin_read_DMA7_IRQ_STATUS() bfin_read32(DMA7_STAT) +#define bfin_write_DMA7_IRQ_STATUS(val) bfin_write32(DMA7_STAT, val) +#define bfin_read_DMA7_CURR_X_COUNT() bfin_read32(DMA7_XCNT_CUR) +#define bfin_write_DMA7_CURR_X_COUNT(val) bfin_write32(DMA7_XCNT_CUR, val) +#define bfin_read_DMA7_CURR_Y_COUNT() bfin_read32(DMA7_YCNT_CUR) +#define bfin_write_DMA7_CURR_Y_COUNT(val) bfin_write32(DMA7_YCNT_CUR, val) +#define bfin_read_DMA8_NEXT_DESC_PTR() bfin_readPTR(DMA8_DSCPTR_NXT) +#define bfin_write_DMA8_NEXT_DESC_PTR(val) bfin_writePTR(DMA8_DSCPTR_NXT, val) +#define bfin_read_DMA8_START_ADDR() bfin_readPTR(DMA8_ADDRSTART) +#define bfin_write_DMA8_START_ADDR(val) bfin_writePTR(DMA8_ADDRSTART, val) +#define bfin_read_DMA8_CONFIG() bfin_read32(DMA8_CFG) +#define bfin_write_DMA8_CONFIG(val) bfin_write32(DMA8_CFG, val) +#define bfin_read_DMA8_X_COUNT() bfin_read32(DMA8_XCNT) +#define bfin_write_DMA8_X_COUNT(val) bfin_write32(DMA8_XCNT, val) +#define bfin_read_DMA8_X_MODIFY() bfin_read32(DMA8_XMOD) +#define bfin_write_DMA8_X_MODIFY(val) bfin_write32(DMA8_XMOD, val) +#define bfin_read_DMA8_Y_COUNT() bfin_read32(DMA8_YCNT) +#define bfin_write_DMA8_Y_COUNT(val) bfin_write32(DMA8_YCNT, val) +#define bfin_read_DMA8_Y_MODIFY() bfin_read32(DMA8_YMOD) +#define bfin_write_DMA8_Y_MODIFY(val) bfin_write32(DMA8_YMOD, val) +#define bfin_read_DMA8_CURR_DESC_PTR() bfin_readPTR(DMA8_DSCPTR_CUR) +#define bfin_write_DMA8_CURR_DESC_PTR(val) bfin_writePTR(DMA8_DSCPTR_CUR, val) +#define bfin_read_DMA8_CURR_ADDR() bfin_readPTR(DMA8_ADDR_CUR) +#define bfin_write_DMA8_CURR_ADDR(val) bfin_writePTR(DMA8_ADDR_CUR, val) +#define bfin_read_DMA8_IRQ_STATUS() bfin_read32(DMA8_STAT) +#define bfin_write_DMA8_IRQ_STATUS(val) bfin_write32(DMA8_STAT, val) +#define bfin_read_DMA8_CURR_X_COUNT() bfin_read32(DMA8_XCNT_CUR) +#define bfin_write_DMA8_CURR_X_COUNT(val) bfin_write32(DMA8_XCNT_CUR, val) +#define bfin_read_DMA8_CURR_Y_COUNT() bfin_read32(DMA8_YCNT_CUR) +#define bfin_write_DMA8_CURR_Y_COUNT(val) bfin_write32(DMA8_YCNT_CUR, val) +#define bfin_read_DMA9_NEXT_DESC_PTR() bfin_readPTR(DMA9_DSCPTR_NXT) +#define bfin_write_DMA9_NEXT_DESC_PTR(val) bfin_writePTR(DMA9_DSCPTR_NXT, val) +#define bfin_read_DMA9_START_ADDR() bfin_readPTR(DMA9_ADDRSTART) +#define bfin_write_DMA9_START_ADDR(val) bfin_writePTR(DMA9_ADDRSTART, val) +#define bfin_read_DMA9_CONFIG() bfin_read32(DMA9_CFG) +#define bfin_write_DMA9_CONFIG(val) bfin_write32(DMA9_CFG, val) +#define bfin_read_DMA9_X_COUNT() bfin_read32(DMA9_XCNT) +#define bfin_write_DMA9_X_COUNT(val) bfin_write32(DMA9_XCNT, val) +#define bfin_read_DMA9_X_MODIFY() bfin_read32(DMA9_XMOD) +#define bfin_write_DMA9_X_MODIFY(val) bfin_write32(DMA9_XMOD, val) +#define bfin_read_DMA9_Y_COUNT() bfin_read32(DMA9_YCNT) +#define bfin_write_DMA9_Y_COUNT(val) bfin_write32(DMA9_YCNT, val) +#define bfin_read_DMA9_Y_MODIFY() bfin_read32(DMA9_YMOD) +#define bfin_write_DMA9_Y_MODIFY(val) bfin_write32(DMA9_YMOD, val) +#define bfin_read_DMA9_CURR_DESC_PTR() bfin_readPTR(DMA9_DSCPTR_CUR) +#define bfin_write_DMA9_CURR_DESC_PTR(val) bfin_writePTR(DMA9_DSCPTR_CUR, val) +#define bfin_read_DMA9_CURR_ADDR() bfin_readPTR(DMA9_ADDR_CUR) +#define bfin_write_DMA9_CURR_ADDR(val) bfin_writePTR(DMA9_ADDR_CUR, val) +#define bfin_read_DMA9_IRQ_STATUS() bfin_read32(DMA9_STAT) +#define bfin_write_DMA9_IRQ_STATUS(val) bfin_write32(DMA9_STAT, val) +#define bfin_read_DMA9_CURR_X_COUNT() bfin_read32(DMA9_XCNT_CUR) +#define bfin_write_DMA9_CURR_X_COUNT(val) bfin_write32(DMA9_XCNT_CUR, val) +#define bfin_read_DMA9_CURR_Y_COUNT() bfin_read32(DMA9_YCNT_CUR) +#define bfin_write_DMA9_CURR_Y_COUNT(val) bfin_write32(DMA9_YCNT_CUR, val) +#define bfin_read_DMA10_NEXT_DESC_PTR() bfin_readPTR(DMA10_DSCPTR_NXT) +#define bfin_write_DMA10_NEXT_DESC_PTR(val) bfin_writePTR(DMA10_DSCPTR_NXT, val) +#define bfin_read_DMA10_START_ADDR() bfin_readPTR(DMA10_ADDRSTART) +#define bfin_write_DMA10_START_ADDR(val) bfin_writePTR(DMA10_ADDRSTART, val) +#define bfin_read_DMA10_CONFIG() bfin_read32(DMA10_CFG) +#define bfin_write_DMA10_CONFIG(val) bfin_write32(DMA10_CFG, val) +#define bfin_read_DMA10_X_COUNT() bfin_read32(DMA10_XCNT) +#define bfin_write_DMA10_X_COUNT(val) bfin_write32(DMA10_XCNT, val) +#define bfin_read_DMA10_X_MODIFY() bfin_read32(DMA10_XMOD) +#define bfin_write_DMA10_X_MODIFY(val) bfin_write32(DMA10_XMOD, val) +#define bfin_read_DMA10_Y_COUNT() bfin_read32(DMA10_YCNT) +#define bfin_write_DMA10_Y_COUNT(val) bfin_write32(DMA10_YCNT, val) +#define bfin_read_DMA10_Y_MODIFY() bfin_read32(DMA10_YMOD) +#define bfin_write_DMA10_Y_MODIFY(val) bfin_write32(DMA10_YMOD, val) +#define bfin_read_DMA10_CURR_DESC_PTR() bfin_readPTR(DMA10_DSCPTR_CUR) +#define bfin_write_DMA10_CURR_DESC_PTR(val) bfin_writePTR(DMA10_DSCPTR_CUR, val) +#define bfin_read_DMA10_CURR_ADDR() bfin_readPTR(DMA10_ADDR_CUR) +#define bfin_write_DMA10_CURR_ADDR(val) bfin_writePTR(DMA10_ADDR_CUR, val) +#define bfin_read_DMA10_IRQ_STATUS() bfin_read32(DMA10_STAT) +#define bfin_write_DMA10_IRQ_STATUS(val) bfin_write32(DMA10_STAT, val) +#define bfin_read_DMA10_CURR_X_COUNT() bfin_read32(DMA10_XCNT_CUR) +#define bfin_write_DMA10_CURR_X_COUNT(val) bfin_write32(DMA10_XCNT_CUR, val) +#define bfin_read_DMA10_CURR_Y_COUNT() bfin_read32(DMA10_YCNT_CUR) +#define bfin_write_DMA10_CURR_Y_COUNT(val) bfin_write32(DMA10_YCNT_CUR, val) +#define bfin_read_DMA11_NEXT_DESC_PTR() bfin_readPTR(DMA11_DSCPTR_NXT) +#define bfin_write_DMA11_NEXT_DESC_PTR(val) bfin_writePTR(DMA11_DSCPTR_NXT, val) +#define bfin_read_DMA11_START_ADDR() bfin_readPTR(DMA11_ADDRSTART) +#define bfin_write_DMA11_START_ADDR(val) bfin_writePTR(DMA11_ADDRSTART, val) +#define bfin_read_DMA11_CONFIG() bfin_read32(DMA11_CFG) +#define bfin_write_DMA11_CONFIG(val) bfin_write32(DMA11_CFG, val) +#define bfin_read_DMA11_X_COUNT() bfin_read32(DMA11_XCNT) +#define bfin_write_DMA11_X_COUNT(val) bfin_write32(DMA11_XCNT, val) +#define bfin_read_DMA11_X_MODIFY() bfin_read32(DMA11_XMOD) +#define bfin_write_DMA11_X_MODIFY(val) bfin_write32(DMA11_XMOD, val) +#define bfin_read_DMA11_Y_COUNT() bfin_read32(DMA11_YCNT) +#define bfin_write_DMA11_Y_COUNT(val) bfin_write32(DMA11_YCNT, val) +#define bfin_read_DMA11_Y_MODIFY() bfin_read32(DMA11_YMOD) +#define bfin_write_DMA11_Y_MODIFY(val) bfin_write32(DMA11_YMOD, val) +#define bfin_read_DMA11_CURR_DESC_PTR() bfin_readPTR(DMA11_DSCPTR_CUR) +#define bfin_write_DMA11_CURR_DESC_PTR(val) bfin_writePTR(DMA11_DSCPTR_CUR, val) +#define bfin_read_DMA11_CURR_ADDR() bfin_readPTR(DMA11_ADDR_CUR) +#define bfin_write_DMA11_CURR_ADDR(val) bfin_writePTR(DMA11_ADDR_CUR, val) +#define bfin_read_DMA11_IRQ_STATUS() bfin_read32(DMA11_STAT) +#define bfin_write_DMA11_IRQ_STATUS(val) bfin_write32(DMA11_STAT, val) +#define bfin_read_DMA11_CURR_X_COUNT() bfin_read32(DMA11_XCNT_CUR) +#define bfin_write_DMA11_CURR_X_COUNT(val) bfin_write32(DMA11_XCNT_CUR, val) +#define bfin_read_DMA11_CURR_Y_COUNT() bfin_read32(DMA11_YCNT_CUR) +#define bfin_write_DMA11_CURR_Y_COUNT(val) bfin_write32(DMA11_YCNT_CUR, val) +#define bfin_read_MDMA_S0_NEXT_DESC_PTR() bfin_readPTR(MDMA_S0_DSCPTR_NXT) +#define bfin_write_MDMA_S0_NEXT_DESC_PTR(val) bfin_writePTR(MDMA_S0_DSCPTR_NXT, val) +#define bfin_read_MDMA_S0_START_ADDR() bfin_readPTR(MDMA_S0_ADDRSTART) +#define bfin_write_MDMA_S0_START_ADDR(val) bfin_writePTR(MDMA_S0_ADDRSTART, val) +#define bfin_read_MDMA_S0_CONFIG() bfin_read32(MDMA_S0_CFG) +#define bfin_write_MDMA_S0_CONFIG(val) bfin_write32(MDMA_S0_CFG, val) +#define bfin_read_MDMA_S0_X_COUNT() bfin_read32(MDMA_S0_XCNT) +#define bfin_write_MDMA_S0_X_COUNT(val) bfin_write32(MDMA_S0_XCNT, val) +#define bfin_read_MDMA_S0_X_MODIFY() bfin_read32(MDMA_S0_XMOD) +#define bfin_write_MDMA_S0_X_MODIFY(val) bfin_write32(MDMA_S0_XMOD, val) +#define bfin_read_MDMA_S0_Y_COUNT() bfin_read32(MDMA_S0_YCNT) +#define bfin_write_MDMA_S0_Y_COUNT(val) bfin_write32(MDMA_S0_YCNT, val) +#define bfin_read_MDMA_S0_Y_MODIFY() bfin_read32(MDMA_S0_YMOD) +#define bfin_write_MDMA_S0_Y_MODIFY(val) bfin_write32(MDMA_S0_YMOD, val) +#define bfin_read_MDMA_S0_CURR_DESC_PTR() bfin_readPTR(MDMA_S0_DSCPTR_CUR) +#define bfin_write_MDMA_S0_CURR_DESC_PTR(val) bfin_writePTR(MDMA_S0_DSCPTR_CUR, val) +#define bfin_read_MDMA_S0_CURR_ADDR() bfin_readPTR(MDMA_S0_ADDR_CUR) +#define bfin_write_MDMA_S0_CURR_ADDR(val) bfin_writePTR(MDMA_S0_ADDR_CUR, val) +#define bfin_read_MDMA_S0_IRQ_STATUS() bfin_read32(MDMA_S0_STAT) +#define bfin_write_MDMA_S0_IRQ_STATUS(val) bfin_write32(MDMA_S0_STAT, val) +#define bfin_read_MDMA_S0_CURR_X_COUNT() bfin_read32(MDMA_S0_XCNT_CUR) +#define bfin_write_MDMA_S0_CURR_X_COUNT(val) bfin_write32(MDMA_S0_XCNT_CUR, val) +#define bfin_read_MDMA_S0_CURR_Y_COUNT() bfin_read32(MDMA_S0_YCNT_CUR) +#define bfin_write_MDMA_S0_CURR_Y_COUNT(val) bfin_write32(MDMA_S0_YCNT_CUR, val) +#define bfin_read_MDMA_D0_NEXT_DESC_PTR() bfin_readPTR(MDMA_D0_DSCPTR_NXT) +#define bfin_write_MDMA_D0_NEXT_DESC_PTR(val) bfin_writePTR(MDMA_D0_DSCPTR_NXT, val) +#define bfin_read_MDMA_D0_START_ADDR() bfin_readPTR(MDMA_D0_ADDRSTART) +#define bfin_write_MDMA_D0_START_ADDR(val) bfin_writePTR(MDMA_D0_ADDRSTART, val) +#define bfin_read_MDMA_D0_CONFIG() bfin_read32(MDMA_D0_CFG) +#define bfin_write_MDMA_D0_CONFIG(val) bfin_write32(MDMA_D0_CFG, val) +#define bfin_read_MDMA_D0_X_COUNT() bfin_read32(MDMA_D0_XCNT) +#define bfin_write_MDMA_D0_X_COUNT(val) bfin_write32(MDMA_D0_XCNT, val) +#define bfin_read_MDMA_D0_X_MODIFY() bfin_read32(MDMA_D0_XMOD) +#define bfin_write_MDMA_D0_X_MODIFY(val) bfin_write32(MDMA_D0_XMOD, val) +#define bfin_read_MDMA_D0_Y_COUNT() bfin_read32(MDMA_D0_YCNT) +#define bfin_write_MDMA_D0_Y_COUNT(val) bfin_write32(MDMA_D0_YCNT, val) +#define bfin_read_MDMA_D0_Y_MODIFY() bfin_read32(MDMA_D0_YMOD) +#define bfin_write_MDMA_D0_Y_MODIFY(val) bfin_write32(MDMA_D0_YMOD, val) +#define bfin_read_MDMA_D0_CURR_DESC_PTR() bfin_readPTR(MDMA_D0_DSCPTR_CUR) +#define bfin_write_MDMA_D0_CURR_DESC_PTR(val) bfin_writePTR(MDMA_D0_DSCPTR_CUR, val) +#define bfin_read_MDMA_D0_CURR_ADDR() bfin_readPTR(MDMA_D0_ADDR_CUR) +#define bfin_write_MDMA_D0_CURR_ADDR(val) bfin_writePTR(MDMA_D0_ADDR_CUR, val) +#define bfin_read_MDMA_D0_IRQ_STATUS() bfin_read32(MDMA_D0_STAT) +#define bfin_write_MDMA_D0_IRQ_STATUS(val) bfin_write32(MDMA_D0_STAT, val) +#define bfin_read_MDMA_D0_CURR_X_COUNT() bfin_read32(MDMA_D0_XCNT_CUR) +#define bfin_write_MDMA_D0_CURR_X_COUNT(val) bfin_write32(MDMA_D0_XCNT_CUR, val) +#define bfin_read_MDMA_D0_CURR_Y_COUNT() bfin_read32(MDMA_D0_YCNT_CUR) +#define bfin_write_MDMA_D0_CURR_Y_COUNT(val) bfin_write32(MDMA_D0_YCNT_CUR, val) +#define bfin_read_MDMA_S1_NEXT_DESC_PTR() bfin_readPTR(MDMA_S1_DSCPTR_NXT) +#define bfin_write_MDMA_S1_NEXT_DESC_PTR(val) bfin_writePTR(MDMA_S1_DSCPTR_NXT, val) +#define bfin_read_MDMA_S1_START_ADDR() bfin_readPTR(MDMA_S1_ADDRSTART) +#define bfin_write_MDMA_S1_START_ADDR(val) bfin_writePTR(MDMA_S1_ADDRSTART, val) +#define bfin_read_MDMA_S1_CONFIG() bfin_read32(MDMA_S1_CFG) +#define bfin_write_MDMA_S1_CONFIG(val) bfin_write32(MDMA_S1_CFG, val) +#define bfin_read_MDMA_S1_X_COUNT() bfin_read32(MDMA_S1_XCNT) +#define bfin_write_MDMA_S1_X_COUNT(val) bfin_write32(MDMA_S1_XCNT, val) +#define bfin_read_MDMA_S1_X_MODIFY() bfin_read32(MDMA_S1_XMOD) +#define bfin_write_MDMA_S1_X_MODIFY(val) bfin_write32(MDMA_S1_XMOD, val) +#define bfin_read_MDMA_S1_Y_COUNT() bfin_read32(MDMA_S1_YCNT) +#define bfin_write_MDMA_S1_Y_COUNT(val) bfin_write32(MDMA_S1_YCNT, val) +#define bfin_read_MDMA_S1_Y_MODIFY() bfin_read32(MDMA_S1_YMOD) +#define bfin_write_MDMA_S1_Y_MODIFY(val) bfin_write32(MDMA_S1_YMOD, val) +#define bfin_read_MDMA_S1_CURR_DESC_PTR() bfin_readPTR(MDMA_S1_DSCPTR_CUR) +#define bfin_write_MDMA_S1_CURR_DESC_PTR(val) bfin_writePTR(MDMA_S1_DSCPTR_CUR, val) +#define bfin_read_MDMA_S1_CURR_ADDR() bfin_readPTR(MDMA_S1_ADDR_CUR) +#define bfin_write_MDMA_S1_CURR_ADDR(val) bfin_writePTR(MDMA_S1_ADDR_CUR, val) +#define bfin_read_MDMA_S1_IRQ_STATUS() bfin_read32(MDMA_S1_STAT) +#define bfin_write_MDMA_S1_IRQ_STATUS(val) bfin_write32(MDMA_S1_STAT, val) +#define bfin_read_MDMA_S1_CURR_X_COUNT() bfin_read32(MDMA_S1_XCNT_CUR) +#define bfin_write_MDMA_S1_CURR_X_COUNT(val) bfin_write32(MDMA_S1_XCNT_CUR, val) +#define bfin_read_MDMA_S1_CURR_Y_COUNT() bfin_read32(MDMA_S1_YCNT_CUR) +#define bfin_write_MDMA_S1_CURR_Y_COUNT(val) bfin_write32(MDMA_S1_YCNT_CUR, val) +#define bfin_read_MDMA_D1_NEXT_DESC_PTR() bfin_readPTR(MDMA_D1_DSCPTR_NXT) +#define bfin_write_MDMA_D1_NEXT_DESC_PTR(val) bfin_writePTR(MDMA_D1_DSCPTR_NXT, val) +#define bfin_read_MDMA_D1_START_ADDR() bfin_readPTR(MDMA_D1_ADDRSTART) +#define bfin_write_MDMA_D1_START_ADDR(val) bfin_writePTR(MDMA_D1_ADDRSTART, val) +#define bfin_read_MDMA_D1_CONFIG() bfin_read32(MDMA_D1_CFG) +#define bfin_write_MDMA_D1_CONFIG(val) bfin_write32(MDMA_D1_CFG, val) +#define bfin_read_MDMA_D1_X_COUNT() bfin_read32(MDMA_D1_XCNT) +#define bfin_write_MDMA_D1_X_COUNT(val) bfin_write32(MDMA_D1_XCNT, val) +#define bfin_read_MDMA_D1_X_MODIFY() bfin_read32(MDMA_D1_XMOD) +#define bfin_write_MDMA_D1_X_MODIFY(val) bfin_write32(MDMA_D1_XMOD, val) +#define bfin_read_MDMA_D1_Y_COUNT() bfin_read32(MDMA_D1_YCNT) +#define bfin_write_MDMA_D1_Y_COUNT(val) bfin_write32(MDMA_D1_YCNT, val) +#define bfin_read_MDMA_D1_Y_MODIFY() bfin_read32(MDMA_D1_YMOD) +#define bfin_write_MDMA_D1_Y_MODIFY(val) bfin_write32(MDMA_D1_YMOD, val) +#define bfin_read_MDMA_D1_CURR_DESC_PTR() bfin_readPTR(MDMA_D1_DSCPTR_CUR) +#define bfin_write_MDMA_D1_CURR_DESC_PTR(val) bfin_writePTR(MDMA_D1_DSCPTR_CUR, val) +#define bfin_read_MDMA_D1_CURR_ADDR() bfin_readPTR(MDMA_D1_ADDR_CUR) +#define bfin_write_MDMA_D1_CURR_ADDR(val) bfin_writePTR(MDMA_D1_ADDR_CUR, val) +#define bfin_read_MDMA_D1_IRQ_STATUS() bfin_read32(MDMA_D1_STAT) +#define bfin_write_MDMA_D1_IRQ_STATUS(val) bfin_write32(MDMA_D1_STAT, val) +#define bfin_read_MDMA_D1_CURR_X_COUNT() bfin_read32(MDMA_D1_XCNT_CUR) +#define bfin_write_MDMA_D1_CURR_X_COUNT(val) bfin_write32(MDMA_D1_XCNT_CUR, val) +#define bfin_read_MDMA_D1_CURR_Y_COUNT() bfin_read32(MDMA_D1_YCNT_CUR) +#define bfin_write_MDMA_D1_CURR_Y_COUNT(val) bfin_write32(MDMA_D1_YCNT_CUR, val) + +#define bfin_read_WDOG_CNT() bfin_read32(WDOG_CNT) +#define bfin_write_WDOG_CNT(val) bfin_write32(WDOG_CNT, val) +#define bfin_read_WDOG_CTL() bfin_read32(WDOG_CTL) +#define bfin_write_WDOG_CTL(val) bfin_write32(WDOG_CTL, val) +#define bfin_read_WDOG_STAT() bfin_read32(WDOG_STAT) +#define bfin_write_WDOG_STAT(val) bfin_write32(WDOG_STAT, val) +#define bfin_read_SPI_BAUD() bfin_read32(SPI0_CLK) +#define bfin_write_SPI_BAUD(val) bfin_write32(SPI0_CLK, val) + +#define bfin_read_PORTD_FER() bfin_read32(PORTD_FER) +#define bfin_write_PORTD_FER_SET(val) bfin_write32(PORTD_FER_SET, val) +#define bfin_write_PORTD_FER_CLR(val) bfin_write32(PORTD_FER_CLR, val) +#define bfin_read_PORTD_MUX() bfin_read32(PORTD_MUX) +#define bfin_write_PORTD_MUX(val) bfin_write32(PORTD_MUX, val) +#define bfin_read_PORTG_FER() bfin_read32(PORTG_FER) +#define bfin_write_PORTG_FER_SET(val) bfin_write32(PORTG_FER_SET, val) +#define bfin_write_PORTG_FER_CLR(val) bfin_write32(PORTG_FER_CLR, val) +#define bfin_read_PORTG_MUX() bfin_read32(PORTG_MUX) +#define bfin_write_PORTG_MUX(val) bfin_write32(PORTG_MUX, val) + +#define bfin_read_RSI_CLK_CONTROL() bfin_read16(RSI_CLK_CONTROL) +#define bfin_write_RSI_CLK_CONTROL(val) bfin_write16(RSI_CLK_CONTROL, val) +#define bfin_read_RSI_ARGUMENT() bfin_read32(RSI_ARGUMENT) +#define bfin_write_RSI_ARGUMENT(val) bfin_write32(RSI_ARGUMENT, val) +#define bfin_read_RSI_COMMAND() bfin_read16(RSI_COMMAND) +#define bfin_write_RSI_COMMAND(val) bfin_write16(RSI_COMMAND, val) +#define bfin_read_RSI_RESP_CMD() bfin_read16(RSI_RESP_CMD) +#define bfin_write_RSI_RESP_CMD(val) bfin_write16(RSI_RESP_CMD, val) +#define bfin_read_RSI_RESPONSE0() bfin_read32(RSI_RESPONSE0) +#define bfin_write_RSI_RESPONSE0(val) bfin_write32(RSI_RESPONSE0, val) +#define bfin_read_RSI_RESPONSE1() bfin_read32(RSI_RESPONSE1) +#define bfin_write_RSI_RESPONSE1(val) bfin_write32(RSI_RESPONSE1, val) +#define bfin_read_RSI_RESPONSE2() bfin_read32(RSI_RESPONSE2) +#define bfin_write_RSI_RESPONSE2(val) bfin_write32(RSI_RESPONSE2, val) +#define bfin_read_RSI_RESPONSE3() bfin_read32(RSI_RESPONSE3) +#define bfin_write_RSI_RESPONSE3(val) bfin_write32(RSI_RESPONSE3, val) +#define bfin_read_RSI_DATA_TIMER() bfin_read32(RSI_DATA_TIMER) +#define bfin_write_RSI_DATA_TIMER(val) bfin_write32(RSI_DATA_TIMER, val) +#define bfin_read_RSI_DATA_LGTH() bfin_read16(RSI_DATA_LGTH) +#define bfin_write_RSI_DATA_LGTH(val) bfin_write16(RSI_DATA_LGTH, val) +#define bfin_read_RSI_DATA_CONTROL() bfin_read16(RSI_DATA_CONTROL) +#define bfin_write_RSI_DATA_CONTROL(val) bfin_write16(RSI_DATA_CONTROL, val) +#define bfin_read_RSI_DATA_CNT() bfin_read16(RSI_DATA_CNT) +#define bfin_write_RSI_DATA_CNT(val) bfin_write16(RSI_DATA_CNT, val) +#define bfin_read_RSI_STATUS() bfin_read32(RSI_STATUS) +#define bfin_write_RSI_STATUS(val) bfin_write32(RSI_STATUS, val) +#define bfin_read_RSI_STATUSCL() bfin_read16(RSI_STATUSCL) +#define bfin_write_RSI_STATUSCL(val) bfin_write16(RSI_STATUSCL, val) +#define bfin_read_RSI_MASK0() bfin_read32(RSI_MASK0) +#define bfin_write_RSI_MASK0(val) bfin_write32(RSI_MASK0, val) +#define bfin_read_RSI_MASK1() bfin_read32(RSI_MASK1) +#define bfin_write_RSI_MASK1(val) bfin_write32(RSI_MASK1, val) +#define bfin_read_RSI_FIFO_CNT() bfin_read16(RSI_FIFO_CNT) +#define bfin_write_RSI_FIFO_CNT(val) bfin_write16(RSI_FIFO_CNT, val) +#define bfin_read_RSI_CEATA_CONTROL() bfin_read16(RSI_CEATA_CONTROL) +#define bfin_write_RSI_CEATA_CONTROL(val) bfin_write16(RSI_CEATA_CONTROL, val) +#define bfin_read_RSI_BLKSZ() bfin_read16(RSI_BLKSZ) +#define bfin_write_RSI_BLKSZ(val) bfin_write16(RSI_BLKSZ, val) +#define bfin_read_RSI_FIFO() bfin_read32(RSI_FIFO) +#define bfin_write_RSI_FIFO(val) bfin_write32(RSI_FIFO, val) +#define bfin_read_RSI_ESTAT() bfin_read32(RSI_ESTAT) +#define bfin_write_RSI_ESTAT(val) bfin_write32(RSI_ESTAT, val) +#define bfin_read_RSI_EMASK() bfin_read32(RSI_EMASK) +#define bfin_write_RSI_EMASK(val) bfin_write32(RSI_EMASK, val) +#define bfin_read_RSI_CONFIG() bfin_read16(RSI_CONFIG) +#define bfin_write_RSI_CONFIG(val) bfin_write16(RSI_CONFIG, val) +#define bfin_read_RSI_RD_WAIT_EN() bfin_read16(RSI_RD_WAIT_EN) +#define bfin_write_RSI_RD_WAIT_EN(val) bfin_write16(RSI_RD_WAIT_EN, val) +#define bfin_read_RSI_PID0() bfin_read16(RSI_PID0) +#define bfin_write_RSI_PID0(val) bfin_write16(RSI_PID0, val) +#define bfin_read_RSI_PID1() bfin_read16(RSI_PID1) +#define bfin_write_RSI_PID1(val) bfin_write16(RSI_PID1, val) +#define bfin_read_RSI_PID2() bfin_read16(RSI_PID2) +#define bfin_write_RSI_PID2(val) bfin_write16(RSI_PID2, val) +#define bfin_read_RSI_PID3() bfin_read16(RSI_PID3) +#define bfin_write_RSI_PID3(val) bfin_write16(RSI_PID3, val) + +#endif /* __BFIN_CDEF_ADSP_BF609_proc__ */ diff --git a/arch/blackfin/include/asm/mach-bf609/BF609_def.h b/arch/blackfin/include/asm/mach-bf609/BF609_def.h new file mode 100644 index 0000000..008293f --- /dev/null +++ b/arch/blackfin/include/asm/mach-bf609/BF609_def.h @@ -0,0 +1,3758 @@ +/* DO NOT EDIT THIS FILE + * Automatically generated by generate-def-headers.xsl + * DO NOT EDIT THIS FILE + */ + +#ifndef __BFIN_DEF_ADSP_BF609_proc__ +#define __BFIN_DEF_ADSP_BF609_proc__ + +#include "../mach-common/ADSP-EDN-core_def.h" + +#define CNT_CFG 0xFFC00400 /* CNT0 Configuration Register */ +#define CNT_IMSK 0xFFC00404 /* CNT0 Interrupt Mask Register */ +#define CNT_STAT 0xFFC00408 /* CNT0 Status Register */ +#define CNT_CMD 0xFFC0040C /* CNT0 Command Register */ +#define CNT_DEBNCE 0xFFC00410 /* CNT0 Debounce Register */ +#define CNT_CNTR 0xFFC00414 /* CNT0 Counter Register */ +#define CNT_MAX 0xFFC00418 /* CNT0 Maximum Count Register */ +#define CNT_MIN 0xFFC0041C /* CNT0 Minimum Count Register */ + +#define RSI_CLK_CONTROL 0xFFC00604 /* RSI0 Clock Control Register */ +#define RSI_ARGUMENT 0xFFC00608 /* RSI0 Argument Register */ +#define RSI_COMMAND 0xFFC0060C /* RSI0 Command Register */ +#define RSI_RESP_CMD 0xFFC00610 /* RSI0 Response Command Register */ +#define RSI_RESPONSE0 0xFFC00614 /* RSI0 Response 0 Register */ +#define RSI_RESPONSE1 0xFFC00618 /* RSI0 Response 1 Register */ +#define RSI_RESPONSE2 0xFFC0061C /* RSI0 Response 2 Register */ +#define RSI_RESPONSE3 0xFFC00620 /* RSI0 Response 3 Register */ +#define RSI_DATA_TIMER 0xFFC00624 /* RSI0 Data Timer Register */ +#define RSI_DATA_LGTH 0xFFC00628 /* RSI0 Data Length Register */ +#define RSI_DATA_CONTROL 0xFFC0062C /* RSI0 Data Control Register */ +#define RSI_DATA_CNT 0xFFC00630 /* RSI0 Data Count Register */ +#define RSI_STATUS 0xFFC00634 /* RSI0 Status Register */ +#define RSI_STATUSCL 0xFFC00638 /* RSI0 Status Clear Register */ +#define RSI_IMSK0 0xFFC0063C /* RSI0 Interrupt 0 Mask Register */ +#define RSI_IMSK1 0xFFC00640 /* RSI0 Interrupt 1 Mask Register */ +#define RSI_FIFO_CNT 0xFFC00648 /* RSI0 FIFO Counter Register */ +#define RSI_CEATA_CONTROL 0xFFC0064C /* RSI0 This register contains bit to dis CCS gen */ +#define RSI_BOOT_TCNTR 0xFFC00650 /* RSI0 Boot Timing Counter Register */ +#define RSI_BACK_TOUT 0xFFC00654 /* RSI0 Boot Acknowledge Timeout Register */ +#define RSI_SLP_WKUP_TOUT 0xFFC00658 /* RSI0 Sleep Wakeup Timeout Register */ +#define RSI_BLKSZ 0xFFC0065C /* RSI0 Block Size Register */ +#define RSI_FIFO 0xFFC00680 /* RSI0 Data FIFO Register */ +#define RSI_ESTAT 0xFFC006C0 /* RSI0 Exception Status Register */ +#define RSI_EMASK 0xFFC006C4 /* RSI0 Exception Mask Register */ +#define RSI_CONFIG 0xFFC006C8 /* RSI0 Configuration Register */ +#define RSI_RD_WAIT_EN 0xFFC006CC /* RSI0 Read Wait Enable Register */ +#define RSI_PID0 0xFFC006D0 /* RSI0 Peripheral Identification Register */ +#define RSI_PID1 0xFFC006D4 /* RSI0 Peripheral Identification Register */ +#define RSI_PID2 0xFFC006D8 /* RSI0 Peripheral Identification Register */ +#define RSI_PID3 0xFFC006DC /* RSI0 Peripheral Identification Register */ + +#define CAN0_MC1 0xFFC00A00 /* CAN0 Mailbox Configuration Register 1 */ +#define CAN0_MD1 0xFFC00A04 /* CAN0 Mailbox Direction Register 1 */ +#define CAN0_TRS1 0xFFC00A08 /* CAN0 Transmission Request Set Register 1 */ +#define CAN0_TRR1 0xFFC00A0C /* CAN0 Transmission Request Reset Register 1 */ +#define CAN0_TA1 0xFFC00A10 /* CAN0 Transmission Acknowledge Register 1 */ +#define CAN0_AA1 0xFFC00A14 /* CAN0 Abort Acknowledge Register 1 */ +#define CAN0_RMP1 0xFFC00A18 /* CAN0 Receive Message Pending Register 1 */ +#define CAN0_RML1 0xFFC00A1C /* CAN0 Receive Message Lost Register 1 */ +#define CAN0_MBTIF1 0xFFC00A20 /* CAN0 Mailbox Transmit Interrupt Flag Register 1 */ +#define CAN0_MBRIF1 0xFFC00A24 /* CAN0 Mailbox Receive Interrupt Flag Register 1 */ +#define CAN0_MBIM1 0xFFC00A28 /* CAN0 Mailbox Interrupt Mask Register 1 */ +#define CAN0_RFH1 0xFFC00A2C /* CAN0 Remote Frame Handling Register 1 */ +#define CAN0_OPSS1 0xFFC00A30 /* CAN0 Overwrite Protection/Single Shot Transmission Register 1 */ +#define CAN0_MC2 0xFFC00A40 /* CAN0 Mailbox Configuration Register 2 */ +#define CAN0_MD2 0xFFC00A44 /* CAN0 Mailbox Direction Register 2 */ +#define CAN0_TRS2 0xFFC00A48 /* CAN0 Transmission Request Set Register 2 */ +#define CAN0_TRR2 0xFFC00A4C /* CAN0 Transmission Request Reset Register 2 */ +#define CAN0_TA2 0xFFC00A50 /* CAN0 Transmission Acknowledge Register 2 */ +#define CAN0_AA2 0xFFC00A54 /* CAN0 Abort Acknowledge Register 2 */ +#define CAN0_RMP2 0xFFC00A58 /* CAN0 Receive Message Pending Register 2 */ +#define CAN0_RML2 0xFFC00A5C /* CAN0 Receive Message Lost Register 2 */ +#define CAN0_MBTIF2 0xFFC00A60 /* CAN0 Mailbox Transmit Interrupt Flag Register 2 */ +#define CAN0_MBRIF2 0xFFC00A64 /* CAN0 Mailbox Receive Interrupt Flag Register 2 */ +#define CAN0_MBIM2 0xFFC00A68 /* CAN0 Mailbox Interrupt Mask Register 2 */ +#define CAN0_RFH2 0xFFC00A6C /* CAN0 Remote Frame Handling Register 2 */ +#define CAN0_OPSS2 0xFFC00A70 /* CAN0 Overwrite Protection/Single Shot Transmission Register 2 */ +#define CAN0_CLK 0xFFC00A80 /* CAN0 Clock Register */ +#define CAN0_TIMING 0xFFC00A84 /* CAN0 Timing Register */ +#define CAN0_DBG 0xFFC00A88 /* CAN0 Debug Register */ +#define CAN0_STAT 0xFFC00A8C /* CAN0 Status Register */ +#define CAN0_CEC 0xFFC00A90 /* CAN0 Error Counter Register */ +#define CAN0_GIS 0xFFC00A94 /* CAN0 Global CAN Interrupt Status */ +#define CAN0_GIM 0xFFC00A98 /* CAN0 Global CAN Interrupt Mask */ +#define CAN0_GIF 0xFFC00A9C /* CAN0 Global CAN Interrupt Flag */ +#define CAN0_CTL 0xFFC00AA0 /* CAN0 CAN Master Control Register */ +#define CAN0_INT 0xFFC00AA4 /* CAN0 Interrupt Pending Register */ +#define CAN0_MBTD 0xFFC00AAC /* CAN0 Temporary Mailbox Disable Register */ +#define CAN0_EWR 0xFFC00AB0 /* CAN0 Error Counter Warning Level Register */ +#define CAN0_ESR 0xFFC00AB4 /* CAN0 Error Status Register */ +#define CAN0_UCCNT 0xFFC00AC4 /* CAN0 Universal Counter Register */ +#define CAN0_UCRC 0xFFC00AC8 /* CAN0 Universal Counter Reload/Capture Register */ +#define CAN0_UCCNF 0xFFC00ACC /* CAN0 Universal Counter Configuration Mode Register */ +#define CAN0_AM00L 0xFFC00B00 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM01L 0xFFC00B08 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM02L 0xFFC00B10 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM03L 0xFFC00B18 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM04L 0xFFC00B20 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM05L 0xFFC00B28 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM06L 0xFFC00B30 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM07L 0xFFC00B38 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM08L 0xFFC00B40 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM09L 0xFFC00B48 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM10L 0xFFC00B50 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM11L 0xFFC00B58 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM12L 0xFFC00B60 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM13L 0xFFC00B68 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM14L 0xFFC00B70 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM15L 0xFFC00B78 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM16L 0xFFC00B80 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM17L 0xFFC00B88 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM18L 0xFFC00B90 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM19L 0xFFC00B98 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM20L 0xFFC00BA0 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM21L 0xFFC00BA8 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM22L 0xFFC00BB0 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM23L 0xFFC00BB8 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM24L 0xFFC00BC0 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM25L 0xFFC00BC8 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM26L 0xFFC00BD0 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM27L 0xFFC00BD8 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM28L 0xFFC00BE0 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM29L 0xFFC00BE8 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM30L 0xFFC00BF0 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM31L 0xFFC00BF8 /* CAN0 Acceptance Mask Register (L) */ +#define CAN0_AM00H 0xFFC00B04 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM01H 0xFFC00B0C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM02H 0xFFC00B14 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM03H 0xFFC00B1C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM04H 0xFFC00B24 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM05H 0xFFC00B2C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM06H 0xFFC00B34 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM07H 0xFFC00B3C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM08H 0xFFC00B44 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM09H 0xFFC00B4C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM10H 0xFFC00B54 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM11H 0xFFC00B5C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM12H 0xFFC00B64 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM13H 0xFFC00B6C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM14H 0xFFC00B74 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM15H 0xFFC00B7C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM16H 0xFFC00B84 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM17H 0xFFC00B8C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM18H 0xFFC00B94 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM19H 0xFFC00B9C /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM20H 0xFFC00BA4 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM21H 0xFFC00BAC /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM22H 0xFFC00BB4 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM23H 0xFFC00BBC /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM24H 0xFFC00BC4 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM25H 0xFFC00BCC /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM26H 0xFFC00BD4 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM27H 0xFFC00BDC /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM28H 0xFFC00BE4 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM29H 0xFFC00BEC /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM30H 0xFFC00BF4 /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_AM31H 0xFFC00BFC /* CAN0 Acceptance Mask Register (H) */ +#define CAN0_MB00_DATA0 0xFFC00C00 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB01_DATA0 0xFFC00C20 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB02_DATA0 0xFFC00C40 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB03_DATA0 0xFFC00C60 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB04_DATA0 0xFFC00C80 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB05_DATA0 0xFFC00CA0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB06_DATA0 0xFFC00CC0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB07_DATA0 0xFFC00CE0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB08_DATA0 0xFFC00D00 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB09_DATA0 0xFFC00D20 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB10_DATA0 0xFFC00D40 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB11_DATA0 0xFFC00D60 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB12_DATA0 0xFFC00D80 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB13_DATA0 0xFFC00DA0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB14_DATA0 0xFFC00DC0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB15_DATA0 0xFFC00DE0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB16_DATA0 0xFFC00E00 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB17_DATA0 0xFFC00E20 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB18_DATA0 0xFFC00E40 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB19_DATA0 0xFFC00E60 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB20_DATA0 0xFFC00E80 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB21_DATA0 0xFFC00EA0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB22_DATA0 0xFFC00EC0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB23_DATA0 0xFFC00EE0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB24_DATA0 0xFFC00F00 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB25_DATA0 0xFFC00F20 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB26_DATA0 0xFFC00F40 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB27_DATA0 0xFFC00F60 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB28_DATA0 0xFFC00F80 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB29_DATA0 0xFFC00FA0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB30_DATA0 0xFFC00FC0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB31_DATA0 0xFFC00FE0 /* CAN0 Mailbox Word 0 Register */ +#define CAN0_MB00_DATA1 0xFFC00C04 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB01_DATA1 0xFFC00C24 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB02_DATA1 0xFFC00C44 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB03_DATA1 0xFFC00C64 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB04_DATA1 0xFFC00C84 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB05_DATA1 0xFFC00CA4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB06_DATA1 0xFFC00CC4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB07_DATA1 0xFFC00CE4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB08_DATA1 0xFFC00D04 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB09_DATA1 0xFFC00D24 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB10_DATA1 0xFFC00D44 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB11_DATA1 0xFFC00D64 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB12_DATA1 0xFFC00D84 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB13_DATA1 0xFFC00DA4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB14_DATA1 0xFFC00DC4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB15_DATA1 0xFFC00DE4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB16_DATA1 0xFFC00E04 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB17_DATA1 0xFFC00E24 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB18_DATA1 0xFFC00E44 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB19_DATA1 0xFFC00E64 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB20_DATA1 0xFFC00E84 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB21_DATA1 0xFFC00EA4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB22_DATA1 0xFFC00EC4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB23_DATA1 0xFFC00EE4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB24_DATA1 0xFFC00F04 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB25_DATA1 0xFFC00F24 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB26_DATA1 0xFFC00F44 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB27_DATA1 0xFFC00F64 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB28_DATA1 0xFFC00F84 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB29_DATA1 0xFFC00FA4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB30_DATA1 0xFFC00FC4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB31_DATA1 0xFFC00FE4 /* CAN0 Mailbox Word 1 Register */ +#define CAN0_MB00_DATA2 0xFFC00C08 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB01_DATA2 0xFFC00C28 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB02_DATA2 0xFFC00C48 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB03_DATA2 0xFFC00C68 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB04_DATA2 0xFFC00C88 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB05_DATA2 0xFFC00CA8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB06_DATA2 0xFFC00CC8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB07_DATA2 0xFFC00CE8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB08_DATA2 0xFFC00D08 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB09_DATA2 0xFFC00D28 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB10_DATA2 0xFFC00D48 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB11_DATA2 0xFFC00D68 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB12_DATA2 0xFFC00D88 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB13_DATA2 0xFFC00DA8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB14_DATA2 0xFFC00DC8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB15_DATA2 0xFFC00DE8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB16_DATA2 0xFFC00E08 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB17_DATA2 0xFFC00E28 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB18_DATA2 0xFFC00E48 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB19_DATA2 0xFFC00E68 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB20_DATA2 0xFFC00E88 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB21_DATA2 0xFFC00EA8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB22_DATA2 0xFFC00EC8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB23_DATA2 0xFFC00EE8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB24_DATA2 0xFFC00F08 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB25_DATA2 0xFFC00F28 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB26_DATA2 0xFFC00F48 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB27_DATA2 0xFFC00F68 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB28_DATA2 0xFFC00F88 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB29_DATA2 0xFFC00FA8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB30_DATA2 0xFFC00FC8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB31_DATA2 0xFFC00FE8 /* CAN0 Mailbox Word 2 Register */ +#define CAN0_MB00_DATA3 0xFFC00C0C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB01_DATA3 0xFFC00C2C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB02_DATA3 0xFFC00C4C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB03_DATA3 0xFFC00C6C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB04_DATA3 0xFFC00C8C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB05_DATA3 0xFFC00CAC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB06_DATA3 0xFFC00CCC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB07_DATA3 0xFFC00CEC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB08_DATA3 0xFFC00D0C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB09_DATA3 0xFFC00D2C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB10_DATA3 0xFFC00D4C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB11_DATA3 0xFFC00D6C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB12_DATA3 0xFFC00D8C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB13_DATA3 0xFFC00DAC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB14_DATA3 0xFFC00DCC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB15_DATA3 0xFFC00DEC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB16_DATA3 0xFFC00E0C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB17_DATA3 0xFFC00E2C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB18_DATA3 0xFFC00E4C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB19_DATA3 0xFFC00E6C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB20_DATA3 0xFFC00E8C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB21_DATA3 0xFFC00EAC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB22_DATA3 0xFFC00ECC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB23_DATA3 0xFFC00EEC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB24_DATA3 0xFFC00F0C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB25_DATA3 0xFFC00F2C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB26_DATA3 0xFFC00F4C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB27_DATA3 0xFFC00F6C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB28_DATA3 0xFFC00F8C /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB29_DATA3 0xFFC00FAC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB30_DATA3 0xFFC00FCC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB31_DATA3 0xFFC00FEC /* CAN0 Mailbox Word 3 Register */ +#define CAN0_MB00_LENGTH 0xFFC00C10 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB01_LENGTH 0xFFC00C30 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB02_LENGTH 0xFFC00C50 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB03_LENGTH 0xFFC00C70 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB04_LENGTH 0xFFC00C90 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB05_LENGTH 0xFFC00CB0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB06_LENGTH 0xFFC00CD0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB07_LENGTH 0xFFC00CF0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB08_LENGTH 0xFFC00D10 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB09_LENGTH 0xFFC00D30 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB10_LENGTH 0xFFC00D50 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB11_LENGTH 0xFFC00D70 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB12_LENGTH 0xFFC00D90 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB13_LENGTH 0xFFC00DB0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB14_LENGTH 0xFFC00DD0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB15_LENGTH 0xFFC00DF0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB16_LENGTH 0xFFC00E10 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB17_LENGTH 0xFFC00E30 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB18_LENGTH 0xFFC00E50 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB19_LENGTH 0xFFC00E70 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB20_LENGTH 0xFFC00E90 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB21_LENGTH 0xFFC00EB0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB22_LENGTH 0xFFC00ED0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB23_LENGTH 0xFFC00EF0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB24_LENGTH 0xFFC00F10 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB25_LENGTH 0xFFC00F30 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB26_LENGTH 0xFFC00F50 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB27_LENGTH 0xFFC00F70 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB28_LENGTH 0xFFC00F90 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB29_LENGTH 0xFFC00FB0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB30_LENGTH 0xFFC00FD0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB31_LENGTH 0xFFC00FF0 /* CAN0 Mailbox Word 4 Register */ +#define CAN0_MB00_TIMESTAMP 0xFFC00C14 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB01_TIMESTAMP 0xFFC00C34 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB02_TIMESTAMP 0xFFC00C54 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB03_TIMESTAMP 0xFFC00C74 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB04_TIMESTAMP 0xFFC00C94 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB05_TIMESTAMP 0xFFC00CB4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB06_TIMESTAMP 0xFFC00CD4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB07_TIMESTAMP 0xFFC00CF4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB08_TIMESTAMP 0xFFC00D14 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB09_TIMESTAMP 0xFFC00D34 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB10_TIMESTAMP 0xFFC00D54 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB11_TIMESTAMP 0xFFC00D74 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB12_TIMESTAMP 0xFFC00D94 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB13_TIMESTAMP 0xFFC00DB4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB14_TIMESTAMP 0xFFC00DD4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB15_TIMESTAMP 0xFFC00DF4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB16_TIMESTAMP 0xFFC00E14 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB17_TIMESTAMP 0xFFC00E34 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB18_TIMESTAMP 0xFFC00E54 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB19_TIMESTAMP 0xFFC00E74 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB20_TIMESTAMP 0xFFC00E94 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB21_TIMESTAMP 0xFFC00EB4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB22_TIMESTAMP 0xFFC00ED4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB23_TIMESTAMP 0xFFC00EF4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB24_TIMESTAMP 0xFFC00F14 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB25_TIMESTAMP 0xFFC00F34 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB26_TIMESTAMP 0xFFC00F54 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB27_TIMESTAMP 0xFFC00F74 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB28_TIMESTAMP 0xFFC00F94 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB29_TIMESTAMP 0xFFC00FB4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB30_TIMESTAMP 0xFFC00FD4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB31_TIMESTAMP 0xFFC00FF4 /* CAN0 Mailbox Word 5 Register */ +#define CAN0_MB00_ID0 0xFFC00C18 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB01_ID0 0xFFC00C38 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB02_ID0 0xFFC00C58 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB03_ID0 0xFFC00C78 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB04_ID0 0xFFC00C98 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB05_ID0 0xFFC00CB8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB06_ID0 0xFFC00CD8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB07_ID0 0xFFC00CF8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB08_ID0 0xFFC00D18 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB09_ID0 0xFFC00D38 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB10_ID0 0xFFC00D58 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB11_ID0 0xFFC00D78 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB12_ID0 0xFFC00D98 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB13_ID0 0xFFC00DB8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB14_ID0 0xFFC00DD8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB15_ID0 0xFFC00DF8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB16_ID0 0xFFC00E18 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB17_ID0 0xFFC00E38 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB18_ID0 0xFFC00E58 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB19_ID0 0xFFC00E78 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB20_ID0 0xFFC00E98 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB21_ID0 0xFFC00EB8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB22_ID0 0xFFC00ED8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB23_ID0 0xFFC00EF8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB24_ID0 0xFFC00F18 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB25_ID0 0xFFC00F38 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB26_ID0 0xFFC00F58 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB27_ID0 0xFFC00F78 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB28_ID0 0xFFC00F98 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB29_ID0 0xFFC00FB8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB30_ID0 0xFFC00FD8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB31_ID0 0xFFC00FF8 /* CAN0 Mailbox Word 6 Register */ +#define CAN0_MB00_ID1 0xFFC00C1C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB01_ID1 0xFFC00C3C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB02_ID1 0xFFC00C5C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB03_ID1 0xFFC00C7C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB04_ID1 0xFFC00C9C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB05_ID1 0xFFC00CBC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB06_ID1 0xFFC00CDC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB07_ID1 0xFFC00CFC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB08_ID1 0xFFC00D1C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB09_ID1 0xFFC00D3C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB10_ID1 0xFFC00D5C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB11_ID1 0xFFC00D7C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB12_ID1 0xFFC00D9C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB13_ID1 0xFFC00DBC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB14_ID1 0xFFC00DDC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB15_ID1 0xFFC00DFC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB16_ID1 0xFFC00E1C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB17_ID1 0xFFC00E3C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB18_ID1 0xFFC00E5C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB19_ID1 0xFFC00E7C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB20_ID1 0xFFC00E9C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB21_ID1 0xFFC00EBC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB22_ID1 0xFFC00EDC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB23_ID1 0xFFC00EFC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB24_ID1 0xFFC00F1C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB25_ID1 0xFFC00F3C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB26_ID1 0xFFC00F5C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB27_ID1 0xFFC00F7C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB28_ID1 0xFFC00F9C /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB29_ID1 0xFFC00FBC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB30_ID1 0xFFC00FDC /* CAN0 Mailbox Word 7 Register */ +#define CAN0_MB31_ID1 0xFFC00FFC /* CAN0 Mailbox Word 7 Register */ +#define LP0_CTL 0xFFC01000 /* LP0 Control Register */ +#define LP0_STAT 0xFFC01004 /* LP0 Status Register */ +#define LP0_DIV 0xFFC01008 /* LP0 Clock Divider Value */ +#define LP0_CNT 0xFFC0100C /* LP0 Current Count Value of Clock Divider */ +#define LP0_TX 0xFFC01010 /* LP0 Transmit Buffer */ +#define LP0_RX 0xFFC01014 /* LP0 Receive Buffer */ +#define LP0_TXIN_SHDW 0xFFC01018 /* LP0 Shadow Input Transmit Buffer */ +#define LP0_TXOUT_SHDW 0xFFC0101C /* LP0 Shadow Output Transmit Buffer */ +#define LP1_CTL 0xFFC01100 /* LP1 Control Register */ +#define LP1_STAT 0xFFC01104 /* LP1 Status Register */ +#define LP1_DIV 0xFFC01108 /* LP1 Clock Divider Value */ +#define LP1_CNT 0xFFC0110C /* LP1 Current Count Value of Clock Divider */ +#define LP1_TX 0xFFC01110 /* LP1 Transmit Buffer */ +#define LP1_RX 0xFFC01114 /* LP1 Receive Buffer */ +#define LP1_TXIN_SHDW 0xFFC01118 /* LP1 Shadow Input Transmit Buffer */ +#define LP1_TXOUT_SHDW 0xFFC0111C /* LP1 Shadow Output Transmit Buffer */ +#define LP2_CTL 0xFFC01200 /* LP2 Control Register */ +#define LP2_STAT 0xFFC01204 /* LP2 Status Register */ +#define LP2_DIV 0xFFC01208 /* LP2 Clock Divider Value */ +#define LP2_CNT 0xFFC0120C /* LP2 Current Count Value of Clock Divider */ +#define LP2_TX 0xFFC01210 /* LP2 Transmit Buffer */ +#define LP2_RX 0xFFC01214 /* LP2 Receive Buffer */ +#define LP2_TXIN_SHDW 0xFFC01218 /* LP2 Shadow Input Transmit Buffer */ +#define LP2_TXOUT_SHDW 0xFFC0121C /* LP2 Shadow Output Transmit Buffer */ +#define LP3_CTL 0xFFC01300 /* LP3 Control Register */ +#define LP3_STAT 0xFFC01304 /* LP3 Status Register */ +#define LP3_DIV 0xFFC01308 /* LP3 Clock Divider Value */ +#define LP3_CNT 0xFFC0130C /* LP3 Current Count Value of Clock Divider */ +#define LP3_TX 0xFFC01310 /* LP3 Transmit Buffer */ +#define LP3_RX 0xFFC01314 /* LP3 Receive Buffer */ +#define LP3_TXIN_SHDW 0xFFC01318 /* LP3 Shadow Input Transmit Buffer */ +#define LP3_TXOUT_SHDW 0xFFC0131C /* LP3 Shadow Output Transmit Buffer */ +#define TIMER0_REVID 0xFFC01400 /* TIMER0 Timer IP Version ID */ +#define TIMER0_RUN 0xFFC01404 /* TIMER0 Timer Run Register */ +#define TIMER0_RUN_SET 0xFFC01408 /* TIMER0 Run Register Alias to Set */ +#define TIMER0_RUN_CLR 0xFFC0140C /* TIMER0 Run Register Alias to Clear */ +#define TIMER0_STOP_CFG 0xFFC01410 /* TIMER0 Stop Config Register */ +#define TIMER0_STOP_CFG_SET 0xFFC01414 /* TIMER0 Stop Config Alias to Set */ +#define TIMER0_STOP_CFG_CLR 0xFFC01418 /* TIMER0 Stop Config Alias to Clear */ +#define TIMER0_DATA_IMSK 0xFFC0141C /* TIMER0 Data Interrupt Mask register */ +#define TIMER0_STAT_IMSK 0xFFC01420 /* TIMER0 Status Interrupt Mask register */ +#define TIMER0_TRG_MSK 0xFFC01424 /* TIMER0 Output Trigger Mask register */ +#define TIMER0_TRG_IE 0xFFC01428 /* TIMER0 Slave Trigger Enable register */ +#define TIMER0_DATA_ILAT 0xFFC0142C /* TIMER0 Data Interrupt Register */ +#define TIMER0_STAT_ILAT 0xFFC01430 /* TIMER0 Status (Error) Interrupt Register */ +#define TIMER0_ERR_TYPE 0xFFC01434 /* TIMER0 Register Indicating Type of Error */ +#define TIMER0_BCAST_PER 0xFFC01438 /* TIMER0 Broadcast Period */ +#define TIMER0_BCAST_WID 0xFFC0143C /* TIMER0 Broadcast Width */ +#define TIMER0_BCAST_DLY 0xFFC01440 /* TIMER0 Broadcast Delay */ +#define TIMER0_TMR0_CFG 0xFFC01460 /* TIMER0 Per Timer Config Register */ +#define TIMER0_TMR1_CFG 0xFFC01480 /* TIMER0 Per Timer Config Register */ +#define TIMER0_TMR2_CFG 0xFFC014A0 /* TIMER0 Per Timer Config Register */ +#define TIMER0_TMR3_CFG 0xFFC014C0 /* TIMER0 Per Timer Config Register */ +#define TIMER0_TMR4_CFG 0xFFC014E0 /* TIMER0 Per Timer Config Register */ +#define TIMER0_TMR5_CFG 0xFFC01500 /* TIMER0 Per Timer Config Register */ +#define TIMER0_TMR6_CFG 0xFFC01520 /* TIMER0 Per Timer Config Register */ +#define TIMER0_TMR7_CFG 0xFFC01540 /* TIMER0 Per Timer Config Register */ +#define TIMER0_TMR0_CNT 0xFFC01464 /* TIMER0 Per Timer Counter Register */ +#define TIMER0_TMR1_CNT 0xFFC01484 /* TIMER0 Per Timer Counter Register */ +#define TIMER0_TMR2_CNT 0xFFC014A4 /* TIMER0 Per Timer Counter Register */ +#define TIMER0_TMR3_CNT 0xFFC014C4 /* TIMER0 Per Timer Counter Register */ +#define TIMER0_TMR4_CNT 0xFFC014E4 /* TIMER0 Per Timer Counter Register */ +#define TIMER0_TMR5_CNT 0xFFC01504 /* TIMER0 Per Timer Counter Register */ +#define TIMER0_TMR6_CNT 0xFFC01524 /* TIMER0 Per Timer Counter Register */ +#define TIMER0_TMR7_CNT 0xFFC01544 /* TIMER0 Per Timer Counter Register */ +#define TIMER0_TMR0_PER 0xFFC01468 /* TIMER0 Per Timer Period Register */ +#define TIMER0_TMR1_PER 0xFFC01488 /* TIMER0 Per Timer Period Register */ +#define TIMER0_TMR2_PER 0xFFC014A8 /* TIMER0 Per Timer Period Register */ +#define TIMER0_TMR3_PER 0xFFC014C8 /* TIMER0 Per Timer Period Register */ +#define TIMER0_TMR4_PER 0xFFC014E8 /* TIMER0 Per Timer Period Register */ +#define TIMER0_TMR5_PER 0xFFC01508 /* TIMER0 Per Timer Period Register */ +#define TIMER0_TMR6_PER 0xFFC01528 /* TIMER0 Per Timer Period Register */ +#define TIMER0_TMR7_PER 0xFFC01548 /* TIMER0 Per Timer Period Register */ +#define TIMER0_TMR0_WID 0xFFC0146C /* TIMER0 Per Timer Width Register */ +#define TIMER0_TMR1_WID 0xFFC0148C /* TIMER0 Per Timer Width Register */ +#define TIMER0_TMR2_WID 0xFFC014AC /* TIMER0 Per Timer Width Register */ +#define TIMER0_TMR3_WID 0xFFC014CC /* TIMER0 Per Timer Width Register */ +#define TIMER0_TMR4_WID 0xFFC014EC /* TIMER0 Per Timer Width Register */ +#define TIMER0_TMR5_WID 0xFFC0150C /* TIMER0 Per Timer Width Register */ +#define TIMER0_TMR6_WID 0xFFC0152C /* TIMER0 Per Timer Width Register */ +#define TIMER0_TMR7_WID 0xFFC0154C /* TIMER0 Per Timer Width Register */ +#define TIMER0_TMR0_DLY 0xFFC01470 /* TIMER0 Per Timer Delay Register */ +#define TIMER0_TMR1_DLY 0xFFC01490 /* TIMER0 Per Timer Delay Register */ +#define TIMER0_TMR2_DLY 0xFFC014B0 /* TIMER0 Per Timer Delay Register */ +#define TIMER0_TMR3_DLY 0xFFC014D0 /* TIMER0 Per Timer Delay Register */ +#define TIMER0_TMR4_DLY 0xFFC014F0 /* TIMER0 Per Timer Delay Register */ +#define TIMER0_TMR5_DLY 0xFFC01510 /* TIMER0 Per Timer Delay Register */ +#define TIMER0_TMR6_DLY 0xFFC01530 /* TIMER0 Per Timer Delay Register */ +#define TIMER0_TMR7_DLY 0xFFC01550 /* TIMER0 Per Timer Delay Register */ +#define CRC0_CTL 0xFFC01C00 /* CRC0 Control Register */ +#define CRC0_DCNT 0xFFC01C04 /* CRC0 Data Word Count Register */ +#define CRC0_DCNTRLD 0xFFC01C08 /* CRC0 Data Word Count Reload Register */ +#define CRC0_COMP 0xFFC01C14 /* CRC0 DATA Compare Register */ +#define CRC0_FILLVAL 0xFFC01C18 /* CRC0 Fill Value Register */ +#define CRC0_DFIFO 0xFFC01C1C /* CRC0 DATA FIFO Register */ +#define CRC0_INEN 0xFFC01C20 /* CRC0 Interrupt Enable Register */ +#define CRC0_INEN_SET 0xFFC01C24 /* CRC0 Interrupt Enable Set Register */ +#define CRC0_INEN_CLR 0xFFC01C28 /* CRC0 Interrupt Enable Clear Register */ +#define CRC0_POLY 0xFFC01C2C /* CRC0 Polynomial Register */ +#define CRC0_STAT 0xFFC01C40 /* CRC0 Status Register */ +#define CRC0_DCNTCAP 0xFFC01C44 /* CRC0 DATA Count Capture Register */ +#define CRC0_RESULT_FIN 0xFFC01C4C /* CRC0 Final CRC Result Register */ +#define CRC0_RESULT_CUR 0xFFC01C50 /* CRC0 Current CRC Result Register */ +#define CRC0_REVID 0xFFC01C60 /* CRC0 Revision ID Register */ +#define CRC0_LUT0 0xFFC01C84 /* CRC0 Look Up Table Register */ +#define CRC0_LUT1 0xFFC01C88 /* CRC0 Look Up Table Register */ +#define CRC0_LUT2 0xFFC01C8C /* CRC0 Look Up Table Register */ +#define CRC0_LUT3 0xFFC01C90 /* CRC0 Look Up Table Register */ +#define CRC0_LUT4 0xFFC01C94 /* CRC0 Look Up Table Register */ +#define CRC0_LUT5 0xFFC01C98 /* CRC0 Look Up Table Register */ +#define CRC0_LUT6 0xFFC01C9C /* CRC0 Look Up Table Register */ +#define CRC0_LUT7 0xFFC01CA0 /* CRC0 Look Up Table Register */ +#define CRC0_LUT8 0xFFC01CA4 /* CRC0 Look Up Table Register */ +#define CRC0_LUT9 0xFFC01CA8 /* CRC0 Look Up Table Register */ +#define CRC0_LUT10 0xFFC01CAC /* CRC0 Look Up Table Register */ +#define CRC0_LUT11 0xFFC01CB0 /* CRC0 Look Up Table Register */ +#define CRC0_LUT12 0xFFC01CB4 /* CRC0 Look Up Table Register */ +#define CRC0_LUT13 0xFFC01CB8 /* CRC0 Look Up Table Register */ +#define CRC0_LUT14 0xFFC01CBC /* CRC0 Look Up Table Register */ +#define CRC0_LUT15 0xFFC01CC0 /* CRC0 Look Up Table Register */ +#define CRC1_CTL 0xFFC01D00 /* CRC1 Control Register */ +#define CRC1_DCNT 0xFFC01D04 /* CRC1 Data Word Count Register */ +#define CRC1_DCNTRLD 0xFFC01D08 /* CRC1 Data Word Count Reload Register */ +#define CRC1_COMP 0xFFC01D14 /* CRC1 DATA Compare Register */ +#define CRC1_FILLVAL 0xFFC01D18 /* CRC1 Fill Value Register */ +#define CRC1_DFIFO 0xFFC01D1C /* CRC1 DATA FIFO Register */ +#define CRC1_INEN 0xFFC01D20 /* CRC1 Interrupt Enable Register */ +#define CRC1_INEN_SET 0xFFC01D24 /* CRC1 Interrupt Enable Set Register */ +#define CRC1_INEN_CLR 0xFFC01D28 /* CRC1 Interrupt Enable Clear Register */ +#define CRC1_POLY 0xFFC01D2C /* CRC1 Polynomial Register */ +#define CRC1_STAT 0xFFC01D40 /* CRC1 Status Register */ +#define CRC1_DCNTCAP 0xFFC01D44 /* CRC1 DATA Count Capture Register */ +#define CRC1_RESULT_FIN 0xFFC01D4C /* CRC1 Final CRC Result Register */ +#define CRC1_RESULT_CUR 0xFFC01D50 /* CRC1 Current CRC Result Register */ +#define CRC1_REVID 0xFFC01D60 /* CRC1 Revision ID Register */ +#define CRC1_LUT0 0xFFC01D84 /* CRC1 Look Up Table Register */ +#define CRC1_LUT1 0xFFC01D88 /* CRC1 Look Up Table Register */ +#define CRC1_LUT2 0xFFC01D8C /* CRC1 Look Up Table Register */ +#define CRC1_LUT3 0xFFC01D90 /* CRC1 Look Up Table Register */ +#define CRC1_LUT4 0xFFC01D94 /* CRC1 Look Up Table Register */ +#define CRC1_LUT5 0xFFC01D98 /* CRC1 Look Up Table Register */ +#define CRC1_LUT6 0xFFC01D9C /* CRC1 Look Up Table Register */ +#define CRC1_LUT7 0xFFC01DA0 /* CRC1 Look Up Table Register */ +#define CRC1_LUT8 0xFFC01DA4 /* CRC1 Look Up Table Register */ +#define CRC1_LUT9 0xFFC01DA8 /* CRC1 Look Up Table Register */ +#define CRC1_LUT10 0xFFC01DAC /* CRC1 Look Up Table Register */ +#define CRC1_LUT11 0xFFC01DB0 /* CRC1 Look Up Table Register */ +#define CRC1_LUT12 0xFFC01DB4 /* CRC1 Look Up Table Register */ +#define CRC1_LUT13 0xFFC01DB8 /* CRC1 Look Up Table Register */ +#define CRC1_LUT14 0xFFC01DBC /* CRC1 Look Up Table Register */ +#define CRC1_LUT15 0xFFC01DC0 /* CRC1 Look Up Table Register */ +#define TWI0_CLKDIV 0xFFC01E00 /* TWI0 SCL Clock Divider */ +#define TWI0_CTL 0xFFC01E04 /* TWI0 Control Register */ +#define TWI0_SLVCTL 0xFFC01E08 /* TWI0 Slave Mode Control Register */ +#define TWI0_SLVSTAT 0xFFC01E0C /* TWI0 Slave Mode Status Register */ +#define TWI0_SLVADDR 0xFFC01E10 /* TWI0 Slave Mode Address Register */ +#define TWI0_MSTRCTL 0xFFC01E14 /* TWI0 Master Mode Control Registers */ +#define TWI0_MSTRSTAT 0xFFC01E18 /* TWI0 Master Mode Status Register */ +#define TWI0_MSTRADDR 0xFFC01E1C /* TWI0 Master Mode Address Register */ +#define TWI0_ISTAT 0xFFC01E20 /* TWI0 Interrupt Status Register */ +#define TWI0_IMSK 0xFFC01E24 /* TWI0 Interrupt Mask Register */ +#define TWI0_FIFOCTL 0xFFC01E28 /* TWI0 FIFO Control Register */ +#define TWI0_FIFOSTAT 0xFFC01E2C /* TWI0 FIFO Status Register */ +#define TWI0_TXDATA8 0xFFC01E80 /* TWI0 FIFO Transmit Data Single-Byte Register */ +#define TWI0_TXDATA16 0xFFC01E84 /* TWI0 FIFO Transmit Data Double-Byte Register */ +#define TWI0_RXDATA8 0xFFC01E88 /* TWI0 FIFO Transmit Data Single-Byte Register */ +#define TWI0_RXDATA16 0xFFC01E8C /* TWI0 FIFO Transmit Data Double-Byte Register */ +#define TWI1_CLKDIV 0xFFC01F00 /* TWI1 SCL Clock Divider */ +#define TWI1_CTL 0xFFC01F04 /* TWI1 Control Register */ +#define TWI1_SLVCTL 0xFFC01F08 /* TWI1 Slave Mode Control Register */ +#define TWI1_SLVSTAT 0xFFC01F0C /* TWI1 Slave Mode Status Register */ +#define TWI1_SLVADDR 0xFFC01F10 /* TWI1 Slave Mode Address Register */ +#define TWI1_MSTRCTL 0xFFC01F14 /* TWI1 Master Mode Control Registers */ +#define TWI1_MSTRSTAT 0xFFC01F18 /* TWI1 Master Mode Status Register */ +#define TWI1_MSTRADDR 0xFFC01F1C /* TWI1 Master Mode Address Register */ +#define TWI1_ISTAT 0xFFC01F20 /* TWI1 Interrupt Status Register */ +#define TWI1_IMSK 0xFFC01F24 /* TWI1 Interrupt Mask Register */ +#define TWI1_FIFOCTL 0xFFC01F28 /* TWI1 FIFO Control Register */ +#define TWI1_FIFOSTAT 0xFFC01F2C /* TWI1 FIFO Status Register */ +#define TWI1_TXDATA8 0xFFC01F80 /* TWI1 FIFO Transmit Data Single-Byte Register */ +#define TWI1_TXDATA16 0xFFC01F84 /* TWI1 FIFO Transmit Data Double-Byte Register */ +#define TWI1_RXDATA8 0xFFC01F88 /* TWI1 FIFO Transmit Data Single-Byte Register */ +#define TWI1_RXDATA16 0xFFC01F8C /* TWI1 FIFO Transmit Data Double-Byte Register */ +#define UART0_REVID 0xFFC02000 /* UART0 Revision ID Register */ +#define UART0_CTL 0xFFC02004 /* UART0 Control Register */ +#define UART0_STAT 0xFFC02008 /* UART0 Status Register */ +#define UART0_SCR 0xFFC0200C /* UART0 Scratch Register */ +#define UART0_CLK 0xFFC02010 /* UART0 Clock Rate Register */ +#define UART0_IMSK 0xFFC02014 /* UART0 Interrupt Mask Register */ +#define UART0_IMSK_SET 0xFFC02018 /* UART0 Interrupt Mask Set Register */ +#define UART0_IMSK_CLR 0xFFC0201C /* UART0 Interrupt Mask Clear Register */ +#define UART0_RBR 0xFFC02020 /* UART0 Receive Buffer Register */ +#define UART0_THR 0xFFC02024 /* UART0 Transmit Hold Register */ +#define UART0_TAIP 0xFFC02028 /* UART0 Transmit Address/Insert Pulse Register */ +#define UART0_TSR 0xFFC0202C /* UART0 Transmit Shift Register */ +#define UART0_RSR 0xFFC02030 /* UART0 Receive Shift Register */ +#define UART0_TXCNT 0xFFC02034 /* UART0 Transmit Counter Register */ +#define UART0_RXCNT 0xFFC02038 /* UART0 Receive Counter Register */ +#define UART1_REVID 0xFFC02400 /* UART1 Revision ID Register */ +#define UART1_CTL 0xFFC02404 /* UART1 Control Register */ +#define UART1_STAT 0xFFC02408 /* UART1 Status Register */ +#define UART1_SCR 0xFFC0240C /* UART1 Scratch Register */ +#define UART1_CLK 0xFFC02410 /* UART1 Clock Rate Register */ +#define UART1_IMSK 0xFFC02414 /* UART1 Interrupt Mask Register */ +#define UART1_IMSK_SET 0xFFC02418 /* UART1 Interrupt Mask Set Register */ +#define UART1_IMSK_CLR 0xFFC0241C /* UART1 Interrupt Mask Clear Register */ +#define UART1_RBR 0xFFC02420 /* UART1 Receive Buffer Register */ +#define UART1_THR 0xFFC02424 /* UART1 Transmit Hold Register */ +#define UART1_TAIP 0xFFC02428 /* UART1 Transmit Address/Insert Pulse Register */ +#define UART1_TSR 0xFFC0242C /* UART1 Transmit Shift Register */ +#define UART1_RSR 0xFFC02430 /* UART1 Receive Shift Register */ +#define UART1_TXCNT 0xFFC02434 /* UART1 Transmit Counter Register */ +#define UART1_RXCNT 0xFFC02438 /* UART1 Receive Counter Register */ +#define PORTA_FER 0xFFC03000 /* PORTA Port x Function Enable Register */ +#define PORTA_FER_SET 0xFFC03004 /* PORTA Port x Function Enable Set Register */ +#define PORTA_FER_CLR 0xFFC03008 /* PORTA Port x Function Enable Clear Register */ +#define PORTA_DATA 0xFFC0300C /* PORTA Port x GPIO Data Register */ +#define PORTA_DATA_SET 0xFFC03010 /* PORTA Port x GPIO Data Set Register */ +#define PORTA_DATA_CLR 0xFFC03014 /* PORTA Port x GPIO Data Clear Register */ +#define PORTA_DIR 0xFFC03018 /* PORTA Port x GPIO Direction Register */ +#define PORTA_DIR_SET 0xFFC0301C /* PORTA Port x GPIO Direction Set Register */ +#define PORTA_DIR_CLR 0xFFC03020 /* PORTA Port x GPIO Direction Clear Register */ +#define PORTA_INEN 0xFFC03024 /* PORTA Port x GPIO Input Enable Register */ +#define PORTA_INEN_SET 0xFFC03028 /* PORTA Port x GPIO Input Enable Set Register */ +#define PORTA_INEN_CLR 0xFFC0302C /* PORTA Port x GPIO Input Enable Clear Register */ +#define PORTA_MUX 0xFFC03030 /* PORTA Port x Multiplexer Control Register */ +#define PORTA_DATA_TGL 0xFFC03034 /* PORTA Port x GPIO Input Enable Toggle Register */ +#define PORTA_POL 0xFFC03038 /* PORTA Port x GPIO Programming Inversion Register */ +#define PORTA_POL_SET 0xFFC0303C /* PORTA Port x GPIO Programming Inversion Set Register */ +#define PORTA_POL_CLR 0xFFC03040 /* PORTA Port x GPIO Programming Inversion Clear Register */ +#define PORTA_LOCK 0xFFC03044 /* PORTA Port x GPIO Lock Register */ +#define PORTA_REVID 0xFFC0307C /* PORTA Port x GPIO Revision ID */ +#define PORTB_FER 0xFFC03080 /* PORTB Port x Function Enable Register */ +#define PORTB_FER_SET 0xFFC03084 /* PORTB Port x Function Enable Set Register */ +#define PORTB_FER_CLR 0xFFC03088 /* PORTB Port x Function Enable Clear Register */ +#define PORTB_DATA 0xFFC0308C /* PORTB Port x GPIO Data Register */ +#define PORTB_DATA_SET 0xFFC03090 /* PORTB Port x GPIO Data Set Register */ +#define PORTB_DATA_CLR 0xFFC03094 /* PORTB Port x GPIO Data Clear Register */ +#define PORTB_DIR 0xFFC03098 /* PORTB Port x GPIO Direction Register */ +#define PORTB_DIR_SET 0xFFC0309C /* PORTB Port x GPIO Direction Set Register */ +#define PORTB_DIR_CLR 0xFFC030A0 /* PORTB Port x GPIO Direction Clear Register */ +#define PORTB_INEN 0xFFC030A4 /* PORTB Port x GPIO Input Enable Register */ +#define PORTB_INEN_SET 0xFFC030A8 /* PORTB Port x GPIO Input Enable Set Register */ +#define PORTB_INEN_CLR 0xFFC030AC /* PORTB Port x GPIO Input Enable Clear Register */ +#define PORTB_MUX 0xFFC030B0 /* PORTB Port x Multiplexer Control Register */ +#define PORTB_DATA_TGL 0xFFC030B4 /* PORTB Port x GPIO Input Enable Toggle Register */ +#define PORTB_POL 0xFFC030B8 /* PORTB Port x GPIO Programming Inversion Register */ +#define PORTB_POL_SET 0xFFC030BC /* PORTB Port x GPIO Programming Inversion Set Register */ +#define PORTB_POL_CLR 0xFFC030C0 /* PORTB Port x GPIO Programming Inversion Clear Register */ +#define PORTB_LOCK 0xFFC030C4 /* PORTB Port x GPIO Lock Register */ +#define PORTB_REVID 0xFFC030FC /* PORTB Port x GPIO Revision ID */ +#define PORTC_FER 0xFFC03100 /* PORTC Port x Function Enable Register */ +#define PORTC_FER_SET 0xFFC03104 /* PORTC Port x Function Enable Set Register */ +#define PORTC_FER_CLR 0xFFC03108 /* PORTC Port x Function Enable Clear Register */ +#define PORTC_DATA 0xFFC0310C /* PORTC Port x GPIO Data Register */ +#define PORTC_DATA_SET 0xFFC03110 /* PORTC Port x GPIO Data Set Register */ +#define PORTC_DATA_CLR 0xFFC03114 /* PORTC Port x GPIO Data Clear Register */ +#define PORTC_DIR 0xFFC03118 /* PORTC Port x GPIO Direction Register */ +#define PORTC_DIR_SET 0xFFC0311C /* PORTC Port x GPIO Direction Set Register */ +#define PORTC_DIR_CLR 0xFFC03120 /* PORTC Port x GPIO Direction Clear Register */ +#define PORTC_INEN 0xFFC03124 /* PORTC Port x GPIO Input Enable Register */ +#define PORTC_INEN_SET 0xFFC03128 /* PORTC Port x GPIO Input Enable Set Register */ +#define PORTC_INEN_CLR 0xFFC0312C /* PORTC Port x GPIO Input Enable Clear Register */ +#define PORTC_MUX 0xFFC03130 /* PORTC Port x Multiplexer Control Register */ +#define PORTC_DATA_TGL 0xFFC03134 /* PORTC Port x GPIO Input Enable Toggle Register */ +#define PORTC_POL 0xFFC03138 /* PORTC Port x GPIO Programming Inversion Register */ +#define PORTC_POL_SET 0xFFC0313C /* PORTC Port x GPIO Programming Inversion Set Register */ +#define PORTC_POL_CLR 0xFFC03140 /* PORTC Port x GPIO Programming Inversion Clear Register */ +#define PORTC_LOCK 0xFFC03144 /* PORTC Port x GPIO Lock Register */ +#define PORTC_REVID 0xFFC0317C /* PORTC Port x GPIO Revision ID */ +#define PORTD_FER 0xFFC03180 /* PORTD Port x Function Enable Register */ +#define PORTD_FER_SET 0xFFC03184 /* PORTD Port x Function Enable Set Register */ +#define PORTD_FER_CLR 0xFFC03188 /* PORTD Port x Function Enable Clear Register */ +#define PORTD_DATA 0xFFC0318C /* PORTD Port x GPIO Data Register */ +#define PORTD_DATA_SET 0xFFC03190 /* PORTD Port x GPIO Data Set Register */ +#define PORTD_DATA_CLR 0xFFC03194 /* PORTD Port x GPIO Data Clear Register */ +#define PORTD_DIR 0xFFC03198 /* PORTD Port x GPIO Direction Register */ +#define PORTD_DIR_SET 0xFFC0319C /* PORTD Port x GPIO Direction Set Register */ +#define PORTD_DIR_CLR 0xFFC031A0 /* PORTD Port x GPIO Direction Clear Register */ +#define PORTD_INEN 0xFFC031A4 /* PORTD Port x GPIO Input Enable Register */ +#define PORTD_INEN_SET 0xFFC031A8 /* PORTD Port x GPIO Input Enable Set Register */ +#define PORTD_INEN_CLR 0xFFC031AC /* PORTD Port x GPIO Input Enable Clear Register */ +#define PORTD_MUX 0xFFC031B0 /* PORTD Port x Multiplexer Control Register */ +#define PORTD_DATA_TGL 0xFFC031B4 /* PORTD Port x GPIO Input Enable Toggle Register */ +#define PORTD_POL 0xFFC031B8 /* PORTD Port x GPIO Programming Inversion Register */ +#define PORTD_POL_SET 0xFFC031BC /* PORTD Port x GPIO Programming Inversion Set Register */ +#define PORTD_POL_CLR 0xFFC031C0 /* PORTD Port x GPIO Programming Inversion Clear Register */ +#define PORTD_LOCK 0xFFC031C4 /* PORTD Port x GPIO Lock Register */ +#define PORTD_REVID 0xFFC031FC /* PORTD Port x GPIO Revision ID */ +#define PORTE_FER 0xFFC03200 /* PORTE Port x Function Enable Register */ +#define PORTE_FER_SET 0xFFC03204 /* PORTE Port x Function Enable Set Register */ +#define PORTE_FER_CLR 0xFFC03208 /* PORTE Port x Function Enable Clear Register */ +#define PORTE_DATA 0xFFC0320C /* PORTE Port x GPIO Data Register */ +#define PORTE_DATA_SET 0xFFC03210 /* PORTE Port x GPIO Data Set Register */ +#define PORTE_DATA_CLR 0xFFC03214 /* PORTE Port x GPIO Data Clear Register */ +#define PORTE_DIR 0xFFC03218 /* PORTE Port x GPIO Direction Register */ +#define PORTE_DIR_SET 0xFFC0321C /* PORTE Port x GPIO Direction Set Register */ +#define PORTE_DIR_CLR 0xFFC03220 /* PORTE Port x GPIO Direction Clear Register */ +#define PORTE_INEN 0xFFC03224 /* PORTE Port x GPIO Input Enable Register */ +#define PORTE_INEN_SET 0xFFC03228 /* PORTE Port x GPIO Input Enable Set Register */ +#define PORTE_INEN_CLR 0xFFC0322C /* PORTE Port x GPIO Input Enable Clear Register */ +#define PORTE_MUX 0xFFC03230 /* PORTE Port x Multiplexer Control Register */ +#define PORTE_DATA_TGL 0xFFC03234 /* PORTE Port x GPIO Input Enable Toggle Register */ +#define PORTE_POL 0xFFC03238 /* PORTE Port x GPIO Programming Inversion Register */ +#define PORTE_POL_SET 0xFFC0323C /* PORTE Port x GPIO Programming Inversion Set Register */ +#define PORTE_POL_CLR 0xFFC03240 /* PORTE Port x GPIO Programming Inversion Clear Register */ +#define PORTE_LOCK 0xFFC03244 /* PORTE Port x GPIO Lock Register */ +#define PORTE_REVID 0xFFC0327C /* PORTE Port x GPIO Revision ID */ +#define PORTF_FER 0xFFC03280 /* PORTF Port x Function Enable Register */ +#define PORTF_FER_SET 0xFFC03284 /* PORTF Port x Function Enable Set Register */ +#define PORTF_FER_CLR 0xFFC03288 /* PORTF Port x Function Enable Clear Register */ +#define PORTF_DATA 0xFFC0328C /* PORTF Port x GPIO Data Register */ +#define PORTF_DATA_SET 0xFFC03290 /* PORTF Port x GPIO Data Set Register */ +#define PORTF_DATA_CLR 0xFFC03294 /* PORTF Port x GPIO Data Clear Register */ +#define PORTF_DIR 0xFFC03298 /* PORTF Port x GPIO Direction Register */ +#define PORTF_DIR_SET 0xFFC0329C /* PORTF Port x GPIO Direction Set Register */ +#define PORTF_DIR_CLR 0xFFC032A0 /* PORTF Port x GPIO Direction Clear Register */ +#define PORTF_INEN 0xFFC032A4 /* PORTF Port x GPIO Input Enable Register */ +#define PORTF_INEN_SET 0xFFC032A8 /* PORTF Port x GPIO Input Enable Set Register */ +#define PORTF_INEN_CLR 0xFFC032AC /* PORTF Port x GPIO Input Enable Clear Register */ +#define PORTF_MUX 0xFFC032B0 /* PORTF Port x Multiplexer Control Register */ +#define PORTF_DATA_TGL 0xFFC032B4 /* PORTF Port x GPIO Input Enable Toggle Register */ +#define PORTF_POL 0xFFC032B8 /* PORTF Port x GPIO Programming Inversion Register */ +#define PORTF_POL_SET 0xFFC032BC /* PORTF Port x GPIO Programming Inversion Set Register */ +#define PORTF_POL_CLR 0xFFC032C0 /* PORTF Port x GPIO Programming Inversion Clear Register */ +#define PORTF_LOCK 0xFFC032C4 /* PORTF Port x GPIO Lock Register */ +#define PORTF_REVID 0xFFC032FC /* PORTF Port x GPIO Revision ID */ +#define PORTG_FER 0xFFC03300 /* PORTG Port x Function Enable Register */ +#define PORTG_FER_SET 0xFFC03304 /* PORTG Port x Function Enable Set Register */ +#define PORTG_FER_CLR 0xFFC03308 /* PORTG Port x Function Enable Clear Register */ +#define PORTG_DATA 0xFFC0330C /* PORTG Port x GPIO Data Register */ +#define PORTG_DATA_SET 0xFFC03310 /* PORTG Port x GPIO Data Set Register */ +#define PORTG_DATA_CLR 0xFFC03314 /* PORTG Port x GPIO Data Clear Register */ +#define PORTG_DIR 0xFFC03318 /* PORTG Port x GPIO Direction Register */ +#define PORTG_DIR_SET 0xFFC0331C /* PORTG Port x GPIO Direction Set Register */ +#define PORTG_DIR_CLR 0xFFC03320 /* PORTG Port x GPIO Direction Clear Register */ +#define PORTG_INEN 0xFFC03324 /* PORTG Port x GPIO Input Enable Register */ +#define PORTG_INEN_SET 0xFFC03328 /* PORTG Port x GPIO Input Enable Set Register */ +#define PORTG_INEN_CLR 0xFFC0332C /* PORTG Port x GPIO Input Enable Clear Register */ +#define PORTG_MUX 0xFFC03330 /* PORTG Port x Multiplexer Control Register */ +#define PORTG_DATA_TGL 0xFFC03334 /* PORTG Port x GPIO Input Enable Toggle Register */ +#define PORTG_POL 0xFFC03338 /* PORTG Port x GPIO Programming Inversion Register */ +#define PORTG_POL_SET 0xFFC0333C /* PORTG Port x GPIO Programming Inversion Set Register */ +#define PORTG_POL_CLR 0xFFC03340 /* PORTG Port x GPIO Programming Inversion Clear Register */ +#define PORTG_LOCK 0xFFC03344 /* PORTG Port x GPIO Lock Register */ +#define PORTG_REVID 0xFFC0337C /* PORTG Port x GPIO Revision ID */ +#define PADS0_EMAC_PTP_CLKSEL 0xFFC03404 /* PADS0 Clock Selection for EMAC and PTP */ +#define PADS0_TWI_VSEL 0xFFC03408 /* PADS0 TWI Voltage Selection */ +#define PADS0_PORTS_DS 0xFFC03420 /* PADS0 Voltage Domain Control Register */ +#define PADS0_NONPORTS_DS 0xFFC03424 /* PADS0 Non-GPIO Drive Strength */ +#define PADS0_PORTS_HYST 0xFFC03440 /* PADS0 Hysteresis Enable Register */ +#define PINT0_MSK_SET 0xFFC04000 /* PINT0 Pint Mask Set Register */ +#define PINT0_MSK_CLR 0xFFC04004 /* PINT0 Pint Mask Clear Register */ +#define PINT0_REQ 0xFFC04008 /* PINT0 Pint Request Register */ +#define PINT0_ASSIGN 0xFFC0400C /* PINT0 Pint Assign Register */ +#define PINT0_EDGE_SET 0xFFC04010 /* PINT0 Pint Edge Set Register */ +#define PINT0_EDGE_CLR 0xFFC04014 /* PINT0 Pint Edge Clear Register */ +#define PINT0_INV_SET 0xFFC04018 /* PINT0 Pint Invert Set Register */ +#define PINT0_INV_CLR 0xFFC0401C /* PINT0 Pint Invert Clear Register */ +#define PINT0_PINSTATE 0xFFC04020 /* PINT0 Pint Pinstate Register */ +#define PINT0_LATCH 0xFFC04024 /* PINT0 Pint Latch Register */ +#define PINT1_MSK_SET 0xFFC04100 /* PINT1 Pint Mask Set Register */ +#define PINT1_MSK_CLR 0xFFC04104 /* PINT1 Pint Mask Clear Register */ +#define PINT1_REQ 0xFFC04108 /* PINT1 Pint Request Register */ +#define PINT1_ASSIGN 0xFFC0410C /* PINT1 Pint Assign Register */ +#define PINT1_EDGE_SET 0xFFC04110 /* PINT1 Pint Edge Set Register */ +#define PINT1_EDGE_CLR 0xFFC04114 /* PINT1 Pint Edge Clear Register */ +#define PINT1_INV_SET 0xFFC04118 /* PINT1 Pint Invert Set Register */ +#define PINT1_INV_CLR 0xFFC0411C /* PINT1 Pint Invert Clear Register */ +#define PINT1_PINSTATE 0xFFC04120 /* PINT1 Pint Pinstate Register */ +#define PINT1_LATCH 0xFFC04124 /* PINT1 Pint Latch Register */ +#define PINT2_MSK_SET 0xFFC04200 /* PINT2 Pint Mask Set Register */ +#define PINT2_MSK_CLR 0xFFC04204 /* PINT2 Pint Mask Clear Register */ +#define PINT2_REQ 0xFFC04208 /* PINT2 Pint Request Register */ +#define PINT2_ASSIGN 0xFFC0420C /* PINT2 Pint Assign Register */ +#define PINT2_EDGE_SET 0xFFC04210 /* PINT2 Pint Edge Set Register */ +#define PINT2_EDGE_CLR 0xFFC04214 /* PINT2 Pint Edge Clear Register */ +#define PINT2_INV_SET 0xFFC04218 /* PINT2 Pint Invert Set Register */ +#define PINT2_INV_CLR 0xFFC0421C /* PINT2 Pint Invert Clear Register */ +#define PINT2_PINSTATE 0xFFC04220 /* PINT2 Pint Pinstate Register */ +#define PINT2_LATCH 0xFFC04224 /* PINT2 Pint Latch Register */ +#define PINT3_MSK_SET 0xFFC04300 /* PINT3 Pint Mask Set Register */ +#define PINT3_MSK_CLR 0xFFC04304 /* PINT3 Pint Mask Clear Register */ +#define PINT3_REQ 0xFFC04308 /* PINT3 Pint Request Register */ +#define PINT3_ASSIGN 0xFFC0430C /* PINT3 Pint Assign Register */ +#define PINT3_EDGE_SET 0xFFC04310 /* PINT3 Pint Edge Set Register */ +#define PINT3_EDGE_CLR 0xFFC04314 /* PINT3 Pint Edge Clear Register */ +#define PINT3_INV_SET 0xFFC04318 /* PINT3 Pint Invert Set Register */ +#define PINT3_INV_CLR 0xFFC0431C /* PINT3 Pint Invert Clear Register */ +#define PINT3_PINSTATE 0xFFC04320 /* PINT3 Pint Pinstate Register */ +#define PINT3_LATCH 0xFFC04324 /* PINT3 Pint Latch Register */ +#define PINT4_MSK_SET 0xFFC04400 /* PINT4 Pint Mask Set Register */ +#define PINT4_MSK_CLR 0xFFC04404 /* PINT4 Pint Mask Clear Register */ +#define PINT4_REQ 0xFFC04408 /* PINT4 Pint Request Register */ +#define PINT4_ASSIGN 0xFFC0440C /* PINT4 Pint Assign Register */ +#define PINT4_EDGE_SET 0xFFC04410 /* PINT4 Pint Edge Set Register */ +#define PINT4_EDGE_CLR 0xFFC04414 /* PINT4 Pint Edge Clear Register */ +#define PINT4_INV_SET 0xFFC04418 /* PINT4 Pint Invert Set Register */ +#define PINT4_INV_CLR 0xFFC0441C /* PINT4 Pint Invert Clear Register */ +#define PINT4_PINSTATE 0xFFC04420 /* PINT4 Pint Pinstate Register */ +#define PINT4_LATCH 0xFFC04424 /* PINT4 Pint Latch Register */ +#define PINT5_MSK_SET 0xFFC04500 /* PINT5 Pint Mask Set Register */ +#define PINT5_MSK_CLR 0xFFC04504 /* PINT5 Pint Mask Clear Register */ +#define PINT5_REQ 0xFFC04508 /* PINT5 Pint Request Register */ +#define PINT5_ASSIGN 0xFFC0450C /* PINT5 Pint Assign Register */ +#define PINT5_EDGE_SET 0xFFC04510 /* PINT5 Pint Edge Set Register */ +#define PINT5_EDGE_CLR 0xFFC04514 /* PINT5 Pint Edge Clear Register */ +#define PINT5_INV_SET 0xFFC04518 /* PINT5 Pint Invert Set Register */ +#define PINT5_INV_CLR 0xFFC0451C /* PINT5 Pint Invert Clear Register */ +#define PINT5_PINSTATE 0xFFC04520 /* PINT5 Pint Pinstate Register */ +#define PINT5_LATCH 0xFFC04524 /* PINT5 Pint Latch Register */ +#define SMC_GCTL 0xFFC16004 /* SMC0 SMC Control Register */ +#define SMC_GSTAT 0xFFC16008 /* SMC0 SMC Status Register */ +#define SMC_B0CTL 0xFFC1600C /* SMC0 SMC Bank0 Control Register */ +#define SMC_B0TIM 0xFFC16010 /* SMC0 SMC Bank0 Timing Register */ +#define SMC_B0ETIM 0xFFC16014 /* SMC0 SMC Bank0 Extended Timing Register */ +#define SMC_B1CTL 0xFFC1601C /* SMC0 SMC BANK1 Control Register */ +#define SMC_B1TIM 0xFFC16020 /* SMC0 SMC BANK1 Timing Register */ +#define SMC_B1ETIM 0xFFC16024 /* SMC0 SMC BANK1 Extended Timing Register */ +#define SMC_B2CTL 0xFFC1602C /* SMC0 SMC BANK2 Control Register */ +#define SMC_B2TIM 0xFFC16030 /* SMC0 SMC BANK2 Timing Register */ +#define SMC_B2ETIM 0xFFC16034 /* SMC0 SMC BANK2 Extended Timing Register */ +#define SMC_B3CTL 0xFFC1603C /* SMC0 SMC BANK3 Control Register */ +#define SMC_B3TIM 0xFFC16040 /* SMC0 SMC BANK3 Timing Register */ +#define SMC_B3ETIM 0xFFC16044 /* SMC0 SMC BANK3 Extended Timing Register */ +#define WDOG_CTL 0xFFC17000 /* WDOG0 Control Register */ +#define WDOG_CNT 0xFFC17004 /* WDOG0 Count Register */ +#define WDOG_STAT 0xFFC17008 /* WDOG0 Watchdog Timer Status Register */ +#define WDOG1_CTL 0xFFC17800 /* WDOG1 Control Register */ +#define WDOG1_CNT 0xFFC17804 /* WDOG1 Count Register */ +#define WDOG1_STAT 0xFFC17808 /* WDOG1 Watchdog Timer Status Register */ +#define EPPI0_STAT 0xFFC18000 /* EPPI0 Status Register */ +#define EPPI0_HCNT 0xFFC18004 /* EPPI0 Horizontal Transfer Count Register */ +#define EPPI0_HDLY 0xFFC18008 /* EPPI0 Horizontal Delay Count Register */ +#define EPPI0_VCNT 0xFFC1800C /* EPPI0 Vertical Transfer Count Register */ +#define EPPI0_VDLY 0xFFC18010 /* EPPI0 Vertical Delay Count Register */ +#define EPPI0_FRAME 0xFFC18014 /* EPPI0 Lines Per Frame Register */ +#define EPPI0_LINE 0xFFC18018 /* EPPI0 Samples Per Line Register */ +#define EPPI0_CLKDIV 0xFFC1801C /* EPPI0 Clock Divide Register */ +#define EPPI0_CTL 0xFFC18020 /* EPPI0 Control Register */ +#define EPPI0_FS1_WLHB 0xFFC18024 /* EPPI0 FS1 Width Register / EPPI Horizontal Blanking Samples Per Line Register */ +#define EPPI0_FS1_PASPL 0xFFC18028 /* EPPI0 FS1 Period Register / EPPI Active Samples Per Line Register */ +#define EPPI0_FS2_WLVB 0xFFC1802C /* EPPI0 FS2 Width Register / EPPI Lines Of Vertical Blanking Register */ +#define EPPI0_FS2_PALPF 0xFFC18030 /* EPPI0 FS2 Period Register / EPPI Active Lines Per Field Register */ +#define EPPI0_IMSK 0xFFC18034 /* EPPI0 Interrupt Mask Register */ +#define EPPI0_ODDCLIP 0xFFC1803C /* EPPI0 Clipping Register for ODD (Chroma) Data */ +#define EPPI0_EVENCLIP 0xFFC18040 /* EPPI0 Clipping Register for EVEN (Luma) Data */ +#define EPPI0_FS1_DLY 0xFFC18044 /* EPPI0 Frame Sync 1 Delay Value */ +#define EPPI0_FS2_DLY 0xFFC18048 /* EPPI0 Frame Sync 2 Delay Value */ +#define EPPI0_CTL2 0xFFC1804C /* EPPI0 Control Register 2 */ +#define EPPI1_STAT 0xFFC18400 /* EPPI1 Status Register */ +#define EPPI1_HCNT 0xFFC18404 /* EPPI1 Horizontal Transfer Count Register */ +#define EPPI1_HDLY 0xFFC18408 /* EPPI1 Horizontal Delay Count Register */ +#define EPPI1_VCNT 0xFFC1840C /* EPPI1 Vertical Transfer Count Register */ +#define EPPI1_VDLY 0xFFC18410 /* EPPI1 Vertical Delay Count Register */ +#define EPPI1_FRAME 0xFFC18414 /* EPPI1 Lines Per Frame Register */ +#define EPPI1_LINE 0xFFC18418 /* EPPI1 Samples Per Line Register */ +#define EPPI1_CLKDIV 0xFFC1841C /* EPPI1 Clock Divide Register */ +#define EPPI1_CTL 0xFFC18420 /* EPPI1 Control Register */ +#define EPPI1_FS1_WLHB 0xFFC18424 /* EPPI1 FS1 Width Register / EPPI Horizontal Blanking Samples Per Line Register */ +#define EPPI1_FS1_PASPL 0xFFC18428 /* EPPI1 FS1 Period Register / EPPI Active Samples Per Line Register */ +#define EPPI1_FS2_WLVB 0xFFC1842C /* EPPI1 FS2 Width Register / EPPI Lines Of Vertical Blanking Register */ +#define EPPI1_FS2_PALPF 0xFFC18430 /* EPPI1 FS2 Period Register / EPPI Active Lines Per Field Register */ +#define EPPI1_IMSK 0xFFC18434 /* EPPI1 Interrupt Mask Register */ +#define EPPI1_ODDCLIP 0xFFC1843C /* EPPI1 Clipping Register for ODD (Chroma) Data */ +#define EPPI1_EVENCLIP 0xFFC18440 /* EPPI1 Clipping Register for EVEN (Luma) Data */ +#define EPPI1_FS1_DLY 0xFFC18444 /* EPPI1 Frame Sync 1 Delay Value */ +#define EPPI1_FS2_DLY 0xFFC18448 /* EPPI1 Frame Sync 2 Delay Value */ +#define EPPI1_CTL2 0xFFC1844C /* EPPI1 Control Register 2 */ +#define EPPI2_STAT 0xFFC18800 /* EPPI2 Status Register */ +#define EPPI2_HCNT 0xFFC18804 /* EPPI2 Horizontal Transfer Count Register */ +#define EPPI2_HDLY 0xFFC18808 /* EPPI2 Horizontal Delay Count Register */ +#define EPPI2_VCNT 0xFFC1880C /* EPPI2 Vertical Transfer Count Register */ +#define EPPI2_VDLY 0xFFC18810 /* EPPI2 Vertical Delay Count Register */ +#define EPPI2_FRAME 0xFFC18814 /* EPPI2 Lines Per Frame Register */ +#define EPPI2_LINE 0xFFC18818 /* EPPI2 Samples Per Line Register */ +#define EPPI2_CLKDIV 0xFFC1881C /* EPPI2 Clock Divide Register */ +#define EPPI2_CTL 0xFFC18820 /* EPPI2 Control Register */ +#define EPPI2_FS1_WLHB 0xFFC18824 /* EPPI2 FS1 Width Register / EPPI Horizontal Blanking Samples Per Line Register */ +#define EPPI2_FS1_PASPL 0xFFC18828 /* EPPI2 FS1 Period Register / EPPI Active Samples Per Line Register */ +#define EPPI2_FS2_WLVB 0xFFC1882C /* EPPI2 FS2 Width Register / EPPI Lines Of Vertical Blanking Register */ +#define EPPI2_FS2_PALPF 0xFFC18830 /* EPPI2 FS2 Period Register / EPPI Active Lines Per Field Register */ +#define EPPI2_IMSK 0xFFC18834 /* EPPI2 Interrupt Mask Register */ +#define EPPI2_ODDCLIP 0xFFC1883C /* EPPI2 Clipping Register for ODD (Chroma) Data */ +#define EPPI2_EVENCLIP 0xFFC18840 /* EPPI2 Clipping Register for EVEN (Luma) Data */ +#define EPPI2_FS1_DLY 0xFFC18844 /* EPPI2 Frame Sync 1 Delay Value */ +#define EPPI2_FS2_DLY 0xFFC18848 /* EPPI2 Frame Sync 2 Delay Value */ +#define EPPI2_CTL2 0xFFC1884C /* EPPI2 Control Register 2 */ +#define PIXC0_CTL 0xFFC19000 /* PIXC0 Control Register */ +#define PIXC0_PPL 0xFFC19004 /* PIXC0 Pixels Per Line Register */ +#define PIXC0_LPF 0xFFC19008 /* PIXC0 Line Per Frame Register */ +#define PIXC0_HSTART_A 0xFFC1900C /* PIXC0 Overlay A Horizontal Start Register */ +#define PIXC0_HEND_A 0xFFC19010 /* PIXC0 Overlay A Horizontal End Register */ +#define PIXC0_VSTART_A 0xFFC19014 /* PIXC0 Overlay A Vertical Start Register */ +#define PIXC0_VEND_A 0xFFC19018 /* PIXC0 Overlay A Vertical End Register */ +#define PIXC0_TRANSP_A 0xFFC1901C /* PIXC0 Overlay A Transparency Ratio Register */ +#define PIXC0_HSTART_B 0xFFC19020 /* PIXC0 Overlay B Horizontal Start Register */ +#define PIXC0_HEND_B 0xFFC19024 /* PIXC0 Overlay B Horizontal End Register */ +#define PIXC0_VSTART_B 0xFFC19028 /* PIXC0 Overlay B Vertical Start Register */ +#define PIXC0_VEND_B 0xFFC1902C /* PIXC0 Overlay B Vertical End Register */ +#define PIXC0_TRANSP_B 0xFFC19030 /* PIXC0 Overlay B Transparency Ratio Register */ +#define PIXC0_IRQSTAT 0xFFC1903C /* PIXC0 Interrupt Status Register */ +#define PIXC0_CONRY 0xFFC19040 /* PIXC0 RY Conversion Component Register */ +#define PIXC0_CONGU 0xFFC19044 /* PIXC0 GU Conversion Component Register */ +#define PIXC0_CONBV 0xFFC19048 /* PIXC0 BV Conversion Component Register */ +#define PIXC0_CCBIAS 0xFFC1904C /* PIXC0 Conversion Bias Register */ +#define PIXC0_TC 0xFFC19050 /* PIXC0 Transparency Register */ +#define PIXC0_REVID 0xFFC19054 /* PIXC0 PIXC Revision Id */ +#define PVP0_REVID 0xFFC1A000 /* PVP0 Revision ID */ +#define PVP0_CTL 0xFFC1A004 /* PVP0 Control */ +#define PVP0_IMSK0 0xFFC1A008 /* PVP0 INTn interrupt line masks */ +#define PVP0_IMSK1 0xFFC1A00C /* PVP0 INTn interrupt line masks */ +#define PVP0_STAT 0xFFC1A010 /* PVP0 Status */ +#define PVP0_ILAT 0xFFC1A014 /* PVP0 Latched status */ +#define PVP0_IREQ0 0xFFC1A018 /* PVP0 INT0 masked latched status */ +#define PVP0_IREQ1 0xFFC1A01C /* PVP0 INT0 masked latched status */ +#define PVP0_OPF0_CFG 0xFFC1A020 /* PVP0 Config */ +#define PVP0_OPF1_CFG 0xFFC1A040 /* PVP0 Config */ +#define PVP0_OPF2_CFG 0xFFC1A060 /* PVP0 Config */ +#define PVP0_OPF0_CTL 0xFFC1A024 /* PVP0 Control */ +#define PVP0_OPF1_CTL 0xFFC1A044 /* PVP0 Control */ +#define PVP0_OPF2_CTL 0xFFC1A064 /* PVP0 Control */ +#define PVP0_OPF3_CFG 0xFFC1A080 /* PVP0 Config */ +#define PVP0_OPF3_CTL 0xFFC1A084 /* PVP0 Control */ +#define PVP0_PEC_CFG 0xFFC1A0A0 /* PVP0 Config */ +#define PVP0_PEC_CTL 0xFFC1A0A4 /* PVP0 Control */ +#define PVP0_PEC_D1TH0 0xFFC1A0A8 /* PVP0 Lower Hysteresis Threshold */ +#define PVP0_PEC_D1TH1 0xFFC1A0AC /* PVP0 Upper Hysteresis Threshold */ +#define PVP0_PEC_D2TH0 0xFFC1A0B0 /* PVP0 Weak Zero Crossing Threshold */ +#define PVP0_PEC_D2TH1 0xFFC1A0B4 /* PVP0 Strong Zero Crossing Threshold */ +#define PVP0_IIM0_CFG 0xFFC1A0C0 /* PVP0 Config */ +#define PVP0_IIM1_CFG 0xFFC1A0E0 /* PVP0 Config */ +#define PVP0_IIM0_CTL 0xFFC1A0C4 /* PVP0 Control */ +#define PVP0_IIM1_CTL 0xFFC1A0E4 /* PVP0 Control */ +#define PVP0_IIM0_SCALE 0xFFC1A0C8 /* PVP0 Scaler Values */ +#define PVP0_IIM1_SCALE 0xFFC1A0E8 /* PVP0 Scaler Values */ +#define PVP0_IIM0_SOVF_STAT 0xFFC1A0CC /* PVP0 Signed Overflow Status */ +#define PVP0_IIM1_SOVF_STAT 0xFFC1A0EC /* PVP0 Signed Overflow Status */ +#define PVP0_IIM0_UOVF_STAT 0xFFC1A0D0 /* PVP0 Unsigned Overflow Status */ +#define PVP0_IIM1_UOVF_STAT 0xFFC1A0F0 /* PVP0 Unsigned Overflow Status */ +#define PVP0_ACU_CFG 0xFFC1A100 /* PVP0 ACU Configuration Register */ +#define PVP0_ACU_CTL 0xFFC1A104 /* PVP0 ACU Control Register */ +#define PVP0_ACU_OFFSET 0xFFC1A108 /* PVP0 SUM constant register */ +#define PVP0_ACU_FACTOR 0xFFC1A10C /* PVP0 PROD constant register */ +#define PVP0_ACU_SHIFT 0xFFC1A110 /* PVP0 Shift constant register */ +#define PVP0_ACU_MIN 0xFFC1A114 /* PVP0 Lower saturation threshold set to MIN */ +#define PVP0_ACU_MAX 0xFFC1A118 /* PVP0 Upper saturation threshold set to MAX */ +#define PVP0_UDS_CFG 0xFFC1A140 /* PVP0 UDS Configuration Register */ +#define PVP0_UDS_CTL 0xFFC1A144 /* PVP0 UDS Control Register */ +#define PVP0_UDS_OHCNT 0xFFC1A148 /* PVP0 UDS Output H Dimension */ +#define PVP0_UDS_OVCNT 0xFFC1A14C /* PVP0 UDS Output V Dimension */ +#define PVP0_UDS_HAVG 0xFFC1A150 /* PVP0 UDS H Taps */ +#define PVP0_UDS_VAVG 0xFFC1A154 /* PVP0 UDS V Taps */ +#define PVP0_IPF0_CFG 0xFFC1A180 /* PVP0 Configuration */ +#define PVP0_IPF0_PIPECTL 0xFFC1A184 /* PVP0 Pipe Control */ +#define PVP0_IPF1_PIPECTL 0xFFC1A1C4 /* PVP0 Pipe Control */ +#define PVP0_IPF0_CTL 0xFFC1A188 /* PVP0 Control */ +#define PVP0_IPF1_CTL 0xFFC1A1C8 /* PVP0 Control */ +#define PVP0_IPF0_TAG 0xFFC1A18C /* PVP0 TAG Value */ +#define PVP0_IPF1_TAG 0xFFC1A1CC /* PVP0 TAG Value */ +#define PVP0_IPF0_FCNT 0xFFC1A190 /* PVP0 Frame Count */ +#define PVP0_IPF1_FCNT 0xFFC1A1D0 /* PVP0 Frame Count */ +#define PVP0_IPF0_HCNT 0xFFC1A194 /* PVP0 Horizontal Count */ +#define PVP0_IPF1_HCNT 0xFFC1A1D4 /* PVP0 Horizontal Count */ +#define PVP0_IPF0_VCNT 0xFFC1A198 /* PVP0 Vertical Count */ +#define PVP0_IPF1_VCNT 0xFFC1A1D8 /* PVP0 Vertical Count */ +#define PVP0_IPF0_HPOS 0xFFC1A19C /* PVP0 Horizontal Position */ +#define PVP0_IPF0_VPOS 0xFFC1A1A0 /* PVP0 Vertical Position */ +#define PVP0_IPF0_TAG_STAT 0xFFC1A1A4 /* PVP0 TAG Status */ +#define PVP0_IPF1_TAG_STAT 0xFFC1A1E4 /* PVP0 TAG Status */ +#define PVP0_IPF1_CFG 0xFFC1A1C0 /* PVP0 Configuration */ +#define PVP0_CNV0_CFG 0xFFC1A200 /* PVP0 Configuration */ +#define PVP0_CNV1_CFG 0xFFC1A280 /* PVP0 Configuration */ +#define PVP0_CNV2_CFG 0xFFC1A300 /* PVP0 Configuration */ +#define PVP0_CNV3_CFG 0xFFC1A380 /* PVP0 Configuration */ +#define PVP0_CNV0_CTL 0xFFC1A204 /* PVP0 Control */ +#define PVP0_CNV1_CTL 0xFFC1A284 /* PVP0 Control */ +#define PVP0_CNV2_CTL 0xFFC1A304 /* PVP0 Control */ +#define PVP0_CNV3_CTL 0xFFC1A384 /* PVP0 Control */ +#define PVP0_CNV0_C00C01 0xFFC1A208 /* PVP0 Coefficients 0, 0 and 0, 1 */ +#define PVP0_CNV1_C00C01 0xFFC1A288 /* PVP0 Coefficients 0, 0 and 0, 1 */ +#define PVP0_CNV2_C00C01 0xFFC1A308 /* PVP0 Coefficients 0, 0 and 0, 1 */ +#define PVP0_CNV3_C00C01 0xFFC1A388 /* PVP0 Coefficients 0, 0 and 0, 1 */ +#define PVP0_CNV0_C02C03 0xFFC1A20C /* PVP0 Coefficients 0, 2 and 0, 3 */ +#define PVP0_CNV1_C02C03 0xFFC1A28C /* PVP0 Coefficients 0, 2 and 0, 3 */ +#define PVP0_CNV2_C02C03 0xFFC1A30C /* PVP0 Coefficients 0, 2 and 0, 3 */ +#define PVP0_CNV3_C02C03 0xFFC1A38C /* PVP0 Coefficients 0, 2 and 0, 3 */ +#define PVP0_CNV0_C04 0xFFC1A210 /* PVP0 Coefficient 0, 4 */ +#define PVP0_CNV1_C04 0xFFC1A290 /* PVP0 Coefficient 0, 4 */ +#define PVP0_CNV2_C04 0xFFC1A310 /* PVP0 Coefficient 0, 4 */ +#define PVP0_CNV3_C04 0xFFC1A390 /* PVP0 Coefficient 0, 4 */ +#define PVP0_CNV0_C10C11 0xFFC1A214 /* PVP0 Coefficients 1, 0 and 1, 1 */ +#define PVP0_CNV1_C10C11 0xFFC1A294 /* PVP0 Coefficients 1, 0 and 1, 1 */ +#define PVP0_CNV2_C10C11 0xFFC1A314 /* PVP0 Coefficients 1, 0 and 1, 1 */ +#define PVP0_CNV3_C10C11 0xFFC1A394 /* PVP0 Coefficients 1, 0 and 1, 1 */ +#define PVP0_CNV0_C12C13 0xFFC1A218 /* PVP0 Coefficients 1, 2 and 1, 3 */ +#define PVP0_CNV1_C12C13 0xFFC1A298 /* PVP0 Coefficients 1, 2 and 1, 3 */ +#define PVP0_CNV2_C12C13 0xFFC1A318 /* PVP0 Coefficients 1, 2 and 1, 3 */ +#define PVP0_CNV3_C12C13 0xFFC1A398 /* PVP0 Coefficients 1, 2 and 1, 3 */ +#define PVP0_CNV0_C14 0xFFC1A21C /* PVP0 Coefficient 1, 4 */ +#define PVP0_CNV1_C14 0xFFC1A29C /* PVP0 Coefficient 1, 4 */ +#define PVP0_CNV2_C14 0xFFC1A31C /* PVP0 Coefficient 1, 4 */ +#define PVP0_CNV3_C14 0xFFC1A39C /* PVP0 Coefficient 1, 4 */ +#define PVP0_CNV0_C20C21 0xFFC1A220 /* PVP0 Coefficients 2, 0 and 2, 1 */ +#define PVP0_CNV1_C20C21 0xFFC1A2A0 /* PVP0 Coefficients 2, 0 and 2, 1 */ +#define PVP0_CNV2_C20C21 0xFFC1A320 /* PVP0 Coefficients 2, 0 and 2, 1 */ +#define PVP0_CNV3_C20C21 0xFFC1A3A0 /* PVP0 Coefficients 2, 0 and 2, 1 */ +#define PVP0_CNV0_C22C23 0xFFC1A224 /* PVP0 Coefficients 2, 2 and 2, 3 */ +#define PVP0_CNV1_C22C23 0xFFC1A2A4 /* PVP0 Coefficients 2, 2 and 2, 3 */ +#define PVP0_CNV2_C22C23 0xFFC1A324 /* PVP0 Coefficients 2, 2 and 2, 3 */ +#define PVP0_CNV3_C22C23 0xFFC1A3A4 /* PVP0 Coefficients 2, 2 and 2, 3 */ +#define PVP0_CNV0_C24 0xFFC1A228 /* PVP0 Coefficient 2,4 */ +#define PVP0_CNV1_C24 0xFFC1A2A8 /* PVP0 Coefficient 2,4 */ +#define PVP0_CNV2_C24 0xFFC1A328 /* PVP0 Coefficient 2,4 */ +#define PVP0_CNV3_C24 0xFFC1A3A8 /* PVP0 Coefficient 2,4 */ +#define PVP0_CNV0_C30C31 0xFFC1A22C /* PVP0 Coefficients 3, 0 and 3, 1 */ +#define PVP0_CNV1_C30C31 0xFFC1A2AC /* PVP0 Coefficients 3, 0 and 3, 1 */ +#define PVP0_CNV2_C30C31 0xFFC1A32C /* PVP0 Coefficients 3, 0 and 3, 1 */ +#define PVP0_CNV3_C30C31 0xFFC1A3AC /* PVP0 Coefficients 3, 0 and 3, 1 */ +#define PVP0_CNV0_C32C33 0xFFC1A230 /* PVP0 Coefficients 3, 2 and 3, 3 */ +#define PVP0_CNV1_C32C33 0xFFC1A2B0 /* PVP0 Coefficients 3, 2 and 3, 3 */ +#define PVP0_CNV2_C32C33 0xFFC1A330 /* PVP0 Coefficients 3, 2 and 3, 3 */ +#define PVP0_CNV3_C32C33 0xFFC1A3B0 /* PVP0 Coefficients 3, 2 and 3, 3 */ +#define PVP0_CNV0_C34 0xFFC1A234 /* PVP0 Coefficient 3, 4 */ +#define PVP0_CNV1_C34 0xFFC1A2B4 /* PVP0 Coefficient 3, 4 */ +#define PVP0_CNV2_C34 0xFFC1A334 /* PVP0 Coefficient 3, 4 */ +#define PVP0_CNV3_C34 0xFFC1A3B4 /* PVP0 Coefficient 3, 4 */ +#define PVP0_CNV0_C40C41 0xFFC1A238 /* PVP0 Coefficients 4, 0 and 4, 1 */ +#define PVP0_CNV1_C40C41 0xFFC1A2B8 /* PVP0 Coefficients 4, 0 and 4, 1 */ +#define PVP0_CNV2_C40C41 0xFFC1A338 /* PVP0 Coefficients 4, 0 and 4, 1 */ +#define PVP0_CNV3_C40C41 0xFFC1A3B8 /* PVP0 Coefficients 4, 0 and 4, 1 */ +#define PVP0_CNV0_C42C43 0xFFC1A23C /* PVP0 Coefficients 4, 2 and 4, 3 */ +#define PVP0_CNV1_C42C43 0xFFC1A2BC /* PVP0 Coefficients 4, 2 and 4, 3 */ +#define PVP0_CNV2_C42C43 0xFFC1A33C /* PVP0 Coefficients 4, 2 and 4, 3 */ +#define PVP0_CNV3_C42C43 0xFFC1A3BC /* PVP0 Coefficients 4, 2 and 4, 3 */ +#define PVP0_CNV0_C44 0xFFC1A240 /* PVP0 Coefficient 4, 4 */ +#define PVP0_CNV1_C44 0xFFC1A2C0 /* PVP0 Coefficient 4, 4 */ +#define PVP0_CNV2_C44 0xFFC1A340 /* PVP0 Coefficient 4, 4 */ +#define PVP0_CNV3_C44 0xFFC1A3C0 /* PVP0 Coefficient 4, 4 */ +#define PVP0_CNV0_SCALE 0xFFC1A244 /* PVP0 Scaling factor */ +#define PVP0_CNV1_SCALE 0xFFC1A2C4 /* PVP0 Scaling factor */ +#define PVP0_CNV2_SCALE 0xFFC1A344 /* PVP0 Scaling factor */ +#define PVP0_CNV3_SCALE 0xFFC1A3C4 /* PVP0 Scaling factor */ +#define PVP0_THC0_CFG 0xFFC1A400 /* PVP0 Configuration */ +#define PVP0_THC1_CFG 0xFFC1A500 /* PVP0 Configuration */ +#define PVP0_THC0_CTL 0xFFC1A404 /* PVP0 Control */ +#define PVP0_THC1_CTL 0xFFC1A504 /* PVP0 Control */ +#define PVP0_THC0_HFCNT 0xFFC1A408 /* PVP0 Number of frames */ +#define PVP0_THC1_HFCNT 0xFFC1A508 /* PVP0 Number of frames */ +#define PVP0_THC0_RMAXREP 0xFFC1A40C /* PVP0 Maximum number of RLE reports */ +#define PVP0_THC1_RMAXREP 0xFFC1A50C /* PVP0 Maximum number of RLE reports */ +#define PVP0_THC0_CMINVAL 0xFFC1A410 /* PVP0 Min clip value */ +#define PVP0_THC1_CMINVAL 0xFFC1A510 /* PVP0 Min clip value */ +#define PVP0_THC0_CMINTH 0xFFC1A414 /* PVP0 Clip Min Threshold */ +#define PVP0_THC1_CMINTH 0xFFC1A514 /* PVP0 Clip Min Threshold */ +#define PVP0_THC0_CMAXTH 0xFFC1A418 /* PVP0 Clip Max Threshold */ +#define PVP0_THC1_CMAXTH 0xFFC1A518 /* PVP0 Clip Max Threshold */ +#define PVP0_THC0_CMAXVAL 0xFFC1A41C /* PVP0 Max clip value */ +#define PVP0_THC1_CMAXVAL 0xFFC1A51C /* PVP0 Max clip value */ +#define PVP0_THC0_TH0 0xFFC1A420 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH0 0xFFC1A520 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH1 0xFFC1A424 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH1 0xFFC1A524 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH2 0xFFC1A428 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH2 0xFFC1A528 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH3 0xFFC1A42C /* PVP0 Threshold Value */ +#define PVP0_THC1_TH3 0xFFC1A52C /* PVP0 Threshold Value */ +#define PVP0_THC0_TH4 0xFFC1A430 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH4 0xFFC1A530 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH5 0xFFC1A434 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH5 0xFFC1A534 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH6 0xFFC1A438 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH6 0xFFC1A538 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH7 0xFFC1A43C /* PVP0 Threshold Value */ +#define PVP0_THC1_TH7 0xFFC1A53C /* PVP0 Threshold Value */ +#define PVP0_THC0_TH8 0xFFC1A440 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH8 0xFFC1A540 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH9 0xFFC1A444 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH9 0xFFC1A544 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH10 0xFFC1A448 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH10 0xFFC1A548 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH11 0xFFC1A44C /* PVP0 Threshold Value */ +#define PVP0_THC1_TH11 0xFFC1A54C /* PVP0 Threshold Value */ +#define PVP0_THC0_TH12 0xFFC1A450 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH12 0xFFC1A550 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH13 0xFFC1A454 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH13 0xFFC1A554 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH14 0xFFC1A458 /* PVP0 Threshold Value */ +#define PVP0_THC1_TH14 0xFFC1A558 /* PVP0 Threshold Value */ +#define PVP0_THC0_TH15 0xFFC1A45C /* PVP0 Threshold Value */ +#define PVP0_THC1_TH15 0xFFC1A55C /* PVP0 Threshold Value */ +#define PVP0_THC0_HHPOS 0xFFC1A460 /* PVP0 Window start X-coordinate */ +#define PVP0_THC1_HHPOS 0xFFC1A560 /* PVP0 Window start X-coordinate */ +#define PVP0_THC0_HVPOS 0xFFC1A464 /* PVP0 Window start Y-coordinate */ +#define PVP0_THC1_HVPOS 0xFFC1A564 /* PVP0 Window start Y-coordinate */ +#define PVP0_THC0_HHCNT 0xFFC1A468 /* PVP0 Window width in X dimension */ +#define PVP0_THC1_HHCNT 0xFFC1A568 /* PVP0 Window width in X dimension */ +#define PVP0_THC0_HVCNT 0xFFC1A46C /* PVP0 Window width in Y dimension */ +#define PVP0_THC1_HVCNT 0xFFC1A56C /* PVP0 Window width in Y dimension */ +#define PVP0_THC0_RHPOS 0xFFC1A470 /* PVP0 Window start X-coordinate */ +#define PVP0_THC1_RHPOS 0xFFC1A570 /* PVP0 Window start X-coordinate */ +#define PVP0_THC0_RVPOS 0xFFC1A474 /* PVP0 Window start Y-coordinate */ +#define PVP0_THC1_RVPOS 0xFFC1A574 /* PVP0 Window start Y-coordinate */ +#define PVP0_THC0_RHCNT 0xFFC1A478 /* PVP0 Window width in X dimension */ +#define PVP0_THC1_RHCNT 0xFFC1A578 /* PVP0 Window width in X dimension */ +#define PVP0_THC0_RVCNT 0xFFC1A47C /* PVP0 Window width in Y dimension */ +#define PVP0_THC1_RVCNT 0xFFC1A57C /* PVP0 Window width in Y dimension */ +#define PVP0_THC0_HFCNT_STAT 0xFFC1A480 /* PVP0 Current Frame counter */ +#define PVP0_THC1_HFCNT_STAT 0xFFC1A580 /* PVP0 Current Frame counter */ +#define PVP0_THC0_HCNT0_STAT 0xFFC1A484 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT0_STAT 0xFFC1A584 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT1_STAT 0xFFC1A488 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT1_STAT 0xFFC1A588 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT2_STAT 0xFFC1A48C /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT2_STAT 0xFFC1A58C /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT3_STAT 0xFFC1A490 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT3_STAT 0xFFC1A590 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT4_STAT 0xFFC1A494 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT4_STAT 0xFFC1A594 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT5_STAT 0xFFC1A498 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT5_STAT 0xFFC1A598 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT6_STAT 0xFFC1A49C /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT6_STAT 0xFFC1A59C /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT7_STAT 0xFFC1A4A0 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT7_STAT 0xFFC1A5A0 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT8_STAT 0xFFC1A4A4 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT8_STAT 0xFFC1A5A4 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT9_STAT 0xFFC1A4A8 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT9_STAT 0xFFC1A5A8 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT10_STAT 0xFFC1A4AC /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT10_STAT 0xFFC1A5AC /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT11_STAT 0xFFC1A4B0 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT11_STAT 0xFFC1A5B0 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT12_STAT 0xFFC1A4B4 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT12_STAT 0xFFC1A5B4 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT13_STAT 0xFFC1A4B8 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT13_STAT 0xFFC1A5B8 /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT14_STAT 0xFFC1A4BC /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT14_STAT 0xFFC1A5BC /* PVP0 Histogram counter value */ +#define PVP0_THC0_HCNT15_STAT 0xFFC1A4C0 /* PVP0 Histogram counter value */ +#define PVP0_THC1_HCNT15_STAT 0xFFC1A5C0 /* PVP0 Histogram counter value */ +#define PVP0_THC0_RREP_STAT 0xFFC1A4C4 /* PVP0 Number of RLE Reports */ +#define PVP0_THC1_RREP_STAT 0xFFC1A5C4 /* PVP0 Number of RLE Reports */ +#define PVP0_PMA_CFG 0xFFC1A600 /* PVP0 PMA Configuration Register */ +#define PWM0_CTL 0xFFC1B000 /* PWM0 PWM Control Register */ +#define PWM0_CHANCFG 0xFFC1B004 /* PWM0 PWM Channel Config Register */ +#define PWM0_TRIPCFG 0xFFC1B008 /* PWM0 PWM Trip Config Register */ +#define PWM0_STAT 0xFFC1B00C /* PWM0 PWM Chop Config Register */ +#define PWM0_IMSK 0xFFC1B010 /* PWM0 PWM Interrupt Mask Register */ +#define PWM0_ILAT 0xFFC1B014 /* PWM0 PWM Interrupt Latch Register */ +#define PWM0_CHOPCFG 0xFFC1B018 /* PWM0 PWM Chop Configuration Register */ +#define PWM0_DT 0xFFC1B01C /* PWM0 PWM Dead Time Register */ +#define PWM0_SYNC_WID 0xFFC1B020 /* PWM0 Sync Pulse Width Register */ +#define PWM0_TM0 0xFFC1B024 /* PWM0 Timer0 Period register */ +#define PWM0_TM1 0xFFC1B028 /* PWM0 Timer1 Period register */ +#define PWM0_TM2 0xFFC1B02C /* PWM0 Timer2 Period register */ +#define PWM0_TM3 0xFFC1B030 /* PWM0 Time3 Period register */ +#define PWM0_TM4 0xFFC1B034 /* PWM0 Timer4 Period register */ +#define PWM0_DLYA 0xFFC1B038 /* PWM0 Channel-A Delay register */ +#define PWM0_DLYB 0xFFC1B03C /* PWM0 Channel-B Delay register */ +#define PWM0_DLYC 0xFFC1B040 /* PWM0 Channel-C Delay register */ +#define PWM0_DLYD 0xFFC1B044 /* PWM0 Channel-D Delay register */ +#define PWM0_ACTL 0xFFC1B048 /* PWM0 Channel-A control register */ +#define PWM0_AH0 0xFFC1B04C /* PWM0 Ch-AH Duty-0 register */ +#define PWM0_AH1 0xFFC1B050 /* PWM0 Ch-AH Duty-1 register */ +#define PWM0_AH0_HP 0xFFC1B054 /* PWM0 Ch-AH High precision Duty-0 register */ +#define PWM0_AH1_HP 0xFFC1B058 /* PWM0 Ch-AH High precision Duty-1 register */ +#define PWM0_AL0 0xFFC1B05C /* PWM0 Ch-AL Duty-0 register */ +#define PWM0_AL1 0xFFC1B060 /* PWM0 Ch-AL Duty-1 register */ +#define PWM0_BCTL 0xFFC1B064 /* PWM0 Channel-B control register */ +#define PWM0_BH0 0xFFC1B068 /* PWM0 Ch-BH Duty-0 register */ +#define PWM0_BH1 0xFFC1B06C /* PWM0 Ch-BH Duty-1 register */ +#define PWM0_BH0_HP 0xFFC1B070 /* PWM0 Ch-BH High precision Duty-0 register */ +#define PWM0_BH1_HP 0xFFC1B074 /* PWM0 Ch-BH High precision Duty-1 register */ +#define PWM0_BL0 0xFFC1B078 /* PWM0 Ch-BL Duty-0 register */ +#define PWM0_BL1 0xFFC1B07C /* PWM0 Ch-BL Duty-1 register */ +#define PWM0_CCTL 0xFFC1B080 /* PWM0 Channel-C control register */ +#define PWM0_CH0 0xFFC1B084 /* PWM0 Ch-CH Duty-0 register */ +#define PWM0_CH1 0xFFC1B088 /* PWM0 Ch-CH Duty-1 register */ +#define PWM0_CH0_HP 0xFFC1B08C /* PWM0 Ch-CH High precision Duty-0 register */ +#define PWM0_CH1_HP 0xFFC1B090 /* PWM0 Ch-CH High precision Duty-1 register */ +#define PWM0_CL0 0xFFC1B094 /* PWM0 Ch-CL Duty-0 register */ +#define PWM0_CL1 0xFFC1B098 /* PWM0 Ch-CL Duty-1 register */ +#define PWM0_DCTL 0xFFC1B09C /* PWM0 Channel-D control register */ +#define PWM0_DH0 0xFFC1B0A0 /* PWM0 Ch-DH Duty-0 register */ +#define PWM0_DH1 0xFFC1B0A4 /* PWM0 Ch-DH Duty-1 register */ +#define PWM0_DH0_HP 0xFFC1B0A8 /* PWM0 Ch-DH High precision Duty-0 register */ +#define PWM0_DH1_HP 0xFFC1B0AC /* PWM0 Ch-DH High precision Duty-1 register */ +#define PWM0_DL0 0xFFC1B0B0 /* PWM0 Ch-DL Duty-0 register */ +#define PWM0_DL1 0xFFC1B0B4 /* PWM0 Ch-DL Duty-1 register */ +#define PWM0_REVID 0xFFC1B0FC /* PWM0 PWM Revision ID Register */ +#define PWM1_CTL 0xFFC1B400 /* PWM1 PWM Control Register */ +#define PWM1_CHANCFG 0xFFC1B404 /* PWM1 PWM Channel Config Register */ +#define PWM1_TRIPCFG 0xFFC1B408 /* PWM1 PWM Trip Config Register */ +#define PWM1_STAT 0xFFC1B40C /* PWM1 PWM Chop Config Register */ +#define PWM1_IMSK 0xFFC1B410 /* PWM1 PWM Interrupt Mask Register */ +#define PWM1_ILAT 0xFFC1B414 /* PWM1 PWM Interrupt Latch Register */ +#define PWM1_CHOPCFG 0xFFC1B418 /* PWM1 PWM Chop Configuration Register */ +#define PWM1_DT 0xFFC1B41C /* PWM1 PWM Dead Time Register */ +#define PWM1_SYNC_WID 0xFFC1B420 /* PWM1 Sync Pulse Width Register */ +#define PWM1_TM0 0xFFC1B424 /* PWM1 Timer0 Period register */ +#define PWM1_TM1 0xFFC1B428 /* PWM1 Timer1 Period register */ +#define PWM1_TM2 0xFFC1B42C /* PWM1 Timer2 Period register */ +#define PWM1_TM3 0xFFC1B430 /* PWM1 Time3 Period register */ +#define PWM1_TM4 0xFFC1B434 /* PWM1 Timer4 Period register */ +#define PWM1_DLYA 0xFFC1B438 /* PWM1 Channel-A Delay register */ +#define PWM1_DLYB 0xFFC1B43C /* PWM1 Channel-B Delay register */ +#define PWM1_DLYC 0xFFC1B440 /* PWM1 Channel-C Delay register */ +#define PWM1_DLYD 0xFFC1B444 /* PWM1 Channel-D Delay register */ +#define PWM1_ACTL 0xFFC1B448 /* PWM1 Channel-A control register */ +#define PWM1_AH0 0xFFC1B44C /* PWM1 Ch-AH Duty-0 register */ +#define PWM1_AH1 0xFFC1B450 /* PWM1 Ch-AH Duty-1 register */ +#define PWM1_AH0_HP 0xFFC1B454 /* PWM1 Ch-AH High precision Duty-0 register */ +#define PWM1_AH1_HP 0xFFC1B458 /* PWM1 Ch-AH High precision Duty-1 register */ +#define PWM1_AL0 0xFFC1B45C /* PWM1 Ch-AL Duty-0 register */ +#define PWM1_AL1 0xFFC1B460 /* PWM1 Ch-AL Duty-1 register */ +#define PWM1_BCTL 0xFFC1B464 /* PWM1 Channel-B control register */ +#define PWM1_BH0 0xFFC1B468 /* PWM1 Ch-BH Duty-0 register */ +#define PWM1_BH1 0xFFC1B46C /* PWM1 Ch-BH Duty-1 register */ +#define PWM1_BH0_HP 0xFFC1B470 /* PWM1 Ch-BH High precision Duty-0 register */ +#define PWM1_BH1_HP 0xFFC1B474 /* PWM1 Ch-BH High precision Duty-1 register */ +#define PWM1_BL0 0xFFC1B478 /* PWM1 Ch-BL Duty-0 register */ +#define PWM1_BL1 0xFFC1B47C /* PWM1 Ch-BL Duty-1 register */ +#define PWM1_CCTL 0xFFC1B480 /* PWM1 Channel-C control register */ +#define PWM1_CH0 0xFFC1B484 /* PWM1 Ch-CH Duty-0 register */ +#define PWM1_CH1 0xFFC1B488 /* PWM1 Ch-CH Duty-1 register */ +#define PWM1_CH0_HP 0xFFC1B48C /* PWM1 Ch-CH High precision Duty-0 register */ +#define PWM1_CH1_HP 0xFFC1B490 /* PWM1 Ch-CH High precision Duty-1 register */ +#define PWM1_CL0 0xFFC1B494 /* PWM1 Ch-CL Duty-0 register */ +#define PWM1_CL1 0xFFC1B498 /* PWM1 Ch-CL Duty-1 register */ +#define PWM1_DCTL 0xFFC1B49C /* PWM1 Channel-D control register */ +#define PWM1_DH0 0xFFC1B4A0 /* PWM1 Ch-DH Duty-0 register */ +#define PWM1_DH1 0xFFC1B4A4 /* PWM1 Ch-DH Duty-1 register */ +#define PWM1_DH0_HP 0xFFC1B4A8 /* PWM1 Ch-DH High precision Duty-0 register */ +#define PWM1_DH1_HP 0xFFC1B4AC /* PWM1 Ch-DH High precision Duty-1 register */ +#define PWM1_DL0 0xFFC1B4B0 /* PWM1 Ch-DL Duty-0 register */ +#define PWM1_DL1 0xFFC1B4B4 /* PWM1 Ch-DL Duty-1 register */ +#define PWM1_REVID 0xFFC1B4FC /* PWM1 PWM Revision ID Register */ +#define VID0_CONN 0xFFC1D000 /* VID0 Video Subsystem Connect Register */ +#define SWU0_GCTL 0xFFC1E000 /* SWU0 Global Control Register */ +#define SWU0_GSTAT 0xFFC1E004 /* SWU0 Global Status Register */ +#define SWU0_CTL0 0xFFC1E010 /* SWU0 Control Register n */ +#define SWU0_CTL1 0xFFC1E030 /* SWU0 Control Register n */ +#define SWU0_CTL2 0xFFC1E050 /* SWU0 Control Register n */ +#define SWU0_CTL3 0xFFC1E070 /* SWU0 Control Register n */ +#define SWU0_LA0 0xFFC1E014 /* SWU0 Lower Address Register n */ +#define SWU0_LA1 0xFFC1E034 /* SWU0 Lower Address Register n */ +#define SWU0_LA2 0xFFC1E054 /* SWU0 Lower Address Register n */ +#define SWU0_LA3 0xFFC1E074 /* SWU0 Lower Address Register n */ +#define SWU0_UA0 0xFFC1E018 /* SWU0 Upper Address Register n */ +#define SWU0_UA1 0xFFC1E038 /* SWU0 Upper Address Register n */ +#define SWU0_UA2 0xFFC1E058 /* SWU0 Upper Address Register n */ +#define SWU0_UA3 0xFFC1E078 /* SWU0 Upper Address Register n */ +#define SWU0_ID0 0xFFC1E01C /* SWU0 ID Register n */ +#define SWU0_ID1 0xFFC1E03C /* SWU0 ID Register n */ +#define SWU0_ID2 0xFFC1E05C /* SWU0 ID Register n */ +#define SWU0_ID3 0xFFC1E07C /* SWU0 ID Register n */ +#define SWU0_CNT0 0xFFC1E020 /* SWU0 Count Register n */ +#define SWU0_CNT1 0xFFC1E040 /* SWU0 Count Register n */ +#define SWU0_CNT2 0xFFC1E060 /* SWU0 Count Register n */ +#define SWU0_CNT3 0xFFC1E080 /* SWU0 Count Register n */ +#define SWU0_TARG0 0xFFC1E024 /* SWU0 Target Register n */ +#define SWU0_TARG1 0xFFC1E044 /* SWU0 Target Register n */ +#define SWU0_TARG2 0xFFC1E064 /* SWU0 Target Register n */ +#define SWU0_TARG3 0xFFC1E084 /* SWU0 Target Register n */ +#define SWU0_HIST0 0xFFC1E028 /* SWU0 Bandwidth History Register n */ +#define SWU0_HIST1 0xFFC1E048 /* SWU0 Bandwidth History Register n */ +#define SWU0_HIST2 0xFFC1E068 /* SWU0 Bandwidth History Register n */ +#define SWU0_HIST3 0xFFC1E088 /* SWU0 Bandwidth History Register n */ +#define SWU0_CUR0 0xFFC1E02C /* SWU0 Current Register n */ +#define SWU0_CUR1 0xFFC1E04C /* SWU0 Current Register n */ +#define SWU0_CUR2 0xFFC1E06C /* SWU0 Current Register n */ +#define SWU0_CUR3 0xFFC1E08C /* SWU0 Current Register n */ +#define SWU1_GCTL 0xFFCAB000 /* SWU1 Global Control Register */ +#define SWU1_GSTAT 0xFFCAB004 /* SWU1 Global Status Register */ +#define SWU1_CTL0 0xFFCAB010 /* SWU1 Control Register n */ +#define SWU1_CTL1 0xFFCAB030 /* SWU1 Control Register n */ +#define SWU1_CTL2 0xFFCAB050 /* SWU1 Control Register n */ +#define SWU1_CTL3 0xFFCAB070 /* SWU1 Control Register n */ +#define SWU1_LA0 0xFFCAB014 /* SWU1 Lower Address Register n */ +#define SWU1_LA1 0xFFCAB034 /* SWU1 Lower Address Register n */ +#define SWU1_LA2 0xFFCAB054 /* SWU1 Lower Address Register n */ +#define SWU1_LA3 0xFFCAB074 /* SWU1 Lower Address Register n */ +#define SWU1_UA0 0xFFCAB018 /* SWU1 Upper Address Register n */ +#define SWU1_UA1 0xFFCAB038 /* SWU1 Upper Address Register n */ +#define SWU1_UA2 0xFFCAB058 /* SWU1 Upper Address Register n */ +#define SWU1_UA3 0xFFCAB078 /* SWU1 Upper Address Register n */ +#define SWU1_ID0 0xFFCAB01C /* SWU1 ID Register n */ +#define SWU1_ID1 0xFFCAB03C /* SWU1 ID Register n */ +#define SWU1_ID2 0xFFCAB05C /* SWU1 ID Register n */ +#define SWU1_ID3 0xFFCAB07C /* SWU1 ID Register n */ +#define SWU1_CNT0 0xFFCAB020 /* SWU1 Count Register n */ +#define SWU1_CNT1 0xFFCAB040 /* SWU1 Count Register n */ +#define SWU1_CNT2 0xFFCAB060 /* SWU1 Count Register n */ +#define SWU1_CNT3 0xFFCAB080 /* SWU1 Count Register n */ +#define SWU1_TARG0 0xFFCAB024 /* SWU1 Target Register n */ +#define SWU1_TARG1 0xFFCAB044 /* SWU1 Target Register n */ +#define SWU1_TARG2 0xFFCAB064 /* SWU1 Target Register n */ +#define SWU1_TARG3 0xFFCAB084 /* SWU1 Target Register n */ +#define SWU1_HIST0 0xFFCAB028 /* SWU1 Bandwidth History Register n */ +#define SWU1_HIST1 0xFFCAB048 /* SWU1 Bandwidth History Register n */ +#define SWU1_HIST2 0xFFCAB068 /* SWU1 Bandwidth History Register n */ +#define SWU1_HIST3 0xFFCAB088 /* SWU1 Bandwidth History Register n */ +#define SWU1_CUR0 0xFFCAB02C /* SWU1 Current Register n */ +#define SWU1_CUR1 0xFFCAB04C /* SWU1 Current Register n */ +#define SWU1_CUR2 0xFFCAB06C /* SWU1 Current Register n */ +#define SWU1_CUR3 0xFFCAB08C /* SWU1 Current Register n */ +#define SWU2_GCTL 0xFFCAC000 /* SWU2 Global Control Register */ +#define SWU2_GSTAT 0xFFCAC004 /* SWU2 Global Status Register */ +#define SWU2_CTL0 0xFFCAC010 /* SWU2 Control Register n */ +#define SWU2_CTL1 0xFFCAC030 /* SWU2 Control Register n */ +#define SWU2_CTL2 0xFFCAC050 /* SWU2 Control Register n */ +#define SWU2_CTL3 0xFFCAC070 /* SWU2 Control Register n */ +#define SWU2_LA0 0xFFCAC014 /* SWU2 Lower Address Register n */ +#define SWU2_LA1 0xFFCAC034 /* SWU2 Lower Address Register n */ +#define SWU2_LA2 0xFFCAC054 /* SWU2 Lower Address Register n */ +#define SWU2_LA3 0xFFCAC074 /* SWU2 Lower Address Register n */ +#define SWU2_UA0 0xFFCAC018 /* SWU2 Upper Address Register n */ +#define SWU2_UA1 0xFFCAC038 /* SWU2 Upper Address Register n */ +#define SWU2_UA2 0xFFCAC058 /* SWU2 Upper Address Register n */ +#define SWU2_UA3 0xFFCAC078 /* SWU2 Upper Address Register n */ +#define SWU2_ID0 0xFFCAC01C /* SWU2 ID Register n */ +#define SWU2_ID1 0xFFCAC03C /* SWU2 ID Register n */ +#define SWU2_ID2 0xFFCAC05C /* SWU2 ID Register n */ +#define SWU2_ID3 0xFFCAC07C /* SWU2 ID Register n */ +#define SWU2_CNT0 0xFFCAC020 /* SWU2 Count Register n */ +#define SWU2_CNT1 0xFFCAC040 /* SWU2 Count Register n */ +#define SWU2_CNT2 0xFFCAC060 /* SWU2 Count Register n */ +#define SWU2_CNT3 0xFFCAC080 /* SWU2 Count Register n */ +#define SWU2_TARG0 0xFFCAC024 /* SWU2 Target Register n */ +#define SWU2_TARG1 0xFFCAC044 /* SWU2 Target Register n */ +#define SWU2_TARG2 0xFFCAC064 /* SWU2 Target Register n */ +#define SWU2_TARG3 0xFFCAC084 /* SWU2 Target Register n */ +#define SWU2_HIST0 0xFFCAC028 /* SWU2 Bandwidth History Register n */ +#define SWU2_HIST1 0xFFCAC048 /* SWU2 Bandwidth History Register n */ +#define SWU2_HIST2 0xFFCAC068 /* SWU2 Bandwidth History Register n */ +#define SWU2_HIST3 0xFFCAC088 /* SWU2 Bandwidth History Register n */ +#define SWU2_CUR0 0xFFCAC02C /* SWU2 Current Register n */ +#define SWU2_CUR1 0xFFCAC04C /* SWU2 Current Register n */ +#define SWU2_CUR2 0xFFCAC06C /* SWU2 Current Register n */ +#define SWU2_CUR3 0xFFCAC08C /* SWU2 Current Register n */ +#define SWU3_GCTL 0xFFCAD000 /* SWU3 Global Control Register */ +#define SWU3_GSTAT 0xFFCAD004 /* SWU3 Global Status Register */ +#define SWU3_CTL0 0xFFCAD010 /* SWU3 Control Register n */ +#define SWU3_CTL1 0xFFCAD030 /* SWU3 Control Register n */ +#define SWU3_CTL2 0xFFCAD050 /* SWU3 Control Register n */ +#define SWU3_CTL3 0xFFCAD070 /* SWU3 Control Register n */ +#define SWU3_LA0 0xFFCAD014 /* SWU3 Lower Address Register n */ +#define SWU3_LA1 0xFFCAD034 /* SWU3 Lower Address Register n */ +#define SWU3_LA2 0xFFCAD054 /* SWU3 Lower Address Register n */ +#define SWU3_LA3 0xFFCAD074 /* SWU3 Lower Address Register n */ +#define SWU3_UA0 0xFFCAD018 /* SWU3 Upper Address Register n */ +#define SWU3_UA1 0xFFCAD038 /* SWU3 Upper Address Register n */ +#define SWU3_UA2 0xFFCAD058 /* SWU3 Upper Address Register n */ +#define SWU3_UA3 0xFFCAD078 /* SWU3 Upper Address Register n */ +#define SWU3_ID0 0xFFCAD01C /* SWU3 ID Register n */ +#define SWU3_ID1 0xFFCAD03C /* SWU3 ID Register n */ +#define SWU3_ID2 0xFFCAD05C /* SWU3 ID Register n */ +#define SWU3_ID3 0xFFCAD07C /* SWU3 ID Register n */ +#define SWU3_CNT0 0xFFCAD020 /* SWU3 Count Register n */ +#define SWU3_CNT1 0xFFCAD040 /* SWU3 Count Register n */ +#define SWU3_CNT2 0xFFCAD060 /* SWU3 Count Register n */ +#define SWU3_CNT3 0xFFCAD080 /* SWU3 Count Register n */ +#define SWU3_TARG0 0xFFCAD024 /* SWU3 Target Register n */ +#define SWU3_TARG1 0xFFCAD044 /* SWU3 Target Register n */ +#define SWU3_TARG2 0xFFCAD064 /* SWU3 Target Register n */ +#define SWU3_TARG3 0xFFCAD084 /* SWU3 Target Register n */ +#define SWU3_HIST0 0xFFCAD028 /* SWU3 Bandwidth History Register n */ +#define SWU3_HIST1 0xFFCAD048 /* SWU3 Bandwidth History Register n */ +#define SWU3_HIST2 0xFFCAD068 /* SWU3 Bandwidth History Register n */ +#define SWU3_HIST3 0xFFCAD088 /* SWU3 Bandwidth History Register n */ +#define SWU3_CUR0 0xFFCAD02C /* SWU3 Current Register n */ +#define SWU3_CUR1 0xFFCAD04C /* SWU3 Current Register n */ +#define SWU3_CUR2 0xFFCAD06C /* SWU3 Current Register n */ +#define SWU3_CUR3 0xFFCAD08C /* SWU3 Current Register n */ +#define SWU4_GCTL 0xFFCAE000 /* SWU4 Global Control Register */ +#define SWU4_GSTAT 0xFFCAE004 /* SWU4 Global Status Register */ +#define SWU4_CTL0 0xFFCAE010 /* SWU4 Control Register n */ +#define SWU4_CTL1 0xFFCAE030 /* SWU4 Control Register n */ +#define SWU4_CTL2 0xFFCAE050 /* SWU4 Control Register n */ +#define SWU4_CTL3 0xFFCAE070 /* SWU4 Control Register n */ +#define SWU4_LA0 0xFFCAE014 /* SWU4 Lower Address Register n */ +#define SWU4_LA1 0xFFCAE034 /* SWU4 Lower Address Register n */ +#define SWU4_LA2 0xFFCAE054 /* SWU4 Lower Address Register n */ +#define SWU4_LA3 0xFFCAE074 /* SWU4 Lower Address Register n */ +#define SWU4_UA0 0xFFCAE018 /* SWU4 Upper Address Register n */ +#define SWU4_UA1 0xFFCAE038 /* SWU4 Upper Address Register n */ +#define SWU4_UA2 0xFFCAE058 /* SWU4 Upper Address Register n */ +#define SWU4_UA3 0xFFCAE078 /* SWU4 Upper Address Register n */ +#define SWU4_ID0 0xFFCAE01C /* SWU4 ID Register n */ +#define SWU4_ID1 0xFFCAE03C /* SWU4 ID Register n */ +#define SWU4_ID2 0xFFCAE05C /* SWU4 ID Register n */ +#define SWU4_ID3 0xFFCAE07C /* SWU4 ID Register n */ +#define SWU4_CNT0 0xFFCAE020 /* SWU4 Count Register n */ +#define SWU4_CNT1 0xFFCAE040 /* SWU4 Count Register n */ +#define SWU4_CNT2 0xFFCAE060 /* SWU4 Count Register n */ +#define SWU4_CNT3 0xFFCAE080 /* SWU4 Count Register n */ +#define SWU4_TARG0 0xFFCAE024 /* SWU4 Target Register n */ +#define SWU4_TARG1 0xFFCAE044 /* SWU4 Target Register n */ +#define SWU4_TARG2 0xFFCAE064 /* SWU4 Target Register n */ +#define SWU4_TARG3 0xFFCAE084 /* SWU4 Target Register n */ +#define SWU4_HIST0 0xFFCAE028 /* SWU4 Bandwidth History Register n */ +#define SWU4_HIST1 0xFFCAE048 /* SWU4 Bandwidth History Register n */ +#define SWU4_HIST2 0xFFCAE068 /* SWU4 Bandwidth History Register n */ +#define SWU4_HIST3 0xFFCAE088 /* SWU4 Bandwidth History Register n */ +#define SWU4_CUR0 0xFFCAE02C /* SWU4 Current Register n */ +#define SWU4_CUR1 0xFFCAE04C /* SWU4 Current Register n */ +#define SWU4_CUR2 0xFFCAE06C /* SWU4 Current Register n */ +#define SWU4_CUR3 0xFFCAE08C /* SWU4 Current Register n */ +#define SWU5_GCTL 0xFFCAF000 /* SWU5 Global Control Register */ +#define SWU5_GSTAT 0xFFCAF004 /* SWU5 Global Status Register */ +#define SWU5_CTL0 0xFFCAF010 /* SWU5 Control Register n */ +#define SWU5_CTL1 0xFFCAF030 /* SWU5 Control Register n */ +#define SWU5_CTL2 0xFFCAF050 /* SWU5 Control Register n */ +#define SWU5_CTL3 0xFFCAF070 /* SWU5 Control Register n */ +#define SWU5_LA0 0xFFCAF014 /* SWU5 Lower Address Register n */ +#define SWU5_LA1 0xFFCAF034 /* SWU5 Lower Address Register n */ +#define SWU5_LA2 0xFFCAF054 /* SWU5 Lower Address Register n */ +#define SWU5_LA3 0xFFCAF074 /* SWU5 Lower Address Register n */ +#define SWU5_UA0 0xFFCAF018 /* SWU5 Upper Address Register n */ +#define SWU5_UA1 0xFFCAF038 /* SWU5 Upper Address Register n */ +#define SWU5_UA2 0xFFCAF058 /* SWU5 Upper Address Register n */ +#define SWU5_UA3 0xFFCAF078 /* SWU5 Upper Address Register n */ +#define SWU5_ID0 0xFFCAF01C /* SWU5 ID Register n */ +#define SWU5_ID1 0xFFCAF03C /* SWU5 ID Register n */ +#define SWU5_ID2 0xFFCAF05C /* SWU5 ID Register n */ +#define SWU5_ID3 0xFFCAF07C /* SWU5 ID Register n */ +#define SWU5_CNT0 0xFFCAF020 /* SWU5 Count Register n */ +#define SWU5_CNT1 0xFFCAF040 /* SWU5 Count Register n */ +#define SWU5_CNT2 0xFFCAF060 /* SWU5 Count Register n */ +#define SWU5_CNT3 0xFFCAF080 /* SWU5 Count Register n */ +#define SWU5_TARG0 0xFFCAF024 /* SWU5 Target Register n */ +#define SWU5_TARG1 0xFFCAF044 /* SWU5 Target Register n */ +#define SWU5_TARG2 0xFFCAF064 /* SWU5 Target Register n */ +#define SWU5_TARG3 0xFFCAF084 /* SWU5 Target Register n */ +#define SWU5_HIST0 0xFFCAF028 /* SWU5 Bandwidth History Register n */ +#define SWU5_HIST1 0xFFCAF048 /* SWU5 Bandwidth History Register n */ +#define SWU5_HIST2 0xFFCAF068 /* SWU5 Bandwidth History Register n */ +#define SWU5_HIST3 0xFFCAF088 /* SWU5 Bandwidth History Register n */ +#define SWU5_CUR0 0xFFCAF02C /* SWU5 Current Register n */ +#define SWU5_CUR1 0xFFCAF04C /* SWU5 Current Register n */ +#define SWU5_CUR2 0xFFCAF06C /* SWU5 Current Register n */ +#define SWU5_CUR3 0xFFCAF08C /* SWU5 Current Register n */ +#define SWU6_GCTL 0xFFC82000 /* SWU6 Global Control Register */ +#define SWU6_GSTAT 0xFFC82004 /* SWU6 Global Status Register */ +#define SWU6_CTL0 0xFFC82010 /* SWU6 Control Register n */ +#define SWU6_CTL1 0xFFC82030 /* SWU6 Control Register n */ +#define SWU6_CTL2 0xFFC82050 /* SWU6 Control Register n */ +#define SWU6_CTL3 0xFFC82070 /* SWU6 Control Register n */ +#define SWU6_LA0 0xFFC82014 /* SWU6 Lower Address Register n */ +#define SWU6_LA1 0xFFC82034 /* SWU6 Lower Address Register n */ +#define SWU6_LA2 0xFFC82054 /* SWU6 Lower Address Register n */ +#define SWU6_LA3 0xFFC82074 /* SWU6 Lower Address Register n */ +#define SWU6_UA0 0xFFC82018 /* SWU6 Upper Address Register n */ +#define SWU6_UA1 0xFFC82038 /* SWU6 Upper Address Register n */ +#define SWU6_UA2 0xFFC82058 /* SWU6 Upper Address Register n */ +#define SWU6_UA3 0xFFC82078 /* SWU6 Upper Address Register n */ +#define SWU6_ID0 0xFFC8201C /* SWU6 ID Register n */ +#define SWU6_ID1 0xFFC8203C /* SWU6 ID Register n */ +#define SWU6_ID2 0xFFC8205C /* SWU6 ID Register n */ +#define SWU6_ID3 0xFFC8207C /* SWU6 ID Register n */ +#define SWU6_CNT0 0xFFC82020 /* SWU6 Count Register n */ +#define SWU6_CNT1 0xFFC82040 /* SWU6 Count Register n */ +#define SWU6_CNT2 0xFFC82060 /* SWU6 Count Register n */ +#define SWU6_CNT3 0xFFC82080 /* SWU6 Count Register n */ +#define SWU6_TARG0 0xFFC82024 /* SWU6 Target Register n */ +#define SWU6_TARG1 0xFFC82044 /* SWU6 Target Register n */ +#define SWU6_TARG2 0xFFC82064 /* SWU6 Target Register n */ +#define SWU6_TARG3 0xFFC82084 /* SWU6 Target Register n */ +#define SWU6_HIST0 0xFFC82028 /* SWU6 Bandwidth History Register n */ +#define SWU6_HIST1 0xFFC82048 /* SWU6 Bandwidth History Register n */ +#define SWU6_HIST2 0xFFC82068 /* SWU6 Bandwidth History Register n */ +#define SWU6_HIST3 0xFFC82088 /* SWU6 Bandwidth History Register n */ +#define SWU6_CUR0 0xFFC8202C /* SWU6 Current Register n */ +#define SWU6_CUR1 0xFFC8204C /* SWU6 Current Register n */ +#define SWU6_CUR2 0xFFC8206C /* SWU6 Current Register n */ +#define SWU6_CUR3 0xFFC8208C /* SWU6 Current Register n */ +#define SDU0_IDCODE 0xFFC1F020 /* SDU0 ID Code Register */ +#define SDU0_CTL 0xFFC1F050 /* SDU0 Control Register */ +#define SDU0_STAT 0xFFC1F054 /* SDU0 Status Register */ +#define SDU0_MACCTL 0xFFC1F058 /* SDU0 Memory Access Control Register */ +#define SDU0_MACADDR 0xFFC1F05C /* SDU0 Memory Access Address Register */ +#define SDU0_MACDATA 0xFFC1F060 /* SDU0 Memory Access Data Register */ +#define SDU0_DMARD 0xFFC1F064 /* SDU0 DMA Read Data Register */ +#define SDU0_DMAWD 0xFFC1F068 /* SDU0 DMA Write Data Register */ +#define SDU0_MSG 0xFFC1F080 /* SDU0 Message Register */ +#define SDU0_MSG_SET 0xFFC1F084 /* SDU0 Message Set Register */ +#define SDU0_MSG_CLR 0xFFC1F088 /* SDU0 Message Clear Register */ +#define SDU0_GHLT 0xFFC1F08C /* SDU0 Group Halt Register */ +#define EMAC0_MACCFG 0xFFC20000 /* EMAC0 MAC Configuration Register */ +#define EMAC0_MACFRMFILT 0xFFC20004 /* EMAC0 Filter Register for filtering Received Frames */ +#define EMAC0_HASHTBL_HI 0xFFC20008 /* EMAC0 Contains the Upper 32 bits of the hash table */ +#define EMAC0_HASHTBL_LO 0xFFC2000C /* EMAC0 Contains the lower 32 bits of the hash table */ +#define EMAC0_GMII_ADDR 0xFFC20010 /* EMAC0 Management Address Register */ +#define EMAC0_GMII_DATA 0xFFC20014 /* EMAC0 Management Data Register */ +#define EMAC0_FLOWCTL 0xFFC20018 /* EMAC0 MAC FLow Control Register */ +#define EMAC0_VLANTAG 0xFFC2001C /* EMAC0 VLAN Tag Register */ +#define EMAC0_VER 0xFFC20020 /* EMAC0 EMAC Version Register */ +#define EMAC0_DBG 0xFFC20024 /* EMAC0 EMAC Debug Register */ +#define EMAC0_RMTWKUP 0xFFC20028 /* EMAC0 Remote wake up frame register */ +#define EMAC0_PMT_CTLSTAT 0xFFC2002C /* EMAC0 PMT Control and Status Register */ +#define EMAC0_ISTAT 0xFFC20038 /* EMAC0 EMAC Interrupt Status Register */ +#define EMAC0_IMSK 0xFFC2003C /* EMAC0 EMAC Interrupt Mask Register */ +#define EMAC0_ADDR0_HI 0xFFC20040 /* EMAC0 EMAC Address0 High Register */ +#define EMAC0_ADDR0_LO 0xFFC20044 /* EMAC0 EMAC Address0 Low Register */ +#define EMAC0_MMC_CTL 0xFFC20100 /* EMAC0 MMC Control Register */ +#define EMAC0_MMC_RXINT 0xFFC20104 /* EMAC0 MMC RX Interrupt Register */ +#define EMAC0_MMC_TXINT 0xFFC20108 /* EMAC0 MMC TX Interrupt Register */ +#define EMAC0_MMC_RXIMSK 0xFFC2010C /* EMAC0 MMC RX Interrupt Mask Register */ +#define EMAC0_MMC_TXIMSK 0xFFC20110 /* EMAC0 MMC TX Interrupt Mask Register */ +#define EMAC0_TXOCTCNT_GB 0xFFC20114 /* EMAC0 Num bytes transmitted exclusive of preamble */ +#define EMAC0_TXFRMCNT_GB 0xFFC20118 /* EMAC0 Num frames transmitted exclusive of retired */ +#define EMAC0_TXBCASTFRM_G 0xFFC2011C /* EMAC0 Number of good broadcast frames transmitted. */ +#define EMAC0_TXMCASTFRM_G 0xFFC20120 /* EMAC0 Number of good multicast frames transmitted. */ +#define EMAC0_TX64_GB 0xFFC20124 /* EMAC0 Number of 64 byte length frames */ +#define EMAC0_TX65TO127_GB 0xFFC20128 /* EMAC0 Number of frames of length b/w 65-127 (inclusive) bytes */ +#define EMAC0_TX128TO255_GB 0xFFC2012C /* EMAC0 Number of frames of length b/w 128-255 (inclusive) bytes */ +#define EMAC0_TX256TO511_GB 0xFFC20130 /* EMAC0 Number of frames of length b/w 256-511 (inclusive) bytes */ +#define EMAC0_TX512TO1023_GB 0xFFC20134 /* EMAC0 Number of frames of length b/w 512-1023 (inclusive) bytes */ +#define EMAC0_TX1024TOMAX_GB 0xFFC20138 /* EMAC0 Number of frames of length b/w 1024-max (inclusive) bytes */ +#define EMAC0_TXUCASTFRM_GB 0xFFC2013C /* EMAC0 Number of good and bad unicast frames transmitted */ +#define EMAC0_TXMCASTFRM_GB 0xFFC20140 /* EMAC0 Number of good and bad multicast frames transmitted */ +#define EMAC0_TXBCASTFRM_GB 0xFFC20144 /* EMAC0 Number of good and bad broadcast frames transmitted */ +#define EMAC0_TXUNDR_ERR 0xFFC20148 /* EMAC0 Number of frames aborted due to frame underflow error */ +#define EMAC0_TXSNGCOL_G 0xFFC2014C /* EMAC0 Number of transmitted frames after single collision */ +#define EMAC0_TXMULTCOL_G 0xFFC20150 /* EMAC0 Number of transmitted frames with more than one collision */ +#define EMAC0_TXDEFERRED 0xFFC20154 /* EMAC0 Number of transmitted frames after deferral */ +#define EMAC0_TXLATECOL 0xFFC20158 /* EMAC0 Number of frames aborted due to late collision error */ +#define EMAC0_TXEXCESSCOL 0xFFC2015C /* EMAC0 Number of aborted frames due to excessive collisions */ +#define EMAC0_TXCARR_ERR 0xFFC20160 /* EMAC0 Number of aborted frames due to carrier sense error */ +#define EMAC0_TXOCTCNT_G 0xFFC20164 /* EMAC0 Number of bytes transmitted in good frames only */ +#define EMAC0_TXFRMCNT_G 0xFFC20168 /* EMAC0 Number of good frames transmitted. */ +#define EMAC0_TXEXCESSDEF 0xFFC2016C /* EMAC0 Number of frames aborted due to excessive deferral */ +#define EMAC0_TXPAUSEFRM 0xFFC20170 /* EMAC0 Number of good PAUSE frames transmitted. */ +#define EMAC0_TXVLANFRM_G 0xFFC20174 /* EMAC0 Number of VLAN frames transmitted */ +#define EMAC0_RXFRMCNT_GB 0xFFC20180 /* EMAC0 Number of good and bad frames received. */ +#define EMAC0_RXOCTCNT_GB 0xFFC20184 /* EMAC0 Number of bytes received in good and bad frames */ +#define EMAC0_RXOCTCNT_G 0xFFC20188 /* EMAC0 Number of bytes received only in good frames */ +#define EMAC0_RXBCASTFRM_G 0xFFC2018C /* EMAC0 Number of good broadcast frames received. */ +#define EMAC0_RXMCASTFRM_G 0xFFC20190 /* EMAC0 Number of good multicast frames received */ +#define EMAC0_RXCRC_ERR 0xFFC20194 /* EMAC0 Number of frames received with CRC error */ +#define EMAC0_RXALIGN_ERR 0xFFC20198 /* EMAC0 Number of frames with alignment error */ +#define EMAC0_RXRUNT_ERR 0xFFC2019C /* EMAC0 Number of frames received with runt error. */ +#define EMAC0_RXJAB_ERR 0xFFC201A0 /* EMAC0 Number of frames received with length greater than 1518 */ +#define EMAC0_RXUSIZE_G 0xFFC201A4 /* EMAC0 Number of frames received with length 64 */ +#define EMAC0_RXOSIZE_G 0xFFC201A8 /* EMAC0 Number of frames received with length greater than maxium */ +#define EMAC0_RX64_GB 0xFFC201AC /* EMAC0 Number of good and bad frames of lengh 64 bytes */ +#define EMAC0_RX65TO127_GB 0xFFC201B0 /* EMAC0 Number of good and bad frame between 64-127(inclusive) */ +#define EMAC0_RX128TO255_GB 0xFFC201B4 /* EMAC0 Number of good and bad frames received with length between 128 and 255 (inclusive) bytes, exclusive of preamble. */ +#define EMAC0_RX256TO511_GB 0xFFC201B8 /* EMAC0 Number of good and bad frames between 256-511(inclusive) */ +#define EMAC0_RX512TO1023_GB 0xFFC201BC /* EMAC0 Number of good and bad frames received between 512-1023 */ +#define EMAC0_RX1024TOMAX_GB 0xFFC201C0 /* EMAC0 Number of frames received between 1024 and maxsize */ +#define EMAC0_RXUCASTFRM_G 0xFFC201C4 /* EMAC0 Number of good unicast frames received. */ +#define EMAC0_RXLEN_ERR 0xFFC201C8 /* EMAC0 Number of frames received with length error */ +#define EMAC0_RXOORTYPE 0xFFC201CC /* EMAC0 Number of frames with length not equal to valid frame size */ +#define EMAC0_RXPAUSEFRM 0xFFC201D0 /* EMAC0 Number of good and valid PAUSE frames received. */ +#define EMAC0_RXFIFO_OVF 0xFFC201D4 /* EMAC0 Number of missed received frames due to FIFO overflow. This counter is not present in the GMAC-CORE configuration. */ +#define EMAC0_RXVLANFRM_GB 0xFFC201D8 /* EMAC0 Number of good and bad VLAN frames received. */ +#define EMAC0_RXWDOG_ERR 0xFFC201DC /* EMAC0 Frames received with error due to watchdog timeout */ +#define EMAC0_IPC_RXIMSK 0xFFC20200 /* EMAC0 MMC IPC RX Interrupt Mask Register */ +#define EMAC0_IPC_RXINT 0xFFC20208 /* EMAC0 MMC IPC RX Interrupt Register */ +#define EMAC0_RXIPV4_GD_FRM 0xFFC20210 /* EMAC0 Number of good IPv4 datagrams */ +#define EMAC0_RXIPV4_HDR_ERR_FRM 0xFFC20214 /* EMAC0 Number of IPv4 datagrams with header errors */ +#define EMAC0_RXIPV4_NOPAY_FRM 0xFFC20218 /* EMAC0 Number of IPv4 datagrams without checksum */ +#define EMAC0_RXIPV4_FRAG_FRM 0xFFC2021C /* EMAC0 Number of good IPv4 datagrams with fragmentation */ +#define EMAC0_RXIPV4_UDSBL_FRM 0xFFC20220 /* EMAC0 Number of IPv4 UDP datagrams with disabled checksum */ +#define EMAC0_RXIPV6_GD_FRM 0xFFC20224 /* EMAC0 Number of IPv4 datagrams with TCP/UDP/ICMP payloads */ +#define EMAC0_RXIPV6_HDR_ERR_FRM 0xFFC20228 /* EMAC0 Number of IPv6 datagrams with header errors */ +#define EMAC0_RXIPV6_NOPAY_FRM 0xFFC2022C /* EMAC0 Number of IPv6 datagrams with no TCP/UDP/ICMP payload */ +#define EMAC0_RXUDP_GD_FRM 0xFFC20230 /* EMAC0 Number of good IP datagrames with good UDP payload */ +#define EMAC0_RXUDP_ERR_FRM 0xFFC20234 /* EMAC0 Number of good IP datagrams with UDP checksum errors */ +#define EMAC0_RXTCP_GD_FRM 0xFFC20238 /* EMAC0 Number of good IP datagrams with a good TCP payload */ +#define EMAC0_RXTCP_ERR_FRM 0xFFC2023C /* EMAC0 Number of good IP datagrams with TCP checksum errors */ +#define EMAC0_RXICMP_GD_FRM 0xFFC20240 /* EMAC0 Number of good IP datagrams with a good ICMP payload */ +#define EMAC0_RXICMP_ERR_FRM 0xFFC20244 /* EMAC0 Number of good IP datagrams with ICMP checksum errors */ +#define EMAC0_RXIPV4_GD_OCT 0xFFC20250 /* EMAC0 Bytes received in IPv4 datagrams including tcp,udp or icmp */ +#define EMAC0_RXIPV4_HDR_ERR_OCT 0xFFC20254 /* EMAC0 Bytes received in IPv4 datagrams with header errors */ +#define EMAC0_RXIPV4_NOPAY_OCT 0xFFC20258 /* EMAC0 Bytes received in IPv4 datagrams without tcp,udp,icmp load */ +#define EMAC0_RXIPV4_FRAG_OCT 0xFFC2025C /* EMAC0 Bytes received in fragmented IPv4 datagrams */ +#define EMAC0_RXIPV4_UDSBL_OCT 0xFFC20260 /* EMAC0 Bytes received in UDP segment with checksum disabled */ +#define EMAC0_RXIPV6_GD_OCT 0xFFC20264 /* EMAC0 Bytes received in good IPv6 including tcp,udp or icmp load */ +#define EMAC0_RXIPV6_HDR_ERR_OCT 0xFFC20268 /* EMAC0 Number of bytes received in IPv6 with header errors */ +#define EMAC0_RXIPV6_NOPAY_OCT 0xFFC2026C /* EMAC0 Bytes received in IPv6 without tcp,udp or icmp load */ +#define EMAC0_RXUDP_GD_OCT 0xFFC20270 /* EMAC0 Number of bytes received in good UDP segments */ +#define EMAC0_RXUDP_ERR_OCT 0xFFC20274 /* EMAC0 Number of bytes received in UDP segment with checksum err */ +#define EMAC0_RXTCP_GD_OCT 0xFFC20278 /* EMAC0 Number of bytes received in a good TCP segment */ +#define EMAC0_RXTCP_ERR_OCT 0xFFC2027C /* EMAC0 Number of bytes received in TCP segment with checksum err */ +#define EMAC0_RXICMP_GD_OCT 0xFFC20280 /* EMAC0 Number of bytes received in a good ICMP segment */ +#define EMAC0_RXICMP_ERR_OCT 0xFFC20284 /* EMAC0 Bytes received in an ICMP segment with checksum errors */ +#define EMAC0_TM_CTL 0xFFC20700 /* EMAC0 EMAC Time Stamp Control Register */ +#define EMAC0_TM_SUBSEC 0xFFC20704 /* EMAC0 EMAC Time Stamp Sub Second Increment */ +#define EMAC0_TM_SEC 0xFFC20708 /* EMAC0 EMAC Time Stamp Second Register */ +#define EMAC0_TM_NSEC 0xFFC2070C /* EMAC0 EMAC Time Stamp Nano Second Register */ +#define EMAC0_TM_SECUPDT 0xFFC20710 /* EMAC0 EMAC Time Stamp Seconds Update */ +#define EMAC0_TM_NSECUPDT 0xFFC20714 /* EMAC0 EMAC Time Stamp Nano Seconds Update */ +#define EMAC0_TM_ADDEND 0xFFC20718 /* EMAC0 EMAC Time Stamp Addend Register */ +#define EMAC0_TM_TGTM 0xFFC2071C /* EMAC0 EMAC Time Stamp Target Time Sec. */ +#define EMAC0_TM_NTGTM 0xFFC20720 /* EMAC0 EMAC Time Stamp Target Time Nanosec. */ +#define EMAC0_TM_HISEC 0xFFC20724 /* EMAC0 EMAC Time Stamp High Second Register */ +#define EMAC0_TM_STMPSTAT 0xFFC20728 /* EMAC0 EMAC Time Stamp Status Register */ +#define EMAC0_TM_PPSCTL 0xFFC2072C /* EMAC0 EMAC PPS Control Register */ +#define EMAC0_TM_AUXSTMP_NSEC 0xFFC20730 /* EMAC0 EMAC Auxillary Time Stamp Nano Register */ +#define EMAC0_TM_AUXSTMP_SEC 0xFFC20734 /* EMAC0 EMAC Auxillary Time Stamp Sec Register */ +#define EMAC0_DMA_BUSMODE 0xFFC21000 /* EMAC0 Bus Operating Modes for EMAC DMA */ +#define EMAC0_DMA_TXPOLL 0xFFC21004 /* EMAC0 TX DMA Poll demand register */ +#define EMAC0_DMA_RXPOLL 0xFFC21008 /* EMAC0 RX DMA Poll demand register */ +#define EMAC0_DMA_RXDSC_ADDR 0xFFC2100C /* EMAC0 RX Descriptor List Address */ +#define EMAC0_DMA_TXDSC_ADDR 0xFFC21010 /* EMAC0 TX Descriptor List Address */ +#define EMAC0_DMA_STAT 0xFFC21014 /* EMAC0 DMA Status Register */ +#define EMAC0_DMA_OPMODE 0xFFC21018 /* EMAC0 DMA Operation Mode Register */ +#define EMAC0_DMA_IEN 0xFFC2101C /* EMAC0 DMA Interrupt Enable Register */ +#define EMAC0_DMA_MISS_FRM 0xFFC21020 /* EMAC0 DMA missed frame and buffer overflow counter */ +#define EMAC0_DMA_RXIWDOG 0xFFC21024 /* EMAC0 DMA RX Interrupt Watch Dog timer */ +#define EMAC0_DMA_BMMODE 0xFFC21028 /* EMAC0 AXI Bus Mode Register */ +#define EMAC0_DMA_BMSTAT 0xFFC2102C /* EMAC0 AXI Status Register */ +#define EMAC0_DMA_TXDSC_CUR 0xFFC21048 /* EMAC0 TX current descriptor register */ +#define EMAC0_DMA_RXDSC_CUR 0xFFC2104C /* EMAC0 RX current descriptor register */ +#define EMAC0_DMA_TXBUF_CUR 0xFFC21050 /* EMAC0 TX current buffer pointer register */ +#define EMAC0_DMA_RXBUF_CUR 0xFFC21054 /* EMAC0 RX current buffer pointer register */ +#define EMAC0_HWFEAT 0xFFC21058 /* EMAC0 Hardware Feature Register */ +#define EMAC1_MACCFG 0xFFC22000 /* EMAC1 MAC Configuration Register */ +#define EMAC1_MACFRMFILT 0xFFC22004 /* EMAC1 Filter Register for filtering Received Frames */ +#define EMAC1_HASHTBL_HI 0xFFC22008 /* EMAC1 Contains the Upper 32 bits of the hash table */ +#define EMAC1_HASHTBL_LO 0xFFC2200C /* EMAC1 Contains the lower 32 bits of the hash table */ +#define EMAC1_GMII_ADDR 0xFFC22010 /* EMAC1 Management Address Register */ +#define EMAC1_GMII_DATA 0xFFC22014 /* EMAC1 Management Data Register */ +#define EMAC1_FLOWCTL 0xFFC22018 /* EMAC1 MAC FLow Control Register */ +#define EMAC1_VLANTAG 0xFFC2201C /* EMAC1 VLAN Tag Register */ +#define EMAC1_VER 0xFFC22020 /* EMAC1 EMAC Version Register */ +#define EMAC1_DBG 0xFFC22024 /* EMAC1 EMAC Debug Register */ +#define EMAC1_RMTWKUP 0xFFC22028 /* EMAC1 Remote wake up frame register */ +#define EMAC1_PMT_CTLSTAT 0xFFC2202C /* EMAC1 PMT Control and Status Register */ +#define EMAC1_ISTAT 0xFFC22038 /* EMAC1 EMAC Interrupt Status Register */ +#define EMAC1_IMSK 0xFFC2203C /* EMAC1 EMAC Interrupt Mask Register */ +#define EMAC1_ADDR0_HI 0xFFC22040 /* EMAC1 EMAC Address0 High Register */ +#define EMAC1_ADDR0_LO 0xFFC22044 /* EMAC1 EMAC Address0 Low Register */ +#define EMAC1_MMC_CTL 0xFFC22100 /* EMAC1 MMC Control Register */ +#define EMAC1_MMC_RXINT 0xFFC22104 /* EMAC1 MMC RX Interrupt Register */ +#define EMAC1_MMC_TXINT 0xFFC22108 /* EMAC1 MMC TX Interrupt Register */ +#define EMAC1_MMC_RXIMSK 0xFFC2210C /* EMAC1 MMC RX Interrupt Mask Register */ +#define EMAC1_MMC_TXIMSK 0xFFC22110 /* EMAC1 MMC TX Interrupt Mask Register */ +#define EMAC1_TXOCTCNT_GB 0xFFC22114 /* EMAC1 Num bytes transmitted exclusive of preamble */ +#define EMAC1_TXFRMCNT_GB 0xFFC22118 /* EMAC1 Num frames transmitted exclusive of retired */ +#define EMAC1_TXBCASTFRM_G 0xFFC2211C /* EMAC1 Number of good broadcast frames transmitted. */ +#define EMAC1_TXMCASTFRM_G 0xFFC22120 /* EMAC1 Number of good multicast frames transmitted. */ +#define EMAC1_TX64_GB 0xFFC22124 /* EMAC1 Number of 64 byte length frames */ +#define EMAC1_TX65TO127_GB 0xFFC22128 /* EMAC1 Number of frames of length b/w 65-127 (inclusive) bytes */ +#define EMAC1_TX128TO255_GB 0xFFC2212C /* EMAC1 Number of frames of length b/w 128-255 (inclusive) bytes */ +#define EMAC1_TX256TO511_GB 0xFFC22130 /* EMAC1 Number of frames of length b/w 256-511 (inclusive) bytes */ +#define EMAC1_TX512TO1023_GB 0xFFC22134 /* EMAC1 Number of frames of length b/w 512-1023 (inclusive) bytes */ +#define EMAC1_TX1024TOMAX_GB 0xFFC22138 /* EMAC1 Number of frames of length b/w 1024-max (inclusive) bytes */ +#define EMAC1_TXUCASTFRM_GB 0xFFC2213C /* EMAC1 Number of good and bad unicast frames transmitted */ +#define EMAC1_TXMCASTFRM_GB 0xFFC22140 /* EMAC1 Number of good and bad multicast frames transmitted */ +#define EMAC1_TXBCASTFRM_GB 0xFFC22144 /* EMAC1 Number of good and bad broadcast frames transmitted */ +#define EMAC1_TXUNDR_ERR 0xFFC22148 /* EMAC1 Number of frames aborted due to frame underflow error */ +#define EMAC1_TXSNGCOL_G 0xFFC2214C /* EMAC1 Number of transmitted frames after single collision */ +#define EMAC1_TXMULTCOL_G 0xFFC22150 /* EMAC1 Number of transmitted frames with more than one collision */ +#define EMAC1_TXDEFERRED 0xFFC22154 /* EMAC1 Number of transmitted frames after deferral */ +#define EMAC1_TXLATECOL 0xFFC22158 /* EMAC1 Number of frames aborted due to late collision error */ +#define EMAC1_TXEXCESSCOL 0xFFC2215C /* EMAC1 Number of aborted frames due to excessive collisions */ +#define EMAC1_TXCARR_ERR 0xFFC22160 /* EMAC1 Number of aborted frames due to carrier sense error */ +#define EMAC1_TXOCTCNT_G 0xFFC22164 /* EMAC1 Number of bytes transmitted in good frames only */ +#define EMAC1_TXFRMCNT_G 0xFFC22168 /* EMAC1 Number of good frames transmitted. */ +#define EMAC1_TXEXCESSDEF 0xFFC2216C /* EMAC1 Number of frames aborted due to excessive deferral */ +#define EMAC1_TXPAUSEFRM 0xFFC22170 /* EMAC1 Number of good PAUSE frames transmitted. */ +#define EMAC1_TXVLANFRM_G 0xFFC22174 /* EMAC1 Number of VLAN frames transmitted */ +#define EMAC1_RXFRMCNT_GB 0xFFC22180 /* EMAC1 Number of good and bad frames received. */ +#define EMAC1_RXOCTCNT_GB 0xFFC22184 /* EMAC1 Number of bytes received in good and bad frames */ +#define EMAC1_RXOCTCNT_G 0xFFC22188 /* EMAC1 Number of bytes received only in good frames */ +#define EMAC1_RXBCASTFRM_G 0xFFC2218C /* EMAC1 Number of good broadcast frames received. */ +#define EMAC1_RXMCASTFRM_G 0xFFC22190 /* EMAC1 Number of good multicast frames received */ +#define EMAC1_RXCRC_ERR 0xFFC22194 /* EMAC1 Number of frames received with CRC error */ +#define EMAC1_RXALIGN_ERR 0xFFC22198 /* EMAC1 Number of frames with alignment error */ +#define EMAC1_RXRUNT_ERR 0xFFC2219C /* EMAC1 Number of frames received with runt error. */ +#define EMAC1_RXJAB_ERR 0xFFC221A0 /* EMAC1 Number of frames received with length greater than 1518 */ +#define EMAC1_RXUSIZE_G 0xFFC221A4 /* EMAC1 Number of frames received with length 64 */ +#define EMAC1_RXOSIZE_G 0xFFC221A8 /* EMAC1 Number of frames received with length greater than maxium */ +#define EMAC1_RX64_GB 0xFFC221AC /* EMAC1 Number of good and bad frames of lengh 64 bytes */ +#define EMAC1_RX65TO127_GB 0xFFC221B0 /* EMAC1 Number of good and bad frame between 64-127(inclusive) */ +#define EMAC1_RX128TO255_GB 0xFFC221B4 /* EMAC1 Number of good and bad frames received with length between 128 and 255 (inclusive) bytes, exclusive of preamble. */ +#define EMAC1_RX256TO511_GB 0xFFC221B8 /* EMAC1 Number of good and bad frames between 256-511(inclusive) */ +#define EMAC1_RX512TO1023_GB 0xFFC221BC /* EMAC1 Number of good and bad frames received between 512-1023 */ +#define EMAC1_RX1024TOMAX_GB 0xFFC221C0 /* EMAC1 Number of frames received between 1024 and maxsize */ +#define EMAC1_RXUCASTFRM_G 0xFFC221C4 /* EMAC1 Number of good unicast frames received. */ +#define EMAC1_RXLEN_ERR 0xFFC221C8 /* EMAC1 Number of frames received with length error */ +#define EMAC1_RXOORTYPE 0xFFC221CC /* EMAC1 Number of frames with length not equal to valid frame size */ +#define EMAC1_RXPAUSEFRM 0xFFC221D0 /* EMAC1 Number of good and valid PAUSE frames received. */ +#define EMAC1_RXFIFO_OVF 0xFFC221D4 /* EMAC1 Number of missed received frames due to FIFO overflow. This counter is not present in the GMAC-CORE configuration. */ +#define EMAC1_RXVLANFRM_GB 0xFFC221D8 /* EMAC1 Number of good and bad VLAN frames received. */ +#define EMAC1_RXWDOG_ERR 0xFFC221DC /* EMAC1 Frames received with error due to watchdog timeout */ +#define EMAC1_IPC_RXIMSK 0xFFC22200 /* EMAC1 MMC IPC RX Interrupt Mask Register */ +#define EMAC1_IPC_RXINT 0xFFC22208 /* EMAC1 MMC IPC RX Interrupt Register */ +#define EMAC1_RXIPV4_GD_FRM 0xFFC22210 /* EMAC1 Number of good IPv4 datagrams */ +#define EMAC1_RXIPV4_HDR_ERR_FRM 0xFFC22214 /* EMAC1 Number of IPv4 datagrams with header errors */ +#define EMAC1_RXIPV4_NOPAY_FRM 0xFFC22218 /* EMAC1 Number of IPv4 datagrams without checksum */ +#define EMAC1_RXIPV4_FRAG_FRM 0xFFC2221C /* EMAC1 Number of good IPv4 datagrams with fragmentation */ +#define EMAC1_RXIPV4_UDSBL_FRM 0xFFC22220 /* EMAC1 Number of IPv4 UDP datagrams with disabled checksum */ +#define EMAC1_RXIPV6_GD_FRM 0xFFC22224 /* EMAC1 Number of IPv4 datagrams with TCP/UDP/ICMP payloads */ +#define EMAC1_RXIPV6_HDR_ERR_FRM 0xFFC22228 /* EMAC1 Number of IPv6 datagrams with header errors */ +#define EMAC1_RXIPV6_NOPAY_FRM 0xFFC2222C /* EMAC1 Number of IPv6 datagrams with no TCP/UDP/ICMP payload */ +#define EMAC1_RXUDP_GD_FRM 0xFFC22230 /* EMAC1 Number of good IP datagrames with good UDP payload */ +#define EMAC1_RXUDP_ERR_FRM 0xFFC22234 /* EMAC1 Number of good IP datagrams with UDP checksum errors */ +#define EMAC1_RXTCP_GD_FRM 0xFFC22238 /* EMAC1 Number of good IP datagrams with a good TCP payload */ +#define EMAC1_RXTCP_ERR_FRM 0xFFC2223C /* EMAC1 Number of good IP datagrams with TCP checksum errors */ +#define EMAC1_RXICMP_GD_FRM 0xFFC22240 /* EMAC1 Number of good IP datagrams with a good ICMP payload */ +#define EMAC1_RXICMP_ERR_FRM 0xFFC22244 /* EMAC1 Number of good IP datagrams with ICMP checksum errors */ +#define EMAC1_RXIPV4_GD_OCT 0xFFC22250 /* EMAC1 Bytes received in IPv4 datagrams including tcp,udp or icmp */ +#define EMAC1_RXIPV4_HDR_ERR_OCT 0xFFC22254 /* EMAC1 Bytes received in IPv4 datagrams with header errors */ +#define EMAC1_RXIPV4_NOPAY_OCT 0xFFC22258 /* EMAC1 Bytes received in IPv4 datagrams without tcp,udp,icmp load */ +#define EMAC1_RXIPV4_FRAG_OCT 0xFFC2225C /* EMAC1 Bytes received in fragmented IPv4 datagrams */ +#define EMAC1_RXIPV4_UDSBL_OCT 0xFFC22260 /* EMAC1 Bytes received in UDP segment with checksum disabled */ +#define EMAC1_RXIPV6_GD_OCT 0xFFC22264 /* EMAC1 Bytes received in good IPv6 including tcp,udp or icmp load */ +#define EMAC1_RXIPV6_HDR_ERR_OCT 0xFFC22268 /* EMAC1 Number of bytes received in IPv6 with header errors */ +#define EMAC1_RXIPV6_NOPAY_OCT 0xFFC2226C /* EMAC1 Bytes received in IPv6 without tcp,udp or icmp load */ +#define EMAC1_RXUDP_GD_OCT 0xFFC22270 /* EMAC1 Number of bytes received in good UDP segments */ +#define EMAC1_RXUDP_ERR_OCT 0xFFC22274 /* EMAC1 Number of bytes received in UDP segment with checksum err */ +#define EMAC1_RXTCP_GD_OCT 0xFFC22278 /* EMAC1 Number of bytes received in a good TCP segment */ +#define EMAC1_RXTCP_ERR_OCT 0xFFC2227C /* EMAC1 Number of bytes received in TCP segment with checksum err */ +#define EMAC1_RXICMP_GD_OCT 0xFFC22280 /* EMAC1 Number of bytes received in a good ICMP segment */ +#define EMAC1_RXICMP_ERR_OCT 0xFFC22284 /* EMAC1 Bytes received in an ICMP segment with checksum errors */ +#define EMAC1_TM_CTL 0xFFC22700 /* EMAC1 EMAC Time Stamp Control Register */ +#define EMAC1_TM_SUBSEC 0xFFC22704 /* EMAC1 EMAC Time Stamp Sub Second Increment */ +#define EMAC1_TM_SEC 0xFFC22708 /* EMAC1 EMAC Time Stamp Second Register */ +#define EMAC1_TM_NSEC 0xFFC2270C /* EMAC1 EMAC Time Stamp Nano Second Register */ +#define EMAC1_TM_SECUPDT 0xFFC22710 /* EMAC1 EMAC Time Stamp Seconds Update */ +#define EMAC1_TM_NSECUPDT 0xFFC22714 /* EMAC1 EMAC Time Stamp Nano Seconds Update */ +#define EMAC1_TM_ADDEND 0xFFC22718 /* EMAC1 EMAC Time Stamp Addend Register */ +#define EMAC1_TM_TGTM 0xFFC2271C /* EMAC1 EMAC Time Stamp Target Time Sec. */ +#define EMAC1_TM_NTGTM 0xFFC22720 /* EMAC1 EMAC Time Stamp Target Time Nanosec. */ +#define EMAC1_TM_HISEC 0xFFC22724 /* EMAC1 EMAC Time Stamp High Second Register */ +#define EMAC1_TM_STMPSTAT 0xFFC22728 /* EMAC1 EMAC Time Stamp Status Register */ +#define EMAC1_TM_PPSCTL 0xFFC2272C /* EMAC1 EMAC PPS Control Register */ +#define EMAC1_TM_AUXSTMP_NSEC 0xFFC22730 /* EMAC1 EMAC Auxillary Time Stamp Nano Register */ +#define EMAC1_TM_AUXSTMP_SEC 0xFFC22734 /* EMAC1 EMAC Auxillary Time Stamp Sec Register */ +#define EMAC1_DMA_BUSMODE 0xFFC23000 /* EMAC1 Bus Operating Modes for EMAC DMA */ +#define EMAC1_DMA_TXPOLL 0xFFC23004 /* EMAC1 TX DMA Poll demand register */ +#define EMAC1_DMA_RXPOLL 0xFFC23008 /* EMAC1 RX DMA Poll demand register */ +#define EMAC1_DMA_RXDSC_ADDR 0xFFC2300C /* EMAC1 RX Descriptor List Address */ +#define EMAC1_DMA_TXDSC_ADDR 0xFFC23010 /* EMAC1 TX Descriptor List Address */ +#define EMAC1_DMA_STAT 0xFFC23014 /* EMAC1 DMA Status Register */ +#define EMAC1_DMA_OPMODE 0xFFC23018 /* EMAC1 DMA Operation Mode Register */ +#define EMAC1_DMA_IEN 0xFFC2301C /* EMAC1 DMA Interrupt Enable Register */ +#define EMAC1_DMA_MISS_FRM 0xFFC23020 /* EMAC1 DMA missed frame and buffer overflow counter */ +#define EMAC1_DMA_RXIWDOG 0xFFC23024 /* EMAC1 DMA RX Interrupt Watch Dog timer */ +#define EMAC1_DMA_BMMODE 0xFFC23028 /* EMAC1 AXI Bus Mode Register */ +#define EMAC1_DMA_BMSTAT 0xFFC2302C /* EMAC1 AXI Status Register */ +#define EMAC1_DMA_TXDSC_CUR 0xFFC23048 /* EMAC1 TX current descriptor register */ +#define EMAC1_DMA_RXDSC_CUR 0xFFC2304C /* EMAC1 RX current descriptor register */ +#define EMAC1_DMA_TXBUF_CUR 0xFFC23050 /* EMAC1 TX current buffer pointer register */ +#define EMAC1_DMA_RXBUF_CUR 0xFFC23054 /* EMAC1 RX current buffer pointer register */ +#define EMAC1_HWFEAT 0xFFC23058 /* EMAC1 Hardware Feature Register */ +#define SPORT0_CTL_A 0xFFC40000 /* SPORT0 'A' Control Register */ +#define SPORT0_DIV_A 0xFFC40004 /* SPORT0 'A' Clock and FS Divide Register */ +#define SPORT0_MCTL_A 0xFFC40008 /* SPORT0 'A' Multichannel Control Register */ +#define SPORT0_CS0_A 0xFFC4000C /* SPORT0 'A' Multichannel Select Register (Channels 0-31) */ +#define SPORT0_CS1_A 0xFFC40010 /* SPORT0 'A' Multichannel Select Register (Channels 32-63) */ +#define SPORT0_CS2_A 0xFFC40014 /* SPORT0 'A' Multichannel Select Register (Channels 64-95) */ +#define SPORT0_CS3_A 0xFFC40018 /* SPORT0 'A' Multichannel Select Register (Channels 96-127) */ +#define SPORT0_CNT_A 0xFFC4001C /* SPORT0 'A' Frame Sync And Clock Divisor Current Count */ +#define SPORT0_ERR_A 0xFFC40020 /* SPORT0 'A' Error Register */ +#define SPORT0_MSTAT_A 0xFFC40024 /* SPORT0 'A' Multichannel Mode Status Register */ +#define SPORT0_CTL2_A 0xFFC40028 /* SPORT0 'A' Control Register 2 */ +#define SPORT0_TXPRI_A 0xFFC40040 /* SPORT0 'A' Primary Channel Transmit Buffer Register */ +#define SPORT0_RXPRI_A 0xFFC40044 /* SPORT0 'A' Primary Channel Receive Buffer Register */ +#define SPORT0_TXSEC_A 0xFFC40048 /* SPORT0 'A' Secondary Channel Transmit Buffer Register */ +#define SPORT0_RXSEC_A 0xFFC4004C /* SPORT0 'A' Secondary Channel Receive Buffer Register */ +#define SPORT0_CTL_B 0xFFC40080 /* SPORT0 'B' Control Register */ +#define SPORT0_DIV_B 0xFFC40084 /* SPORT0 'B' Clock and FS Divide Register */ +#define SPORT0_MCTL_B 0xFFC40088 /* SPORT0 'B' Multichannel Control Register */ +#define SPORT0_CS0_B 0xFFC4008C /* SPORT0 'B' Multichannel Select Register (Channels 0-31) */ +#define SPORT0_CS1_B 0xFFC40090 /* SPORT0 'B' Multichannel Select Register (Channels 32-63) */ +#define SPORT0_CS2_B 0xFFC40094 /* SPORT0 'B' Multichannel Select Register (Channels 64-95) */ +#define SPORT0_CS3_B 0xFFC40098 /* SPORT0 'B' Multichannel Select Register (Channels 96-127) */ +#define SPORT0_CNT_B 0xFFC4009C /* SPORT0 'B' Frame Sync And Clock Divisor Current Count */ +#define SPORT0_ERR_B 0xFFC400A0 /* SPORT0 'B' Error Register */ +#define SPORT0_MSTAT_B 0xFFC400A4 /* SPORT0 'B' Multichannel Mode Status Register */ +#define SPORT0_CTL2_B 0xFFC400A8 /* SPORT0 'B' Control Register 2 */ +#define SPORT0_TXPRI_B 0xFFC400C0 /* SPORT0 'B' Primary Channel Transmit Buffer Register */ +#define SPORT0_RXPRI_B 0xFFC400C4 /* SPORT0 'B' Primary Channel Receive Buffer Register */ +#define SPORT0_TXSEC_B 0xFFC400C8 /* SPORT0 'B' Secondary Channel Transmit Buffer Register */ +#define SPORT0_RXSEC_B 0xFFC400CC /* SPORT0 'B' Secondary Channel Receive Buffer Register */ +#define SPORT1_CTL_A 0xFFC40100 /* SPORT1 'A' Control Register */ +#define SPORT1_DIV_A 0xFFC40104 /* SPORT1 'A' Clock and FS Divide Register */ +#define SPORT1_MCTL_A 0xFFC40108 /* SPORT1 'A' Multichannel Control Register */ +#define SPORT1_CS0_A 0xFFC4010C /* SPORT1 'A' Multichannel Select Register (Channels 0-31) */ +#define SPORT1_CS1_A 0xFFC40110 /* SPORT1 'A' Multichannel Select Register (Channels 32-63) */ +#define SPORT1_CS2_A 0xFFC40114 /* SPORT1 'A' Multichannel Select Register (Channels 64-95) */ +#define SPORT1_CS3_A 0xFFC40118 /* SPORT1 'A' Multichannel Select Register (Channels 96-127) */ +#define SPORT1_CNT_A 0xFFC4011C /* SPORT1 'A' Frame Sync And Clock Divisor Current Count */ +#define SPORT1_ERR_A 0xFFC40120 /* SPORT1 'A' Error Register */ +#define SPORT1_MSTAT_A 0xFFC40124 /* SPORT1 'A' Multichannel Mode Status Register */ +#define SPORT1_CTL2_A 0xFFC40128 /* SPORT1 'A' Control Register 2 */ +#define SPORT1_TXPRI_A 0xFFC40140 /* SPORT1 'A' Primary Channel Transmit Buffer Register */ +#define SPORT1_RXPRI_A 0xFFC40144 /* SPORT1 'A' Primary Channel Receive Buffer Register */ +#define SPORT1_TXSEC_A 0xFFC40148 /* SPORT1 'A' Secondary Channel Transmit Buffer Register */ +#define SPORT1_RXSEC_A 0xFFC4014C /* SPORT1 'A' Secondary Channel Receive Buffer Register */ +#define SPORT1_CTL_B 0xFFC40180 /* SPORT1 'B' Control Register */ +#define SPORT1_DIV_B 0xFFC40184 /* SPORT1 'B' Clock and FS Divide Register */ +#define SPORT1_MCTL_B 0xFFC40188 /* SPORT1 'B' Multichannel Control Register */ +#define SPORT1_CS0_B 0xFFC4018C /* SPORT1 'B' Multichannel Select Register (Channels 0-31) */ +#define SPORT1_CS1_B 0xFFC40190 /* SPORT1 'B' Multichannel Select Register (Channels 32-63) */ +#define SPORT1_CS2_B 0xFFC40194 /* SPORT1 'B' Multichannel Select Register (Channels 64-95) */ +#define SPORT1_CS3_B 0xFFC40198 /* SPORT1 'B' Multichannel Select Register (Channels 96-127) */ +#define SPORT1_CNT_B 0xFFC4019C /* SPORT1 'B' Frame Sync And Clock Divisor Current Count */ +#define SPORT1_ERR_B 0xFFC401A0 /* SPORT1 'B' Error Register */ +#define SPORT1_MSTAT_B 0xFFC401A4 /* SPORT1 'B' Multichannel Mode Status Register */ +#define SPORT1_CTL2_B 0xFFC401A8 /* SPORT1 'B' Control Register 2 */ +#define SPORT1_TXPRI_B 0xFFC401C0 /* SPORT1 'B' Primary Channel Transmit Buffer Register */ +#define SPORT1_RXPRI_B 0xFFC401C4 /* SPORT1 'B' Primary Channel Receive Buffer Register */ +#define SPORT1_TXSEC_B 0xFFC401C8 /* SPORT1 'B' Secondary Channel Transmit Buffer Register */ +#define SPORT1_RXSEC_B 0xFFC401CC /* SPORT1 'B' Secondary Channel Receive Buffer Register */ +#define SPORT2_CTL_A 0xFFC40200 /* SPORT2 'A' Control Register */ +#define SPORT2_DIV_A 0xFFC40204 /* SPORT2 'A' Clock and FS Divide Register */ +#define SPORT2_MCTL_A 0xFFC40208 /* SPORT2 'A' Multichannel Control Register */ +#define SPORT2_CS0_A 0xFFC4020C /* SPORT2 'A' Multichannel Select Register (Channels 0-31) */ +#define SPORT2_CS1_A 0xFFC40210 /* SPORT2 'A' Multichannel Select Register (Channels 32-63) */ +#define SPORT2_CS2_A 0xFFC40214 /* SPORT2 'A' Multichannel Select Register (Channels 64-95) */ +#define SPORT2_CS3_A 0xFFC40218 /* SPORT2 'A' Multichannel Select Register (Channels 96-127) */ +#define SPORT2_CNT_A 0xFFC4021C /* SPORT2 'A' Frame Sync And Clock Divisor Current Count */ +#define SPORT2_ERR_A 0xFFC40220 /* SPORT2 'A' Error Register */ +#define SPORT2_MSTAT_A 0xFFC40224 /* SPORT2 'A' Multichannel Mode Status Register */ +#define SPORT2_CTL2_A 0xFFC40228 /* SPORT2 'A' Control Register 2 */ +#define SPORT2_TXPRI_A 0xFFC40240 /* SPORT2 'A' Primary Channel Transmit Buffer Register */ +#define SPORT2_RXPRI_A 0xFFC40244 /* SPORT2 'A' Primary Channel Receive Buffer Register */ +#define SPORT2_TXSEC_A 0xFFC40248 /* SPORT2 'A' Secondary Channel Transmit Buffer Register */ +#define SPORT2_RXSEC_A 0xFFC4024C /* SPORT2 'A' Secondary Channel Receive Buffer Register */ +#define SPORT2_CTL_B 0xFFC40280 /* SPORT2 'B' Control Register */ +#define SPORT2_DIV_B 0xFFC40284 /* SPORT2 'B' Clock and FS Divide Register */ +#define SPORT2_MCTL_B 0xFFC40288 /* SPORT2 'B' Multichannel Control Register */ +#define SPORT2_CS0_B 0xFFC4028C /* SPORT2 'B' Multichannel Select Register (Channels 0-31) */ +#define SPORT2_CS1_B 0xFFC40290 /* SPORT2 'B' Multichannel Select Register (Channels 32-63) */ +#define SPORT2_CS2_B 0xFFC40294 /* SPORT2 'B' Multichannel Select Register (Channels 64-95) */ +#define SPORT2_CS3_B 0xFFC40298 /* SPORT2 'B' Multichannel Select Register (Channels 96-127) */ +#define SPORT2_CNT_B 0xFFC4029C /* SPORT2 'B' Frame Sync And Clock Divisor Current Count */ +#define SPORT2_ERR_B 0xFFC402A0 /* SPORT2 'B' Error Register */ +#define SPORT2_MSTAT_B 0xFFC402A4 /* SPORT2 'B' Multichannel Mode Status Register */ +#define SPORT2_CTL2_B 0xFFC402A8 /* SPORT2 'B' Control Register 2 */ +#define SPORT2_TXPRI_B 0xFFC402C0 /* SPORT2 'B' Primary Channel Transmit Buffer Register */ +#define SPORT2_RXPRI_B 0xFFC402C4 /* SPORT2 'B' Primary Channel Receive Buffer Register */ +#define SPORT2_TXSEC_B 0xFFC402C8 /* SPORT2 'B' Secondary Channel Transmit Buffer Register */ +#define SPORT2_RXSEC_B 0xFFC402CC /* SPORT2 'B' Secondary Channel Receive Buffer Register */ +#define SPI0_REGBASE 0xFFC40400 +#define SPI0_CTL 0xFFC40404 /* SPI0 Control Register */ +#define SPI0_RXCTL 0xFFC40408 /* SPI0 RX Control Register */ +#define SPI0_TXCTL 0xFFC4040C /* SPI0 TX Control Register */ +#define SPI0_CLK 0xFFC40410 /* SPI0 Clock Rate Register */ +#define SPI0_DLY 0xFFC40414 /* SPI0 Delay Register */ +#define SPI0_SLVSEL 0xFFC40418 /* SPI0 Slave Select Register */ +#define SPI0_RWC 0xFFC4041C /* SPI0 Received Word-Count Register */ +#define SPI0_RWCR 0xFFC40420 /* SPI0 Received Word-Count Reload Register */ +#define SPI0_TWC 0xFFC40424 /* SPI0 Transmitted Word-Count Register */ +#define SPI0_TWCR 0xFFC40428 /* SPI0 Transmitted Word-Count Reload Register */ +#define SPI0_IMSK 0xFFC40430 /* SPI0 Interrupt Mask Register */ +#define SPI0_IMSK_CLR 0xFFC40434 /* SPI0 Interrupt Mask Clear Register */ +#define SPI0_IMSK_SET 0xFFC40438 /* SPI0 Interrupt Mask Set Register */ +#define SPI0_STAT 0xFFC40440 /* SPI0 Status Register */ +#define SPI0_ILAT 0xFFC40444 /* SPI0 Masked Interrupt Condition Register */ +#define SPI0_ILAT_CLR 0xFFC40448 /* SPI0 Masked Interrupt Clear Register */ +#define SPI0_RFIFO 0xFFC40450 /* SPI0 Receive FIFO Data Register */ +#define SPI0_TFIFO 0xFFC40458 /* SPI0 Transmit FIFO Data Register */ +#define SPI1_REGBASE 0xFFC40500 +#define SPI1_CTL 0xFFC40504 /* SPI1 Control Register */ +#define SPI1_RXCTL 0xFFC40508 /* SPI1 RX Control Register */ +#define SPI1_TXCTL 0xFFC4050C /* SPI1 TX Control Register */ +#define SPI1_CLK 0xFFC40510 /* SPI1 Clock Rate Register */ +#define SPI1_DLY 0xFFC40514 /* SPI1 Delay Register */ +#define SPI1_SLVSEL 0xFFC40518 /* SPI1 Slave Select Register */ +#define SPI1_RWC 0xFFC4051C /* SPI1 Received Word-Count Register */ +#define SPI1_RWCR 0xFFC40520 /* SPI1 Received Word-Count Reload Register */ +#define SPI1_TWC 0xFFC40524 /* SPI1 Transmitted Word-Count Register */ +#define SPI1_TWCR 0xFFC40528 /* SPI1 Transmitted Word-Count Reload Register */ +#define SPI1_IMSK 0xFFC40530 /* SPI1 Interrupt Mask Register */ +#define SPI1_IMSK_CLR 0xFFC40534 /* SPI1 Interrupt Mask Clear Register */ +#define SPI1_IMSK_SET 0xFFC40538 /* SPI1 Interrupt Mask Set Register */ +#define SPI1_STAT 0xFFC40540 /* SPI1 Status Register */ +#define SPI1_ILAT 0xFFC40544 /* SPI1 Masked Interrupt Condition Register */ +#define SPI1_ILAT_CLR 0xFFC40548 /* SPI1 Masked Interrupt Clear Register */ +#define SPI1_RFIFO 0xFFC40550 /* SPI1 Receive FIFO Data Register */ +#define SPI1_TFIFO 0xFFC40558 /* SPI1 Transmit FIFO Data Register */ +#define DMA0_DSCPTR_NXT 0xFFC41000 /* DMA0 Pointer to Next Initial Descriptor */ +#define DMA0_ADDRSTART 0xFFC41004 /* DMA0 Start Address of Current Buffer */ +#define DMA0_CFG 0xFFC41008 /* DMA0 Configuration Register */ +#define DMA0_XCNT 0xFFC4100C /* DMA0 Inner Loop Count Start Value */ +#define DMA0_XMOD 0xFFC41010 /* DMA0 Inner Loop Address Increment */ +#define DMA0_YCNT 0xFFC41014 /* DMA0 Outer Loop Count Start Value (2D only) */ +#define DMA0_YMOD 0xFFC41018 /* DMA0 Outer Loop Address Increment (2D only) */ +#define DMA0_DSCPTR_CUR 0xFFC41024 /* DMA0 Current Descriptor Pointer */ +#define DMA0_DSCPTR_PRV 0xFFC41028 /* DMA0 Previous Initial Descriptor Pointer */ +#define DMA0_ADDR_CUR 0xFFC4102C /* DMA0 Current Address */ +#define DMA0_STAT 0xFFC41030 /* DMA0 Status Register */ +#define DMA0_XCNT_CUR 0xFFC41034 /* DMA0 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA0_YCNT_CUR 0xFFC41038 /* DMA0 Current Row Count (2D only) */ +#define DMA0_BWLCNT 0xFFC41040 /* DMA0 Bandwidth Limit Count */ +#define DMA0_BWLCNT_CUR 0xFFC41044 /* DMA0 Bandwidth Limit Count Current */ +#define DMA0_BWMCNT 0xFFC41048 /* DMA0 Bandwidth Monitor Count */ +#define DMA0_BWMCNT_CUR 0xFFC4104C /* DMA0 Bandwidth Monitor Count Current */ +#define DMA1_DSCPTR_NXT 0xFFC41080 /* DMA1 Pointer to Next Initial Descriptor */ +#define DMA1_ADDRSTART 0xFFC41084 /* DMA1 Start Address of Current Buffer */ +#define DMA1_CFG 0xFFC41088 /* DMA1 Configuration Register */ +#define DMA1_XCNT 0xFFC4108C /* DMA1 Inner Loop Count Start Value */ +#define DMA1_XMOD 0xFFC41090 /* DMA1 Inner Loop Address Increment */ +#define DMA1_YCNT 0xFFC41094 /* DMA1 Outer Loop Count Start Value (2D only) */ +#define DMA1_YMOD 0xFFC41098 /* DMA1 Outer Loop Address Increment (2D only) */ +#define DMA1_DSCPTR_CUR 0xFFC410A4 /* DMA1 Current Descriptor Pointer */ +#define DMA1_DSCPTR_PRV 0xFFC410A8 /* DMA1 Previous Initial Descriptor Pointer */ +#define DMA1_ADDR_CUR 0xFFC410AC /* DMA1 Current Address */ +#define DMA1_STAT 0xFFC410B0 /* DMA1 Status Register */ +#define DMA1_XCNT_CUR 0xFFC410B4 /* DMA1 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA1_YCNT_CUR 0xFFC410B8 /* DMA1 Current Row Count (2D only) */ +#define DMA1_BWLCNT 0xFFC410C0 /* DMA1 Bandwidth Limit Count */ +#define DMA1_BWLCNT_CUR 0xFFC410C4 /* DMA1 Bandwidth Limit Count Current */ +#define DMA1_BWMCNT 0xFFC410C8 /* DMA1 Bandwidth Monitor Count */ +#define DMA1_BWMCNT_CUR 0xFFC410CC /* DMA1 Bandwidth Monitor Count Current */ +#define DMA2_DSCPTR_NXT 0xFFC41100 /* DMA2 Pointer to Next Initial Descriptor */ +#define DMA2_ADDRSTART 0xFFC41104 /* DMA2 Start Address of Current Buffer */ +#define DMA2_CFG 0xFFC41108 /* DMA2 Configuration Register */ +#define DMA2_XCNT 0xFFC4110C /* DMA2 Inner Loop Count Start Value */ +#define DMA2_XMOD 0xFFC41110 /* DMA2 Inner Loop Address Increment */ +#define DMA2_YCNT 0xFFC41114 /* DMA2 Outer Loop Count Start Value (2D only) */ +#define DMA2_YMOD 0xFFC41118 /* DMA2 Outer Loop Address Increment (2D only) */ +#define DMA2_DSCPTR_CUR 0xFFC41124 /* DMA2 Current Descriptor Pointer */ +#define DMA2_DSCPTR_PRV 0xFFC41128 /* DMA2 Previous Initial Descriptor Pointer */ +#define DMA2_ADDR_CUR 0xFFC4112C /* DMA2 Current Address */ +#define DMA2_STAT 0xFFC41130 /* DMA2 Status Register */ +#define DMA2_XCNT_CUR 0xFFC41134 /* DMA2 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA2_YCNT_CUR 0xFFC41138 /* DMA2 Current Row Count (2D only) */ +#define DMA2_BWLCNT 0xFFC41140 /* DMA2 Bandwidth Limit Count */ +#define DMA2_BWLCNT_CUR 0xFFC41144 /* DMA2 Bandwidth Limit Count Current */ +#define DMA2_BWMCNT 0xFFC41148 /* DMA2 Bandwidth Monitor Count */ +#define DMA2_BWMCNT_CUR 0xFFC4114C /* DMA2 Bandwidth Monitor Count Current */ +#define DMA3_DSCPTR_NXT 0xFFC41180 /* DMA3 Pointer to Next Initial Descriptor */ +#define DMA3_ADDRSTART 0xFFC41184 /* DMA3 Start Address of Current Buffer */ +#define DMA3_CFG 0xFFC41188 /* DMA3 Configuration Register */ +#define DMA3_XCNT 0xFFC4118C /* DMA3 Inner Loop Count Start Value */ +#define DMA3_XMOD 0xFFC41190 /* DMA3 Inner Loop Address Increment */ +#define DMA3_YCNT 0xFFC41194 /* DMA3 Outer Loop Count Start Value (2D only) */ +#define DMA3_YMOD 0xFFC41198 /* DMA3 Outer Loop Address Increment (2D only) */ +#define DMA3_DSCPTR_CUR 0xFFC411A4 /* DMA3 Current Descriptor Pointer */ +#define DMA3_DSCPTR_PRV 0xFFC411A8 /* DMA3 Previous Initial Descriptor Pointer */ +#define DMA3_ADDR_CUR 0xFFC411AC /* DMA3 Current Address */ +#define DMA3_STAT 0xFFC411B0 /* DMA3 Status Register */ +#define DMA3_XCNT_CUR 0xFFC411B4 /* DMA3 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA3_YCNT_CUR 0xFFC411B8 /* DMA3 Current Row Count (2D only) */ +#define DMA3_BWLCNT 0xFFC411C0 /* DMA3 Bandwidth Limit Count */ +#define DMA3_BWLCNT_CUR 0xFFC411C4 /* DMA3 Bandwidth Limit Count Current */ +#define DMA3_BWMCNT 0xFFC411C8 /* DMA3 Bandwidth Monitor Count */ +#define DMA3_BWMCNT_CUR 0xFFC411CC /* DMA3 Bandwidth Monitor Count Current */ +#define DMA4_DSCPTR_NXT 0xFFC41200 /* DMA4 Pointer to Next Initial Descriptor */ +#define DMA4_ADDRSTART 0xFFC41204 /* DMA4 Start Address of Current Buffer */ +#define DMA4_CFG 0xFFC41208 /* DMA4 Configuration Register */ +#define DMA4_XCNT 0xFFC4120C /* DMA4 Inner Loop Count Start Value */ +#define DMA4_XMOD 0xFFC41210 /* DMA4 Inner Loop Address Increment */ +#define DMA4_YCNT 0xFFC41214 /* DMA4 Outer Loop Count Start Value (2D only) */ +#define DMA4_YMOD 0xFFC41218 /* DMA4 Outer Loop Address Increment (2D only) */ +#define DMA4_DSCPTR_CUR 0xFFC41224 /* DMA4 Current Descriptor Pointer */ +#define DMA4_DSCPTR_PRV 0xFFC41228 /* DMA4 Previous Initial Descriptor Pointer */ +#define DMA4_ADDR_CUR 0xFFC4122C /* DMA4 Current Address */ +#define DMA4_STAT 0xFFC41230 /* DMA4 Status Register */ +#define DMA4_XCNT_CUR 0xFFC41234 /* DMA4 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA4_YCNT_CUR 0xFFC41238 /* DMA4 Current Row Count (2D only) */ +#define DMA4_BWLCNT 0xFFC41240 /* DMA4 Bandwidth Limit Count */ +#define DMA4_BWLCNT_CUR 0xFFC41244 /* DMA4 Bandwidth Limit Count Current */ +#define DMA4_BWMCNT 0xFFC41248 /* DMA4 Bandwidth Monitor Count */ +#define DMA4_BWMCNT_CUR 0xFFC4124C /* DMA4 Bandwidth Monitor Count Current */ +#define DMA5_DSCPTR_NXT 0xFFC41280 /* DMA5 Pointer to Next Initial Descriptor */ +#define DMA5_ADDRSTART 0xFFC41284 /* DMA5 Start Address of Current Buffer */ +#define DMA5_CFG 0xFFC41288 /* DMA5 Configuration Register */ +#define DMA5_XCNT 0xFFC4128C /* DMA5 Inner Loop Count Start Value */ +#define DMA5_XMOD 0xFFC41290 /* DMA5 Inner Loop Address Increment */ +#define DMA5_YCNT 0xFFC41294 /* DMA5 Outer Loop Count Start Value (2D only) */ +#define DMA5_YMOD 0xFFC41298 /* DMA5 Outer Loop Address Increment (2D only) */ +#define DMA5_DSCPTR_CUR 0xFFC412A4 /* DMA5 Current Descriptor Pointer */ +#define DMA5_DSCPTR_PRV 0xFFC412A8 /* DMA5 Previous Initial Descriptor Pointer */ +#define DMA5_ADDR_CUR 0xFFC412AC /* DMA5 Current Address */ +#define DMA5_STAT 0xFFC412B0 /* DMA5 Status Register */ +#define DMA5_XCNT_CUR 0xFFC412B4 /* DMA5 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA5_YCNT_CUR 0xFFC412B8 /* DMA5 Current Row Count (2D only) */ +#define DMA5_BWLCNT 0xFFC412C0 /* DMA5 Bandwidth Limit Count */ +#define DMA5_BWLCNT_CUR 0xFFC412C4 /* DMA5 Bandwidth Limit Count Current */ +#define DMA5_BWMCNT 0xFFC412C8 /* DMA5 Bandwidth Monitor Count */ +#define DMA5_BWMCNT_CUR 0xFFC412CC /* DMA5 Bandwidth Monitor Count Current */ +#define DMA6_DSCPTR_NXT 0xFFC41300 /* DMA6 Pointer to Next Initial Descriptor */ +#define DMA6_ADDRSTART 0xFFC41304 /* DMA6 Start Address of Current Buffer */ +#define DMA6_CFG 0xFFC41308 /* DMA6 Configuration Register */ +#define DMA6_XCNT 0xFFC4130C /* DMA6 Inner Loop Count Start Value */ +#define DMA6_XMOD 0xFFC41310 /* DMA6 Inner Loop Address Increment */ +#define DMA6_YCNT 0xFFC41314 /* DMA6 Outer Loop Count Start Value (2D only) */ +#define DMA6_YMOD 0xFFC41318 /* DMA6 Outer Loop Address Increment (2D only) */ +#define DMA6_DSCPTR_CUR 0xFFC41324 /* DMA6 Current Descriptor Pointer */ +#define DMA6_DSCPTR_PRV 0xFFC41328 /* DMA6 Previous Initial Descriptor Pointer */ +#define DMA6_ADDR_CUR 0xFFC4132C /* DMA6 Current Address */ +#define DMA6_STAT 0xFFC41330 /* DMA6 Status Register */ +#define DMA6_XCNT_CUR 0xFFC41334 /* DMA6 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA6_YCNT_CUR 0xFFC41338 /* DMA6 Current Row Count (2D only) */ +#define DMA6_BWLCNT 0xFFC41340 /* DMA6 Bandwidth Limit Count */ +#define DMA6_BWLCNT_CUR 0xFFC41344 /* DMA6 Bandwidth Limit Count Current */ +#define DMA6_BWMCNT 0xFFC41348 /* DMA6 Bandwidth Monitor Count */ +#define DMA6_BWMCNT_CUR 0xFFC4134C /* DMA6 Bandwidth Monitor Count Current */ +#define DMA7_DSCPTR_NXT 0xFFC41380 /* DMA7 Pointer to Next Initial Descriptor */ +#define DMA7_ADDRSTART 0xFFC41384 /* DMA7 Start Address of Current Buffer */ +#define DMA7_CFG 0xFFC41388 /* DMA7 Configuration Register */ +#define DMA7_XCNT 0xFFC4138C /* DMA7 Inner Loop Count Start Value */ +#define DMA7_XMOD 0xFFC41390 /* DMA7 Inner Loop Address Increment */ +#define DMA7_YCNT 0xFFC41394 /* DMA7 Outer Loop Count Start Value (2D only) */ +#define DMA7_YMOD 0xFFC41398 /* DMA7 Outer Loop Address Increment (2D only) */ +#define DMA7_DSCPTR_CUR 0xFFC413A4 /* DMA7 Current Descriptor Pointer */ +#define DMA7_DSCPTR_PRV 0xFFC413A8 /* DMA7 Previous Initial Descriptor Pointer */ +#define DMA7_ADDR_CUR 0xFFC413AC /* DMA7 Current Address */ +#define DMA7_STAT 0xFFC413B0 /* DMA7 Status Register */ +#define DMA7_XCNT_CUR 0xFFC413B4 /* DMA7 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA7_YCNT_CUR 0xFFC413B8 /* DMA7 Current Row Count (2D only) */ +#define DMA7_BWLCNT 0xFFC413C0 /* DMA7 Bandwidth Limit Count */ +#define DMA7_BWLCNT_CUR 0xFFC413C4 /* DMA7 Bandwidth Limit Count Current */ +#define DMA7_BWMCNT 0xFFC413C8 /* DMA7 Bandwidth Monitor Count */ +#define DMA7_BWMCNT_CUR 0xFFC413CC /* DMA7 Bandwidth Monitor Count Current */ +#define DMA8_DSCPTR_NXT 0xFFC41400 /* DMA8 Pointer to Next Initial Descriptor */ +#define DMA8_ADDRSTART 0xFFC41404 /* DMA8 Start Address of Current Buffer */ +#define DMA8_CFG 0xFFC41408 /* DMA8 Configuration Register */ +#define DMA8_XCNT 0xFFC4140C /* DMA8 Inner Loop Count Start Value */ +#define DMA8_XMOD 0xFFC41410 /* DMA8 Inner Loop Address Increment */ +#define DMA8_YCNT 0xFFC41414 /* DMA8 Outer Loop Count Start Value (2D only) */ +#define DMA8_YMOD 0xFFC41418 /* DMA8 Outer Loop Address Increment (2D only) */ +#define DMA8_DSCPTR_CUR 0xFFC41424 /* DMA8 Current Descriptor Pointer */ +#define DMA8_DSCPTR_PRV 0xFFC41428 /* DMA8 Previous Initial Descriptor Pointer */ +#define DMA8_ADDR_CUR 0xFFC4142C /* DMA8 Current Address */ +#define DMA8_STAT 0xFFC41430 /* DMA8 Status Register */ +#define DMA8_XCNT_CUR 0xFFC41434 /* DMA8 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA8_YCNT_CUR 0xFFC41438 /* DMA8 Current Row Count (2D only) */ +#define DMA8_BWLCNT 0xFFC41440 /* DMA8 Bandwidth Limit Count */ +#define DMA8_BWLCNT_CUR 0xFFC41444 /* DMA8 Bandwidth Limit Count Current */ +#define DMA8_BWMCNT 0xFFC41448 /* DMA8 Bandwidth Monitor Count */ +#define DMA8_BWMCNT_CUR 0xFFC4144C /* DMA8 Bandwidth Monitor Count Current */ +#define DMA9_DSCPTR_NXT 0xFFC41480 /* DMA9 Pointer to Next Initial Descriptor */ +#define DMA9_ADDRSTART 0xFFC41484 /* DMA9 Start Address of Current Buffer */ +#define DMA9_CFG 0xFFC41488 /* DMA9 Configuration Register */ +#define DMA9_XCNT 0xFFC4148C /* DMA9 Inner Loop Count Start Value */ +#define DMA9_XMOD 0xFFC41490 /* DMA9 Inner Loop Address Increment */ +#define DMA9_YCNT 0xFFC41494 /* DMA9 Outer Loop Count Start Value (2D only) */ +#define DMA9_YMOD 0xFFC41498 /* DMA9 Outer Loop Address Increment (2D only) */ +#define DMA9_DSCPTR_CUR 0xFFC414A4 /* DMA9 Current Descriptor Pointer */ +#define DMA9_DSCPTR_PRV 0xFFC414A8 /* DMA9 Previous Initial Descriptor Pointer */ +#define DMA9_ADDR_CUR 0xFFC414AC /* DMA9 Current Address */ +#define DMA9_STAT 0xFFC414B0 /* DMA9 Status Register */ +#define DMA9_XCNT_CUR 0xFFC414B4 /* DMA9 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA9_YCNT_CUR 0xFFC414B8 /* DMA9 Current Row Count (2D only) */ +#define DMA9_BWLCNT 0xFFC414C0 /* DMA9 Bandwidth Limit Count */ +#define DMA9_BWLCNT_CUR 0xFFC414C4 /* DMA9 Bandwidth Limit Count Current */ +#define DMA9_BWMCNT 0xFFC414C8 /* DMA9 Bandwidth Monitor Count */ +#define DMA9_BWMCNT_CUR 0xFFC414CC /* DMA9 Bandwidth Monitor Count Current */ +#define DMA10_DSCPTR_NXT 0xFFC05000 /* DMA10 Pointer to Next Initial Descriptor */ +#define DMA10_ADDRSTART 0xFFC05004 /* DMA10 Start Address of Current Buffer */ +#define DMA10_CFG 0xFFC05008 /* DMA10 Configuration Register */ +#define DMA10_XCNT 0xFFC0500C /* DMA10 Inner Loop Count Start Value */ +#define DMA10_XMOD 0xFFC05010 /* DMA10 Inner Loop Address Increment */ +#define DMA10_YCNT 0xFFC05014 /* DMA10 Outer Loop Count Start Value (2D only) */ +#define DMA10_YMOD 0xFFC05018 /* DMA10 Outer Loop Address Increment (2D only) */ +#define DMA10_DSCPTR_CUR 0xFFC05024 /* DMA10 Current Descriptor Pointer */ +#define DMA10_DSCPTR_PRV 0xFFC05028 /* DMA10 Previous Initial Descriptor Pointer */ +#define DMA10_ADDR_CUR 0xFFC0502C /* DMA10 Current Address */ +#define DMA10_STAT 0xFFC05030 /* DMA10 Status Register */ +#define DMA10_XCNT_CUR 0xFFC05034 /* DMA10 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA10_YCNT_CUR 0xFFC05038 /* DMA10 Current Row Count (2D only) */ +#define DMA10_BWLCNT 0xFFC05040 /* DMA10 Bandwidth Limit Count */ +#define DMA10_BWLCNT_CUR 0xFFC05044 /* DMA10 Bandwidth Limit Count Current */ +#define DMA10_BWMCNT 0xFFC05048 /* DMA10 Bandwidth Monitor Count */ +#define DMA10_BWMCNT_CUR 0xFFC0504C /* DMA10 Bandwidth Monitor Count Current */ +#define DMA11_DSCPTR_NXT 0xFFC05080 /* DMA11 Pointer to Next Initial Descriptor */ +#define DMA11_ADDRSTART 0xFFC05084 /* DMA11 Start Address of Current Buffer */ +#define DMA11_CFG 0xFFC05088 /* DMA11 Configuration Register */ +#define DMA11_XCNT 0xFFC0508C /* DMA11 Inner Loop Count Start Value */ +#define DMA11_XMOD 0xFFC05090 /* DMA11 Inner Loop Address Increment */ +#define DMA11_YCNT 0xFFC05094 /* DMA11 Outer Loop Count Start Value (2D only) */ +#define DMA11_YMOD 0xFFC05098 /* DMA11 Outer Loop Address Increment (2D only) */ +#define DMA11_DSCPTR_CUR 0xFFC050A4 /* DMA11 Current Descriptor Pointer */ +#define DMA11_DSCPTR_PRV 0xFFC050A8 /* DMA11 Previous Initial Descriptor Pointer */ +#define DMA11_ADDR_CUR 0xFFC050AC /* DMA11 Current Address */ +#define DMA11_STAT 0xFFC050B0 /* DMA11 Status Register */ +#define DMA11_XCNT_CUR 0xFFC050B4 /* DMA11 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA11_YCNT_CUR 0xFFC050B8 /* DMA11 Current Row Count (2D only) */ +#define DMA11_BWLCNT 0xFFC050C0 /* DMA11 Bandwidth Limit Count */ +#define DMA11_BWLCNT_CUR 0xFFC050C4 /* DMA11 Bandwidth Limit Count Current */ +#define DMA11_BWMCNT 0xFFC050C8 /* DMA11 Bandwidth Monitor Count */ +#define DMA11_BWMCNT_CUR 0xFFC050CC /* DMA11 Bandwidth Monitor Count Current */ +#define DMA12_DSCPTR_NXT 0xFFC05100 /* DMA12 Pointer to Next Initial Descriptor */ +#define DMA12_ADDRSTART 0xFFC05104 /* DMA12 Start Address of Current Buffer */ +#define DMA12_CFG 0xFFC05108 /* DMA12 Configuration Register */ +#define DMA12_XCNT 0xFFC0510C /* DMA12 Inner Loop Count Start Value */ +#define DMA12_XMOD 0xFFC05110 /* DMA12 Inner Loop Address Increment */ +#define DMA12_YCNT 0xFFC05114 /* DMA12 Outer Loop Count Start Value (2D only) */ +#define DMA12_YMOD 0xFFC05118 /* DMA12 Outer Loop Address Increment (2D only) */ +#define DMA12_DSCPTR_CUR 0xFFC05124 /* DMA12 Current Descriptor Pointer */ +#define DMA12_DSCPTR_PRV 0xFFC05128 /* DMA12 Previous Initial Descriptor Pointer */ +#define DMA12_ADDR_CUR 0xFFC0512C /* DMA12 Current Address */ +#define DMA12_STAT 0xFFC05130 /* DMA12 Status Register */ +#define DMA12_XCNT_CUR 0xFFC05134 /* DMA12 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA12_YCNT_CUR 0xFFC05138 /* DMA12 Current Row Count (2D only) */ +#define DMA12_BWLCNT 0xFFC05140 /* DMA12 Bandwidth Limit Count */ +#define DMA12_BWLCNT_CUR 0xFFC05144 /* DMA12 Bandwidth Limit Count Current */ +#define DMA12_BWMCNT 0xFFC05148 /* DMA12 Bandwidth Monitor Count */ +#define DMA12_BWMCNT_CUR 0xFFC0514C /* DMA12 Bandwidth Monitor Count Current */ +#define DMA13_DSCPTR_NXT 0xFFC07000 /* DMA13 Pointer to Next Initial Descriptor */ +#define DMA13_ADDRSTART 0xFFC07004 /* DMA13 Start Address of Current Buffer */ +#define DMA13_CFG 0xFFC07008 /* DMA13 Configuration Register */ +#define DMA13_XCNT 0xFFC0700C /* DMA13 Inner Loop Count Start Value */ +#define DMA13_XMOD 0xFFC07010 /* DMA13 Inner Loop Address Increment */ +#define DMA13_YCNT 0xFFC07014 /* DMA13 Outer Loop Count Start Value (2D only) */ +#define DMA13_YMOD 0xFFC07018 /* DMA13 Outer Loop Address Increment (2D only) */ +#define DMA13_DSCPTR_CUR 0xFFC07024 /* DMA13 Current Descriptor Pointer */ +#define DMA13_DSCPTR_PRV 0xFFC07028 /* DMA13 Previous Initial Descriptor Pointer */ +#define DMA13_ADDR_CUR 0xFFC0702C /* DMA13 Current Address */ +#define DMA13_STAT 0xFFC07030 /* DMA13 Status Register */ +#define DMA13_XCNT_CUR 0xFFC07034 /* DMA13 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA13_YCNT_CUR 0xFFC07038 /* DMA13 Current Row Count (2D only) */ +#define DMA13_BWLCNT 0xFFC07040 /* DMA13 Bandwidth Limit Count */ +#define DMA13_BWLCNT_CUR 0xFFC07044 /* DMA13 Bandwidth Limit Count Current */ +#define DMA13_BWMCNT 0xFFC07048 /* DMA13 Bandwidth Monitor Count */ +#define DMA13_BWMCNT_CUR 0xFFC0704C /* DMA13 Bandwidth Monitor Count Current */ +#define DMA14_DSCPTR_NXT 0xFFC07080 /* DMA14 Pointer to Next Initial Descriptor */ +#define DMA14_ADDRSTART 0xFFC07084 /* DMA14 Start Address of Current Buffer */ +#define DMA14_CFG 0xFFC07088 /* DMA14 Configuration Register */ +#define DMA14_XCNT 0xFFC0708C /* DMA14 Inner Loop Count Start Value */ +#define DMA14_XMOD 0xFFC07090 /* DMA14 Inner Loop Address Increment */ +#define DMA14_YCNT 0xFFC07094 /* DMA14 Outer Loop Count Start Value (2D only) */ +#define DMA14_YMOD 0xFFC07098 /* DMA14 Outer Loop Address Increment (2D only) */ +#define DMA14_DSCPTR_CUR 0xFFC070A4 /* DMA14 Current Descriptor Pointer */ +#define DMA14_DSCPTR_PRV 0xFFC070A8 /* DMA14 Previous Initial Descriptor Pointer */ +#define DMA14_ADDR_CUR 0xFFC070AC /* DMA14 Current Address */ +#define DMA14_STAT 0xFFC070B0 /* DMA14 Status Register */ +#define DMA14_XCNT_CUR 0xFFC070B4 /* DMA14 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA14_YCNT_CUR 0xFFC070B8 /* DMA14 Current Row Count (2D only) */ +#define DMA14_BWLCNT 0xFFC070C0 /* DMA14 Bandwidth Limit Count */ +#define DMA14_BWLCNT_CUR 0xFFC070C4 /* DMA14 Bandwidth Limit Count Current */ +#define DMA14_BWMCNT 0xFFC070C8 /* DMA14 Bandwidth Monitor Count */ +#define DMA14_BWMCNT_CUR 0xFFC070CC /* DMA14 Bandwidth Monitor Count Current */ +#define DMA15_DSCPTR_NXT 0xFFC07100 /* DMA15 Pointer to Next Initial Descriptor */ +#define DMA15_ADDRSTART 0xFFC07104 /* DMA15 Start Address of Current Buffer */ +#define DMA15_CFG 0xFFC07108 /* DMA15 Configuration Register */ +#define DMA15_XCNT 0xFFC0710C /* DMA15 Inner Loop Count Start Value */ +#define DMA15_XMOD 0xFFC07110 /* DMA15 Inner Loop Address Increment */ +#define DMA15_YCNT 0xFFC07114 /* DMA15 Outer Loop Count Start Value (2D only) */ +#define DMA15_YMOD 0xFFC07118 /* DMA15 Outer Loop Address Increment (2D only) */ +#define DMA15_DSCPTR_CUR 0xFFC07124 /* DMA15 Current Descriptor Pointer */ +#define DMA15_DSCPTR_PRV 0xFFC07128 /* DMA15 Previous Initial Descriptor Pointer */ +#define DMA15_ADDR_CUR 0xFFC0712C /* DMA15 Current Address */ +#define DMA15_STAT 0xFFC07130 /* DMA15 Status Register */ +#define DMA15_XCNT_CUR 0xFFC07134 /* DMA15 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA15_YCNT_CUR 0xFFC07138 /* DMA15 Current Row Count (2D only) */ +#define DMA15_BWLCNT 0xFFC07140 /* DMA15 Bandwidth Limit Count */ +#define DMA15_BWLCNT_CUR 0xFFC07144 /* DMA15 Bandwidth Limit Count Current */ +#define DMA15_BWMCNT 0xFFC07148 /* DMA15 Bandwidth Monitor Count */ +#define DMA15_BWMCNT_CUR 0xFFC0714C /* DMA15 Bandwidth Monitor Count Current */ +#define DMA16_DSCPTR_NXT 0xFFC07180 /* DMA16 Pointer to Next Initial Descriptor */ +#define DMA16_ADDRSTART 0xFFC07184 /* DMA16 Start Address of Current Buffer */ +#define DMA16_CFG 0xFFC07188 /* DMA16 Configuration Register */ +#define DMA16_XCNT 0xFFC0718C /* DMA16 Inner Loop Count Start Value */ +#define DMA16_XMOD 0xFFC07190 /* DMA16 Inner Loop Address Increment */ +#define DMA16_YCNT 0xFFC07194 /* DMA16 Outer Loop Count Start Value (2D only) */ +#define DMA16_YMOD 0xFFC07198 /* DMA16 Outer Loop Address Increment (2D only) */ +#define DMA16_DSCPTR_CUR 0xFFC071A4 /* DMA16 Current Descriptor Pointer */ +#define DMA16_DSCPTR_PRV 0xFFC071A8 /* DMA16 Previous Initial Descriptor Pointer */ +#define DMA16_ADDR_CUR 0xFFC071AC /* DMA16 Current Address */ +#define DMA16_STAT 0xFFC071B0 /* DMA16 Status Register */ +#define DMA16_XCNT_CUR 0xFFC071B4 /* DMA16 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA16_YCNT_CUR 0xFFC071B8 /* DMA16 Current Row Count (2D only) */ +#define DMA16_BWLCNT 0xFFC071C0 /* DMA16 Bandwidth Limit Count */ +#define DMA16_BWLCNT_CUR 0xFFC071C4 /* DMA16 Bandwidth Limit Count Current */ +#define DMA16_BWMCNT 0xFFC071C8 /* DMA16 Bandwidth Monitor Count */ +#define DMA16_BWMCNT_CUR 0xFFC071CC /* DMA16 Bandwidth Monitor Count Current */ +#define DMA17_DSCPTR_NXT 0xFFC07200 /* DMA17 Pointer to Next Initial Descriptor */ +#define DMA17_ADDRSTART 0xFFC07204 /* DMA17 Start Address of Current Buffer */ +#define DMA17_CFG 0xFFC07208 /* DMA17 Configuration Register */ +#define DMA17_XCNT 0xFFC0720C /* DMA17 Inner Loop Count Start Value */ +#define DMA17_XMOD 0xFFC07210 /* DMA17 Inner Loop Address Increment */ +#define DMA17_YCNT 0xFFC07214 /* DMA17 Outer Loop Count Start Value (2D only) */ +#define DMA17_YMOD 0xFFC07218 /* DMA17 Outer Loop Address Increment (2D only) */ +#define DMA17_DSCPTR_CUR 0xFFC07224 /* DMA17 Current Descriptor Pointer */ +#define DMA17_DSCPTR_PRV 0xFFC07228 /* DMA17 Previous Initial Descriptor Pointer */ +#define DMA17_ADDR_CUR 0xFFC0722C /* DMA17 Current Address */ +#define DMA17_STAT 0xFFC07230 /* DMA17 Status Register */ +#define DMA17_XCNT_CUR 0xFFC07234 /* DMA17 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA17_YCNT_CUR 0xFFC07238 /* DMA17 Current Row Count (2D only) */ +#define DMA17_BWLCNT 0xFFC07240 /* DMA17 Bandwidth Limit Count */ +#define DMA17_BWLCNT_CUR 0xFFC07244 /* DMA17 Bandwidth Limit Count Current */ +#define DMA17_BWMCNT 0xFFC07248 /* DMA17 Bandwidth Monitor Count */ +#define DMA17_BWMCNT_CUR 0xFFC0724C /* DMA17 Bandwidth Monitor Count Current */ +#define DMA18_DSCPTR_NXT 0xFFC07280 /* DMA18 Pointer to Next Initial Descriptor */ +#define DMA18_ADDRSTART 0xFFC07284 /* DMA18 Start Address of Current Buffer */ +#define DMA18_CFG 0xFFC07288 /* DMA18 Configuration Register */ +#define DMA18_XCNT 0xFFC0728C /* DMA18 Inner Loop Count Start Value */ +#define DMA18_XMOD 0xFFC07290 /* DMA18 Inner Loop Address Increment */ +#define DMA18_YCNT 0xFFC07294 /* DMA18 Outer Loop Count Start Value (2D only) */ +#define DMA18_YMOD 0xFFC07298 /* DMA18 Outer Loop Address Increment (2D only) */ +#define DMA18_DSCPTR_CUR 0xFFC072A4 /* DMA18 Current Descriptor Pointer */ +#define DMA18_DSCPTR_PRV 0xFFC072A8 /* DMA18 Previous Initial Descriptor Pointer */ +#define DMA18_ADDR_CUR 0xFFC072AC /* DMA18 Current Address */ +#define DMA18_STAT 0xFFC072B0 /* DMA18 Status Register */ +#define DMA18_XCNT_CUR 0xFFC072B4 /* DMA18 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA18_YCNT_CUR 0xFFC072B8 /* DMA18 Current Row Count (2D only) */ +#define DMA18_BWLCNT 0xFFC072C0 /* DMA18 Bandwidth Limit Count */ +#define DMA18_BWLCNT_CUR 0xFFC072C4 /* DMA18 Bandwidth Limit Count Current */ +#define DMA18_BWMCNT 0xFFC072C8 /* DMA18 Bandwidth Monitor Count */ +#define DMA18_BWMCNT_CUR 0xFFC072CC /* DMA18 Bandwidth Monitor Count Current */ +#define DMA19_DSCPTR_NXT 0xFFC07300 /* DMA19 Pointer to Next Initial Descriptor */ +#define DMA19_ADDRSTART 0xFFC07304 /* DMA19 Start Address of Current Buffer */ +#define DMA19_CFG 0xFFC07308 /* DMA19 Configuration Register */ +#define DMA19_XCNT 0xFFC0730C /* DMA19 Inner Loop Count Start Value */ +#define DMA19_XMOD 0xFFC07310 /* DMA19 Inner Loop Address Increment */ +#define DMA19_YCNT 0xFFC07314 /* DMA19 Outer Loop Count Start Value (2D only) */ +#define DMA19_YMOD 0xFFC07318 /* DMA19 Outer Loop Address Increment (2D only) */ +#define DMA19_DSCPTR_CUR 0xFFC07324 /* DMA19 Current Descriptor Pointer */ +#define DMA19_DSCPTR_PRV 0xFFC07328 /* DMA19 Previous Initial Descriptor Pointer */ +#define DMA19_ADDR_CUR 0xFFC0732C /* DMA19 Current Address */ +#define DMA19_STAT 0xFFC07330 /* DMA19 Status Register */ +#define DMA19_XCNT_CUR 0xFFC07334 /* DMA19 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA19_YCNT_CUR 0xFFC07338 /* DMA19 Current Row Count (2D only) */ +#define DMA19_BWLCNT 0xFFC07340 /* DMA19 Bandwidth Limit Count */ +#define DMA19_BWLCNT_CUR 0xFFC07344 /* DMA19 Bandwidth Limit Count Current */ +#define DMA19_BWMCNT 0xFFC07348 /* DMA19 Bandwidth Monitor Count */ +#define DMA19_BWMCNT_CUR 0xFFC0734C /* DMA19 Bandwidth Monitor Count Current */ +#define DMA20_DSCPTR_NXT 0xFFC07380 /* DMA20 Pointer to Next Initial Descriptor */ +#define DMA20_ADDRSTART 0xFFC07384 /* DMA20 Start Address of Current Buffer */ +#define DMA20_CFG 0xFFC07388 /* DMA20 Configuration Register */ +#define DMA20_XCNT 0xFFC0738C /* DMA20 Inner Loop Count Start Value */ +#define DMA20_XMOD 0xFFC07390 /* DMA20 Inner Loop Address Increment */ +#define DMA20_YCNT 0xFFC07394 /* DMA20 Outer Loop Count Start Value (2D only) */ +#define DMA20_YMOD 0xFFC07398 /* DMA20 Outer Loop Address Increment (2D only) */ +#define DMA20_DSCPTR_CUR 0xFFC073A4 /* DMA20 Current Descriptor Pointer */ +#define DMA20_DSCPTR_PRV 0xFFC073A8 /* DMA20 Previous Initial Descriptor Pointer */ +#define DMA20_ADDR_CUR 0xFFC073AC /* DMA20 Current Address */ +#define DMA20_STAT 0xFFC073B0 /* DMA20 Status Register */ +#define DMA20_XCNT_CUR 0xFFC073B4 /* DMA20 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA20_YCNT_CUR 0xFFC073B8 /* DMA20 Current Row Count (2D only) */ +#define DMA20_BWLCNT 0xFFC073C0 /* DMA20 Bandwidth Limit Count */ +#define DMA20_BWLCNT_CUR 0xFFC073C4 /* DMA20 Bandwidth Limit Count Current */ +#define DMA20_BWMCNT 0xFFC073C8 /* DMA20 Bandwidth Monitor Count */ +#define DMA20_BWMCNT_CUR 0xFFC073CC /* DMA20 Bandwidth Monitor Count Current */ +#define MDMA_S0_NEXT_DESC_PTR DMA21_DSCPTR_NXT +#define DMA21_DSCPTR_NXT 0xFFC09000 /* DMA21 Pointer to Next Initial Descriptor */ +#define DMA21_ADDRSTART 0xFFC09004 /* DMA21 Start Address of Current Buffer */ +#define DMA21_CFG 0xFFC09008 /* DMA21 Configuration Register */ +#define DMA21_XCNT 0xFFC0900C /* DMA21 Inner Loop Count Start Value */ +#define DMA21_XMOD 0xFFC09010 /* DMA21 Inner Loop Address Increment */ +#define DMA21_YCNT 0xFFC09014 /* DMA21 Outer Loop Count Start Value (2D only) */ +#define DMA21_YMOD 0xFFC09018 /* DMA21 Outer Loop Address Increment (2D only) */ +#define DMA21_DSCPTR_CUR 0xFFC09024 /* DMA21 Current Descriptor Pointer */ +#define DMA21_DSCPTR_PRV 0xFFC09028 /* DMA21 Previous Initial Descriptor Pointer */ +#define DMA21_ADDR_CUR 0xFFC0902C /* DMA21 Current Address */ +#define DMA21_STAT 0xFFC09030 /* DMA21 Status Register */ +#define DMA21_XCNT_CUR 0xFFC09034 /* DMA21 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA21_YCNT_CUR 0xFFC09038 /* DMA21 Current Row Count (2D only) */ +#define DMA21_BWLCNT 0xFFC09040 /* DMA21 Bandwidth Limit Count */ +#define DMA21_BWLCNT_CUR 0xFFC09044 /* DMA21 Bandwidth Limit Count Current */ +#define DMA21_BWMCNT 0xFFC09048 /* DMA21 Bandwidth Monitor Count */ +#define DMA21_BWMCNT_CUR 0xFFC0904C /* DMA21 Bandwidth Monitor Count Current */ +#define MDMA_D0_NEXT_DESC_PTR DMA22_DSCPTR_NXT +#define DMA22_DSCPTR_NXT 0xFFC09080 /* DMA22 Pointer to Next Initial Descriptor */ +#define DMA22_ADDRSTART 0xFFC09084 /* DMA22 Start Address of Current Buffer */ +#define DMA22_CFG 0xFFC09088 /* DMA22 Configuration Register */ +#define DMA22_XCNT 0xFFC0908C /* DMA22 Inner Loop Count Start Value */ +#define DMA22_XMOD 0xFFC09090 /* DMA22 Inner Loop Address Increment */ +#define DMA22_YCNT 0xFFC09094 /* DMA22 Outer Loop Count Start Value (2D only) */ +#define DMA22_YMOD 0xFFC09098 /* DMA22 Outer Loop Address Increment (2D only) */ +#define DMA22_DSCPTR_CUR 0xFFC090A4 /* DMA22 Current Descriptor Pointer */ +#define DMA22_DSCPTR_PRV 0xFFC090A8 /* DMA22 Previous Initial Descriptor Pointer */ +#define DMA22_ADDR_CUR 0xFFC090AC /* DMA22 Current Address */ +#define DMA22_STAT 0xFFC090B0 /* DMA22 Status Register */ +#define DMA22_XCNT_CUR 0xFFC090B4 /* DMA22 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA22_YCNT_CUR 0xFFC090B8 /* DMA22 Current Row Count (2D only) */ +#define DMA22_BWLCNT 0xFFC090C0 /* DMA22 Bandwidth Limit Count */ +#define DMA22_BWLCNT_CUR 0xFFC090C4 /* DMA22 Bandwidth Limit Count Current */ +#define DMA22_BWMCNT 0xFFC090C8 /* DMA22 Bandwidth Monitor Count */ +#define DMA22_BWMCNT_CUR 0xFFC090CC /* DMA22 Bandwidth Monitor Count Current */ +#define DMA23_DSCPTR_NXT 0xFFC09100 /* DMA23 Pointer to Next Initial Descriptor */ +#define DMA23_ADDRSTART 0xFFC09104 /* DMA23 Start Address of Current Buffer */ +#define DMA23_CFG 0xFFC09108 /* DMA23 Configuration Register */ +#define DMA23_XCNT 0xFFC0910C /* DMA23 Inner Loop Count Start Value */ +#define DMA23_XMOD 0xFFC09110 /* DMA23 Inner Loop Address Increment */ +#define DMA23_YCNT 0xFFC09114 /* DMA23 Outer Loop Count Start Value (2D only) */ +#define DMA23_YMOD 0xFFC09118 /* DMA23 Outer Loop Address Increment (2D only) */ +#define DMA23_DSCPTR_CUR 0xFFC09124 /* DMA23 Current Descriptor Pointer */ +#define DMA23_DSCPTR_PRV 0xFFC09128 /* DMA23 Previous Initial Descriptor Pointer */ +#define DMA23_ADDR_CUR 0xFFC0912C /* DMA23 Current Address */ +#define DMA23_STAT 0xFFC09130 /* DMA23 Status Register */ +#define DMA23_XCNT_CUR 0xFFC09134 /* DMA23 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA23_YCNT_CUR 0xFFC09138 /* DMA23 Current Row Count (2D only) */ +#define DMA23_BWLCNT 0xFFC09140 /* DMA23 Bandwidth Limit Count */ +#define DMA23_BWLCNT_CUR 0xFFC09144 /* DMA23 Bandwidth Limit Count Current */ +#define DMA23_BWMCNT 0xFFC09148 /* DMA23 Bandwidth Monitor Count */ +#define DMA23_BWMCNT_CUR 0xFFC0914C /* DMA23 Bandwidth Monitor Count Current */ +#define DMA24_DSCPTR_NXT 0xFFC09180 /* DMA24 Pointer to Next Initial Descriptor */ +#define DMA24_ADDRSTART 0xFFC09184 /* DMA24 Start Address of Current Buffer */ +#define DMA24_CFG 0xFFC09188 /* DMA24 Configuration Register */ +#define DMA24_XCNT 0xFFC0918C /* DMA24 Inner Loop Count Start Value */ +#define DMA24_XMOD 0xFFC09190 /* DMA24 Inner Loop Address Increment */ +#define DMA24_YCNT 0xFFC09194 /* DMA24 Outer Loop Count Start Value (2D only) */ +#define DMA24_YMOD 0xFFC09198 /* DMA24 Outer Loop Address Increment (2D only) */ +#define DMA24_DSCPTR_CUR 0xFFC091A4 /* DMA24 Current Descriptor Pointer */ +#define DMA24_DSCPTR_PRV 0xFFC091A8 /* DMA24 Previous Initial Descriptor Pointer */ +#define DMA24_ADDR_CUR 0xFFC091AC /* DMA24 Current Address */ +#define DMA24_STAT 0xFFC091B0 /* DMA24 Status Register */ +#define DMA24_XCNT_CUR 0xFFC091B4 /* DMA24 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA24_YCNT_CUR 0xFFC091B8 /* DMA24 Current Row Count (2D only) */ +#define DMA24_BWLCNT 0xFFC091C0 /* DMA24 Bandwidth Limit Count */ +#define DMA24_BWLCNT_CUR 0xFFC091C4 /* DMA24 Bandwidth Limit Count Current */ +#define DMA24_BWMCNT 0xFFC091C8 /* DMA24 Bandwidth Monitor Count */ +#define DMA24_BWMCNT_CUR 0xFFC091CC /* DMA24 Bandwidth Monitor Count Current */ +#define DMA25_DSCPTR_NXT 0xFFC09200 /* DMA25 Pointer to Next Initial Descriptor */ +#define DMA25_ADDRSTART 0xFFC09204 /* DMA25 Start Address of Current Buffer */ +#define DMA25_CFG 0xFFC09208 /* DMA25 Configuration Register */ +#define DMA25_XCNT 0xFFC0920C /* DMA25 Inner Loop Count Start Value */ +#define DMA25_XMOD 0xFFC09210 /* DMA25 Inner Loop Address Increment */ +#define DMA25_YCNT 0xFFC09214 /* DMA25 Outer Loop Count Start Value (2D only) */ +#define DMA25_YMOD 0xFFC09218 /* DMA25 Outer Loop Address Increment (2D only) */ +#define DMA25_DSCPTR_CUR 0xFFC09224 /* DMA25 Current Descriptor Pointer */ +#define DMA25_DSCPTR_PRV 0xFFC09228 /* DMA25 Previous Initial Descriptor Pointer */ +#define DMA25_ADDR_CUR 0xFFC0922C /* DMA25 Current Address */ +#define DMA25_STAT 0xFFC09230 /* DMA25 Status Register */ +#define DMA25_XCNT_CUR 0xFFC09234 /* DMA25 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA25_YCNT_CUR 0xFFC09238 /* DMA25 Current Row Count (2D only) */ +#define DMA25_BWLCNT 0xFFC09240 /* DMA25 Bandwidth Limit Count */ +#define DMA25_BWLCNT_CUR 0xFFC09244 /* DMA25 Bandwidth Limit Count Current */ +#define DMA25_BWMCNT 0xFFC09248 /* DMA25 Bandwidth Monitor Count */ +#define DMA25_BWMCNT_CUR 0xFFC0924C /* DMA25 Bandwidth Monitor Count Current */ +#define DMA26_DSCPTR_NXT 0xFFC09280 /* DMA26 Pointer to Next Initial Descriptor */ +#define DMA26_ADDRSTART 0xFFC09284 /* DMA26 Start Address of Current Buffer */ +#define DMA26_CFG 0xFFC09288 /* DMA26 Configuration Register */ +#define DMA26_XCNT 0xFFC0928C /* DMA26 Inner Loop Count Start Value */ +#define DMA26_XMOD 0xFFC09290 /* DMA26 Inner Loop Address Increment */ +#define DMA26_YCNT 0xFFC09294 /* DMA26 Outer Loop Count Start Value (2D only) */ +#define DMA26_YMOD 0xFFC09298 /* DMA26 Outer Loop Address Increment (2D only) */ +#define DMA26_DSCPTR_CUR 0xFFC092A4 /* DMA26 Current Descriptor Pointer */ +#define DMA26_DSCPTR_PRV 0xFFC092A8 /* DMA26 Previous Initial Descriptor Pointer */ +#define DMA26_ADDR_CUR 0xFFC092AC /* DMA26 Current Address */ +#define DMA26_STAT 0xFFC092B0 /* DMA26 Status Register */ +#define DMA26_XCNT_CUR 0xFFC092B4 /* DMA26 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA26_YCNT_CUR 0xFFC092B8 /* DMA26 Current Row Count (2D only) */ +#define DMA26_BWLCNT 0xFFC092C0 /* DMA26 Bandwidth Limit Count */ +#define DMA26_BWLCNT_CUR 0xFFC092C4 /* DMA26 Bandwidth Limit Count Current */ +#define DMA26_BWMCNT 0xFFC092C8 /* DMA26 Bandwidth Monitor Count */ +#define DMA26_BWMCNT_CUR 0xFFC092CC /* DMA26 Bandwidth Monitor Count Current */ +#define DMA27_DSCPTR_NXT 0xFFC09300 /* DMA27 Pointer to Next Initial Descriptor */ +#define DMA27_ADDRSTART 0xFFC09304 /* DMA27 Start Address of Current Buffer */ +#define DMA27_CFG 0xFFC09308 /* DMA27 Configuration Register */ +#define DMA27_XCNT 0xFFC0930C /* DMA27 Inner Loop Count Start Value */ +#define DMA27_XMOD 0xFFC09310 /* DMA27 Inner Loop Address Increment */ +#define DMA27_YCNT 0xFFC09314 /* DMA27 Outer Loop Count Start Value (2D only) */ +#define DMA27_YMOD 0xFFC09318 /* DMA27 Outer Loop Address Increment (2D only) */ +#define DMA27_DSCPTR_CUR 0xFFC09324 /* DMA27 Current Descriptor Pointer */ +#define DMA27_DSCPTR_PRV 0xFFC09328 /* DMA27 Previous Initial Descriptor Pointer */ +#define DMA27_ADDR_CUR 0xFFC0932C /* DMA27 Current Address */ +#define DMA27_STAT 0xFFC09330 /* DMA27 Status Register */ +#define DMA27_XCNT_CUR 0xFFC09334 /* DMA27 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA27_YCNT_CUR 0xFFC09338 /* DMA27 Current Row Count (2D only) */ +#define DMA27_BWLCNT 0xFFC09340 /* DMA27 Bandwidth Limit Count */ +#define DMA27_BWLCNT_CUR 0xFFC09344 /* DMA27 Bandwidth Limit Count Current */ +#define DMA27_BWMCNT 0xFFC09348 /* DMA27 Bandwidth Monitor Count */ +#define DMA27_BWMCNT_CUR 0xFFC0934C /* DMA27 Bandwidth Monitor Count Current */ +#define DMA28_DSCPTR_NXT 0xFFC09380 /* DMA28 Pointer to Next Initial Descriptor */ +#define DMA28_ADDRSTART 0xFFC09384 /* DMA28 Start Address of Current Buffer */ +#define DMA28_CFG 0xFFC09388 /* DMA28 Configuration Register */ +#define DMA28_XCNT 0xFFC0938C /* DMA28 Inner Loop Count Start Value */ +#define DMA28_XMOD 0xFFC09390 /* DMA28 Inner Loop Address Increment */ +#define DMA28_YCNT 0xFFC09394 /* DMA28 Outer Loop Count Start Value (2D only) */ +#define DMA28_YMOD 0xFFC09398 /* DMA28 Outer Loop Address Increment (2D only) */ +#define DMA28_DSCPTR_CUR 0xFFC093A4 /* DMA28 Current Descriptor Pointer */ +#define DMA28_DSCPTR_PRV 0xFFC093A8 /* DMA28 Previous Initial Descriptor Pointer */ +#define DMA28_ADDR_CUR 0xFFC093AC /* DMA28 Current Address */ +#define DMA28_STAT 0xFFC093B0 /* DMA28 Status Register */ +#define DMA28_XCNT_CUR 0xFFC093B4 /* DMA28 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA28_YCNT_CUR 0xFFC093B8 /* DMA28 Current Row Count (2D only) */ +#define DMA28_BWLCNT 0xFFC093C0 /* DMA28 Bandwidth Limit Count */ +#define DMA28_BWLCNT_CUR 0xFFC093C4 /* DMA28 Bandwidth Limit Count Current */ +#define DMA28_BWMCNT 0xFFC093C8 /* DMA28 Bandwidth Monitor Count */ +#define DMA28_BWMCNT_CUR 0xFFC093CC /* DMA28 Bandwidth Monitor Count Current */ +#define DMA29_DSCPTR_NXT 0xFFC0B000 /* DMA29 Pointer to Next Initial Descriptor */ +#define DMA29_ADDRSTART 0xFFC0B004 /* DMA29 Start Address of Current Buffer */ +#define DMA29_CFG 0xFFC0B008 /* DMA29 Configuration Register */ +#define DMA29_XCNT 0xFFC0B00C /* DMA29 Inner Loop Count Start Value */ +#define DMA29_XMOD 0xFFC0B010 /* DMA29 Inner Loop Address Increment */ +#define DMA29_YCNT 0xFFC0B014 /* DMA29 Outer Loop Count Start Value (2D only) */ +#define DMA29_YMOD 0xFFC0B018 /* DMA29 Outer Loop Address Increment (2D only) */ +#define DMA29_DSCPTR_CUR 0xFFC0B024 /* DMA29 Current Descriptor Pointer */ +#define DMA29_DSCPTR_PRV 0xFFC0B028 /* DMA29 Previous Initial Descriptor Pointer */ +#define DMA29_ADDR_CUR 0xFFC0B02C /* DMA29 Current Address */ +#define DMA29_STAT 0xFFC0B030 /* DMA29 Status Register */ +#define DMA29_XCNT_CUR 0xFFC0B034 /* DMA29 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA29_YCNT_CUR 0xFFC0B038 /* DMA29 Current Row Count (2D only) */ +#define DMA29_BWLCNT 0xFFC0B040 /* DMA29 Bandwidth Limit Count */ +#define DMA29_BWLCNT_CUR 0xFFC0B044 /* DMA29 Bandwidth Limit Count Current */ +#define DMA29_BWMCNT 0xFFC0B048 /* DMA29 Bandwidth Monitor Count */ +#define DMA29_BWMCNT_CUR 0xFFC0B04C /* DMA29 Bandwidth Monitor Count Current */ +#define DMA30_DSCPTR_NXT 0xFFC0B080 /* DMA30 Pointer to Next Initial Descriptor */ +#define DMA30_ADDRSTART 0xFFC0B084 /* DMA30 Start Address of Current Buffer */ +#define DMA30_CFG 0xFFC0B088 /* DMA30 Configuration Register */ +#define DMA30_XCNT 0xFFC0B08C /* DMA30 Inner Loop Count Start Value */ +#define DMA30_XMOD 0xFFC0B090 /* DMA30 Inner Loop Address Increment */ +#define DMA30_YCNT 0xFFC0B094 /* DMA30 Outer Loop Count Start Value (2D only) */ +#define DMA30_YMOD 0xFFC0B098 /* DMA30 Outer Loop Address Increment (2D only) */ +#define DMA30_DSCPTR_CUR 0xFFC0B0A4 /* DMA30 Current Descriptor Pointer */ +#define DMA30_DSCPTR_PRV 0xFFC0B0A8 /* DMA30 Previous Initial Descriptor Pointer */ +#define DMA30_ADDR_CUR 0xFFC0B0AC /* DMA30 Current Address */ +#define DMA30_STAT 0xFFC0B0B0 /* DMA30 Status Register */ +#define DMA30_XCNT_CUR 0xFFC0B0B4 /* DMA30 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA30_YCNT_CUR 0xFFC0B0B8 /* DMA30 Current Row Count (2D only) */ +#define DMA30_BWLCNT 0xFFC0B0C0 /* DMA30 Bandwidth Limit Count */ +#define DMA30_BWLCNT_CUR 0xFFC0B0C4 /* DMA30 Bandwidth Limit Count Current */ +#define DMA30_BWMCNT 0xFFC0B0C8 /* DMA30 Bandwidth Monitor Count */ +#define DMA30_BWMCNT_CUR 0xFFC0B0CC /* DMA30 Bandwidth Monitor Count Current */ +#define DMA31_DSCPTR_NXT 0xFFC0B100 /* DMA31 Pointer to Next Initial Descriptor */ +#define DMA31_ADDRSTART 0xFFC0B104 /* DMA31 Start Address of Current Buffer */ +#define DMA31_CFG 0xFFC0B108 /* DMA31 Configuration Register */ +#define DMA31_XCNT 0xFFC0B10C /* DMA31 Inner Loop Count Start Value */ +#define DMA31_XMOD 0xFFC0B110 /* DMA31 Inner Loop Address Increment */ +#define DMA31_YCNT 0xFFC0B114 /* DMA31 Outer Loop Count Start Value (2D only) */ +#define DMA31_YMOD 0xFFC0B118 /* DMA31 Outer Loop Address Increment (2D only) */ +#define DMA31_DSCPTR_CUR 0xFFC0B124 /* DMA31 Current Descriptor Pointer */ +#define DMA31_DSCPTR_PRV 0xFFC0B128 /* DMA31 Previous Initial Descriptor Pointer */ +#define DMA31_ADDR_CUR 0xFFC0B12C /* DMA31 Current Address */ +#define DMA31_STAT 0xFFC0B130 /* DMA31 Status Register */ +#define DMA31_XCNT_CUR 0xFFC0B134 /* DMA31 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA31_YCNT_CUR 0xFFC0B138 /* DMA31 Current Row Count (2D only) */ +#define DMA31_BWLCNT 0xFFC0B140 /* DMA31 Bandwidth Limit Count */ +#define DMA31_BWLCNT_CUR 0xFFC0B144 /* DMA31 Bandwidth Limit Count Current */ +#define DMA31_BWMCNT 0xFFC0B148 /* DMA31 Bandwidth Monitor Count */ +#define DMA31_BWMCNT_CUR 0xFFC0B14C /* DMA31 Bandwidth Monitor Count Current */ +#define DMA32_DSCPTR_NXT 0xFFC0B180 /* DMA32 Pointer to Next Initial Descriptor */ +#define DMA32_ADDRSTART 0xFFC0B184 /* DMA32 Start Address of Current Buffer */ +#define DMA32_CFG 0xFFC0B188 /* DMA32 Configuration Register */ +#define DMA32_XCNT 0xFFC0B18C /* DMA32 Inner Loop Count Start Value */ +#define DMA32_XMOD 0xFFC0B190 /* DMA32 Inner Loop Address Increment */ +#define DMA32_YCNT 0xFFC0B194 /* DMA32 Outer Loop Count Start Value (2D only) */ +#define DMA32_YMOD 0xFFC0B198 /* DMA32 Outer Loop Address Increment (2D only) */ +#define DMA32_DSCPTR_CUR 0xFFC0B1A4 /* DMA32 Current Descriptor Pointer */ +#define DMA32_DSCPTR_PRV 0xFFC0B1A8 /* DMA32 Previous Initial Descriptor Pointer */ +#define DMA32_ADDR_CUR 0xFFC0B1AC /* DMA32 Current Address */ +#define DMA32_STAT 0xFFC0B1B0 /* DMA32 Status Register */ +#define DMA32_XCNT_CUR 0xFFC0B1B4 /* DMA32 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA32_YCNT_CUR 0xFFC0B1B8 /* DMA32 Current Row Count (2D only) */ +#define DMA32_BWLCNT 0xFFC0B1C0 /* DMA32 Bandwidth Limit Count */ +#define DMA32_BWLCNT_CUR 0xFFC0B1C4 /* DMA32 Bandwidth Limit Count Current */ +#define DMA32_BWMCNT 0xFFC0B1C8 /* DMA32 Bandwidth Monitor Count */ +#define DMA32_BWMCNT_CUR 0xFFC0B1CC /* DMA32 Bandwidth Monitor Count Current */ +#define DMA33_DSCPTR_NXT 0xFFC0D000 /* DMA33 Pointer to Next Initial Descriptor */ +#define DMA33_ADDRSTART 0xFFC0D004 /* DMA33 Start Address of Current Buffer */ +#define DMA33_CFG 0xFFC0D008 /* DMA33 Configuration Register */ +#define DMA33_XCNT 0xFFC0D00C /* DMA33 Inner Loop Count Start Value */ +#define DMA33_XMOD 0xFFC0D010 /* DMA33 Inner Loop Address Increment */ +#define DMA33_YCNT 0xFFC0D014 /* DMA33 Outer Loop Count Start Value (2D only) */ +#define DMA33_YMOD 0xFFC0D018 /* DMA33 Outer Loop Address Increment (2D only) */ +#define DMA33_DSCPTR_CUR 0xFFC0D024 /* DMA33 Current Descriptor Pointer */ +#define DMA33_DSCPTR_PRV 0xFFC0D028 /* DMA33 Previous Initial Descriptor Pointer */ +#define DMA33_ADDR_CUR 0xFFC0D02C /* DMA33 Current Address */ +#define DMA33_STAT 0xFFC0D030 /* DMA33 Status Register */ +#define DMA33_XCNT_CUR 0xFFC0D034 /* DMA33 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA33_YCNT_CUR 0xFFC0D038 /* DMA33 Current Row Count (2D only) */ +#define DMA33_BWLCNT 0xFFC0D040 /* DMA33 Bandwidth Limit Count */ +#define DMA33_BWLCNT_CUR 0xFFC0D044 /* DMA33 Bandwidth Limit Count Current */ +#define DMA33_BWMCNT 0xFFC0D048 /* DMA33 Bandwidth Monitor Count */ +#define DMA33_BWMCNT_CUR 0xFFC0D04C /* DMA33 Bandwidth Monitor Count Current */ +#define DMA34_DSCPTR_NXT 0xFFC0D080 /* DMA34 Pointer to Next Initial Descriptor */ +#define DMA34_ADDRSTART 0xFFC0D084 /* DMA34 Start Address of Current Buffer */ +#define DMA34_CFG 0xFFC0D088 /* DMA34 Configuration Register */ +#define DMA34_XCNT 0xFFC0D08C /* DMA34 Inner Loop Count Start Value */ +#define DMA34_XMOD 0xFFC0D090 /* DMA34 Inner Loop Address Increment */ +#define DMA34_YCNT 0xFFC0D094 /* DMA34 Outer Loop Count Start Value (2D only) */ +#define DMA34_YMOD 0xFFC0D098 /* DMA34 Outer Loop Address Increment (2D only) */ +#define DMA34_DSCPTR_CUR 0xFFC0D0A4 /* DMA34 Current Descriptor Pointer */ +#define DMA34_DSCPTR_PRV 0xFFC0D0A8 /* DMA34 Previous Initial Descriptor Pointer */ +#define DMA34_ADDR_CUR 0xFFC0D0AC /* DMA34 Current Address */ +#define DMA34_STAT 0xFFC0D0B0 /* DMA34 Status Register */ +#define DMA34_XCNT_CUR 0xFFC0D0B4 /* DMA34 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA34_YCNT_CUR 0xFFC0D0B8 /* DMA34 Current Row Count (2D only) */ +#define DMA34_BWLCNT 0xFFC0D0C0 /* DMA34 Bandwidth Limit Count */ +#define DMA34_BWLCNT_CUR 0xFFC0D0C4 /* DMA34 Bandwidth Limit Count Current */ +#define DMA34_BWMCNT 0xFFC0D0C8 /* DMA34 Bandwidth Monitor Count */ +#define DMA34_BWMCNT_CUR 0xFFC0D0CC /* DMA34 Bandwidth Monitor Count Current */ +#define DMA35_DSCPTR_NXT 0xFFC10000 /* DMA35 Pointer to Next Initial Descriptor */ +#define DMA35_ADDRSTART 0xFFC10004 /* DMA35 Start Address of Current Buffer */ +#define DMA35_CFG 0xFFC10008 /* DMA35 Configuration Register */ +#define DMA35_XCNT 0xFFC1000C /* DMA35 Inner Loop Count Start Value */ +#define DMA35_XMOD 0xFFC10010 /* DMA35 Inner Loop Address Increment */ +#define DMA35_YCNT 0xFFC10014 /* DMA35 Outer Loop Count Start Value (2D only) */ +#define DMA35_YMOD 0xFFC10018 /* DMA35 Outer Loop Address Increment (2D only) */ +#define DMA35_DSCPTR_CUR 0xFFC10024 /* DMA35 Current Descriptor Pointer */ +#define DMA35_DSCPTR_PRV 0xFFC10028 /* DMA35 Previous Initial Descriptor Pointer */ +#define DMA35_ADDR_CUR 0xFFC1002C /* DMA35 Current Address */ +#define DMA35_STAT 0xFFC10030 /* DMA35 Status Register */ +#define DMA35_XCNT_CUR 0xFFC10034 /* DMA35 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA35_YCNT_CUR 0xFFC10038 /* DMA35 Current Row Count (2D only) */ +#define DMA35_BWLCNT 0xFFC10040 /* DMA35 Bandwidth Limit Count */ +#define DMA35_BWLCNT_CUR 0xFFC10044 /* DMA35 Bandwidth Limit Count Current */ +#define DMA35_BWMCNT 0xFFC10048 /* DMA35 Bandwidth Monitor Count */ +#define DMA35_BWMCNT_CUR 0xFFC1004C /* DMA35 Bandwidth Monitor Count Current */ +#define DMA36_DSCPTR_NXT 0xFFC10080 /* DMA36 Pointer to Next Initial Descriptor */ +#define DMA36_ADDRSTART 0xFFC10084 /* DMA36 Start Address of Current Buffer */ +#define DMA36_CFG 0xFFC10088 /* DMA36 Configuration Register */ +#define DMA36_XCNT 0xFFC1008C /* DMA36 Inner Loop Count Start Value */ +#define DMA36_XMOD 0xFFC10090 /* DMA36 Inner Loop Address Increment */ +#define DMA36_YCNT 0xFFC10094 /* DMA36 Outer Loop Count Start Value (2D only) */ +#define DMA36_YMOD 0xFFC10098 /* DMA36 Outer Loop Address Increment (2D only) */ +#define DMA36_DSCPTR_CUR 0xFFC100A4 /* DMA36 Current Descriptor Pointer */ +#define DMA36_DSCPTR_PRV 0xFFC100A8 /* DMA36 Previous Initial Descriptor Pointer */ +#define DMA36_ADDR_CUR 0xFFC100AC /* DMA36 Current Address */ +#define DMA36_STAT 0xFFC100B0 /* DMA36 Status Register */ +#define DMA36_XCNT_CUR 0xFFC100B4 /* DMA36 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA36_YCNT_CUR 0xFFC100B8 /* DMA36 Current Row Count (2D only) */ +#define DMA36_BWLCNT 0xFFC100C0 /* DMA36 Bandwidth Limit Count */ +#define DMA36_BWLCNT_CUR 0xFFC100C4 /* DMA36 Bandwidth Limit Count Current */ +#define DMA36_BWMCNT 0xFFC100C8 /* DMA36 Bandwidth Monitor Count */ +#define DMA36_BWMCNT_CUR 0xFFC100CC /* DMA36 Bandwidth Monitor Count Current */ +#define DMA37_DSCPTR_NXT 0xFFC10100 /* DMA37 Pointer to Next Initial Descriptor */ +#define DMA37_ADDRSTART 0xFFC10104 /* DMA37 Start Address of Current Buffer */ +#define DMA37_CFG 0xFFC10108 /* DMA37 Configuration Register */ +#define DMA37_XCNT 0xFFC1010C /* DMA37 Inner Loop Count Start Value */ +#define DMA37_XMOD 0xFFC10110 /* DMA37 Inner Loop Address Increment */ +#define DMA37_YCNT 0xFFC10114 /* DMA37 Outer Loop Count Start Value (2D only) */ +#define DMA37_YMOD 0xFFC10118 /* DMA37 Outer Loop Address Increment (2D only) */ +#define DMA37_DSCPTR_CUR 0xFFC10124 /* DMA37 Current Descriptor Pointer */ +#define DMA37_DSCPTR_PRV 0xFFC10128 /* DMA37 Previous Initial Descriptor Pointer */ +#define DMA37_ADDR_CUR 0xFFC1012C /* DMA37 Current Address */ +#define DMA37_STAT 0xFFC10130 /* DMA37 Status Register */ +#define DMA37_XCNT_CUR 0xFFC10134 /* DMA37 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA37_YCNT_CUR 0xFFC10138 /* DMA37 Current Row Count (2D only) */ +#define DMA37_BWLCNT 0xFFC10140 /* DMA37 Bandwidth Limit Count */ +#define DMA37_BWLCNT_CUR 0xFFC10144 /* DMA37 Bandwidth Limit Count Current */ +#define DMA37_BWMCNT 0xFFC10148 /* DMA37 Bandwidth Monitor Count */ +#define DMA37_BWMCNT_CUR 0xFFC1014C /* DMA37 Bandwidth Monitor Count Current */ +#define DMA38_DSCPTR_NXT 0xFFC12000 /* DMA38 Pointer to Next Initial Descriptor */ +#define DMA38_ADDRSTART 0xFFC12004 /* DMA38 Start Address of Current Buffer */ +#define DMA38_CFG 0xFFC12008 /* DMA38 Configuration Register */ +#define DMA38_XCNT 0xFFC1200C /* DMA38 Inner Loop Count Start Value */ +#define DMA38_XMOD 0xFFC12010 /* DMA38 Inner Loop Address Increment */ +#define DMA38_YCNT 0xFFC12014 /* DMA38 Outer Loop Count Start Value (2D only) */ +#define DMA38_YMOD 0xFFC12018 /* DMA38 Outer Loop Address Increment (2D only) */ +#define DMA38_DSCPTR_CUR 0xFFC12024 /* DMA38 Current Descriptor Pointer */ +#define DMA38_DSCPTR_PRV 0xFFC12028 /* DMA38 Previous Initial Descriptor Pointer */ +#define DMA38_ADDR_CUR 0xFFC1202C /* DMA38 Current Address */ +#define DMA38_STAT 0xFFC12030 /* DMA38 Status Register */ +#define DMA38_XCNT_CUR 0xFFC12034 /* DMA38 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA38_YCNT_CUR 0xFFC12038 /* DMA38 Current Row Count (2D only) */ +#define DMA38_BWLCNT 0xFFC12040 /* DMA38 Bandwidth Limit Count */ +#define DMA38_BWLCNT_CUR 0xFFC12044 /* DMA38 Bandwidth Limit Count Current */ +#define DMA38_BWMCNT 0xFFC12048 /* DMA38 Bandwidth Monitor Count */ +#define DMA38_BWMCNT_CUR 0xFFC1204C /* DMA38 Bandwidth Monitor Count Current */ +#define DMA39_DSCPTR_NXT 0xFFC12080 /* DMA39 Pointer to Next Initial Descriptor */ +#define DMA39_ADDRSTART 0xFFC12084 /* DMA39 Start Address of Current Buffer */ +#define DMA39_CFG 0xFFC12088 /* DMA39 Configuration Register */ +#define DMA39_XCNT 0xFFC1208C /* DMA39 Inner Loop Count Start Value */ +#define DMA39_XMOD 0xFFC12090 /* DMA39 Inner Loop Address Increment */ +#define DMA39_YCNT 0xFFC12094 /* DMA39 Outer Loop Count Start Value (2D only) */ +#define DMA39_YMOD 0xFFC12098 /* DMA39 Outer Loop Address Increment (2D only) */ +#define DMA39_DSCPTR_CUR 0xFFC120A4 /* DMA39 Current Descriptor Pointer */ +#define DMA39_DSCPTR_PRV 0xFFC120A8 /* DMA39 Previous Initial Descriptor Pointer */ +#define DMA39_ADDR_CUR 0xFFC120AC /* DMA39 Current Address */ +#define DMA39_STAT 0xFFC120B0 /* DMA39 Status Register */ +#define DMA39_XCNT_CUR 0xFFC120B4 /* DMA39 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA39_YCNT_CUR 0xFFC120B8 /* DMA39 Current Row Count (2D only) */ +#define DMA39_BWLCNT 0xFFC120C0 /* DMA39 Bandwidth Limit Count */ +#define DMA39_BWLCNT_CUR 0xFFC120C4 /* DMA39 Bandwidth Limit Count Current */ +#define DMA39_BWMCNT 0xFFC120C8 /* DMA39 Bandwidth Monitor Count */ +#define DMA39_BWMCNT_CUR 0xFFC120CC /* DMA39 Bandwidth Monitor Count Current */ +#define DMA40_DSCPTR_NXT 0xFFC12100 /* DMA40 Pointer to Next Initial Descriptor */ +#define DMA40_ADDRSTART 0xFFC12104 /* DMA40 Start Address of Current Buffer */ +#define DMA40_CFG 0xFFC12108 /* DMA40 Configuration Register */ +#define DMA40_XCNT 0xFFC1210C /* DMA40 Inner Loop Count Start Value */ +#define DMA40_XMOD 0xFFC12110 /* DMA40 Inner Loop Address Increment */ +#define DMA40_YCNT 0xFFC12114 /* DMA40 Outer Loop Count Start Value (2D only) */ +#define DMA40_YMOD 0xFFC12118 /* DMA40 Outer Loop Address Increment (2D only) */ +#define DMA40_DSCPTR_CUR 0xFFC12124 /* DMA40 Current Descriptor Pointer */ +#define DMA40_DSCPTR_PRV 0xFFC12128 /* DMA40 Previous Initial Descriptor Pointer */ +#define DMA40_ADDR_CUR 0xFFC1212C /* DMA40 Current Address */ +#define DMA40_STAT 0xFFC12130 /* DMA40 Status Register */ +#define DMA40_XCNT_CUR 0xFFC12134 /* DMA40 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA40_YCNT_CUR 0xFFC12138 /* DMA40 Current Row Count (2D only) */ +#define DMA40_BWLCNT 0xFFC12140 /* DMA40 Bandwidth Limit Count */ +#define DMA40_BWLCNT_CUR 0xFFC12144 /* DMA40 Bandwidth Limit Count Current */ +#define DMA40_BWMCNT 0xFFC12148 /* DMA40 Bandwidth Monitor Count */ +#define DMA40_BWMCNT_CUR 0xFFC1214C /* DMA40 Bandwidth Monitor Count Current */ +#define DMA41_DSCPTR_NXT 0xFFC12180 /* DMA41 Pointer to Next Initial Descriptor */ +#define DMA41_ADDRSTART 0xFFC12184 /* DMA41 Start Address of Current Buffer */ +#define DMA41_CFG 0xFFC12188 /* DMA41 Configuration Register */ +#define DMA41_XCNT 0xFFC1218C /* DMA41 Inner Loop Count Start Value */ +#define DMA41_XMOD 0xFFC12190 /* DMA41 Inner Loop Address Increment */ +#define DMA41_YCNT 0xFFC12194 /* DMA41 Outer Loop Count Start Value (2D only) */ +#define DMA41_YMOD 0xFFC12198 /* DMA41 Outer Loop Address Increment (2D only) */ +#define DMA41_DSCPTR_CUR 0xFFC121A4 /* DMA41 Current Descriptor Pointer */ +#define DMA41_DSCPTR_PRV 0xFFC121A8 /* DMA41 Previous Initial Descriptor Pointer */ +#define DMA41_ADDR_CUR 0xFFC121AC /* DMA41 Current Address */ +#define DMA41_STAT 0xFFC121B0 /* DMA41 Status Register */ +#define DMA41_XCNT_CUR 0xFFC121B4 /* DMA41 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA41_YCNT_CUR 0xFFC121B8 /* DMA41 Current Row Count (2D only) */ +#define DMA41_BWLCNT 0xFFC121C0 /* DMA41 Bandwidth Limit Count */ +#define DMA41_BWLCNT_CUR 0xFFC121C4 /* DMA41 Bandwidth Limit Count Current */ +#define DMA41_BWMCNT 0xFFC121C8 /* DMA41 Bandwidth Monitor Count */ +#define DMA41_BWMCNT_CUR 0xFFC121CC /* DMA41 Bandwidth Monitor Count Current */ +#define DMA42_DSCPTR_NXT 0xFFC14000 /* DMA42 Pointer to Next Initial Descriptor */ +#define DMA42_ADDRSTART 0xFFC14004 /* DMA42 Start Address of Current Buffer */ +#define DMA42_CFG 0xFFC14008 /* DMA42 Configuration Register */ +#define DMA42_XCNT 0xFFC1400C /* DMA42 Inner Loop Count Start Value */ +#define DMA42_XMOD 0xFFC14010 /* DMA42 Inner Loop Address Increment */ +#define DMA42_YCNT 0xFFC14014 /* DMA42 Outer Loop Count Start Value (2D only) */ +#define DMA42_YMOD 0xFFC14018 /* DMA42 Outer Loop Address Increment (2D only) */ +#define DMA42_DSCPTR_CUR 0xFFC14024 /* DMA42 Current Descriptor Pointer */ +#define DMA42_DSCPTR_PRV 0xFFC14028 /* DMA42 Previous Initial Descriptor Pointer */ +#define DMA42_ADDR_CUR 0xFFC1402C /* DMA42 Current Address */ +#define DMA42_STAT 0xFFC14030 /* DMA42 Status Register */ +#define DMA42_XCNT_CUR 0xFFC14034 /* DMA42 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA42_YCNT_CUR 0xFFC14038 /* DMA42 Current Row Count (2D only) */ +#define DMA42_BWLCNT 0xFFC14040 /* DMA42 Bandwidth Limit Count */ +#define DMA42_BWLCNT_CUR 0xFFC14044 /* DMA42 Bandwidth Limit Count Current */ +#define DMA42_BWMCNT 0xFFC14048 /* DMA42 Bandwidth Monitor Count */ +#define DMA42_BWMCNT_CUR 0xFFC1404C /* DMA42 Bandwidth Monitor Count Current */ +#define DMA43_DSCPTR_NXT 0xFFC14080 /* DMA43 Pointer to Next Initial Descriptor */ +#define DMA43_ADDRSTART 0xFFC14084 /* DMA43 Start Address of Current Buffer */ +#define DMA43_CFG 0xFFC14088 /* DMA43 Configuration Register */ +#define DMA43_XCNT 0xFFC1408C /* DMA43 Inner Loop Count Start Value */ +#define DMA43_XMOD 0xFFC14090 /* DMA43 Inner Loop Address Increment */ +#define DMA43_YCNT 0xFFC14094 /* DMA43 Outer Loop Count Start Value (2D only) */ +#define DMA43_YMOD 0xFFC14098 /* DMA43 Outer Loop Address Increment (2D only) */ +#define DMA43_DSCPTR_CUR 0xFFC140A4 /* DMA43 Current Descriptor Pointer */ +#define DMA43_DSCPTR_PRV 0xFFC140A8 /* DMA43 Previous Initial Descriptor Pointer */ +#define DMA43_ADDR_CUR 0xFFC140AC /* DMA43 Current Address */ +#define DMA43_STAT 0xFFC140B0 /* DMA43 Status Register */ +#define DMA43_XCNT_CUR 0xFFC140B4 /* DMA43 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA43_YCNT_CUR 0xFFC140B8 /* DMA43 Current Row Count (2D only) */ +#define DMA43_BWLCNT 0xFFC140C0 /* DMA43 Bandwidth Limit Count */ +#define DMA43_BWLCNT_CUR 0xFFC140C4 /* DMA43 Bandwidth Limit Count Current */ +#define DMA43_BWMCNT 0xFFC140C8 /* DMA43 Bandwidth Monitor Count */ +#define DMA43_BWMCNT_CUR 0xFFC140CC /* DMA43 Bandwidth Monitor Count Current */ +#define DMA44_DSCPTR_NXT 0xFFC14100 /* DMA44 Pointer to Next Initial Descriptor */ +#define DMA44_ADDRSTART 0xFFC14104 /* DMA44 Start Address of Current Buffer */ +#define DMA44_CFG 0xFFC14108 /* DMA44 Configuration Register */ +#define DMA44_XCNT 0xFFC1410C /* DMA44 Inner Loop Count Start Value */ +#define DMA44_XMOD 0xFFC14110 /* DMA44 Inner Loop Address Increment */ +#define DMA44_YCNT 0xFFC14114 /* DMA44 Outer Loop Count Start Value (2D only) */ +#define DMA44_YMOD 0xFFC14118 /* DMA44 Outer Loop Address Increment (2D only) */ +#define DMA44_DSCPTR_CUR 0xFFC14124 /* DMA44 Current Descriptor Pointer */ +#define DMA44_DSCPTR_PRV 0xFFC14128 /* DMA44 Previous Initial Descriptor Pointer */ +#define DMA44_ADDR_CUR 0xFFC1412C /* DMA44 Current Address */ +#define DMA44_STAT 0xFFC14130 /* DMA44 Status Register */ +#define DMA44_XCNT_CUR 0xFFC14134 /* DMA44 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA44_YCNT_CUR 0xFFC14138 /* DMA44 Current Row Count (2D only) */ +#define DMA44_BWLCNT 0xFFC14140 /* DMA44 Bandwidth Limit Count */ +#define DMA44_BWLCNT_CUR 0xFFC14144 /* DMA44 Bandwidth Limit Count Current */ +#define DMA44_BWMCNT 0xFFC14148 /* DMA44 Bandwidth Monitor Count */ +#define DMA44_BWMCNT_CUR 0xFFC1414C /* DMA44 Bandwidth Monitor Count Current */ +#define DMA45_DSCPTR_NXT 0xFFC14180 /* DMA45 Pointer to Next Initial Descriptor */ +#define DMA45_ADDRSTART 0xFFC14184 /* DMA45 Start Address of Current Buffer */ +#define DMA45_CFG 0xFFC14188 /* DMA45 Configuration Register */ +#define DMA45_XCNT 0xFFC1418C /* DMA45 Inner Loop Count Start Value */ +#define DMA45_XMOD 0xFFC14190 /* DMA45 Inner Loop Address Increment */ +#define DMA45_YCNT 0xFFC14194 /* DMA45 Outer Loop Count Start Value (2D only) */ +#define DMA45_YMOD 0xFFC14198 /* DMA45 Outer Loop Address Increment (2D only) */ +#define DMA45_DSCPTR_CUR 0xFFC141A4 /* DMA45 Current Descriptor Pointer */ +#define DMA45_DSCPTR_PRV 0xFFC141A8 /* DMA45 Previous Initial Descriptor Pointer */ +#define DMA45_ADDR_CUR 0xFFC141AC /* DMA45 Current Address */ +#define DMA45_STAT 0xFFC141B0 /* DMA45 Status Register */ +#define DMA45_XCNT_CUR 0xFFC141B4 /* DMA45 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA45_YCNT_CUR 0xFFC141B8 /* DMA45 Current Row Count (2D only) */ +#define DMA45_BWLCNT 0xFFC141C0 /* DMA45 Bandwidth Limit Count */ +#define DMA45_BWLCNT_CUR 0xFFC141C4 /* DMA45 Bandwidth Limit Count Current */ +#define DMA45_BWMCNT 0xFFC141C8 /* DMA45 Bandwidth Monitor Count */ +#define DMA45_BWMCNT_CUR 0xFFC141CC /* DMA45 Bandwidth Monitor Count Current */ +#define DMA46_DSCPTR_NXT 0xFFC14200 /* DMA46 Pointer to Next Initial Descriptor */ +#define DMA46_ADDRSTART 0xFFC14204 /* DMA46 Start Address of Current Buffer */ +#define DMA46_CFG 0xFFC14208 /* DMA46 Configuration Register */ +#define DMA46_XCNT 0xFFC1420C /* DMA46 Inner Loop Count Start Value */ +#define DMA46_XMOD 0xFFC14210 /* DMA46 Inner Loop Address Increment */ +#define DMA46_YCNT 0xFFC14214 /* DMA46 Outer Loop Count Start Value (2D only) */ +#define DMA46_YMOD 0xFFC14218 /* DMA46 Outer Loop Address Increment (2D only) */ +#define DMA46_DSCPTR_CUR 0xFFC14224 /* DMA46 Current Descriptor Pointer */ +#define DMA46_DSCPTR_PRV 0xFFC14228 /* DMA46 Previous Initial Descriptor Pointer */ +#define DMA46_ADDR_CUR 0xFFC1422C /* DMA46 Current Address */ +#define DMA46_STAT 0xFFC14230 /* DMA46 Status Register */ +#define DMA46_XCNT_CUR 0xFFC14234 /* DMA46 Current Count(1D) or intra-row XCNT (2D) */ +#define DMA46_YCNT_CUR 0xFFC14238 /* DMA46 Current Row Count (2D only) */ +#define DMA46_BWLCNT 0xFFC14240 /* DMA46 Bandwidth Limit Count */ +#define DMA46_BWLCNT_CUR 0xFFC14244 /* DMA46 Bandwidth Limit Count Current */ +#define DMA46_BWMCNT 0xFFC14248 /* DMA46 Bandwidth Monitor Count */ +#define DMA46_BWMCNT_CUR 0xFFC1424C /* DMA46 Bandwidth Monitor Count Current */ +#define ACM0_CTL 0xFFC45000 /* ACM0 ACM Control Register */ +#define ACM0_TC0 0xFFC45004 /* ACM0 ACM Timing Configuration 0 Register */ +#define ACM0_TC1 0xFFC45008 /* ACM0 ACM Timing Configuration 1 Register */ +#define ACM0_STAT 0xFFC4500C /* ACM0 ACM Status Register */ +#define ACM0_EVSTAT 0xFFC45010 /* ACM0 ACM Event Status Register */ +#define ACM0_EVMSK 0xFFC45014 /* ACM0 ACM Completed Event Interrupt Mask Register */ +#define ACM0_MEVSTAT 0xFFC45018 /* ACM0 ACM Missed Event Status Register */ +#define ACM0_MEVMSK 0xFFC4501C /* ACM0 ACM Missed Event Interrupt Mask Register */ +#define ACM0_EVCTL0 0xFFC45020 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL1 0xFFC45024 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL2 0xFFC45028 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL3 0xFFC4502C /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL4 0xFFC45030 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL5 0xFFC45034 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL6 0xFFC45038 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL7 0xFFC4503C /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL8 0xFFC45040 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL9 0xFFC45044 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL10 0xFFC45048 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL11 0xFFC4504C /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL12 0xFFC45050 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL13 0xFFC45054 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL14 0xFFC45058 /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVCTL15 0xFFC4505C /* ACM0 ACM Eventn Control Register */ +#define ACM0_EVTIME0 0xFFC45060 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME1 0xFFC45064 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME2 0xFFC45068 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME3 0xFFC4506C /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME4 0xFFC45070 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME5 0xFFC45074 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME6 0xFFC45078 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME7 0xFFC4507C /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME8 0xFFC45080 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME9 0xFFC45084 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME10 0xFFC45088 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME11 0xFFC4508C /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME12 0xFFC45090 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME13 0xFFC45094 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME14 0xFFC45098 /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVTIME15 0xFFC4509C /* ACM0 ACM Eventn Time Register */ +#define ACM0_EVORD0 0xFFC450A0 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD1 0xFFC450A4 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD2 0xFFC450A8 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD3 0xFFC450AC /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD4 0xFFC450B0 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD5 0xFFC450B4 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD6 0xFFC450B8 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD7 0xFFC450BC /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD8 0xFFC450C0 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD9 0xFFC450C4 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD10 0xFFC450C8 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD11 0xFFC450CC /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD12 0xFFC450D0 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD13 0xFFC450D4 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD14 0xFFC450D8 /* ACM0 ACM Eventn Order Register */ +#define ACM0_EVORD15 0xFFC450DC /* ACM0 ACM Eventn Order Register */ +#define ACM0_TMR0 0xFFC450E8 /* ACM0 ACM Timer 0 Register */ +#define ACM0_TMR1 0xFFC450EC /* ACM0 ACM Timer 1 Register */ +#define DMC0_ID 0xFFC80000 /* DMC0 Identification Register */ +#define DMC0_CTL 0xFFC80004 /* DMC0 Control Register */ +#define DMC0_STAT 0xFFC80008 /* DMC0 Status Register */ +#define DMC0_EFFCTL 0xFFC8000C /* DMC0 Efficiency Controller */ +#define DMC0_PRIO 0xFFC80010 /* DMC0 Priority ID Register */ +#define DMC0_PRIOMSK 0xFFC80014 /* DMC0 Priority ID Mask */ +#define DMC0_CFG 0xFFC80040 /* DMC0 SDRAM Configuration */ +#define DMC0_TR0 0xFFC80044 /* DMC0 Timing Register 0 */ +#define DMC0_TR1 0xFFC80048 /* DMC0 Timing Register 1 */ +#define DMC0_TR2 0xFFC8004C /* DMC0 Timing Register 2 */ +#define DMC0_MSK 0xFFC8005C /* DMC0 Mode Register Mask */ +#define DMC0_MR 0xFFC80060 /* DMC0 Mode Shadow register */ +#define DMC0_EMR1 0xFFC80064 /* DMC0 EMR1 Shadow Register */ +#define DMC0_EMR2 0xFFC80068 /* DMC0 EMR2 Shadow Register */ +#define DMC0_EMR3 0xFFC8006C /* DMC0 EMR3 Shadow Register */ +#define DMC0_DLLCTL 0xFFC80080 /* DMC0 DLL Control Register */ +#define DMC0_PADCTL 0xFFC800C0 /* DMC0 PAD Control Register 0 */ +#define SCB0_ARBR0 0xFFCA2408 /* SCB0 Read-channel Arbitration Register for MIn */ +#define SCB0_ARBR1 0xFFCA2428 /* SCB0 Read-channel Arbitration Register for MIn */ +#define SCB0_ARBR2 0xFFCA2448 /* SCB0 Read-channel Arbitration Register for MIn */ +#define SCB0_ARBR3 0xFFCA2468 /* SCB0 Read-channel Arbitration Register for MIn */ +#define SCB0_ARBR4 0xFFCA2488 /* SCB0 Read-channel Arbitration Register for MIn */ +#define SCB0_ARBR5 0xFFCA24A8 /* SCB0 Read-channel Arbitration Register for MIn */ +#define SCB0_ARBW0 0xFFCA240C /* SCB0 Write-channel Arbitration Register for MIn */ +#define SCB0_ARBW1 0xFFCA242C /* SCB0 Write-channel Arbitration Register for MIn */ +#define SCB0_ARBW2 0xFFCA244C /* SCB0 Write-channel Arbitration Register for MIn */ +#define SCB0_ARBW3 0xFFCA246C /* SCB0 Write-channel Arbitration Register for MIn */ +#define SCB0_ARBW4 0xFFCA248C /* SCB0 Write-channel Arbitration Register for MIn */ +#define SCB0_ARBW5 0xFFCA24AC /* SCB0 Write-channel Arbitration Register for MIn */ +#define SCB0_SLAVES 0xFFCA2FC0 /* SCB0 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB0_MASTERS 0xFFCA2FC4 /* SCB0 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB1_ARBR0 0xFFC42408 /* SCB1 Read-channel Arbitration Register for MIn */ +#define SCB1_ARBW0 0xFFC4240C /* SCB1 Write-channel Arbitration Register for MIn */ +#define SCB1_SLAVES 0xFFC42FC0 /* SCB1 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB1_MASTERS 0xFFC42FC4 /* SCB1 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB2_ARBR0 0xFFC06408 /* SCB2 Read-channel Arbitration Register for MIn */ +#define SCB2_ARBW0 0xFFC0640C /* SCB2 Write-channel Arbitration Register for MIn */ +#define SCB2_SLAVES 0xFFC06FC0 /* SCB2 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB2_MASTERS 0xFFC06FC4 /* SCB2 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB3_ARBR0 0xFFC08408 /* SCB3 Read-channel Arbitration Register for MIn */ +#define SCB3_ARBW0 0xFFC0840C /* SCB3 Write-channel Arbitration Register for MIn */ +#define SCB3_SLAVES 0xFFC08FC0 /* SCB3 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB3_MASTERS 0xFFC08FC4 /* SCB3 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB4_ARBR0 0xFFC0A408 /* SCB4 Read-channel Arbitration Register for MIn */ +#define SCB4_ARBW0 0xFFC0A40C /* SCB4 Write-channel Arbitration Register for MIn */ +#define SCB4_SLAVES 0xFFC0AFC0 /* SCB4 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB4_MASTERS 0xFFC0AFC4 /* SCB4 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB5_ARBR0 0xFFC0C408 /* SCB5 Read-channel Arbitration Register for MIn */ +#define SCB5_ARBW0 0xFFC0C40C /* SCB5 Write-channel Arbitration Register for MIn */ +#define SCB5_SLAVES 0xFFC0CFC0 /* SCB5 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB5_MASTERS 0xFFC0CFC4 /* SCB5 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB6_ARBR0 0xFFC0E408 /* SCB6 Read-channel Arbitration Register for MIn */ +#define SCB6_ARBW0 0xFFC0E40C /* SCB6 Write-channel Arbitration Register for MIn */ +#define SCB6_SLAVES 0xFFC0EFC0 /* SCB6 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB6_MASTERS 0xFFC0EFC4 /* SCB6 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB7_ARBR0 0xFFC11408 /* SCB7 Read-channel Arbitration Register for MIn */ +#define SCB7_ARBW0 0xFFC1140C /* SCB7 Write-channel Arbitration Register for MIn */ +#define SCB7_SLAVES 0xFFC11FC0 /* SCB7 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB7_MASTERS 0xFFC11FC4 /* SCB7 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB8_ARBR0 0xFFC13408 /* SCB8 Read-channel Arbitration Register for MIn */ +#define SCB8_ARBW0 0xFFC1340C /* SCB8 Write-channel Arbitration Register for MIn */ +#define SCB8_SLAVES 0xFFC13FC0 /* SCB8 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB8_MASTERS 0xFFC13FC4 /* SCB8 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB9_ARBR0 0xFFC15408 /* SCB9 Read-channel Arbitration Register for MIn */ +#define SCB9_ARBW0 0xFFC1540C /* SCB9 Write-channel Arbitration Register for MIn */ +#define SCB9_SLAVES 0xFFC15FC0 /* SCB9 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB9_MASTERS 0xFFC15FC4 /* SCB9 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB10_ARBR0 0xFFCA1408 /* SCB10 Read-channel Arbitration Register for MIn */ +#define SCB10_ARBR1 0xFFCA1428 /* SCB10 Read-channel Arbitration Register for MIn */ +#define SCB10_ARBR2 0xFFCA1448 /* SCB10 Read-channel Arbitration Register for MIn */ +#define SCB10_ARBW0 0xFFCA140C /* SCB10 Write-channel Arbitration Register for MIn */ +#define SCB10_ARBW1 0xFFCA142C /* SCB10 Write-channel Arbitration Register for MIn */ +#define SCB10_ARBW2 0xFFCA144C /* SCB10 Write-channel Arbitration Register for MIn */ +#define SCB10_SLAVES 0xFFCA1FC0 /* SCB10 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB10_MASTERS 0xFFCA1FC4 /* SCB10 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define SCB11_ARBR0 0xFFCA0408 /* SCB11 Read-channel Arbitration Register for MIn */ +#define SCB11_ARBR1 0xFFCA0428 /* SCB11 Read-channel Arbitration Register for MIn */ +#define SCB11_ARBR2 0xFFCA0448 /* SCB11 Read-channel Arbitration Register for MIn */ +#define SCB11_ARBR3 0xFFCA0468 /* SCB11 Read-channel Arbitration Register for MIn */ +#define SCB11_ARBR4 0xFFCA0488 /* SCB11 Read-channel Arbitration Register for MIn */ +#define SCB11_ARBR5 0xFFCA04A8 /* SCB11 Read-channel Arbitration Register for MIn */ +#define SCB11_ARBR6 0xFFCA04C8 /* SCB11 Read-channel Arbitration Register for MIn */ +#define SCB11_ARBW0 0xFFCA040C /* SCB11 Write-channel Arbitration Register for MIn */ +#define SCB11_ARBW1 0xFFCA042C /* SCB11 Write-channel Arbitration Register for MIn */ +#define SCB11_ARBW2 0xFFCA044C /* SCB11 Write-channel Arbitration Register for MIn */ +#define SCB11_ARBW3 0xFFCA046C /* SCB11 Write-channel Arbitration Register for MIn */ +#define SCB11_ARBW4 0xFFCA048C /* SCB11 Write-channel Arbitration Register for MIn */ +#define SCB11_ARBW5 0xFFCA04AC /* SCB11 Write-channel Arbitration Register for MIn */ +#define SCB11_ARBW6 0xFFCA04CC /* SCB11 Write-channel Arbitration Register for MIn */ +#define SCB11_SLAVES 0xFFCA0FC0 /* SCB11 Number of Slave Interfaces in Matrix (Reset = $NUM_SLOTS) */ +#define SCB11_MASTERS 0xFFCA0FC4 /* SCB11 Number of Master Interfaces in Matrix (Reset = $NUM_MASTERS) */ +#define L2_CTL 0xFFCA3000 /* L2CTL0 L2 Control Register */ +#define L2_ACTL_C0 0xFFCA3004 /* L2CTL0 L2 Core 0 Access Control Register */ +#define L2_ACTL_C1 0xFFCA3008 /* L2CTL0 L2 Core 1 Access Control Register */ +#define L2_ACTL_SYS 0xFFCA300C /* L2CTL0 L2 System Access Control Register */ +#define L2_STAT 0xFFCA3010 /* L2CTL0 L2 Status Register */ +#define L2_RPCR 0xFFCA3014 /* L2CTL0 L2 Read Priority Count Register */ +#define L2_WPCR 0xFFCA3018 /* L2CTL0 L2 Write Priority Count Register */ +#define L2_RFA 0xFFCA3024 /* L2CTL0 L2 Refresh Address Regsiter */ +#define L2_ERRADDR0 0xFFCA3040 /* L2CTL0 L2 Bank 0 ECC Error Address Register */ +#define L2_ERRADDR1 0xFFCA3044 /* L2CTL0 L2 Bank 1 ECC Error Address Register */ +#define L2_ERRADDR2 0xFFCA3048 /* L2CTL0 L2 Bank 2 ECC Error Address Register */ +#define L2_ERRADDR3 0xFFCA304C /* L2CTL0 L2 Bank 3 ECC Error Address Register */ +#define L2_ERRADDR4 0xFFCA3050 /* L2CTL0 L2 Bank 4 ECC Error Address Register */ +#define L2_ERRADDR5 0xFFCA3054 /* L2CTL0 L2 Bank 5 ECC Error Address Register */ +#define L2_ERRADDR6 0xFFCA3058 /* L2CTL0 L2 Bank 6 ECC Error Address Register */ +#define L2_ERRADDR7 0xFFCA305C /* L2CTL0 L2 Bank 7 ECC Error Address Register */ +#define L2_ET0 0xFFCA3080 /* L2CTL0 L2 AXI Error 0 Type Register */ +#define L2_EADDR0 0xFFCA3084 /* L2CTL0 L2 AXI Error 0 Address Register */ +#define L2_ET1 0xFFCA3088 /* L2CTL0 L2 AXI Error 1 Type Register */ +#define L2_EADDR1 0xFFCA308C /* L2CTL0 L2 AXI Error 1 Address Register */ +#define SEC0_CCTL0 0xFFCA4400 /* SEC0 Core Control Register n */ +#define SEC0_CCTL1 0xFFCA4440 /* SEC0 Core Control Register n */ +#define SEC0_CSTAT0 0xFFCA4404 /* SEC0 Core Status Register n */ +#define SEC0_CSTAT1 0xFFCA4444 /* SEC0 Core Status Register n */ +#define SEC0_CPND0 0xFFCA4408 /* SEC0 Core Pending IRQ Register n */ +#define SEC0_CPND1 0xFFCA4448 /* SEC0 Core Pending IRQ Register n */ +#define SEC0_CACT0 0xFFCA440C /* SEC0 Core Active IRQ Register n */ +#define SEC0_CACT1 0xFFCA444C /* SEC0 Core Active IRQ Register n */ +#define SEC0_CPMSK0 0xFFCA4410 /* SEC0 Core IRQ Priority Mask Register n */ +#define SEC0_CPMSK1 0xFFCA4450 /* SEC0 Core IRQ Priority Mask Register n */ +#define SEC0_CGMSK0 0xFFCA4414 /* SEC0 Core IRQ Group Mask Register n */ +#define SEC0_CGMSK1 0xFFCA4454 /* SEC0 Core IRQ Group Mask Register n */ +#define SEC0_CPLVL0 0xFFCA4418 /* SEC0 Core IRQ Priority Level Register n */ +#define SEC0_CPLVL1 0xFFCA4458 /* SEC0 Core IRQ Priority Level Register n */ +#define SEC0_CSID0 0xFFCA441C /* SEC0 Core IRQ Source ID Register n */ +#define SEC0_CSID1 0xFFCA445C /* SEC0 Core IRQ Source ID Register n */ +#define SEC0_FCTL 0xFFCA4010 /* SEC0 Fault Control Register */ +#define SEC0_FSTAT 0xFFCA4014 /* SEC0 Fault Status Register */ +#define SEC0_FSID 0xFFCA4018 /* SEC0 Fault Source ID Register */ +#define SEC0_FEND 0xFFCA401C /* SEC0 Fault End Register */ +#define SEC0_FDLY 0xFFCA4020 /* SEC0 Fault Delay Register */ +#define SEC0_FDLY_CUR 0xFFCA4024 /* SEC0 Fault Delay Current Register */ +#define SEC0_FSRDLY 0xFFCA4028 /* SEC0 Fault System Reset Delay Register */ +#define SEC0_FSRDLY_CUR 0xFFCA402C /* SEC0 Fault System Reset Delay Current Register */ +#define SEC0_FCOPP 0xFFCA4030 /* SEC0 Fault COP Period Register */ +#define SEC0_FCOPP_CUR 0xFFCA4034 /* SEC0 Fault COP Period Current Register */ +#define SEC0_GCTL 0xFFCA4000 /* SEC0 Global Control Register */ +#define SEC0_GSTAT 0xFFCA4004 /* SEC0 Global Status Register */ +#define SEC0_RAISE 0xFFCA4008 /* SEC0 Global Raise Register */ +#define SEC0_END 0xFFCA400C /* SEC0 Global End Register */ +#define SEC0_SCTL0 0xFFCA4800 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL1 0xFFCA4808 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL2 0xFFCA4810 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL3 0xFFCA4818 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL4 0xFFCA4820 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL5 0xFFCA4828 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL6 0xFFCA4830 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL7 0xFFCA4838 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL8 0xFFCA4840 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL9 0xFFCA4848 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL10 0xFFCA4850 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL11 0xFFCA4858 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL12 0xFFCA4860 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL13 0xFFCA4868 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL14 0xFFCA4870 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL15 0xFFCA4878 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL16 0xFFCA4880 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL17 0xFFCA4888 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL18 0xFFCA4890 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL19 0xFFCA4898 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL20 0xFFCA48A0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL21 0xFFCA48A8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL22 0xFFCA48B0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL23 0xFFCA48B8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL24 0xFFCA48C0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL25 0xFFCA48C8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL26 0xFFCA48D0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL27 0xFFCA48D8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL28 0xFFCA48E0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL29 0xFFCA48E8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL30 0xFFCA48F0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL31 0xFFCA48F8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL32 0xFFCA4900 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL33 0xFFCA4908 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL34 0xFFCA4910 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL35 0xFFCA4918 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL36 0xFFCA4920 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL37 0xFFCA4928 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL38 0xFFCA4930 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL39 0xFFCA4938 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL40 0xFFCA4940 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL41 0xFFCA4948 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL42 0xFFCA4950 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL43 0xFFCA4958 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL44 0xFFCA4960 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL45 0xFFCA4968 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL46 0xFFCA4970 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL47 0xFFCA4978 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL48 0xFFCA4980 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL49 0xFFCA4988 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL50 0xFFCA4990 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL51 0xFFCA4998 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL52 0xFFCA49A0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL53 0xFFCA49A8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL54 0xFFCA49B0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL55 0xFFCA49B8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL56 0xFFCA49C0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL57 0xFFCA49C8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL58 0xFFCA49D0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL59 0xFFCA49D8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL60 0xFFCA49E0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL61 0xFFCA49E8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL62 0xFFCA49F0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL63 0xFFCA49F8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL64 0xFFCA4A00 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL65 0xFFCA4A08 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL66 0xFFCA4A10 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL67 0xFFCA4A18 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL68 0xFFCA4A20 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL69 0xFFCA4A28 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL70 0xFFCA4A30 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL71 0xFFCA4A38 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL72 0xFFCA4A40 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL73 0xFFCA4A48 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL74 0xFFCA4A50 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL75 0xFFCA4A58 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL76 0xFFCA4A60 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL77 0xFFCA4A68 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL78 0xFFCA4A70 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL79 0xFFCA4A78 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL80 0xFFCA4A80 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL81 0xFFCA4A88 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL82 0xFFCA4A90 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL83 0xFFCA4A98 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL84 0xFFCA4AA0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL85 0xFFCA4AA8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL86 0xFFCA4AB0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL87 0xFFCA4AB8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL88 0xFFCA4AC0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL89 0xFFCA4AC8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL90 0xFFCA4AD0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL91 0xFFCA4AD8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL92 0xFFCA4AE0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL93 0xFFCA4AE8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL94 0xFFCA4AF0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL95 0xFFCA4AF8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL96 0xFFCA4B00 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL97 0xFFCA4B08 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL98 0xFFCA4B10 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL99 0xFFCA4B18 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL100 0xFFCA4B20 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL101 0xFFCA4B28 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL102 0xFFCA4B30 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL103 0xFFCA4B38 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL104 0xFFCA4B40 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL105 0xFFCA4B48 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL106 0xFFCA4B50 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL107 0xFFCA4B58 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL108 0xFFCA4B60 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL109 0xFFCA4B68 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL110 0xFFCA4B70 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL111 0xFFCA4B78 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL112 0xFFCA4B80 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL113 0xFFCA4B88 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL114 0xFFCA4B90 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL115 0xFFCA4B98 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL116 0xFFCA4BA0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL117 0xFFCA4BA8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL118 0xFFCA4BB0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL119 0xFFCA4BB8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL120 0xFFCA4BC0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL121 0xFFCA4BC8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL122 0xFFCA4BD0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL123 0xFFCA4BD8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL124 0xFFCA4BE0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL125 0xFFCA4BE8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL126 0xFFCA4BF0 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL127 0xFFCA4BF8 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL128 0xFFCA4C00 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL129 0xFFCA4C08 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL130 0xFFCA4C10 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL131 0xFFCA4C18 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL132 0xFFCA4C20 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL133 0xFFCA4C28 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL134 0xFFCA4C30 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL135 0xFFCA4C38 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL136 0xFFCA4C40 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL137 0xFFCA4C48 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL138 0xFFCA4C50 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SCTL139 0xFFCA4C58 /* SEC0 IRQ Source Control Register n */ +#define SEC0_SSTAT0 0xFFCA4804 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT1 0xFFCA480C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT2 0xFFCA4814 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT3 0xFFCA481C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT4 0xFFCA4824 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT5 0xFFCA482C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT6 0xFFCA4834 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT7 0xFFCA483C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT8 0xFFCA4844 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT9 0xFFCA484C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT10 0xFFCA4854 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT11 0xFFCA485C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT12 0xFFCA4864 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT13 0xFFCA486C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT14 0xFFCA4874 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT15 0xFFCA487C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT16 0xFFCA4884 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT17 0xFFCA488C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT18 0xFFCA4894 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT19 0xFFCA489C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT20 0xFFCA48A4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT21 0xFFCA48AC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT22 0xFFCA48B4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT23 0xFFCA48BC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT24 0xFFCA48C4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT25 0xFFCA48CC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT26 0xFFCA48D4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT27 0xFFCA48DC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT28 0xFFCA48E4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT29 0xFFCA48EC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT30 0xFFCA48F4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT31 0xFFCA48FC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT32 0xFFCA4904 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT33 0xFFCA490C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT34 0xFFCA4914 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT35 0xFFCA491C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT36 0xFFCA4924 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT37 0xFFCA492C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT38 0xFFCA4934 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT39 0xFFCA493C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT40 0xFFCA4944 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT41 0xFFCA494C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT42 0xFFCA4954 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT43 0xFFCA495C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT44 0xFFCA4964 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT45 0xFFCA496C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT46 0xFFCA4974 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT47 0xFFCA497C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT48 0xFFCA4984 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT49 0xFFCA498C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT50 0xFFCA4994 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT51 0xFFCA499C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT52 0xFFCA49A4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT53 0xFFCA49AC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT54 0xFFCA49B4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT55 0xFFCA49BC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT56 0xFFCA49C4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT57 0xFFCA49CC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT58 0xFFCA49D4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT59 0xFFCA49DC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT60 0xFFCA49E4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT61 0xFFCA49EC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT62 0xFFCA49F4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT63 0xFFCA49FC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT64 0xFFCA4A04 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT65 0xFFCA4A0C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT66 0xFFCA4A14 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT67 0xFFCA4A1C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT68 0xFFCA4A24 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT69 0xFFCA4A2C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT70 0xFFCA4A34 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT71 0xFFCA4A3C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT72 0xFFCA4A44 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT73 0xFFCA4A4C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT74 0xFFCA4A54 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT75 0xFFCA4A5C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT76 0xFFCA4A64 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT77 0xFFCA4A6C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT78 0xFFCA4A74 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT79 0xFFCA4A7C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT80 0xFFCA4A84 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT81 0xFFCA4A8C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT82 0xFFCA4A94 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT83 0xFFCA4A9C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT84 0xFFCA4AA4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT85 0xFFCA4AAC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT86 0xFFCA4AB4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT87 0xFFCA4ABC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT88 0xFFCA4AC4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT89 0xFFCA4ACC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT90 0xFFCA4AD4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT91 0xFFCA4ADC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT92 0xFFCA4AE4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT93 0xFFCA4AEC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT94 0xFFCA4AF4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT95 0xFFCA4AFC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT96 0xFFCA4B04 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT97 0xFFCA4B0C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT98 0xFFCA4B14 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT99 0xFFCA4B1C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT100 0xFFCA4B24 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT101 0xFFCA4B2C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT102 0xFFCA4B34 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT103 0xFFCA4B3C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT104 0xFFCA4B44 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT105 0xFFCA4B4C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT106 0xFFCA4B54 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT107 0xFFCA4B5C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT108 0xFFCA4B64 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT109 0xFFCA4B6C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT110 0xFFCA4B74 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT111 0xFFCA4B7C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT112 0xFFCA4B84 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT113 0xFFCA4B8C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT114 0xFFCA4B94 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT115 0xFFCA4B9C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT116 0xFFCA4BA4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT117 0xFFCA4BAC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT118 0xFFCA4BB4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT119 0xFFCA4BBC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT120 0xFFCA4BC4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT121 0xFFCA4BCC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT122 0xFFCA4BD4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT123 0xFFCA4BDC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT124 0xFFCA4BE4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT125 0xFFCA4BEC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT126 0xFFCA4BF4 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT127 0xFFCA4BFC /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT128 0xFFCA4C04 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT129 0xFFCA4C0C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT130 0xFFCA4C14 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT131 0xFFCA4C1C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT132 0xFFCA4C24 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT133 0xFFCA4C2C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT134 0xFFCA4C34 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT135 0xFFCA4C3C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT136 0xFFCA4C44 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT137 0xFFCA4C4C /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT138 0xFFCA4C54 /* SEC0 IRQ Source Status Register n */ +#define SEC0_SSTAT139 0xFFCA4C5C /* SEC0 IRQ Source Status Register n */ +#define TRU0_SSR0 0xFFCA5000 /* TRU0 Slave Select Register */ +#define TRU0_SSR1 0xFFCA5004 /* TRU0 Slave Select Register */ +#define TRU0_SSR2 0xFFCA5008 /* TRU0 Slave Select Register */ +#define TRU0_SSR3 0xFFCA500C /* TRU0 Slave Select Register */ +#define TRU0_SSR4 0xFFCA5010 /* TRU0 Slave Select Register */ +#define TRU0_SSR5 0xFFCA5014 /* TRU0 Slave Select Register */ +#define TRU0_SSR6 0xFFCA5018 /* TRU0 Slave Select Register */ +#define TRU0_SSR7 0xFFCA501C /* TRU0 Slave Select Register */ +#define TRU0_SSR8 0xFFCA5020 /* TRU0 Slave Select Register */ +#define TRU0_SSR9 0xFFCA5024 /* TRU0 Slave Select Register */ +#define TRU0_SSR10 0xFFCA5028 /* TRU0 Slave Select Register */ +#define TRU0_SSR11 0xFFCA502C /* TRU0 Slave Select Register */ +#define TRU0_SSR12 0xFFCA5030 /* TRU0 Slave Select Register */ +#define TRU0_SSR13 0xFFCA5034 /* TRU0 Slave Select Register */ +#define TRU0_SSR14 0xFFCA5038 /* TRU0 Slave Select Register */ +#define TRU0_SSR15 0xFFCA503C /* TRU0 Slave Select Register */ +#define TRU0_SSR16 0xFFCA5040 /* TRU0 Slave Select Register */ +#define TRU0_SSR17 0xFFCA5044 /* TRU0 Slave Select Register */ +#define TRU0_SSR18 0xFFCA5048 /* TRU0 Slave Select Register */ +#define TRU0_SSR19 0xFFCA504C /* TRU0 Slave Select Register */ +#define TRU0_SSR20 0xFFCA5050 /* TRU0 Slave Select Register */ +#define TRU0_SSR21 0xFFCA5054 /* TRU0 Slave Select Register */ +#define TRU0_SSR22 0xFFCA5058 /* TRU0 Slave Select Register */ +#define TRU0_SSR23 0xFFCA505C /* TRU0 Slave Select Register */ +#define TRU0_SSR24 0xFFCA5060 /* TRU0 Slave Select Register */ +#define TRU0_SSR25 0xFFCA5064 /* TRU0 Slave Select Register */ +#define TRU0_SSR26 0xFFCA5068 /* TRU0 Slave Select Register */ +#define TRU0_SSR27 0xFFCA506C /* TRU0 Slave Select Register */ +#define TRU0_SSR28 0xFFCA5070 /* TRU0 Slave Select Register */ +#define TRU0_SSR29 0xFFCA5074 /* TRU0 Slave Select Register */ +#define TRU0_SSR30 0xFFCA5078 /* TRU0 Slave Select Register */ +#define TRU0_SSR31 0xFFCA507C /* TRU0 Slave Select Register */ +#define TRU0_SSR32 0xFFCA5080 /* TRU0 Slave Select Register */ +#define TRU0_SSR33 0xFFCA5084 /* TRU0 Slave Select Register */ +#define TRU0_SSR34 0xFFCA5088 /* TRU0 Slave Select Register */ +#define TRU0_SSR35 0xFFCA508C /* TRU0 Slave Select Register */ +#define TRU0_SSR36 0xFFCA5090 /* TRU0 Slave Select Register */ +#define TRU0_SSR37 0xFFCA5094 /* TRU0 Slave Select Register */ +#define TRU0_SSR38 0xFFCA5098 /* TRU0 Slave Select Register */ +#define TRU0_SSR39 0xFFCA509C /* TRU0 Slave Select Register */ +#define TRU0_SSR40 0xFFCA50A0 /* TRU0 Slave Select Register */ +#define TRU0_SSR41 0xFFCA50A4 /* TRU0 Slave Select Register */ +#define TRU0_SSR42 0xFFCA50A8 /* TRU0 Slave Select Register */ +#define TRU0_SSR43 0xFFCA50AC /* TRU0 Slave Select Register */ +#define TRU0_SSR44 0xFFCA50B0 /* TRU0 Slave Select Register */ +#define TRU0_SSR45 0xFFCA50B4 /* TRU0 Slave Select Register */ +#define TRU0_SSR46 0xFFCA50B8 /* TRU0 Slave Select Register */ +#define TRU0_SSR47 0xFFCA50BC /* TRU0 Slave Select Register */ +#define TRU0_SSR48 0xFFCA50C0 /* TRU0 Slave Select Register */ +#define TRU0_SSR49 0xFFCA50C4 /* TRU0 Slave Select Register */ +#define TRU0_SSR50 0xFFCA50C8 /* TRU0 Slave Select Register */ +#define TRU0_SSR51 0xFFCA50CC /* TRU0 Slave Select Register */ +#define TRU0_SSR52 0xFFCA50D0 /* TRU0 Slave Select Register */ +#define TRU0_SSR53 0xFFCA50D4 /* TRU0 Slave Select Register */ +#define TRU0_SSR54 0xFFCA50D8 /* TRU0 Slave Select Register */ +#define TRU0_SSR55 0xFFCA50DC /* TRU0 Slave Select Register */ +#define TRU0_SSR56 0xFFCA50E0 /* TRU0 Slave Select Register */ +#define TRU0_SSR57 0xFFCA50E4 /* TRU0 Slave Select Register */ +#define TRU0_SSR58 0xFFCA50E8 /* TRU0 Slave Select Register */ +#define TRU0_SSR59 0xFFCA50EC /* TRU0 Slave Select Register */ +#define TRU0_SSR60 0xFFCA50F0 /* TRU0 Slave Select Register */ +#define TRU0_SSR61 0xFFCA50F4 /* TRU0 Slave Select Register */ +#define TRU0_SSR62 0xFFCA50F8 /* TRU0 Slave Select Register */ +#define TRU0_SSR63 0xFFCA50FC /* TRU0 Slave Select Register */ +#define TRU0_SSR64 0xFFCA5100 /* TRU0 Slave Select Register */ +#define TRU0_SSR65 0xFFCA5104 /* TRU0 Slave Select Register */ +#define TRU0_SSR66 0xFFCA5108 /* TRU0 Slave Select Register */ +#define TRU0_SSR67 0xFFCA510C /* TRU0 Slave Select Register */ +#define TRU0_SSR68 0xFFCA5110 /* TRU0 Slave Select Register */ +#define TRU0_SSR69 0xFFCA5114 /* TRU0 Slave Select Register */ +#define TRU0_SSR70 0xFFCA5118 /* TRU0 Slave Select Register */ +#define TRU0_SSR71 0xFFCA511C /* TRU0 Slave Select Register */ +#define TRU0_SSR72 0xFFCA5120 /* TRU0 Slave Select Register */ +#define TRU0_SSR73 0xFFCA5124 /* TRU0 Slave Select Register */ +#define TRU0_SSR74 0xFFCA5128 /* TRU0 Slave Select Register */ +#define TRU0_SSR75 0xFFCA512C /* TRU0 Slave Select Register */ +#define TRU0_SSR76 0xFFCA5130 /* TRU0 Slave Select Register */ +#define TRU0_SSR77 0xFFCA5134 /* TRU0 Slave Select Register */ +#define TRU0_SSR78 0xFFCA5138 /* TRU0 Slave Select Register */ +#define TRU0_SSR79 0xFFCA513C /* TRU0 Slave Select Register */ +#define TRU0_SSR80 0xFFCA5140 /* TRU0 Slave Select Register */ +#define TRU0_SSR81 0xFFCA5144 /* TRU0 Slave Select Register */ +#define TRU0_SSR82 0xFFCA5148 /* TRU0 Slave Select Register */ +#define TRU0_SSR83 0xFFCA514C /* TRU0 Slave Select Register */ +#define TRU0_SSR84 0xFFCA5150 /* TRU0 Slave Select Register */ +#define TRU0_SSR85 0xFFCA5154 /* TRU0 Slave Select Register */ +#define TRU0_SSR86 0xFFCA5158 /* TRU0 Slave Select Register */ +#define TRU0_MTR 0xFFCA57E0 /* TRU0 Master Trigger Register */ +#define TRU0_ERRADDR 0xFFCA57E8 /* TRU0 Error Address Register */ +#define TRU0_STAT 0xFFCA57EC /* TRU0 Status Information Register */ +#define TRU0_REVID 0xFFCA57F0 /* TRU0 Revision ID Register */ +#define TRU0_GCTL 0xFFCA57F4 /* TRU0 Global Control Register */ +#define RCU0_CTL 0xFFCA6000 /* RCU0 Control Register */ +#define RCU0_STAT 0xFFCA6004 /* RCU0 Status Register */ +#define RCU0_CRCTL 0xFFCA6008 /* RCU0 Core Reset Control Register */ +#define RCU0_CRSTAT 0xFFCA600C /* RCU0 Core Reset Status Register */ +#define RCU0_SIDIS 0xFFCA6010 /* RCU0 System Interface Disable Register */ +#define RCU0_SISTAT 0xFFCA6014 /* RCU0 System Interface Status Register */ +#define RCU0_SVECT_LCK 0xFFCA6018 /* RCU0 SVECT Lock Register */ +#define RCU0_BCODE 0xFFCA601C /* RCU0 Boot Code Register */ +#define RCU0_SVECT0 0xFFCA6020 /* RCU0 Software Vector Register n */ +#define RCU0_SVECT1 0xFFCA6024 /* RCU0 Software Vector Register n */ +#define SPU0_CTL 0xFFCA7000 /* SPU0 Control Register */ +#define SPU0_STAT 0xFFCA7004 /* SPU0 Status Register */ +#define SPU0_WP0 0xFFCA7400 /* SPU0 Write Protect Register n */ +#define SPU0_WP1 0xFFCA7404 /* SPU0 Write Protect Register n */ +#define SPU0_WP2 0xFFCA7408 /* SPU0 Write Protect Register n */ +#define SPU0_WP3 0xFFCA740C /* SPU0 Write Protect Register n */ +#define SPU0_WP4 0xFFCA7410 /* SPU0 Write Protect Register n */ +#define SPU0_WP5 0xFFCA7414 /* SPU0 Write Protect Register n */ +#define SPU0_WP6 0xFFCA7418 /* SPU0 Write Protect Register n */ +#define SPU0_WP7 0xFFCA741C /* SPU0 Write Protect Register n */ +#define SPU0_WP8 0xFFCA7420 /* SPU0 Write Protect Register n */ +#define SPU0_WP9 0xFFCA7424 /* SPU0 Write Protect Register n */ +#define SPU0_WP10 0xFFCA7428 /* SPU0 Write Protect Register n */ +#define SPU0_WP11 0xFFCA742C /* SPU0 Write Protect Register n */ +#define SPU0_WP12 0xFFCA7430 /* SPU0 Write Protect Register n */ +#define SPU0_WP13 0xFFCA7434 /* SPU0 Write Protect Register n */ +#define SPU0_WP14 0xFFCA7438 /* SPU0 Write Protect Register n */ +#define SPU0_WP15 0xFFCA743C /* SPU0 Write Protect Register n */ +#define SPU0_WP16 0xFFCA7440 /* SPU0 Write Protect Register n */ +#define SPU0_WP17 0xFFCA7444 /* SPU0 Write Protect Register n */ +#define SPU0_WP18 0xFFCA7448 /* SPU0 Write Protect Register n */ +#define SPU0_WP19 0xFFCA744C /* SPU0 Write Protect Register n */ +#define SPU0_WP20 0xFFCA7450 /* SPU0 Write Protect Register n */ +#define SPU0_WP21 0xFFCA7454 /* SPU0 Write Protect Register n */ +#define SPU0_WP22 0xFFCA7458 /* SPU0 Write Protect Register n */ +#define SPU0_WP23 0xFFCA745C /* SPU0 Write Protect Register n */ +#define SPU0_WP24 0xFFCA7460 /* SPU0 Write Protect Register n */ +#define SPU0_WP25 0xFFCA7464 /* SPU0 Write Protect Register n */ +#define SPU0_WP26 0xFFCA7468 /* SPU0 Write Protect Register n */ +#define SPU0_WP27 0xFFCA746C /* SPU0 Write Protect Register n */ +#define SPU0_WP28 0xFFCA7470 /* SPU0 Write Protect Register n */ +#define SPU0_WP29 0xFFCA7474 /* SPU0 Write Protect Register n */ +#define SPU0_WP30 0xFFCA7478 /* SPU0 Write Protect Register n */ +#define SPU0_WP31 0xFFCA747C /* SPU0 Write Protect Register n */ +#define SPU0_WP32 0xFFCA7480 /* SPU0 Write Protect Register n */ +#define SPU0_WP33 0xFFCA7484 /* SPU0 Write Protect Register n */ +#define SPU0_WP34 0xFFCA7488 /* SPU0 Write Protect Register n */ +#define SPU0_WP35 0xFFCA748C /* SPU0 Write Protect Register n */ +#define SPU0_WP36 0xFFCA7490 /* SPU0 Write Protect Register n */ +#define SPU0_WP37 0xFFCA7494 /* SPU0 Write Protect Register n */ +#define SPU0_WP38 0xFFCA7498 /* SPU0 Write Protect Register n */ +#define SPU0_WP39 0xFFCA749C /* SPU0 Write Protect Register n */ +#define SPU0_WP40 0xFFCA74A0 /* SPU0 Write Protect Register n */ +#define SPU0_WP41 0xFFCA74A4 /* SPU0 Write Protect Register n */ +#define SPU0_WP42 0xFFCA74A8 /* SPU0 Write Protect Register n */ +#define SPU0_WP43 0xFFCA74AC /* SPU0 Write Protect Register n */ +#define SPU0_WP44 0xFFCA74B0 /* SPU0 Write Protect Register n */ +#define SPU0_WP45 0xFFCA74B4 /* SPU0 Write Protect Register n */ +#define SPU0_WP46 0xFFCA74B8 /* SPU0 Write Protect Register n */ +#define SPU0_WP47 0xFFCA74BC /* SPU0 Write Protect Register n */ +#define SPU0_WP48 0xFFCA74C0 /* SPU0 Write Protect Register n */ +#define SPU0_WP49 0xFFCA74C4 /* SPU0 Write Protect Register n */ +#define SPU0_WP50 0xFFCA74C8 /* SPU0 Write Protect Register n */ +#define SPU0_WP51 0xFFCA74CC /* SPU0 Write Protect Register n */ +#define SPU0_WP52 0xFFCA74D0 /* SPU0 Write Protect Register n */ +#define SPU0_WP53 0xFFCA74D4 /* SPU0 Write Protect Register n */ +#define SPU0_WP54 0xFFCA74D8 /* SPU0 Write Protect Register n */ +#define SPU0_WP55 0xFFCA74DC /* SPU0 Write Protect Register n */ +#define SPU0_WP56 0xFFCA74E0 /* SPU0 Write Protect Register n */ +#define SPU0_WP57 0xFFCA74E4 /* SPU0 Write Protect Register n */ +#define SPU0_WP58 0xFFCA74E8 /* SPU0 Write Protect Register n */ +#define SPU0_WP59 0xFFCA74EC /* SPU0 Write Protect Register n */ +#define SPU0_WP60 0xFFCA74F0 /* SPU0 Write Protect Register n */ +#define SPU0_WP61 0xFFCA74F4 /* SPU0 Write Protect Register n */ +#define SPU0_WP62 0xFFCA74F8 /* SPU0 Write Protect Register n */ +#define SPU0_WP63 0xFFCA74FC /* SPU0 Write Protect Register n */ +#define SPU0_WP64 0xFFCA7500 /* SPU0 Write Protect Register n */ +#define SPU0_WP65 0xFFCA7504 /* SPU0 Write Protect Register n */ +#define SPU0_WP66 0xFFCA7508 /* SPU0 Write Protect Register n */ +#define SPU0_WP67 0xFFCA750C /* SPU0 Write Protect Register n */ +#define SPU0_WP68 0xFFCA7510 /* SPU0 Write Protect Register n */ +#define SPU0_WP69 0xFFCA7514 /* SPU0 Write Protect Register n */ +#define SPU0_WP70 0xFFCA7518 /* SPU0 Write Protect Register n */ +#define SPU0_WP71 0xFFCA751C /* SPU0 Write Protect Register n */ +#define SPU0_WP72 0xFFCA7520 /* SPU0 Write Protect Register n */ +#define SPU0_WP73 0xFFCA7524 /* SPU0 Write Protect Register n */ +#define SPU0_WP74 0xFFCA7528 /* SPU0 Write Protect Register n */ +#define SPU0_WP75 0xFFCA752C /* SPU0 Write Protect Register n */ +#define SPU0_WP76 0xFFCA7530 /* SPU0 Write Protect Register n */ +#define SPU0_WP77 0xFFCA7534 /* SPU0 Write Protect Register n */ +#define SPU0_WP78 0xFFCA7538 /* SPU0 Write Protect Register n */ +#define SPU0_WP79 0xFFCA753C /* SPU0 Write Protect Register n */ +#define SPU0_WP80 0xFFCA7540 /* SPU0 Write Protect Register n */ +#define SPU0_WP81 0xFFCA7544 /* SPU0 Write Protect Register n */ +#define SPU0_WP82 0xFFCA7548 /* SPU0 Write Protect Register n */ +#define SPU0_WP83 0xFFCA754C /* SPU0 Write Protect Register n */ +#define SPU0_WP84 0xFFCA7550 /* SPU0 Write Protect Register n */ +#define SPU0_WP85 0xFFCA7554 /* SPU0 Write Protect Register n */ +#define CGU_CTL 0xFFCA8000 /* CGU0 Control Register */ +#define CGU_STAT 0xFFCA8004 /* CGU0 Status Register */ +#define CGU_DIV 0xFFCA8008 /* CGU0 Divisor Register */ +#define CGU_CLKOUTSEL 0xFFCA800C /* CGU0 CLKOUT Select Register */ +#define DPM0_CTL 0xFFCA9000 /* DPM0 Control Register */ +#define DPM0_STAT 0xFFCA9004 /* DPM0 Status Register */ +#define DPM0_CCBF_DIS 0xFFCA9008 /* DPM0 Core Clock Buffer Disable Register */ +#define DPM0_CCBF_EN 0xFFCA900C /* DPM0 Core Clock Buffer Enable Register */ +#define DPM0_CCBF_STAT 0xFFCA9010 /* DPM0 Core Clock Buffer Status Register */ +#define DPM0_CCBF_STAT_STKY 0xFFCA9014 /* DPM0 Core Clock Buffer Status Sticky Register */ +#define DPM0_SCBF_DIS 0xFFCA9018 /* DPM0 System Clock Buffer Disable Register */ +#define DPM0_WAKE_EN 0xFFCA901C /* DPM0 Wakeup Enable Register */ +#define DPM0_WAKE_POL 0xFFCA9020 /* DPM0 Wakeup Polarity Register */ +#define DPM0_WAKE_STAT 0xFFCA9024 /* DPM0 Wakeup Status Register */ +#define DPM0_HIB_DIS 0xFFCA9028 /* DPM0 Hibernate Disable Register */ +#define DPM0_PGCNTR 0xFFCA902C /* DPM0 Power Good Counter Register */ +#define DPM0_RESTORE0 0xFFCA9030 /* DPM0 Restore Register */ +#define DPM0_RESTORE1 0xFFCA9034 /* DPM0 Restore Register */ +#define DPM0_RESTORE2 0xFFCA9038 /* DPM0 Restore Register */ +#define DPM0_RESTORE3 0xFFCA903C /* DPM0 Restore Register */ +#define DPM0_RESTORE4 0xFFCA9040 /* DPM0 Restore Register */ +#define DPM0_RESTORE5 0xFFCA9044 /* DPM0 Restore Register */ +#define DPM0_RESTORE6 0xFFCA9048 /* DPM0 Restore Register */ +#define DPM0_RESTORE7 0xFFCA904C /* DPM0 Restore Register */ +#define DPM0_RESTORE8 0xFFCA9050 /* DPM0 Restore Register */ +#define DPM0_RESTORE9 0xFFCA9054 /* DPM0 Restore Register */ +#define DPM0_RESTORE10 0xFFCA9058 /* DPM0 Restore Register */ +#define DPM0_RESTORE11 0xFFCA905C /* DPM0 Restore Register */ +#define DPM0_RESTORE12 0xFFCA9060 /* DPM0 Restore Register */ +#define DPM0_RESTORE13 0xFFCA9064 /* DPM0 Restore Register */ +#define DPM0_RESTORE14 0xFFCA9068 /* DPM0 Restore Register */ +#define DPM0_RESTORE15 0xFFCA906C /* DPM0 Restore Register */ +#define EFS0_CTL 0xFFCC0000 /* EFS0 Control Register */ +#define EFS0_DAT0 0xFFCC0008 /* EFS0 Data Register 0 */ +#define EFS0_DAT1 0xFFCC000C /* EFS0 Data Register 1 */ +#define EFS0_DAT2 0xFFCC0010 /* EFS0 Data Register 2 */ +#define EFS0_DAT3 0xFFCC0014 /* EFS0 Data Register 3 */ +#define EFS0_DAT4 0xFFCC0018 /* EFS0 Data Register 4 */ +#define EFS0_DAT5 0xFFCC001C /* EFS0 Data Register 5 */ +#define EFS0_DAT6 0xFFCC0020 /* EFS0 Data Register 6 */ +#define EFS0_DAT7 0xFFCC0024 /* EFS0 Data Register 7 */ +#define EFS0_PGM0 0xFFCC0028 /* EFS0 Program Register 0 */ +#define EFS0_PGM1 0xFFCC002C /* EFS0 Program Register 1 */ +#define EFS0_PGM2 0xFFCC0030 /* EFS0 Program Register 2 */ +#define EFS0_PGM3 0xFFCC0034 /* EFS0 Program Register 3 */ +#define EFS0_PGM4 0xFFCC0038 /* EFS0 Program Register 4 */ +#define EFS0_PGM5 0xFFCC003C /* EFS0 Program Register 5 */ +#define EFS0_PGM6 0xFFCC0040 /* EFS0 Program Register 6 */ +#define EFS0_PGM7 0xFFCC0044 /* EFS0 Program Register 7 */ +#define EFS0_PGM_TIMING 0xFFCC007C /* EFS0 Timing configuration register */ +#define USB0_FADDR 0xFFCC1000 /* USB0 Device Address in Peripheral Mode */ +#define USB0_POWER 0xFFCC1001 /* USB0 Power and Device Control */ +#define USB0_INTRTX 0xFFCC1002 /* USB0 Transmit Interrupt */ +#define USB0_INTRRX 0xFFCC1004 /* USB0 Receive Interrupts */ +#define USB0_INTRTXE 0xFFCC1006 /* USB0 Transmit Interrupt Enable */ +#define USB0_INTRRXE 0xFFCC1008 /* USB0 Receive Interrupt Enable */ +#define USB0_IRQ 0xFFCC100A /* USB0 USB Interrupts */ +#define USB0_IEN 0xFFCC100B /* USB0 USB Interrupt Enable */ +#define USB0_FRAME 0xFFCC100C /* USB0 Frame Number */ +#define USB0_INDEX 0xFFCC100E /* USB0 Index */ +#define USB0_TESTMODE 0xFFCC100F /* USB0 Testmodes */ +#define USB0_EPI_TXMAXP0 0xFFCC1010 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP0I_CSR0_H 0xFFCC1012 /* USB0 Config and Status EP0 */ +#define USB0_EPI_TXCSR0_H 0xFFCC1012 /* USB0 Transmit Configuration and Status */ +#define USB0_EP0I_CSR0_P 0xFFCC1012 /* USB0 Config and Status EP0 */ +#define USB0_EPI_TXCSR0_P 0xFFCC1012 /* USB0 Transmit Configuration and Status */ +#define USB0_EPI_RXMAXP0 0xFFCC1014 /* USB0 Receive Maximum Packet Length */ +#define USB0_EPI_RXCSR0_H 0xFFCC1016 /* USB0 Receive Configuration and Status Register */ +#define USB0_EPI_RXCSR0_P 0xFFCC1016 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP0I_CNT0 0xFFCC1018 /* USB0 Number of Received Bytes for Endpoint 0 */ +#define USB0_EPI_RXCNT0 0xFFCC1018 /* USB0 Number of Byte Received */ +#define USB0_EP0I_TYPE0 0xFFCC101A /* USB0 Speed for Endpoint 0 */ +#define USB0_EPI_TXTYPE0 0xFFCC101A /* USB0 Transmit Type */ +#define USB0_EP0I_NAKLIMIT0 0xFFCC101B /* USB0 NAK Response Timeout for Endpoint 0 */ +#define USB0_EPI_TXINTERVAL0 0xFFCC101B /* USB0 Transmit Polling Interval */ +#define USB0_EPI_RXTYPE0 0xFFCC101C /* USB0 Receive Type */ +#define USB0_EPI_RXINTERVAL0 0xFFCC101D /* USB0 Receive Polling Interval */ +#define USB0_EP0I_CFGDATA0 0xFFCC101F /* USB0 Configuration Information */ +#define USB0_FIFOB0 0xFFCC1020 /* USB0 FIFO Data */ +#define USB0_FIFOB1 0xFFCC1024 /* USB0 FIFO Data */ +#define USB0_FIFOB2 0xFFCC1028 /* USB0 FIFO Data */ +#define USB0_FIFOB3 0xFFCC102C /* USB0 FIFO Data */ +#define USB0_FIFOB4 0xFFCC1030 /* USB0 FIFO Data */ +#define USB0_FIFOB5 0xFFCC1034 /* USB0 FIFO Data */ +#define USB0_FIFOB6 0xFFCC1038 /* USB0 FIFO Data */ +#define USB0_FIFOB7 0xFFCC103C /* USB0 FIFO Data */ +#define USB0_FIFOB8 0xFFCC1040 /* USB0 FIFO Data */ +#define USB0_FIFOB9 0xFFCC1044 /* USB0 FIFO Data */ +#define USB0_FIFOB10 0xFFCC1048 /* USB0 FIFO Data */ +#define USB0_FIFOB11 0xFFCC104C /* USB0 FIFO Data */ +#define USB0_FIFOH0 0xFFCC1020 /* USB0 FIFO Data */ +#define USB0_FIFOH1 0xFFCC1024 /* USB0 FIFO Data */ +#define USB0_FIFOH2 0xFFCC1028 /* USB0 FIFO Data */ +#define USB0_FIFOH3 0xFFCC102C /* USB0 FIFO Data */ +#define USB0_FIFOH4 0xFFCC1030 /* USB0 FIFO Data */ +#define USB0_FIFOH5 0xFFCC1034 /* USB0 FIFO Data */ +#define USB0_FIFOH6 0xFFCC1038 /* USB0 FIFO Data */ +#define USB0_FIFOH7 0xFFCC103C /* USB0 FIFO Data */ +#define USB0_FIFOH8 0xFFCC1040 /* USB0 FIFO Data */ +#define USB0_FIFOH9 0xFFCC1044 /* USB0 FIFO Data */ +#define USB0_FIFOH10 0xFFCC1048 /* USB0 FIFO Data */ +#define USB0_FIFOH11 0xFFCC104C /* USB0 FIFO Data */ +#define USB0_FIFO0 0xFFCC1020 /* USB0 FIFO Data */ +#define USB0_FIFO1 0xFFCC1024 /* USB0 FIFO Data */ +#define USB0_FIFO2 0xFFCC1028 /* USB0 FIFO Data */ +#define USB0_FIFO3 0xFFCC102C /* USB0 FIFO Data */ +#define USB0_FIFO4 0xFFCC1030 /* USB0 FIFO Data */ +#define USB0_FIFO5 0xFFCC1034 /* USB0 FIFO Data */ +#define USB0_FIFO6 0xFFCC1038 /* USB0 FIFO Data */ +#define USB0_FIFO7 0xFFCC103C /* USB0 FIFO Data */ +#define USB0_FIFO8 0xFFCC1040 /* USB0 FIFO Data */ +#define USB0_FIFO9 0xFFCC1044 /* USB0 FIFO Data */ +#define USB0_FIFO10 0xFFCC1048 /* USB0 FIFO Data */ +#define USB0_FIFO11 0xFFCC104C /* USB0 FIFO Data */ +#define USB0_DEV_CTL 0xFFCC1060 /* USB0 Device Control */ +#define USB0_TXFIFOSZ 0xFFCC1062 /* USB0 Transmit FIFO Size */ +#define USB0_RXFIFOSZ 0xFFCC1063 /* USB0 Receive FIFO Size */ +#define USB0_TXFIFOADDR 0xFFCC1064 /* USB0 Transmit FIFO Address */ +#define USB0_RXFIFOADDR 0xFFCC1066 /* USB0 Receive FIFO Address */ +#define USB0_VENDSTAT 0xFFCC1068 /* USB0 Vendor Status */ +#define USB0_HWVERS 0xFFCC106C /* USB0 Hardware Version */ +#define USB0_EPINFO 0xFFCC1078 /* USB0 Endpoint Info */ +#define USB0_RAMINFO 0xFFCC1079 /* USB0 Ram Information */ +#define USB0_LINKINFO 0xFFCC107A /* USB0 Programmable Delay Values */ +#define USB0_VPLEN 0xFFCC107B /* USB0 VBus Pulse Duration */ +#define USB0_HS_EOF1 0xFFCC107C /* USB0 High Speed End of Frame Remaining */ +#define USB0_FS_EOF1 0xFFCC107D /* USB0 Full Speed End of Frame Remaining */ +#define USB0_LS_EOF1 0xFFCC107E /* USB0 Low Speed End of Frame Remaining */ +#define USB0_SOFT_RST 0xFFCC107F /* USB0 Software Reset */ +#define USB0_TXFUNCADDR0 0xFFCC1080 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR1 0xFFCC1088 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR2 0xFFCC1090 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR3 0xFFCC1098 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR4 0xFFCC10A0 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR5 0xFFCC10A8 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR6 0xFFCC10B0 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR7 0xFFCC10B8 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR8 0xFFCC10C0 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR9 0xFFCC10C8 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR10 0xFFCC10D0 /* USB0 Transmit Function Address */ +#define USB0_TXFUNCADDR11 0xFFCC10D8 /* USB0 Transmit Function Address */ +#define USB0_TXHUBADDR0 0xFFCC1082 /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR1 0xFFCC108A /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR2 0xFFCC1092 /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR3 0xFFCC109A /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR4 0xFFCC10A2 /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR5 0xFFCC10AA /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR6 0xFFCC10B2 /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR7 0xFFCC10BA /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR8 0xFFCC10C2 /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR9 0xFFCC10CA /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR10 0xFFCC10D2 /* USB0 Transmit Hub Address */ +#define USB0_TXHUBADDR11 0xFFCC10DA /* USB0 Transmit Hub Address */ +#define USB0_TXHUBPORT0 0xFFCC1083 /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT1 0xFFCC108B /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT2 0xFFCC1093 /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT3 0xFFCC109B /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT4 0xFFCC10A3 /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT5 0xFFCC10AB /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT6 0xFFCC10B3 /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT7 0xFFCC10BB /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT8 0xFFCC10C3 /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT9 0xFFCC10CB /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT10 0xFFCC10D3 /* USB0 Transmit Hub Port */ +#define USB0_TXHUBPORT11 0xFFCC10DB /* USB0 Transmit Hub Port */ +#define USB0_RXFUNCADDR0 0xFFCC1084 /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR1 0xFFCC108C /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR2 0xFFCC1094 /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR3 0xFFCC109C /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR4 0xFFCC10A4 /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR5 0xFFCC10AC /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR6 0xFFCC10B4 /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR7 0xFFCC10BC /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR8 0xFFCC10C4 /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR9 0xFFCC10CC /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR10 0xFFCC10D4 /* USB0 Receive Function Address */ +#define USB0_RXFUNCADDR11 0xFFCC10DC /* USB0 Receive Function Address */ +#define USB0_RXHUBADDR0 0xFFCC1086 /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR1 0xFFCC108E /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR2 0xFFCC1096 /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR3 0xFFCC109E /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR4 0xFFCC10A6 /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR5 0xFFCC10AE /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR6 0xFFCC10B6 /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR7 0xFFCC10BE /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR8 0xFFCC10C6 /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR9 0xFFCC10CE /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR10 0xFFCC10D6 /* USB0 Receive Hub Address */ +#define USB0_RXHUBADDR11 0xFFCC10DE /* USB0 Receive Hub Address */ +#define USB0_RXHUBPORT0 0xFFCC1087 /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT1 0xFFCC108F /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT2 0xFFCC1097 /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT3 0xFFCC109F /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT4 0xFFCC10A7 /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT5 0xFFCC10AF /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT6 0xFFCC10B7 /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT7 0xFFCC10BF /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT8 0xFFCC10C7 /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT9 0xFFCC10CF /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT10 0xFFCC10D7 /* USB0 Receive Hub Port */ +#define USB0_RXHUBPORT11 0xFFCC10DF /* USB0 Receive Hub Port */ +#define USB0_EP0_CSR0_H 0xFFCC1102 /* USB0 Config and Status EP0 */ +#define USB0_EP0_CSR0_P 0xFFCC1102 /* USB0 Config and Status EP0 */ +#define USB0_EP0_CNT0 0xFFCC1108 /* USB0 Number of Received Bytes for Endpoint 0 */ +#define USB0_EP0_TYPE0 0xFFCC110A /* USB0 Speed for Endpoint 0 */ +#define USB0_EP0_NAKLIMIT0 0xFFCC110B /* USB0 NAK Response Timeout for Endpoint 0 */ +#define USB0_EP0_CFGDATA0 0xFFCC110F /* USB0 Configuration Information */ +#define USB0_EP_TXMAXP0 0xFFCC1110 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP1 0xFFCC1120 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP2 0xFFCC1130 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP3 0xFFCC1140 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP4 0xFFCC1150 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP5 0xFFCC1160 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP6 0xFFCC1170 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP7 0xFFCC1180 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP8 0xFFCC1190 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP9 0xFFCC11A0 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXMAXP10 0xFFCC11B0 /* USB0 Transmit Maximum Packet Length */ +#define USB0_EP_TXCSR0_H 0xFFCC1112 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR1_H 0xFFCC1122 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR2_H 0xFFCC1132 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR3_H 0xFFCC1142 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR4_H 0xFFCC1152 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR5_H 0xFFCC1162 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR6_H 0xFFCC1172 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR7_H 0xFFCC1182 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR8_H 0xFFCC1192 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR9_H 0xFFCC11A2 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR10_H 0xFFCC11B2 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR0_P 0xFFCC1112 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR1_P 0xFFCC1122 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR2_P 0xFFCC1132 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR3_P 0xFFCC1142 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR4_P 0xFFCC1152 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR5_P 0xFFCC1162 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR6_P 0xFFCC1172 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR7_P 0xFFCC1182 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR8_P 0xFFCC1192 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR9_P 0xFFCC11A2 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_TXCSR10_P 0xFFCC11B2 /* USB0 Transmit Configuration and Status */ +#define USB0_EP_RXMAXP0 0xFFCC1114 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP1 0xFFCC1124 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP2 0xFFCC1134 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP3 0xFFCC1144 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP4 0xFFCC1154 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP5 0xFFCC1164 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP6 0xFFCC1174 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP7 0xFFCC1184 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP8 0xFFCC1194 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP9 0xFFCC11A4 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXMAXP10 0xFFCC11B4 /* USB0 Receive Maximum Packet Length */ +#define USB0_EP_RXCSR0_H 0xFFCC1116 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR1_H 0xFFCC1126 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR2_H 0xFFCC1136 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR3_H 0xFFCC1146 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR4_H 0xFFCC1156 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR5_H 0xFFCC1166 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR6_H 0xFFCC1176 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR7_H 0xFFCC1186 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR8_H 0xFFCC1196 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR9_H 0xFFCC11A6 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR10_H 0xFFCC11B6 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR0_P 0xFFCC1116 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR1_P 0xFFCC1126 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR2_P 0xFFCC1136 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR3_P 0xFFCC1146 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR4_P 0xFFCC1156 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR5_P 0xFFCC1166 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR6_P 0xFFCC1176 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR7_P 0xFFCC1186 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR8_P 0xFFCC1196 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR9_P 0xFFCC11A6 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCSR10_P 0xFFCC11B6 /* USB0 Receive Configuration and Status Register */ +#define USB0_EP_RXCNT0 0xFFCC1118 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT1 0xFFCC1128 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT2 0xFFCC1138 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT3 0xFFCC1148 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT4 0xFFCC1158 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT5 0xFFCC1168 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT6 0xFFCC1178 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT7 0xFFCC1188 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT8 0xFFCC1198 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT9 0xFFCC11A8 /* USB0 Number of Byte Received */ +#define USB0_EP_RXCNT10 0xFFCC11B8 /* USB0 Number of Byte Received */ +#define USB0_EP_TXTYPE0 0xFFCC111A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE1 0xFFCC112A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE2 0xFFCC113A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE3 0xFFCC114A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE4 0xFFCC115A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE5 0xFFCC116A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE6 0xFFCC117A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE7 0xFFCC118A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE8 0xFFCC119A /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE9 0xFFCC11AA /* USB0 Transmit Type */ +#define USB0_EP_TXTYPE10 0xFFCC11BA /* USB0 Transmit Type */ +#define USB0_EP_TXINTERVAL0 0xFFCC111B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL1 0xFFCC112B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL2 0xFFCC113B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL3 0xFFCC114B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL4 0xFFCC115B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL5 0xFFCC116B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL6 0xFFCC117B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL7 0xFFCC118B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL8 0xFFCC119B /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL9 0xFFCC11AB /* USB0 Transmit Polling Interval */ +#define USB0_EP_TXINTERVAL10 0xFFCC11BB /* USB0 Transmit Polling Interval */ +#define USB0_EP_RXTYPE0 0xFFCC111C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE1 0xFFCC112C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE2 0xFFCC113C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE3 0xFFCC114C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE4 0xFFCC115C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE5 0xFFCC116C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE6 0xFFCC117C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE7 0xFFCC118C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE8 0xFFCC119C /* USB0 Receive Type */ +#define USB0_EP_RXTYPE9 0xFFCC11AC /* USB0 Receive Type */ +#define USB0_EP_RXTYPE10 0xFFCC11BC /* USB0 Receive Type */ +#define USB0_EP_RXINTERVAL0 0xFFCC111D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL1 0xFFCC112D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL2 0xFFCC113D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL3 0xFFCC114D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL4 0xFFCC115D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL5 0xFFCC116D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL6 0xFFCC117D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL7 0xFFCC118D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL8 0xFFCC119D /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL9 0xFFCC11AD /* USB0 Receive Polling Interval */ +#define USB0_EP_RXINTERVAL10 0xFFCC11BD /* USB0 Receive Polling Interval */ +#define USB0_DMA_IRQ 0xFFCC1200 /* USB0 Interrupt Register */ +#define USB0_DMA_CTL0 0xFFCC1204 /* USB0 DMA Control */ +#define USB0_DMA_CTL1 0xFFCC1214 /* USB0 DMA Control */ +#define USB0_DMA_CTL2 0xFFCC1224 /* USB0 DMA Control */ +#define USB0_DMA_CTL3 0xFFCC1234 /* USB0 DMA Control */ +#define USB0_DMA_CTL4 0xFFCC1244 /* USB0 DMA Control */ +#define USB0_DMA_CTL5 0xFFCC1254 /* USB0 DMA Control */ +#define USB0_DMA_CTL6 0xFFCC1264 /* USB0 DMA Control */ +#define USB0_DMA_CTL7 0xFFCC1274 /* USB0 DMA Control */ +#define USB0_DMA_ADDR0 0xFFCC1208 /* USB0 DMA Address */ +#define USB0_DMA_ADDR1 0xFFCC1218 /* USB0 DMA Address */ +#define USB0_DMA_ADDR2 0xFFCC1228 /* USB0 DMA Address */ +#define USB0_DMA_ADDR3 0xFFCC1238 /* USB0 DMA Address */ +#define USB0_DMA_ADDR4 0xFFCC1248 /* USB0 DMA Address */ +#define USB0_DMA_ADDR5 0xFFCC1258 /* USB0 DMA Address */ +#define USB0_DMA_ADDR6 0xFFCC1268 /* USB0 DMA Address */ +#define USB0_DMA_ADDR7 0xFFCC1278 /* USB0 DMA Address */ +#define USB0_DMA_CNT0 0xFFCC120C /* USB0 DMA Count */ +#define USB0_DMA_CNT1 0xFFCC121C /* USB0 DMA Count */ +#define USB0_DMA_CNT2 0xFFCC122C /* USB0 DMA Count */ +#define USB0_DMA_CNT3 0xFFCC123C /* USB0 DMA Count */ +#define USB0_DMA_CNT4 0xFFCC124C /* USB0 DMA Count */ +#define USB0_DMA_CNT5 0xFFCC125C /* USB0 DMA Count */ +#define USB0_DMA_CNT6 0xFFCC126C /* USB0 DMA Count */ +#define USB0_DMA_CNT7 0xFFCC127C /* USB0 DMA Count */ +#define USB0_RQPKTCNT0 0xFFCC1300 /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT1 0xFFCC1304 /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT2 0xFFCC1308 /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT3 0xFFCC130C /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT4 0xFFCC1310 /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT5 0xFFCC1314 /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT6 0xFFCC1318 /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT7 0xFFCC131C /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT8 0xFFCC1320 /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT9 0xFFCC1324 /* USB0 Request Packet Count */ +#define USB0_RQPKTCNT10 0xFFCC1328 /* USB0 Request Packet Count */ +#define USB0_CT_UCH 0xFFCC1344 /* USB0 Chirp Timeout */ +#define USB0_CT_HHSRTN 0xFFCC1346 /* USB0 High Speed Resume Return to Normal */ +#define USB0_CT_HSBT 0xFFCC1348 /* USB0 High Speed Timeout */ +#define USB0_LPM_ATTR 0xFFCC1360 /* USB0 LPM Attribute */ +#define USB0_LPM_CTL 0xFFCC1362 /* USB0 LPM Control */ +#define USB0_LPM_IEN 0xFFCC1363 /* USB0 LPM Interrupt Enable */ +#define USB0_LPM_IRQ 0xFFCC1364 /* USB0 LPM Interrupt */ +#define USB0_LPM_FADDR 0xFFCC1365 /* USB0 LPM Function Address */ +#define USB0_VBUS_CTL 0xFFCC1380 /* USB0 VBus Control */ +#define USB0_BAT_CHG 0xFFCC1381 /* USB0 Battery Charging */ +#define USB0_PHY_CTL 0xFFCC1394 /* USB0 PHY Control */ +#define USB0_TESTCTL 0xFFCC1397 /* USB0 Test Control */ +#define USB0_PLL_OSC 0xFFCC1398 /* USB0 PLL and Oscillator Control */ + +#define CHIPID 0xffc00014 +/* CHIPID Masks */ +#define CHIPID_VERSION 0xF0000000 +#define CHIPID_FAMILY 0x0FFFF000 +#define CHIPID_MANUFACTURE 0x00000FFE + +#define L1_DATA_A_SRAM 0xFF800000 /* 0xFF800000 -> 0xFF803FFF Data Bank A SRAM */ +#define L1_DATA_A_SRAM_SIZE 0x8000 +#define L1_DATA_A_SRAM_END (L1_DATA_A_SRAM + L1_DATA_A_SRAM_SIZE) +#define L1_DATA_B_SRAM 0xFF900000 /* 0xFF900000 -> 0xFF903FFF Data Bank B SRAM */ +#define L1_DATA_B_SRAM_SIZE 0x4000 +#define L1_DATA_B_SRAM_END (L1_DATA_B_SRAM + L1_DATA_B_SRAM_SIZE) + +#define L1_INST_SRAM 0xFFA00000 /* 0xFFA00000 -> 0xFFA07FFF Instruction Bank A SRAM */ +#define L1_INST_SRAM_SIZE 0x8000 +#define L1_INST_SRAM_END (L1_INST_SRAM + L1_INST_SRAM_SIZE) + +#endif /* __BFIN_DEF_ADSP_BF609_proc__ */ diff --git a/arch/blackfin/include/asm/mach-bf609/anomaly.h b/arch/blackfin/include/asm/mach-bf609/anomaly.h new file mode 100644 index 0000000..cfe1a1d --- /dev/null +++ b/arch/blackfin/include/asm/mach-bf609/anomaly.h @@ -0,0 +1,128 @@ +/* + * DO NOT EDIT THIS FILE + * This file is under version control at + * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ + * and can be replaced with that version at any time + * DO NOT EDIT THIS FILE + * + * Copyright 2004-2010 Analog Devices Inc. + * Licensed under the ADI BSD license. + * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd + */ + +/* This file should be up to date with: + */ + +#if __SILICON_REVISION__ < 0 +# error will not work on BF506 silicon version +#endif + +#ifndef _MACH_ANOMALY_H_ +#define _MACH_ANOMALY_H_ + +/* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot2 Not Supported */ +#define ANOMALY_05000074 (1) +/* DMA_RUN Bit Is Not Valid after a Peripheral Receive Channel DMA Stops */ +#define ANOMALY_05000119 (1) +/* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */ +#define ANOMALY_05000122 (1) +/* False Hardware Error from an Access in the Shadow of a Conditional Branch */ +#define ANOMALY_05000245 (1) +/* Incorrect Timer Pulse Width in Single-Shot PWM_OUT Mode with External Clock */ +#define ANOMALY_05000254 (1) +/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ +#define ANOMALY_05000265 (1) +/* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */ +#define ANOMALY_05000310 (1) +/* PPI Underflow Error Goes Undetected in ITU-R 656 Mode */ +#define ANOMALY_05000366 (1) +/* Speculative Fetches Can Cause Undesired External FIFO Operations */ +#define ANOMALY_05000416 (1) +/* Speculative Fetches of Indirect-Pointer Instructions Can Cause False Hardware Errors */ +#define ANOMALY_05000426 (1) +/* IFLUSH Instruction at End of Hardware Loop Causes Infinite Stall */ +#define ANOMALY_05000443 (1) +/* UART IrDA Receiver Fails on Extended Bit Pulses */ +#define ANOMALY_05000447 (1) +/* False Hardware Error when RETI Points to Invalid Memory */ +#define ANOMALY_05000461 (1) +/* PLL Latches Incorrect Settings During Reset */ +#define ANOMALY_05000469 (1) +/* Incorrect Default MSEL Value in PLL_CTL */ +#define ANOMALY_05000472 (1) +/* Interrupted SPORT Receive Data Register Read Results In Underflow when SLEN > 15 */ +#define ANOMALY_05000473 (1) +/* TESTSET Instruction Cannot Be Interrupted */ +#define ANOMALY_05000477 (1) +/* Reads of ITEST_COMMAND and ITEST_DATA Registers Cause Cache Corruption */ +#define ANOMALY_05000481 (1) +/* IFLUSH sucks at life */ +#define ANOMALY_05000491 (1) + +/* Anomalies that don't exist on this proc */ +#define ANOMALY_05000099 (0) +#define ANOMALY_05000120 (0) +#define ANOMALY_05000125 (0) +#define ANOMALY_05000149 (0) +#define ANOMALY_05000158 (0) +#define ANOMALY_05000171 (0) +#define ANOMALY_05000179 (0) +#define ANOMALY_05000182 (0) +#define ANOMALY_05000183 (0) +#define ANOMALY_05000189 (0) +#define ANOMALY_05000198 (0) +#define ANOMALY_05000202 (0) +#define ANOMALY_05000215 (0) +#define ANOMALY_05000219 (0) +#define ANOMALY_05000220 (0) +#define ANOMALY_05000227 (0) +#define ANOMALY_05000230 (0) +#define ANOMALY_05000231 (0) +#define ANOMALY_05000233 (0) +#define ANOMALY_05000234 (0) +#define ANOMALY_05000242 (0) +#define ANOMALY_05000244 (0) +#define ANOMALY_05000248 (0) +#define ANOMALY_05000250 (0) +#define ANOMALY_05000257 (0) +#define ANOMALY_05000261 (0) +#define ANOMALY_05000263 (0) +#define ANOMALY_05000266 (0) +#define ANOMALY_05000273 (0) +#define ANOMALY_05000274 (0) +#define ANOMALY_05000278 (0) +#define ANOMALY_05000281 (0) +#define ANOMALY_05000283 (0) +#define ANOMALY_05000285 (0) +#define ANOMALY_05000287 (0) +#define ANOMALY_05000301 (0) +#define ANOMALY_05000305 (0) +#define ANOMALY_05000307 (0) +#define ANOMALY_05000311 (0) +#define ANOMALY_05000312 (0) +#define ANOMALY_05000315 (0) +#define ANOMALY_05000323 (0) +#define ANOMALY_05000353 (1) +#define ANOMALY_05000357 (0) +#define ANOMALY_05000362 (1) +#define ANOMALY_05000363 (0) +#define ANOMALY_05000364 (0) +#define ANOMALY_05000371 (0) +#define ANOMALY_05000380 (0) +#define ANOMALY_05000386 (0) +#define ANOMALY_05000389 (0) +#define ANOMALY_05000400 (0) +#define ANOMALY_05000402 (0) +#define ANOMALY_05000412 (0) +#define ANOMALY_05000432 (0) +#define ANOMALY_05000440 (0) +#define ANOMALY_05000448 (0) +#define ANOMALY_05000456 (0) +#define ANOMALY_05000450 (0) +#define ANOMALY_05000465 (0) +#define ANOMALY_05000467 (0) +#define ANOMALY_05000474 (0) +#define ANOMALY_05000475 (0) +#define ANOMALY_05000485 (0) + +#endif diff --git a/arch/blackfin/include/asm/mach-bf609/def_local.h b/arch/blackfin/include/asm/mach-bf609/def_local.h new file mode 100644 index 0000000..d4250e6 --- /dev/null +++ b/arch/blackfin/include/asm/mach-bf609/def_local.h @@ -0,0 +1,5 @@ +#include "gpio.h" +#include "portmux.h" +#include "ports.h" + +#define CONFIG_BF60x 1 /* Linux glue */ diff --git a/arch/blackfin/include/asm/mach-bf609/portmux.h b/arch/blackfin/include/asm/mach-bf609/portmux.h new file mode 100644 index 0000000..757570f --- /dev/null +++ b/arch/blackfin/include/asm/mach-bf609/portmux.h @@ -0,0 +1,257 @@ +/* + * Copyright 2008-2011 Analog Devices Inc. + * + * Licensed under the GPL-2 or later + */ + +#ifndef _MACH_PORTMUX_H_ +#define _MACH_PORTMUX_H_ + +#define MAX_RESOURCES MAX_BLACKFIN_GPIOS + +/* EMAC RMII Port Mux */ +#define P_MII0_MDC (P_DEFINED | P_IDENT(GPIO_PC6) | P_FUNCT(0)) +#define P_MII0_MDIO (P_DEFINED | P_IDENT(GPIO_PC7) | P_FUNCT(0)) +#define P_MII0_ETxD0 (P_DEFINED | P_IDENT(GPIO_PC2) | P_FUNCT(0)) +#define P_MII0_ERxD0 (P_DEFINED | P_IDENT(GPIO_PC0) | P_FUNCT(0)) +#define P_MII0_ETxD1 (P_DEFINED | P_IDENT(GPIO_PC3) | P_FUNCT(0)) +#define P_MII0_ERxD1 (P_DEFINED | P_IDENT(GPIO_PC1) | P_FUNCT(0)) +#define P_MII0_ETxEN (P_DEFINED | P_IDENT(GPIO_PB13) | P_FUNCT(0)) +#define P_MII0_PHYINT (P_DEFINED | P_IDENT(GPIO_PD6) | P_FUNCT(0)) +#define P_MII0_CRS (P_DEFINED | P_IDENT(GPIO_PC5) | P_FUNCT(0)) +#define P_MII0_ERxER (P_DEFINED | P_IDENT(GPIO_PC4) | P_FUNCT(0)) +#define P_MII0_TxCLK (P_DEFINED | P_IDENT(GPIO_PB14) | P_FUNCT(0)) + +#define P_RMII0 {\ + P_MII0_ETxD0, \ + P_MII0_ETxD1, \ + P_MII0_ETxEN, \ + P_MII0_ERxD0, \ + P_MII0_ERxD1, \ + P_MII0_ERxER, \ + P_MII0_TxCLK, \ + P_MII0_PHYINT, \ + P_MII0_CRS, \ + P_MII0_MDC, \ + P_PTP0_PPS, \ + P_PTP1_PPS, \ + P_MII0_MDIO, 0} + +#define P_MII1_MDC (P_DEFINED | P_IDENT(GPIO_PE10) | P_FUNCT(0)) +#define P_MII1_MDIO (P_DEFINED | P_IDENT(GPIO_PE11) | P_FUNCT(0)) +#define P_MII1_ETxD0 (P_DEFINED | P_IDENT(GPIO_PG3) | P_FUNCT(0)) +#define P_MII1_ERxD0 (P_DEFINED | P_IDENT(GPIO_PG0) | P_FUNCT(0)) +#define P_MII1_ETxD1 (P_DEFINED | P_IDENT(GPIO_PG2) | P_FUNCT(0)) +#define P_MII1_ERxD1 (P_DEFINED | P_IDENT(GPIO_PE15) | P_FUNCT(0)) +#define P_MII1_ETxEN (P_DEFINED | P_IDENT(GPIO_PG5) | P_FUNCT(0)) +#define P_MII1_PHYINT (P_DEFINED | P_IDENT(GPIO_PE12) | P_FUNCT(0)) +#define P_MII1_CRS (P_DEFINED | P_IDENT(GPIO_PE13) | P_FUNCT(0)) +#define P_MII1_ERxER (P_DEFINED | P_IDENT(GPIO_PE14) | P_FUNCT(0)) +#define P_MII1_TxCLK (P_DEFINED | P_IDENT(GPIO_PG6) | P_FUNCT(0)) + +#define P_RMII1 {\ + P_MII1_ETxD0, \ + P_MII1_ETxD1, \ + P_MII1_ETxEN, \ + P_MII1_ERxD0, \ + P_MII1_ERxD1, \ + P_MII1_ERxER, \ + P_MII1_TxCLK, \ + P_MII1_PHYINT, \ + P_MII1_CRS, \ + P_MII1_MDC, \ + P_MII1_MDIO, 0} + +/* PPI Port Mux */ +#define P_PPI0_D0 (P_DEFINED | P_IDENT(GPIO_PF0) | P_FUNCT(1)) +#define P_PPI0_D1 (P_DEFINED | P_IDENT(GPIO_PF1) | P_FUNCT(1)) +#define P_PPI0_D2 (P_DEFINED | P_IDENT(GPIO_PF2) | P_FUNCT(1)) +#define P_PPI0_D3 (P_DEFINED | P_IDENT(GPIO_PF3) | P_FUNCT(1)) +#define P_PPI0_D4 (P_DEFINED | P_IDENT(GPIO_PF4) | P_FUNCT(1)) +#define P_PPI0_D5 (P_DEFINED | P_IDENT(GPIO_PF5) | P_FUNCT(1)) +#define P_PPI0_D6 (P_DEFINED | P_IDENT(GPIO_PF6) | P_FUNCT(1)) +#define P_PPI0_D7 (P_DEFINED | P_IDENT(GPIO_PF7) | P_FUNCT(1)) +#define P_PPI0_D8 (P_DEFINED | P_IDENT(GPIO_PF8) | P_FUNCT(1)) +#define P_PPI0_D9 (P_DEFINED | P_IDENT(GPIO_PF9) | P_FUNCT(1)) +#define P_PPI0_D10 (P_DEFINED | P_IDENT(GPIO_PF10) | P_FUNCT(1)) +#define P_PPI0_D11 (P_DEFINED | P_IDENT(GPIO_PF11) | P_FUNCT(1)) +#define P_PPI0_D12 (P_DEFINED | P_IDENT(GPIO_PF12) | P_FUNCT(1)) +#define P_PPI0_D13 (P_DEFINED | P_IDENT(GPIO_PF13) | P_FUNCT(1)) +#define P_PPI0_D14 (P_DEFINED | P_IDENT(GPIO_PF14) | P_FUNCT(1)) +#define P_PPI0_D15 (P_DEFINED | P_IDENT(GPIO_PF15) | P_FUNCT(1)) +#define P_PPI0_D16 (P_DEFINED | P_IDENT(GPIO_PE3) | P_FUNCT(1)) +#define P_PPI0_D17 (P_DEFINED | P_IDENT(GPIO_PE4) | P_FUNCT(1)) +#define P_PPI0_D18 (P_DEFINED | P_IDENT(GPIO_PE0) | P_FUNCT(1)) +#define P_PPI0_D19 (P_DEFINED | P_IDENT(GPIO_PE1) | P_FUNCT(1)) +#define P_PPI0_D20 (P_DEFINED | P_IDENT(GPIO_PD12) | P_FUNCT(1)) +#define P_PPI0_D21 (P_DEFINED | P_IDENT(GPIO_PD15) | P_FUNCT(1)) +#define P_PPI0_D22 (P_DEFINED | P_IDENT(GPIO_PE2) | P_FUNCT(1)) +#define P_PPI0_D23 (P_DEFINED | P_IDENT(GPIO_PE5) | P_FUNCT(1)) +#define P_PPI0_CLK (P_DEFINED | P_IDENT(GPIO_PE9) | P_FUNCT(1)) +#define P_PPI0_FS1 (P_DEFINED | P_IDENT(GPIO_PE8) | P_FUNCT(1)) +#define P_PPI0_FS2 (P_DEFINED | P_IDENT(GPIO_PE7) | P_FUNCT(1)) +#define P_PPI0_FS3 (P_DEFINED | P_IDENT(GPIO_PE6) | P_FUNCT(1)) + +#define P_PPI1_D0 (P_DEFINED | P_IDENT(GPIO_PC0) | P_FUNCT(1)) +#define P_PPI1_D1 (P_DEFINED | P_IDENT(GPIO_PC1) | P_FUNCT(1)) +#define P_PPI1_D2 (P_DEFINED | P_IDENT(GPIO_PC2) | P_FUNCT(1)) +#define P_PPI1_D3 (P_DEFINED | P_IDENT(GPIO_PC3) | P_FUNCT(1)) +#define P_PPI1_D4 (P_DEFINED | P_IDENT(GPIO_PC4) | P_FUNCT(1)) +#define P_PPI1_D5 (P_DEFINED | P_IDENT(GPIO_PC5) | P_FUNCT(1)) +#define P_PPI1_D6 (P_DEFINED | P_IDENT(GPIO_PC6) | P_FUNCT(1)) +#define P_PPI1_D7 (P_DEFINED | P_IDENT(GPIO_PC7) | P_FUNCT(1)) +#define P_PPI1_D8 (P_DEFINED | P_IDENT(GPIO_PC8) | P_FUNCT(1)) +#define P_PPI1_D9 (P_DEFINED | P_IDENT(GPIO_PC9) | P_FUNCT(1)) +#define P_PPI1_D10 (P_DEFINED | P_IDENT(GPIO_PC10) | P_FUNCT(1)) +#define P_PPI1_D11 (P_DEFINED | P_IDENT(GPIO_PC11) | P_FUNCT(1)) +#define P_PPI1_D12 (P_DEFINED | P_IDENT(GPIO_PC12) | P_FUNCT(1)) +#define P_PPI1_D13 (P_DEFINED | P_IDENT(GPIO_PC13) | P_FUNCT(1)) +#define P_PPI1_D14 (P_DEFINED | P_IDENT(GPIO_PC14) | P_FUNCT(1)) +#define P_PPI1_D15 (P_DEFINED | P_IDENT(GPIO_PC15) | P_FUNCT(1)) +#define P_PPI1_D16 (P_DEFINED | P_IDENT(GPIO_PD0) | P_FUNCT(1)) +#define P_PPI1_D17 (P_DEFINED | P_IDENT(GPIO_PD1) | P_FUNCT(1)) +#define P_PPI1_CLK (P_DEFINED | P_IDENT(GPIO_PB14) | P_FUNCT(1)) +#define P_PPI1_FS1 (P_DEFINED | P_IDENT(GPIO_PB13) | P_FUNCT(1)) +#define P_PPI1_FS2 (P_DEFINED | P_IDENT(GPIO_PD6) | P_FUNCT(1)) +#define P_PPI1_FS3 (P_DEFINED | P_IDENT(GPIO_PB15) | P_FUNCT(1)) + +#define P_PPI2_D0 (P_DEFINED | P_IDENT(GPIO_PA0) | P_FUNCT(1)) +#define P_PPI2_D1 (P_DEFINED | P_IDENT(GPIO_PA1) | P_FUNCT(1)) +#define P_PPI2_D2 (P_DEFINED | P_IDENT(GPIO_PA2) | P_FUNCT(1)) +#define P_PPI2_D3 (P_DEFINED | P_IDENT(GPIO_PA3) | P_FUNCT(1)) +#define P_PPI2_D4 (P_DEFINED | P_IDENT(GPIO_PA4) | P_FUNCT(1)) +#define P_PPI2_D5 (P_DEFINED | P_IDENT(GPIO_PA5) | P_FUNCT(1)) +#define P_PPI2_D6 (P_DEFINED | P_IDENT(GPIO_PA6) | P_FUNCT(1)) +#define P_PPI2_D7 (P_DEFINED | P_IDENT(GPIO_PA7) | P_FUNCT(1)) +#define P_PPI2_D8 (P_DEFINED | P_IDENT(GPIO_PA8) | P_FUNCT(1)) +#define P_PPI2_D9 (P_DEFINED | P_IDENT(GPIO_PA9) | P_FUNCT(1)) +#define P_PPI2_D10 (P_DEFINED | P_IDENT(GPIO_PA10) | P_FUNCT(1)) +#define P_PPI2_D11 (P_DEFINED | P_IDENT(GPIO_PA11) | P_FUNCT(1)) +#define P_PPI2_D12 (P_DEFINED | P_IDENT(GPIO_PA12) | P_FUNCT(1)) +#define P_PPI2_D13 (P_DEFINED | P_IDENT(GPIO_PA13) | P_FUNCT(1)) +#define P_PPI2_D14 (P_DEFINED | P_IDENT(GPIO_PA14) | P_FUNCT(1)) +#define P_PPI2_D15 (P_DEFINED | P_IDENT(GPIO_PA15) | P_FUNCT(1)) +#define P_PPI2_D16 (P_DEFINED | P_IDENT(GPIO_PB7) | P_FUNCT(1)) +#define P_PPI2_D17 (P_DEFINED | P_IDENT(GPIO_PB8) | P_FUNCT(1)) +#define P_PPI2_CLK (P_DEFINED | P_IDENT(GPIO_PB0) | P_FUNCT(1)) +#define P_PPI2_FS1 (P_DEFINED | P_IDENT(GPIO_PB1) | P_FUNCT(1)) +#define P_PPI2_FS2 (P_DEFINED | P_IDENT(GPIO_PB2) | P_FUNCT(1)) +#define P_PPI2_FS3 (P_DEFINED | P_IDENT(GPIO_PB3) | P_FUNCT(1)) + +/* SPI Port Mux */ +#define P_SPI0_SS (P_DEFINED | P_IDENT(GPIO_PD11) | P_FUNCT(3)) +#define P_SPI0_SCK (P_DEFINED | P_IDENT(GPIO_PD4) | P_FUNCT(0)) +#define P_SPI0_MISO (P_DEFINED | P_IDENT(GPIO_PD2) | P_FUNCT(0)) +#define P_SPI0_MOSI (P_DEFINED | P_IDENT(GPIO_PD3) | P_FUNCT(0)) +#define P_SPI0_RDY (P_DEFINED | P_IDENT(GPIO_PD10) | P_FUNCT(0)) +#define P_SPI0_D2 (P_DEFINED | P_IDENT(GPIO_PD0) | P_FUNCT(0)) +#define P_SPI0_D3 (P_DEFINED | P_IDENT(GPIO_PD1) | P_FUNCT(0)) + +#define P_SPI0_SSEL1 (P_DEFINED | P_IDENT(GPIO_PD11) | P_FUNCT(0)) +#define P_SPI0_SSEL2 (P_DEFINED | P_IDENT(GPIO_PD1) | P_FUNCT(2)) +#define P_SPI0_SSEL3 (P_DEFINED | P_IDENT(GPIO_PD0) | P_FUNCT(2)) +#define P_SPI0_SSEL4 (P_DEFINED | P_IDENT(GPIO_PC15) | P_FUNCT(0)) +#define P_SPI0_SSEL5 (P_DEFINED | P_IDENT(GPIO_PD9) | P_FUNCT(0)) +#define P_SPI0_SSEL6 (P_DEFINED | P_IDENT(GPIO_PC13) | P_FUNCT(0)) +#define P_SPI0_SSEL7 (P_DEFINED | P_IDENT(GPIO_PC12) | P_FUNCT(0)) + +#define P_SPI1_SS (P_DEFINED | P_IDENT(GPIO_PD12) | P_FUNCT(3)) +#define P_SPI1_SCK (P_DEFINED | P_IDENT(GPIO_PD5) | P_FUNCT(0)) +#define P_SPI1_MISO (P_DEFINED | P_IDENT(GPIO_PD14) | P_FUNCT(0)) +#define P_SPI1_MOSI (P_DEFINED | P_IDENT(GPIO_PD13) | P_FUNCT(0)) +#define P_SPI1_RDY (P_DEFINED | P_IDENT(GPIO_PE2) | P_FUNCT(0)) +#define P_SPI1_D2 (P_DEFINED | P_IDENT(GPIO_PE1) | P_FUNCT(0)) +#define P_SPI1_D3 (P_DEFINED | P_IDENT(GPIO_PE0) | P_FUNCT(0)) + +#define P_SPI1_SSEL1 (P_DEFINED | P_IDENT(GPIO_PD12) | P_FUNCT(0)) +#define P_SPI1_SSEL2 (P_DEFINED | P_IDENT(GPIO_PD15) | P_FUNCT(2)) +#define P_SPI1_SSEL3 (P_DEFINED | P_IDENT(GPIO_PD10) | P_FUNCT(2)) +#define P_SPI1_SSEL4 (P_DEFINED | P_IDENT(GPIO_PD9) | P_FUNCT(2)) +#define P_SPI1_SSEL5 (P_DEFINED | P_IDENT(GPIO_PF8) | P_FUNCT(0)) +#define P_SPI1_SSEL6 (P_DEFINED | P_IDENT(GPIO_PF9) | P_FUNCT(0)) +#define P_SPI1_SSEL7 (P_DEFINED | P_IDENT(GPIO_PC14) | P_FUNCT(0)) + +#define GPIO_DEFAULT_BOOT_SPI_CS +#define P_DEFAULT_BOOT_SPI_CS + +/* UART Port Mux */ +#define P_UART0_TX (P_DEFINED | P_IDENT(GPIO_PD7) | P_FUNCT(1)) +#define P_UART0_RX (P_DEFINED | P_IDENT(GPIO_PD8) | P_FUNCT(1)) +#define P_UART0_RTS (P_DEFINED | P_IDENT(GPIO_PD9) | P_FUNCT(1)) +#define P_UART0_CTS (P_DEFINED | P_IDENT(GPIO_PD10) | P_FUNCT(1)) + +#define P_UART1_TX (P_DEFINED | P_IDENT(GPIO_PG15) | P_FUNCT(0)) +#define P_UART1_RX (P_DEFINED | P_IDENT(GPIO_PG14) | P_FUNCT(0)) +#define P_UART1_RTS (P_DEFINED | P_IDENT(GPIO_PG10) | P_FUNCT(0)) +#define P_UART1_CTS (P_DEFINED | P_IDENT(GPIO_PG13) | P_FUNCT(0)) + +/* Timer */ +#define P_TMRCLK (P_DEFINED | P_IDENT(GPIO_PG13) | P_FUNCT(3)) +#define P_TMR0 (P_DEFINED | P_IDENT(GPIO_PE14) | P_FUNCT(2)) +#define P_TMR1 (P_DEFINED | P_IDENT(GPIO_PG4) | P_FUNCT(1)) +#define P_TMR2 (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(1)) +#define P_TMR3 (P_DEFINED | P_IDENT(GPIO_PG8) | P_FUNCT(1)) +#define P_TMR4 (P_DEFINED | P_IDENT(GPIO_PG9) | P_FUNCT(1)) +#define P_TMR5 (P_DEFINED | P_IDENT(GPIO_PG7) | P_FUNCT(1)) +#define P_TMR6 (P_DEFINED | P_IDENT(GPIO_PG11) | P_FUNCT(1)) +#define P_TMR7 (P_DEFINED | P_IDENT(GPIO_PG12) | P_FUNCT(1)) + +/* RSI */ +#define P_RSI_DATA0 (P_DEFINED | P_IDENT(GPIO_PG3) | P_FUNCT(2)) +#define P_RSI_DATA1 (P_DEFINED | P_IDENT(GPIO_PG2) | P_FUNCT(2)) +#define P_RSI_DATA2 (P_DEFINED | P_IDENT(GPIO_PG0) | P_FUNCT(2)) +#define P_RSI_DATA3 (P_DEFINED | P_IDENT(GPIO_PE15) | P_FUNCT(2)) +#define P_RSI_DATA4 (P_DEFINED | P_IDENT(GPIO_PE13) | P_FUNCT(2)) +#define P_RSI_DATA5 (P_DEFINED | P_IDENT(GPIO_PE12) | P_FUNCT(2)) +#define P_RSI_DATA6 (P_DEFINED | P_IDENT(GPIO_PE10) | P_FUNCT(2)) +#define P_RSI_DATA7 (P_DEFINED | P_IDENT(GPIO_PE11) | P_FUNCT(2)) +#define P_RSI_CMD (P_DEFINED | P_IDENT(GPIO_PG5) | P_FUNCT(1)) +#define P_RSI_CLK (P_DEFINED | P_IDENT(GPIO_PG6) | P_FUNCT(1)) + +/* PTP */ +#define P_PTP0_PPS (P_DEFINED | P_IDENT(GPIO_PB15) | P_FUNCT(0)) +#define P_PTP0_CLKIN (P_DEFINED | P_IDENT(GPIO_PC13) | P_FUNCT(2)) +#define P_PTP0_AUXIN (P_DEFINED | P_IDENT(GPIO_PC11) | P_FUNCT(2)) + +#define P_PTP1_PPS (P_DEFINED | P_IDENT(GPIO_PC9) | P_FUNCT(0)) +#define P_PTP1_CLKIN (P_DEFINED | P_IDENT(GPIO_PC13) | P_FUNCT(2)) +#define P_PTP1_AUXIN (P_DEFINED | P_IDENT(GPIO_PC11) | P_FUNCT(2)) + +/* SMC Port Mux */ +#define P_A3 (P_DEFINED | P_IDENT(GPIO_PA0) | P_FUNCT(0)) +#define P_A4 (P_DEFINED | P_IDENT(GPIO_PA1) | P_FUNCT(0)) +#define P_A5 (P_DEFINED | P_IDENT(GPIO_PA2) | P_FUNCT(0)) +#define P_A6 (P_DEFINED | P_IDENT(GPIO_PA3) | P_FUNCT(0)) +#define P_A7 (P_DEFINED | P_IDENT(GPIO_PA4) | P_FUNCT(0)) +#define P_A8 (P_DEFINED | P_IDENT(GPIO_PA5) | P_FUNCT(0)) +#define P_A9 (P_DEFINED | P_IDENT(GPIO_PA6) | P_FUNCT(0)) +#define P_A10 (P_DEFINED | P_IDENT(GPIO_PA7) | P_FUNCT(0)) +#define P_A11 (P_DEFINED | P_IDENT(GPIO_PA8) | P_FUNCT(0)) +#define P_A12 (P_DEFINED | P_IDENT(GPIO_PA9) | P_FUNCT(0)) +#define P_A13 (P_DEFINED | P_IDENT(GPIO_PB2) | P_FUNCT(0)) +#define P_A14 (P_DEFINED | P_IDENT(GPIO_PA10) | P_FUNCT(0)) +#define P_A15 (P_DEFINED | P_IDENT(GPIO_PA11) | P_FUNCT(0)) +#define P_A16 (P_DEFINED | P_IDENT(GPIO_PB3) | P_FUNCT(0)) +#define P_A17 (P_DEFINED | P_IDENT(GPIO_PA12) | P_FUNCT(0)) +#define P_A18 (P_DEFINED | P_IDENT(GPIO_PA13) | P_FUNCT(0)) +#define P_A19 (P_DEFINED | P_IDENT(GPIO_PA14) | P_FUNCT(0)) +#define P_A20 (P_DEFINED | P_IDENT(GPIO_PA15) | P_FUNCT(0)) +#define P_A21 (P_DEFINED | P_IDENT(GPIO_PB6) | P_FUNCT(0)) +#define P_A22 (P_DEFINED | P_IDENT(GPIO_PB7) | P_FUNCT(0)) +#define P_A23 (P_DEFINED | P_IDENT(GPIO_PB8) | P_FUNCT(0)) +#define P_A24 (P_DEFINED | P_IDENT(GPIO_PB10) | P_FUNCT(0)) +#define P_A25 (P_DEFINED | P_IDENT(GPIO_PB11) | P_FUNCT(0)) +#define P_NORCK (P_DEFINED | P_IDENT(GPIO_PB0) | P_FUNCT(0)) + +#define P_AMS1 (P_DEFINED | P_IDENT(GPIO_PB1) | P_FUNCT(0)) +#define P_AMS2 (P_DEFINED | P_IDENT(GPIO_PB4) | P_FUNCT(0)) +#define P_AMS3 (P_DEFINED | P_IDENT(GPIO_PB5) | P_FUNCT(0)) + +#define P_ABE0 (P_DEFINED | P_IDENT(GPIO_PB4) | P_FUNCT(1)) +#define P_ABE1 (P_DEFINED | P_IDENT(GPIO_PB5) | P_FUNCT(1)) + +/* CAN */ +#define P_CAN0_TX (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(2)) +#define P_CAN0_RX (P_DEFINED | P_IDENT(GPIO_PG4) | P_FUNCT(2)) + +#endif /* _MACH_PORTMUX_H_ */ diff --git a/arch/blackfin/include/asm/mach-bf609/ports.h b/arch/blackfin/include/asm/mach-bf609/ports.h new file mode 100644 index 0000000..b361c7b --- /dev/null +++ b/arch/blackfin/include/asm/mach-bf609/ports.h @@ -0,0 +1,103 @@ +/* + * Port Masks + */ + +#ifndef __BFIN_PERIPHERAL_PORT__ +#define __BFIN_PERIPHERAL_PORT__ + +/* PORTx_MUX Masks */ +#define PORT_x_MUX_0_MASK 0x00000003 +#define PORT_x_MUX_1_MASK 0x0000000C +#define PORT_x_MUX_2_MASK 0x00000030 +#define PORT_x_MUX_3_MASK 0x000000C0 +#define PORT_x_MUX_4_MASK 0x00000300 +#define PORT_x_MUX_5_MASK 0x00000C00 +#define PORT_x_MUX_6_MASK 0x00003000 +#define PORT_x_MUX_7_MASK 0x0000C000 +#define PORT_x_MUX_8_MASK 0x00030000 +#define PORT_x_MUX_9_MASK 0x000C0000 +#define PORT_x_MUX_10_MASK 0x00300000 +#define PORT_x_MUX_11_MASK 0x00C00000 +#define PORT_x_MUX_12_MASK 0x03000000 +#define PORT_x_MUX_13_MASK 0x0C000000 +#define PORT_x_MUX_14_MASK 0x30000000 +#define PORT_x_MUX_15_MASK 0xC0000000 + +#define PORT_x_MUX_FUNC_1 (0x0) +#define PORT_x_MUX_FUNC_2 (0x1) +#define PORT_x_MUX_FUNC_3 (0x2) +#define PORT_x_MUX_FUNC_4 (0x3) +#define PORT_x_MUX_0_FUNC_1 (PORT_x_MUX_FUNC_1 << 0) +#define PORT_x_MUX_0_FUNC_2 (PORT_x_MUX_FUNC_2 << 0) +#define PORT_x_MUX_0_FUNC_3 (PORT_x_MUX_FUNC_3 << 0) +#define PORT_x_MUX_0_FUNC_4 (PORT_x_MUX_FUNC_4 << 0) +#define PORT_x_MUX_1_FUNC_1 (PORT_x_MUX_FUNC_1 << 2) +#define PORT_x_MUX_1_FUNC_2 (PORT_x_MUX_FUNC_2 << 2) +#define PORT_x_MUX_1_FUNC_3 (PORT_x_MUX_FUNC_3 << 2) +#define PORT_x_MUX_1_FUNC_4 (PORT_x_MUX_FUNC_4 << 2) +#define PORT_x_MUX_2_FUNC_1 (PORT_x_MUX_FUNC_1 << 4) +#define PORT_x_MUX_2_FUNC_2 (PORT_x_MUX_FUNC_2 << 4) +#define PORT_x_MUX_2_FUNC_3 (PORT_x_MUX_FUNC_3 << 4) +#define PORT_x_MUX_2_FUNC_4 (PORT_x_MUX_FUNC_4 << 4) +#define PORT_x_MUX_3_FUNC_1 (PORT_x_MUX_FUNC_1 << 6) +#define PORT_x_MUX_3_FUNC_2 (PORT_x_MUX_FUNC_2 << 6) +#define PORT_x_MUX_3_FUNC_3 (PORT_x_MUX_FUNC_3 << 6) +#define PORT_x_MUX_3_FUNC_4 (PORT_x_MUX_FUNC_4 << 6) +#define PORT_x_MUX_4_FUNC_1 (PORT_x_MUX_FUNC_1 << 8) +#define PORT_x_MUX_4_FUNC_2 (PORT_x_MUX_FUNC_2 << 8) +#define PORT_x_MUX_4_FUNC_3 (PORT_x_MUX_FUNC_3 << 8) +#define PORT_x_MUX_4_FUNC_4 (PORT_x_MUX_FUNC_4 << 8) +#define PORT_x_MUX_5_FUNC_1 (PORT_x_MUX_FUNC_1 << 10) +#define PORT_x_MUX_5_FUNC_2 (PORT_x_MUX_FUNC_2 << 10) +#define PORT_x_MUX_5_FUNC_3 (PORT_x_MUX_FUNC_3 << 10) +#define PORT_x_MUX_5_FUNC_4 (PORT_x_MUX_FUNC_4 << 10) +#define PORT_x_MUX_6_FUNC_1 (PORT_x_MUX_FUNC_1 << 12) +#define PORT_x_MUX_6_FUNC_2 (PORT_x_MUX_FUNC_2 << 12) +#define PORT_x_MUX_6_FUNC_3 (PORT_x_MUX_FUNC_3 << 12) +#define PORT_x_MUX_6_FUNC_4 (PORT_x_MUX_FUNC_4 << 12) +#define PORT_x_MUX_7_FUNC_1 (PORT_x_MUX_FUNC_1 << 14) +#define PORT_x_MUX_7_FUNC_2 (PORT_x_MUX_FUNC_2 << 14) +#define PORT_x_MUX_7_FUNC_3 (PORT_x_MUX_FUNC_3 << 14) +#define PORT_x_MUX_7_FUNC_4 (PORT_x_MUX_FUNC_4 << 14) +#define PORT_x_MUX_8_FUNC_1 (PORT_x_MUX_FUNC_1 << 16) +#define PORT_x_MUX_8_FUNC_2 (PORT_x_MUX_FUNC_2 << 16) +#define PORT_x_MUX_8_FUNC_3 (PORT_x_MUX_FUNC_3 << 16) +#define PORT_x_MUX_8_FUNC_4 (PORT_x_MUX_FUNC_4 << 16) +#define PORT_x_MUX_9_FUNC_1 (PORT_x_MUX_FUNC_1 << 18) +#define PORT_x_MUX_9_FUNC_2 (PORT_x_MUX_FUNC_2 << 18) +#define PORT_x_MUX_9_FUNC_3 (PORT_x_MUX_FUNC_3 << 18) +#define PORT_x_MUX_9_FUNC_4 (PORT_x_MUX_FUNC_4 << 18) +#define PORT_x_MUX_10_FUNC_1 (PORT_x_MUX_FUNC_1 << 20) +#define PORT_x_MUX_10_FUNC_2 (PORT_x_MUX_FUNC_2 << 20) +#define PORT_x_MUX_10_FUNC_3 (PORT_x_MUX_FUNC_3 << 20) +#define PORT_x_MUX_10_FUNC_4 (PORT_x_MUX_FUNC_4 << 20) +#define PORT_x_MUX_11_FUNC_1 (PORT_x_MUX_FUNC_1 << 22) +#define PORT_x_MUX_11_FUNC_2 (PORT_x_MUX_FUNC_2 << 22) +#define PORT_x_MUX_11_FUNC_3 (PORT_x_MUX_FUNC_3 << 22) +#define PORT_x_MUX_11_FUNC_4 (PORT_x_MUX_FUNC_4 << 22) +#define PORT_x_MUX_12_FUNC_1 (PORT_x_MUX_FUNC_1 << 24) +#define PORT_x_MUX_12_FUNC_2 (PORT_x_MUX_FUNC_2 << 24) +#define PORT_x_MUX_12_FUNC_3 (PORT_x_MUX_FUNC_3 << 24) +#define PORT_x_MUX_12_FUNC_4 (PORT_x_MUX_FUNC_4 << 24) +#define PORT_x_MUX_13_FUNC_1 (PORT_x_MUX_FUNC_1 << 26) +#define PORT_x_MUX_13_FUNC_2 (PORT_x_MUX_FUNC_2 << 26) +#define PORT_x_MUX_13_FUNC_3 (PORT_x_MUX_FUNC_3 << 26) +#define PORT_x_MUX_13_FUNC_4 (PORT_x_MUX_FUNC_4 << 26) +#define PORT_x_MUX_14_FUNC_1 (PORT_x_MUX_FUNC_1 << 28) +#define PORT_x_MUX_14_FUNC_2 (PORT_x_MUX_FUNC_2 << 28) +#define PORT_x_MUX_14_FUNC_3 (PORT_x_MUX_FUNC_3 << 28) +#define PORT_x_MUX_14_FUNC_4 (PORT_x_MUX_FUNC_4 << 28) +#define PORT_x_MUX_15_FUNC_1 (PORT_x_MUX_FUNC_1 << 30) +#define PORT_x_MUX_15_FUNC_2 (PORT_x_MUX_FUNC_2 << 30) +#define PORT_x_MUX_15_FUNC_3 (PORT_x_MUX_FUNC_3 << 30) +#define PORT_x_MUX_15_FUNC_4 (PORT_x_MUX_FUNC_4 << 30) + +#include "../mach-common/bits/ports-a.h" +#include "../mach-common/bits/ports-b.h" +#include "../mach-common/bits/ports-c.h" +#include "../mach-common/bits/ports-d.h" +#include "../mach-common/bits/ports-e.h" +#include "../mach-common/bits/ports-f.h" +#include "../mach-common/bits/ports-g.h" + +#endif diff --git a/arch/blackfin/include/asm/mach-common/bits/cgu.h b/arch/blackfin/include/asm/mach-common/bits/cgu.h new file mode 100644 index 0000000..cdf7349 --- /dev/null +++ b/arch/blackfin/include/asm/mach-common/bits/cgu.h @@ -0,0 +1,80 @@ +/* + * CGU Masks + */ + +#ifndef __BFIN_PERIPHERAL_CGU__ +#define __BFIN_PERIPHERAL_CGU__ + +/* CGU_CTL Masks */ +#define DF (1 << 0) +#define MSEL (0x7f << MSEL_P) +#define WIDLE (1 << WIDLE_P) +#define LOCK (1 << LOCK_P) + +#define DF_P 0 +#define MSEL_P 8 +#define WIDLE_P 30 +#define LOCK_P 31 +#define MSEL_MASK 0x7F00 +#define DF_MASK 0x1 + +/* CGU_STAT Masks */ +#define PLLEN (1 << 0) +#define PLLBP (1 << 1) +#define PLLLK (1 << 2) +#define CLKSALGN (1 << 3) +#define CCBF0EN (1 << 4) +#define CCBF1EN (1 << 5) +#define SCBF0EN (1 << 6) +#define SCBF1EN (1 << 7) +#define DCBFEN (1 << 8) +#define OCBFEN (1 << 9) +#define ADRERR (1 << 16) +#define LWERR (1 << 17) +#define DIVERR (1 << 18) +#define WDFMSERR (1 << 19) +#define WDIVERR (1 << 20) +#define PLLLKERR (1 << 21) + +/* CGU_DIV Masks */ +#define CSEL (0x1f << CSEL_P) +#define S0SEL (3 << S0SEL_P) +#define SYSSEL (0x1f << SYSSEL_P) +#define S1SEL (3 << S1SEL_P) +#define DSEL (0x1f << DSEL_P) +#define OSEL (0x7f << OSEL_P) +#define ALGN (1 << ALGN_P) +#define UPDT (1 << UPDT_P) +#define LOCK (1 << LOCK_P) + +#define CSEL_P 0 +#define S0SEL_P 5 +#define SYSSEL_P 8 +#define S1SEL_P 13 +#define DSEL_P 16 +#define OSEL_P 22 +#define ALGN_P 29 +#define UPDT_P 30 +#define LOCK_P 31 + +/* CGU_CLKOUTSEL Masks */ +#define CLKOUTSEL (0xf << 0) +#define USBCLKSEL (0x3f << 16) +#define LOCK (1 << LOCK_P) + +#define LOCK_P 31 + +#define CLKOUTSEL_CLKIN 0x0 +#define CLKOUTSEL_CCLK 0x1 +#define CLKOUTSEL_SYSCLK 0x2 +#define CLKOUTSEL_SCLK0 0x3 +#define CLKOUTSEL_SCLK1 0x4 +#define CLKOUTSEL_DCLK 0x5 +#define CLKOUTSEL_USB_PLL 0x6 +#define CLKOUTSEL_OUTCLK 0x7 +#define CLKOUTSEL_USB_CLKIN 0x8 +#define CLKOUTSEL_WDOG 0x9 +#define CLKOUTSEL_PMON 0xA +#define CLKOUTSEL_GND 0xB + +#endif diff --git a/arch/blackfin/include/asm/mach-common/bits/dde.h b/arch/blackfin/include/asm/mach-common/bits/dde.h new file mode 100644 index 0000000..d7ad991 --- /dev/null +++ b/arch/blackfin/include/asm/mach-common/bits/dde.h @@ -0,0 +1,88 @@ +/* + * Distributed DMA Engine (DDE) Masks + */ + +#ifndef __BFIN_PERIPHERAL_DDE__ +#define __BFIN_PERIPHERAL_DDE__ + +/* DMA_CONFIG Masks */ +#define DMAEN (1 << DMAEN_P) /* DMA Channel Enable */ +#define WNR (1 << WNR_P) /* Channel Direction (W/R*) */ +#define SYNC (1 << SYNC_P) /* Synchronize Work Unit Transitions */ +#define CADDR (1 << CADDR_P) /* Use Current Address */ +#define PSIZE (7 << PSIZE_P) /* Peripheral Word Size */ +#define PSIZE_1 (0 << PSIZE_P) +#define PSIZE_2 (1 << PSIZE_P) +#define PSIZE_4 (2 << PSIZE_P) +#define PSIZE_8 (3 << PSIZE_P) +#define MSIZE (7 << MSIZE_P) /* Memory Transfer Size */ +#define MSIZE_1 (0 << MSIZE_P) +#define MSIZE_2 (1 << MSIZE_P) +#define MSIZE_4 (2 << MSIZE_P) +#define MSIZE_8 (3 << MSIZE_P) +#define MSIZE_16 (4 << MSIZE_P) +#define MSIZE_32 (5 << MSIZE_P) +#define FLOW (7 << FLOW_P) /* Next Operation */ +#define FLOW_STOP (0 << FLOW_P) /* Stop Mode */ +#define FLOW_AUTO (1 << FLOW_P) /* Autobuffer Mode */ +#define FLOW_DSCL (4 << FLOW_P) /* Descriptor List */ +#define FLOW_DSCA (5 << FLOW_P) /* Descriptor Array */ +#define FLOW_DSDL (6 << FLOW_P) /* Descriptor On Demand List */ +#define FLOW_DSDA (7 << FLOW_P) /* Descriptor On Demand Array */ +#define NDSIZE (7 << NDSIZE_P) /* Next Descriptor Set Size */ +#define NDSIZE_1 (0 << NDSIZE_P) +#define NDSIZE_2 (1 << NDSIZE_P) +#define NDSIZE_3 (2 << NDSIZE_P) +#define NDSIZE_4 (3 << NDSIZE_P) +#define NDSIZE_5 (4 << NDSIZE_P) +#define NDSIZE_6 (5 << NDSIZE_P) +#define NDSIZE_7 (6 << NDSIZE_P) +#define DI_EN_X (1 << INT_P) +#define DI_EN_Y (2 << INT_P) +#define DI_EN_P (3 << INT_P) +#define DI_EN (DI_EN_X) +#define DI_XCOUNT_EN (1 << INT_P) /* xcount expires interrupt */ +#define TRIG (3 << TRIG_P) /* Generate Trigger */ +#define TOVEN (1 << TOVEN_P) +#define DESCIDCPY (1 << DESCIDCPY_P) +#define TWOD (1 << TWOD_P) +#define PDRF (1 << PDRF_P) + +#define DMAEN_P 0 +#define WNR_P 1 +#define SYNC_P 2 +#define CADDR_P 3 +#define PSIZE_P 4 +#define MSIZE_P 8 +#define FLOW_P 12 +#define TWAIT_P 15 +#define NDSIZE_P 16 +#define INT_P 20 +#define TRIG_P 22 +#define TOVEN_P 24 +#define DESCIDCPY_P 25 +#define TWOD_P 26 +#define PDRF_P 28 + +/* DMA_STATUS Masks */ +#define DMA_DONE (1 << DMA_DONE_P) /* Work Unit/Row Done Interrupt */ +#define DMA_ERR (1 << DMA_ERR_P) /* Error Interrupt */ +#define DMA_PIRQ (1 << DMA_PIRQ_P) /* Peripheral Interrupt Request */ +#define DMA_ERRC (7 << DMA_ERRC_P) /* Error Cause */ +#define DMA_RUN (7 << DMA_RUN_P) /* Run Status */ +#define DMA_PBWIDTH (3 << DMA_PBWIDTH_P) /* Peripheral Bus Width */ +#define DMA_MBWIDTH (3 << DMA_MBWIDTH_P) /* Memory Bus Width */ +#define DMA_FIFOFILL (7 << DMA_FIFOFILL_P) /* FIFO Fill Status */ +#define DMA_TWAIT (1 << DMA_TWAIT_P) /* Trigger Wait Status */ + +#define DMA_DONE_P 0 +#define DMA_ERR_P 1 +#define DMA_PIRQ_P 2 +#define DMA_ERRC_P 4 +#define DMA_RUN_P 8 +#define DMA_PBWIDTH_P 12 +#define DMA_MBWIDTH_P 14 +#define DMA_FIFOFILL_P 16 +#define DMA_TWAIT_P 20 + +#endif diff --git a/arch/blackfin/include/asm/mach-common/bits/mpu.h b/arch/blackfin/include/asm/mach-common/bits/mpu.h index 39998f8..d067ef9 100644 --- a/arch/blackfin/include/asm/mach-common/bits/mpu.h +++ b/arch/blackfin/include/asm/mach-common/bits/mpu.h @@ -70,7 +70,11 @@ #define PAGE_SIZE_4KB 0x00010000 /* 4 KB page size */ #define PAGE_SIZE_1MB 0x00020000 /* 1 MB page size */ #define PAGE_SIZE_4MB 0x00030000 /* 4 MB page size */ -#define PAGE_SIZE_MASK 0x00030000 /* the bits for the page_size field */ +#define PAGE_SIZE_16KB 0x00040000 /* 16 KB page size */ +#define PAGE_SIZE_64KB 0x00050000 /* 64 KB page size */ +#define PAGE_SIZE_16MB 0x00060000 /* 16 MB page size */ +#define PAGE_SIZE_64MB 0x00070000 /* 64 MB page size */ +#define PAGE_SIZE_MASK 0x00070000 /* the bits for the page_size field */ #define PAGE_SIZE_SHIFT 16 #define CPLB_L1SRAM 0x00000020 /* 0=SRAM mapped in L1, 0=SRAM not mapped to L1 */ #define CPLB_PORTPRIO 0x00000200 /* 0=low priority port, 1= high priority port */ diff --git a/arch/blackfin/include/asm/mach-common/bits/pll.h b/arch/blackfin/include/asm/mach-common/bits/pll.h index 9009f26..fe0ba0f 100644 --- a/arch/blackfin/include/asm/mach-common/bits/pll.h +++ b/arch/blackfin/include/asm/mach-common/bits/pll.h @@ -16,6 +16,8 @@ #define MSEL 0x7E00 /* Multiplier Select For CCLK/VCO Factors */ #define SPORT_HYST 0x8000 /* Enable Additional Hysteresis on SPORT Input Pins */
+#define MSEL_P 9 + /* PLL_DIV Masks */ #define SSEL 0x000F /* System Select */ #define CSEL 0x0030 /* Core Select */ @@ -29,6 +31,9 @@ #define CCLK_DIV4 CSEL_DIV4 #define CCLK_DIV8 CSEL_DIV8
+#define SSEL_P 0 +#define CSEL_P 4 + /* PLL_STAT Masks */ #define ACTIVE_PLLENABLED 0x0001 /* Processor In Active Mode With PLL Enabled */ #define FULL_ON 0x0002 /* Processor In Full On Mode */

From: Sonic Zhang sonic.zhang@analog.com
Set up clocks, DDR controller, Nor flash controller, reboot, serial port. Add new SPI boot modes.
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com --- arch/blackfin/cpu/cpu.c | 4 +- arch/blackfin/cpu/initcode.c | 313 ++++++++++++++++++++++++++++++-- arch/blackfin/cpu/initcode.h | 52 ++++++ arch/blackfin/cpu/reset.c | 6 + arch/blackfin/include/asm/config-pre.h | 4 + arch/blackfin/lib/board.c | 6 + arch/blackfin/lib/clocks.c | 113 +++++++++--- common/cmd_reginfo.c | 19 ++- 8 files changed, 478 insertions(+), 39 deletions(-)
diff --git a/arch/blackfin/cpu/cpu.c b/arch/blackfin/cpu/cpu.c index 6a0bcca..b9fdb07 100644 --- a/arch/blackfin/cpu/cpu.c +++ b/arch/blackfin/cpu/cpu.c @@ -68,7 +68,9 @@ void cpu_init_f(ulong bootflag, ulong loaded_from_ldr) /* Reset upon a double exception rather than just hanging. * Do not do bfin_read on SWRST as that will reset status bits. */ +# ifdef SWRST bfin_write_SWRST(DOUBLE_FAULT); +# endif #endif
serial_early_puts("Board init flash\n"); @@ -92,7 +94,7 @@ int irq_init(void) #elif defined(SICA_IMASK0) bfin_write_SICA_IMASK0(0); bfin_write_SICA_IMASK1(0); -#else +#elif defined(SIC_IMASK) bfin_write_SIC_IMASK(0); #endif /* Set up a dummy NMI handler if needed. */ diff --git a/arch/blackfin/cpu/initcode.c b/arch/blackfin/cpu/initcode.c index fb3a101..acfa475 100644 --- a/arch/blackfin/cpu/initcode.c +++ b/arch/blackfin/cpu/initcode.c @@ -15,20 +15,144 @@ #include <asm/blackfin.h> #include <asm/mach-common/bits/bootrom.h> #include <asm/mach-common/bits/core.h> +#ifndef __ADSPBF60x__ #include <asm/mach-common/bits/ebiu.h> -#include <asm/mach-common/bits/pll.h> -#include <asm/mach-common/bits/uart.h> +#endif
#define BUG() while (1) { asm volatile("emuexcpt;"); }
#include "serial.h"
+#ifndef __ADSPBF60x__ +#include <asm/mach-common/bits/pll.h> +#else +#include <asm/mach-common/bits/cgu.h> +#endif + +#ifdef __ADSPBF60x__ +#define CONFIG_BFIN_GET_DCLK_M ((CONFIG_CLKIN_HZ*CONFIG_VCO_MULT)/(CONFIG_DCLK_DIV*1000000)) + +#ifndef CONFIG_DMC_DDRCFG +#if ((CONFIG_BFIN_GET_DCLK_M != 125) && \ + (CONFIG_BFIN_GET_DCLK_M != 133) && \ + (CONFIG_BFIN_GET_DCLK_M != 150) && \ + (CONFIG_BFIN_GET_DCLK_M != 166) && \ + (CONFIG_BFIN_GET_DCLK_M != 200) && \ + (CONFIG_BFIN_GET_DCLK_M != 225) && \ + (CONFIG_BFIN_GET_DCLK_M != 250)) +#error "DDR2 CLK must be in (125, 133, 150, 166, 200, 225, 250)MHz" +#endif +#endif + +/* DMC control bits */ +#define SRREQ 0x8 + +/* DMC status bits */ +#define IDLE 0x1 +#define MEMINITDONE 0x4 +#define SRACK 0x8 +#define PDACK 0x10 +#define DPDACK 0x20 +#define DLLCALDONE 0x2000 +#define PENDREF 0xF0000 +#define PHYRDPHASE 0xF00000 +#define PHYRDPHASE_OFFSET 20 + +/* DMC DLL control bits */ +#define DLLCALRDCNT 0xFF +#define DATACYC_OFFSET 8 + +struct ddr_config { + u32 ddr_clk; + u32 dmc_ddrctl; + u32 dmc_ddrcfg; + u32 dmc_ddrtr0; + u32 dmc_ddrtr1; + u32 dmc_ddrtr2; + u32 dmc_ddrmr; + u32 dmc_ddrmr1; +}; + +static struct ddr_config ddr_config_table[] = { + [0] = { + .ddr_clk = 125, /* 125MHz */ + .dmc_ddrctl = 0x00000904, + .dmc_ddrcfg = 0x00000422, + .dmc_ddrtr0 = 0x20705212, + .dmc_ddrtr1 = 0x201003CF, + .dmc_ddrtr2 = 0x00320107, + .dmc_ddrmr = 0x00000422, + .dmc_ddrmr1 = 0x4, + }, + [1] = { + .ddr_clk = 133, /* 133MHz */ + .dmc_ddrctl = 0x00000904, + .dmc_ddrcfg = 0x00000422, + .dmc_ddrtr0 = 0x20806313, + .dmc_ddrtr1 = 0x2013040D, + .dmc_ddrtr2 = 0x00320108, + .dmc_ddrmr = 0x00000632, + .dmc_ddrmr1 = 0x4, + }, + [2] = { + .ddr_clk = 150, /* 150MHz */ + .dmc_ddrctl = 0x00000904, + .dmc_ddrcfg = 0x00000422, + .dmc_ddrtr0 = 0x20A07323, + .dmc_ddrtr1 = 0x20160492, + .dmc_ddrtr2 = 0x00320209, + .dmc_ddrmr = 0x00000632, + .dmc_ddrmr1 = 0x4, + }, + [3] = { + .ddr_clk = 166, /* 166MHz */ + .dmc_ddrctl = 0x00000904, + .dmc_ddrcfg = 0x00000422, + .dmc_ddrtr0 = 0x20A07323, + .dmc_ddrtr1 = 0x2016050E, + .dmc_ddrtr2 = 0x00320209, + .dmc_ddrmr = 0x00000632, + .dmc_ddrmr1 = 0x4, + }, + [4] = { + .ddr_clk = 200, /* 200MHz */ + .dmc_ddrctl = 0x00000904, + .dmc_ddrcfg = 0x00000422, + .dmc_ddrtr0 = 0x20a07323, + .dmc_ddrtr1 = 0x2016050f, + .dmc_ddrtr2 = 0x00320509, + .dmc_ddrmr = 0x00000632, + .dmc_ddrmr1 = 0x4, + }, + [5] = { + .ddr_clk = 225, /* 225MHz */ + .dmc_ddrctl = 0x00000904, + .dmc_ddrcfg = 0x00000422, + .dmc_ddrtr0 = 0x20E0A424, + .dmc_ddrtr1 = 0x302006DB, + .dmc_ddrtr2 = 0x0032020D, + .dmc_ddrmr = 0x00000842, + .dmc_ddrmr1 = 0x4, + }, + [6] = { + .ddr_clk = 250, /* 250MHz */ + .dmc_ddrctl = 0x00000904, + .dmc_ddrcfg = 0x00000422, + .dmc_ddrtr0 = 0x20E0A424, + .dmc_ddrtr1 = 0x3020079E, + .dmc_ddrtr2 = 0x0032050D, + .dmc_ddrmr = 0x00000842, + .dmc_ddrmr1 = 0x4, + }, +}; +#endif + __attribute__((always_inline)) static inline void serial_init(void) { - uint32_t uart_base = UART_DLL; + uint32_t uart_base = UART_BASE;
-#ifdef __ADSPBF54x__ +#if defined(__ADSPBF54x__) || defined(__ADSPBF60x__) # ifdef BFIN_BOOT_UART_USE_RTS # define BFIN_UART_USE_RTS 1 # else @@ -38,7 +162,11 @@ static inline void serial_init(void) size_t i;
/* force RTS rather than relying on auto RTS */ +#if BFIN_UART_HW_VER < 4 bfin_write16(&pUART->mcr, bfin_read16(&pUART->mcr) | FCPOL); +#else + bfin_write32(&pUART->control, bfin_read32(&pUART->control) | FCPOL); +#endif
/* Wait for the line to clear up. We cannot rely on UART * registers as none of them reflect the status of the RSR. @@ -68,13 +196,13 @@ static inline void serial_init(void) #endif
if (BFIN_DEBUG_EARLY_SERIAL) { - int ucen = bfin_read16(&pUART->gctl) & UCEN; + int enabled = serial_early_enabled(uart_base); serial_early_init(uart_base);
/* If the UART is off, that means we need to program * the baud rate ourselves initially. */ - if (ucen != UCEN) + if (!enabled) serial_early_set_baud(uart_base, CONFIG_BAUDRATE); } } @@ -82,12 +210,16 @@ static inline void serial_init(void) __attribute__((always_inline)) static inline void serial_deinit(void) { -#ifdef __ADSPBF54x__ - uint32_t uart_base = UART_DLL; +#if defined(__ADSPBF54x__) || defined(__ADSPBF60x__) + uint32_t uart_base = UART_BASE;
if (BFIN_UART_USE_RTS && CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_UART) { /* clear forced RTS rather than relying on auto RTS */ +#if BFIN_UART_HW_VER < 4 bfin_write16(&pUART->mcr, bfin_read16(&pUART->mcr) & ~FCPOL); +#else + bfin_write32(&pUART->control, bfin_read32(&pUART->control) & ~FCPOL); +#endif } #endif } @@ -95,7 +227,7 @@ static inline void serial_deinit(void) __attribute__((always_inline)) static inline void serial_putc(char c) { - uint32_t uart_base = UART_DLL; + uint32_t uart_base = UART_BASE;
if (!BFIN_DEBUG_EARLY_SERIAL) return; @@ -103,9 +235,9 @@ static inline void serial_putc(char c) if (c == '\n') serial_putc('\r');
- bfin_write16(&pUART->thr, c); + bfin_write(&pUART->thr, c);
- while (!(bfin_read16(&pUART->lsr) & TEMT)) + while (!(_lsr_read(pUART) & TEMT)) continue; }
@@ -152,6 +284,24 @@ program_nmi_handler(void) # define bfin_write_SPI_BAUD bfin_write_SPI0_BAUD #endif
+#ifdef __ADSPBF60x__ + +#ifndef CONFIG_CGU_CTL_VAL +# define CONFIG_CGU_CTL_VAL ((CONFIG_VCO_MULT << 8) | CONFIG_CLKIN_HALF) +#endif + +#ifndef CONFIG_CGU_DIV_VAL +# define CONFIG_CGU_DIV_VAL \ + ((CONFIG_CCLK_DIV << CSEL_P) | \ + (CONFIG_SCLK0_DIV << S0SEL_P) | \ + (CONFIG_SCLK_DIV << SYSSEL_P) | \ + (CONFIG_SCLK1_DIV << S1SEL_P) | \ + (CONFIG_DCLK_DIV << DSEL_P) | \ + (CONFIG_OCLK_DIV << OSEL_P)) +#endif + +#else /* __ADSPBF60x__ */ + /* PLL_DIV defines */ #ifndef CONFIG_PLL_DIV_VAL # if (CONFIG_CCLK_DIV == 1) @@ -275,6 +425,8 @@ program_nmi_handler(void) # endif #endif
+#endif /* __ADSPBF60x__ */ + __attribute__((always_inline)) static inline void program_early_devices(ADI_BOOT_DATA *bs, uint *sdivB, uint *divB, uint *vcoB) { @@ -283,8 +435,14 @@ program_early_devices(ADI_BOOT_DATA *bs, uint *sdivB, uint *divB, uint *vcoB) /* Save the clock pieces that are used in baud rate calculation */ if (BFIN_DEBUG_EARLY_SERIAL || CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_UART) { serial_putc('b'); +#ifdef __ADSPBF60x__ + *sdivB = bfin_read_CGU_DIV(); + *sdivB = ((*sdivB >> 8) & 0x1f) * ((*sdivB >> 5) & 0x7); + *vcoB = (bfin_read_CGU_CTL() >> 8) & 0x7f; +#else *sdivB = bfin_read_PLL_DIV() & 0xf; *vcoB = (bfin_read_PLL_CTL() >> 9) & 0x3f; +#endif *divB = serial_early_get_div(); serial_putc('c'); } @@ -316,6 +474,7 @@ program_early_devices(ADI_BOOT_DATA *bs, uint *sdivB, uint *divB, uint *vcoB) * boot. Once we switch over to u-boot's SPI flash driver, we'll * increase the speed appropriately. */ +#ifdef SPI_BAUD if (CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_SPI_MASTER) { serial_putc('h'); if (BOOTROM_SUPPORTS_SPI_FAST_READ && CONFIG_SPI_BAUD_INITBLOCK < 4) @@ -323,6 +482,7 @@ program_early_devices(ADI_BOOT_DATA *bs, uint *sdivB, uint *divB, uint *vcoB) bfin_write_SPI_BAUD(CONFIG_SPI_BAUD_INITBLOCK); serial_putc('i'); } +#endif
serial_putc('j'); } @@ -335,6 +495,10 @@ maybe_self_refresh(ADI_BOOT_DATA *bs) if (!CONFIG_MEM_SIZE) return false;
+#ifdef __ADSPBF60x__ + +#else /* __ADSPBF60x__ */ + /* If external memory is enabled, put it into self refresh first. */ #if defined(EBIU_RSTCTL) if (bfin_read_EBIU_RSTCTL() & DDR_SRESET) { @@ -350,6 +514,7 @@ maybe_self_refresh(ADI_BOOT_DATA *bs) } #endif
+#endif /* __ADSPBF60x__ */ serial_putc('c');
return false; @@ -362,6 +527,37 @@ program_clocks(ADI_BOOT_DATA *bs, bool put_into_srfs)
serial_putc('a');
+#ifdef __ADSPBF60x__ + if (bfin_read_DMC0_STAT() & MEMINITDONE) { + bfin_write_DMC0_CTL(bfin_read_DMC0_CTL() | SRREQ); + SSYNC(); + while (!(bfin_read_DMC0_STAT() & SRACK)) + continue; + } + + /* Don't set the same value of MSEL and DF to CGU_CTL */ + if ((bfin_read_CGU_CTL() & (MSEL_MASK | DF_MASK)) + != CONFIG_CGU_CTL_VAL) { + bfin_write_CGU_DIV(CONFIG_CGU_DIV_VAL); + bfin_write_CGU_CTL(CONFIG_CGU_CTL_VAL); + while ((bfin_read_CGU_STAT() & (CLKSALGN | PLLBP)) || + !(bfin_read_CGU_STAT() & PLLLK)) + continue; + } + + bfin_write_CGU_DIV(CONFIG_CGU_DIV_VAL | UPDT); + while (bfin_read_CGU_STAT() & CLKSALGN) + continue; + + if (bfin_read_DMC0_STAT() & MEMINITDONE) { + bfin_write_DMC0_CTL(bfin_read_DMC0_CTL() & ~SRREQ); + SSYNC(); + while (bfin_read_DMC0_STAT() & SRACK) + continue; + } + +#else /* __ADSPBF60x__ */ + vr_ctl = bfin_read_VR_CTL();
serial_putc('b'); @@ -433,7 +629,7 @@ program_clocks(ADI_BOOT_DATA *bs, bool put_into_srfs) #elif defined(SICA_IWR0) bfin_write_SICA_IWR0(1); bfin_write_SICA_IWR1(0); -#else +#elif defined(SIC_IWR) bfin_write_SIC_IWR(1); #endif
@@ -482,13 +678,15 @@ program_clocks(ADI_BOOT_DATA *bs, bool put_into_srfs) #elif defined(SICA_IWR0) bfin_write_SICA_IWR0(-1); bfin_write_SICA_IWR1(-1); -#else +#elif defined(SIC_IWR) bfin_write_SIC_IWR(-1); #endif
serial_putc('n'); }
+#endif /* __ADSPBF60x__ */ + serial_putc('o');
return vr_ctl; @@ -507,14 +705,20 @@ update_serial_clocks(ADI_BOOT_DATA *bs, uint sdivB, uint divB, uint vcoB) if (CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_UART) { serial_putc('b'); unsigned int sdivR, vcoR; +#ifdef __ADSPBF60x__ + sdivR = bfin_read_CGU_DIV(); + sdivR = ((sdivR >> 8) & 0x1f) * ((sdivR >> 5) & 0x7); + vcoR = (bfin_read_CGU_CTL() >> 8) & 0x7f; +#else sdivR = bfin_read_PLL_DIV() & 0xf; vcoR = (bfin_read_PLL_CTL() >> 9) & 0x3f; +#endif int dividend = sdivB * divB * vcoR; int divisor = vcoB * sdivR; unsigned int quotient; for (quotient = 0; dividend > 0; ++quotient) dividend -= divisor; - serial_early_put_div(UART_DLL, quotient - ANOMALY_05000230); + serial_early_put_div(quotient - ANOMALY_05000230); serial_putc('c'); }
@@ -531,6 +735,83 @@ program_memory_controller(ADI_BOOT_DATA *bs, bool put_into_srfs)
serial_putc('b');
+#ifdef __ADSPBF60x__ + int dlldatacycle; + int dll_ctl; + int i = 0; + + if (CONFIG_BFIN_GET_DCLK_M == 125) + i = 0; + else if (CONFIG_BFIN_GET_DCLK_M == 133) + i = 1; + else if (CONFIG_BFIN_GET_DCLK_M == 150) + i = 2; + else if (CONFIG_BFIN_GET_DCLK_M == 166) + i = 3; + else if (CONFIG_BFIN_GET_DCLK_M == 200) + i = 4; + else if (CONFIG_BFIN_GET_DCLK_M == 225) + i = 5; + else if (CONFIG_BFIN_GET_DCLK_M == 250) + i = 6; + +#if 0 + for (i = 0; i < ARRAY_SIZE(ddr_config_table); i++) + if (CONFIG_BFIN_GET_DCLK_M == ddr_config_table[i].ddr_clk) + break; +#endif + +#ifndef CONFIG_DMC_DDRCFG + bfin_write_DMC0_CFG(ddr_config_table[i].dmc_ddrcfg); +#else + bfin_write_DMC0_CFG(CONFIG_DMC_DDRCFG); +#endif +#ifndef CONFIG_DMC_DDRTR0 + bfin_write_DMC0_TR0(ddr_config_table[i].dmc_ddrtr0); +#else + bfin_write_DMC0_TR0(CONFIG_DMC_DDRTR0); +#endif +#ifndef CONFIG_DMC_DDRTR1 + bfin_write_DMC0_TR1(ddr_config_table[i].dmc_ddrtr1); +#else + bfin_write_DMC0_TR1(CONFIG_DMC_DDRTR1); +#endif +#ifndef CONFIG_DMC_DDRTR2 + bfin_write_DMC0_TR2(ddr_config_table[i].dmc_ddrtr2); +#else + bfin_write_DMC0_TR2(CONFIG_DMC_DDRTR2); +#endif +#ifndef CONFIG_DMC_DDRMR + bfin_write_DMC0_MR(ddr_config_table[i].dmc_ddrmr); +#else + bfin_write_DMC0_MR(CONFIG_DMC_DDRMR); +#endif +#ifndef CONFIG_DMC_DDREMR1 + bfin_write_DMC0_EMR1(ddr_config_table[i].dmc_ddrmr1); +#else + bfin_write_DMC0_EMR1(CONFIG_DMC_DDREMR1); +#endif +#ifndef CONFIG_DMC_DDRCTL + bfin_write_DMC0_CTL(ddr_config_table[i].dmc_ddrctl); +#else + bfin_write_DMC0_CTL(CONFIG_DMC_DDRCTL); +#endif + + SSYNC(); + while (!(bfin_read_DMC0_STAT() & MEMINITDONE)) + continue; + + dlldatacycle = (bfin_read_DMC0_STAT() & PHYRDPHASE) >> PHYRDPHASE_OFFSET; + dll_ctl = bfin_read_DMC0_DLLCTL(); + dll_ctl &= 0x0ff; + bfin_write_DMC0_DLLCTL(dll_ctl | (dlldatacycle << DATACYC_OFFSET)); + + SSYNC(); + while (!(bfin_read_DMC0_STAT() & DLLCALDONE)) + continue; + serial_putc('!'); +#else /* __ADSPBF60x__ */ + /* Program the external memory controller before we come out of * self-refresh. This only works with our SDRAM controller. */ @@ -583,6 +864,7 @@ program_memory_controller(ADI_BOOT_DATA *bs, bool put_into_srfs) # endif #endif
+#endif /* __ADSPBF60x__ */ serial_putc('e'); }
@@ -606,7 +888,7 @@ check_hibernation(ADI_BOOT_DATA *bs, u16 vr_ctl, bool put_into_srfs) */ if (ANOMALY_05000307 || vr_ctl & 0x8000) { uint32_t *hibernate_magic = 0; - __builtin_bfin_ssync(); /* make sure memory controller is done */ + SSYNC(); if (hibernate_magic[0] == 0xDEADBEEF) { serial_putc('c'); bfin_write_EVT15(hibernate_magic[1]); @@ -689,3 +971,4 @@ void initcode(ADI_BOOT_DATA *bs)
serial_deinit(); } + diff --git a/arch/blackfin/cpu/initcode.h b/arch/blackfin/cpu/initcode.h index e0aad6d..1fec7f3 100644 --- a/arch/blackfin/cpu/initcode.h +++ b/arch/blackfin/cpu/initcode.h @@ -15,6 +15,8 @@ # define serial_putc(c) #endif
+#ifndef __ADSPBF60x__ + #ifndef CONFIG_EBIU_RSTCTL_VAL # define CONFIG_EBIU_RSTCTL_VAL 0 /* only MDDRENABLE is useful */ #endif @@ -30,6 +32,8 @@ # error invalid EBIU_DDRQUE value: must not set reserved bits #endif
+#endif /* __ADSPBF60x__ */ + __attribute__((always_inline)) static inline void program_async_controller(ADI_BOOT_DATA *bs) { @@ -45,10 +49,13 @@ program_async_controller(ADI_BOOT_DATA *bs)
serial_putc('a');
+#ifdef __ADSPBF60x__ /* Program the async banks controller. */ +#ifdef EBIU_AMGCTL bfin_write_EBIU_AMBCTL0(CONFIG_EBIU_AMBCTL0_VAL); bfin_write_EBIU_AMBCTL1(CONFIG_EBIU_AMBCTL1_VAL); bfin_write_EBIU_AMGCTL(CONFIG_EBIU_AMGCTL_VAL); +#endif
serial_putc('b');
@@ -66,6 +73,51 @@ program_async_controller(ADI_BOOT_DATA *bs) #endif
serial_putc('c'); + +#else /* __ADSPBF60x__ */ + /* Program the static memory controller. */ +# ifdef CONFIG_SMC_GCTL_VAL + bfin_write_SMC_GCTL(CONFIG_SMC_GCTL_VAL); +# endif +# ifdef CONFIG_SMC_B0CTL_VAL + bfin_write_SMC_B0CTL(CONFIG_SMC_B0CTL_VAL); +# endif +# ifdef CONFIG_SMC_B0TIM_VAL + bfin_write_SMC_B0TIM(CONFIG_SMC_B0TIM_VAL); +# endif +# ifdef CONFIG_SMC_B0ETIM_VAL + bfin_write_SMC_B0ETIM(CONFIG_SMC_B0ETIM_VAL); +# endif +# ifdef CONFIG_SMC_B1CTL_VAL + bfin_write_SMC_B1CTL(CONFIG_SMC_B1CTL_VAL); +# endif +# ifdef CONFIG_SMC_B1TIM_VAL + bfin_write_SMC_B1TIM(CONFIG_SMC_B1TIM_VAL); +# endif +# ifdef CONFIG_SMC_B1ETIM_VAL + bfin_write_SMC_B1ETIM(CONFIG_SMC_B1ETIM_VAL); +# endif +# ifdef CONFIG_SMC_B2CTL_VAL + bfin_write_SMC_B2CTL(CONFIG_SMC_B2CTL_VAL); +# endif +# ifdef CONFIG_SMC_B2TIM_VAL + bfin_write_SMC_B2TIM(CONFIG_SMC_B2TIM_VAL); +# endif +# ifdef CONFIG_SMC_B2ETIM_VAL + bfin_write_SMC_B2ETIM(CONFIG_SMC_B2ETIM_VAL); +# endif +# ifdef CONFIG_SMC_B3CTL_VAL + bfin_write_SMC_B3CTL(CONFIG_SMC_B3CTL_VAL); +# endif +# ifdef CONFIG_SMC_B3TIM_VAL + bfin_write_SMC_B3TIM(CONFIG_SMC_B3TIM_VAL); +# endif +# ifdef CONFIG_SMC_B3ETIM_VAL + bfin_write_SMC_B3ETIM(CONFIG_SMC_B3ETIM_VAL); +# endif + +#endif + serial_putc('d'); }
#endif diff --git a/arch/blackfin/cpu/reset.c b/arch/blackfin/cpu/reset.c index ff39035..b6718d3 100644 --- a/arch/blackfin/cpu/reset.c +++ b/arch/blackfin/cpu/reset.c @@ -23,6 +23,7 @@ __attribute__ ((__l1_text__, __noreturn__)) static void bfin_reset(void) { +#ifdef SWRST /* Wait for completion of "system" events such as cache line * line fills so that we avoid infinite stalls later on as * much as possible. This code is in L1, so it won't trigger @@ -66,10 +67,15 @@ static void bfin_reset(void) : "a" (15 * 1) : "LC1", "LB1", "LT1" ); +#endif
while (1) +#if defined(__ADSPBF60x__) + bfin_write_RCU0_CTL(0x1); +#else /* Issue core reset */ asm("raise 1"); +#endif }
/* We need to trampoline ourselves up into L1 since our linker diff --git a/arch/blackfin/include/asm/config-pre.h b/arch/blackfin/include/asm/config-pre.h index be5687c..d0fd537 100644 --- a/arch/blackfin/include/asm/config-pre.h +++ b/arch/blackfin/include/asm/config-pre.h @@ -29,6 +29,8 @@ #define BFIN_BOOT_16HOST_DMA 11 /* boot ldr from 16-bit host dma */ #define BFIN_BOOT_8HOST_DMA 12 /* boot ldr from 8-bit host dma */ #define BFIN_BOOT_NAND 13 /* boot ldr from nand flash */ +#define BFIN_BOOT_RSI_MASTER 14 /* boot ldr from rsi */ +#define BFIN_BOOT_LP_SLAVE 15 /* boot ldr from link port */
#ifndef __ASSEMBLY__ static inline const char *get_bfin_boot_mode(int bfin_boot) @@ -47,6 +49,8 @@ static inline const char *get_bfin_boot_mode(int bfin_boot) case BFIN_BOOT_16HOST_DMA: return "16bit dma"; case BFIN_BOOT_8HOST_DMA: return "8bit dma"; case BFIN_BOOT_NAND: return "nand flash"; + case BFIN_BOOT_RSI_MASTER: return "rsi master"; + case BFIN_BOOT_LP_SLAVE: return "link port slave"; default: return "INVALID"; } } diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index 9fbbea0..098f685 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -295,7 +295,13 @@ void board_init_f(ulong bootflag)
printf("Clock: VCO: %s MHz, ", strmhz(buf, get_vco())); printf("Core: %s MHz, ", strmhz(buf, get_cclk())); +#if defined(__ADSPBF60x__) + printf("System0: %s MHz, ", strmhz(buf, get_sclk0())); + printf("System1: %s MHz, ", strmhz(buf, get_sclk1())); + printf("Dclk: %s MHz\n", strmhz(buf, get_dclk())); +#else printf("System: %s MHz\n", strmhz(buf, get_sclk())); +#endif
if (CONFIG_MEM_SIZE) { printf("RAM: "); diff --git a/arch/blackfin/lib/clocks.c b/arch/blackfin/lib/clocks.c index 0be395b..4d9be68 100644 --- a/arch/blackfin/lib/clocks.c +++ b/arch/blackfin/lib/clocks.c @@ -9,69 +9,138 @@ #include <common.h> #include <asm/blackfin.h>
+#ifdef PLL_CTL +# include <asm/mach-common/bits/pll.h> +# define pll_is_bypassed() (bfin_read_PLL_STAT() & DF) +#else +# include <asm/mach-common/bits/cgu.h> +# define pll_is_bypassed() (bfin_read_CGU_STAT() & PLLBP) +# define bfin_read_PLL_CTL() bfin_read_CGU_CTL() +# define bfin_read_PLL_DIV() bfin_read_CGU_DIV() +#endif + /* Get the voltage input multiplier */ -static u_long cached_vco_pll_ctl, cached_vco; u_long get_vco(void) { - u_long msel; + static u_long cached_vco_pll_ctl, cached_vco; + + u_long msel, pll_ctl;
- u_long pll_ctl = bfin_read_PLL_CTL(); + pll_ctl = bfin_read_PLL_CTL(); if (pll_ctl == cached_vco_pll_ctl) return cached_vco; else cached_vco_pll_ctl = pll_ctl;
- msel = (pll_ctl >> 9) & 0x3F; + msel = (pll_ctl & MSEL) >> MSEL_P; if (0 == msel) - msel = 64; + msel = (MSEL >> MSEL_P) + 1;
cached_vco = CONFIG_CLKIN_HZ; - cached_vco >>= (1 & pll_ctl); /* DF bit */ + cached_vco >>= (pll_ctl & DF); cached_vco *= msel; return cached_vco; }
/* Get the Core clock */ -static u_long cached_cclk_pll_div, cached_cclk; u_long get_cclk(void) { - u_long csel, ssel; + static u_long cached_cclk_pll_div, cached_cclk; + u_long div, csel, ssel;
- if (bfin_read_PLL_STAT() & 0x1) + if (pll_is_bypassed()) return CONFIG_CLKIN_HZ;
- ssel = bfin_read_PLL_DIV(); - if (ssel == cached_cclk_pll_div) + div = bfin_read_PLL_DIV(); + if (div == cached_cclk_pll_div) return cached_cclk; else - cached_cclk_pll_div = ssel; + cached_cclk_pll_div = div;
- csel = ((ssel >> 4) & 0x03); - ssel &= 0xf; + csel = (div & CSEL) >> CSEL_P; +#ifndef CGU_DIV + ssel = (div & SSEL) >> SSEL_P; if (ssel && ssel < (1 << csel)) /* SCLK > CCLK */ cached_cclk = get_vco() / ssel; else cached_cclk = get_vco() >> csel; +#else + cached_cclk = get_vco() / csel; +#endif return cached_cclk; }
/* Get the System clock */ -static u_long cached_sclk_pll_div, cached_sclk; +#ifdef CGU_DIV + +static u_long cached_sclk_pll_div, cached_sclk, cached_sclk0, cached_sclk1, cached_dclk; +static u_long _get_sclk(u_long *cache) +{ + u_long div, ssel; + + if (pll_is_bypassed()) + return CONFIG_CLKIN_HZ; + + div = bfin_read_PLL_DIV(); + if (div == cached_sclk_pll_div) + return *cache; + else + cached_sclk_pll_div = div; + + ssel = (div & SYSSEL) >> SYSSEL_P; + cached_sclk = get_vco() / ssel; + + ssel = (div & S0SEL) >> S0SEL_P; + cached_sclk0 = cached_sclk / ssel; + + ssel = (div & S1SEL) >> S1SEL_P; + cached_sclk1 = cached_sclk / ssel; + + ssel = (div & DSEL) >> DSEL_P; + cached_dclk = get_vco() / ssel; + + return *cache; +} + u_long get_sclk(void) { - u_long ssel; + return _get_sclk(&cached_sclk); +} + +u_long get_sclk0(void) +{ + return _get_sclk(&cached_sclk0); +} + +u_long get_sclk1(void) +{ + return _get_sclk(&cached_sclk1); +} + +u_long get_dclk(void) +{ + return _get_sclk(&cached_dclk); +} +#else + +u_long get_sclk(void) +{ + static u_long cached_sclk_pll_div, cached_sclk; + u_long div, ssel;
- if (bfin_read_PLL_STAT() & 0x1) + if (pll_is_bypassed()) return CONFIG_CLKIN_HZ;
- ssel = bfin_read_PLL_DIV(); - if (ssel == cached_sclk_pll_div) + div = bfin_read_PLL_DIV(); + if (div == cached_sclk_pll_div) return cached_sclk; else - cached_sclk_pll_div = ssel; - - ssel &= 0xf; + cached_sclk_pll_div = div;
+ ssel = (div & SSEL) >> SSEL_P; cached_sclk = get_vco() / ssel; + return cached_sclk; } + +#endif diff --git a/common/cmd_reginfo.c b/common/cmd_reginfo.c index 08a6563..b591bd3 100644 --- a/common/cmd_reginfo.c +++ b/common/cmd_reginfo.c @@ -191,7 +191,7 @@ static int do_reginfo(cmd_tbl_t *cmdtp, int flag, int argc,
#elif defined(CONFIG_BLACKFIN) puts("\nSystem Configuration registers\n"); - +#ifndef __ADSPBF60x__ puts("\nPLL Registers\n"); printf("\tPLL_DIV: 0x%04x PLL_CTL: 0x%04x\n", bfin_read_PLL_DIV(), bfin_read_PLL_CTL()); @@ -227,7 +227,24 @@ static int do_reginfo(cmd_tbl_t *cmdtp, int flag, int argc, printf("\tEBIU_SDSTAT: 0x%04x EBIU_SDGCTL: 0x%08x\n", bfin_read_EBIU_SDSTAT(), bfin_read_EBIU_SDGCTL()); # endif +#else + puts("\nCGU Registers\n"); + printf("\tCGU_DIV: 0x%08x CGU_CTL: 0x%08x\n", + bfin_read_CGU_DIV(), bfin_read_CGU_CTL()); + printf("\tCGU_STAT: 0x%08x CGU_LOCKCNT: 0x%08x\n", + bfin_read_CGU_STAT(), bfin_read_CGU_CLKOUTSEL());
+ puts("\nSMC DDR Registers\n"); + printf("\tDDR_CFG: 0x%08x DDR_TR0: 0x%08x\n", + bfin_read_DMC0_CFG(), bfin_read_DMC0_TR0()); + printf("\tDDR_TR1: 0x%08x DDR_TR2: 0x%08x\n", + bfin_read_DMC0_TR1(), bfin_read_DMC0_TR2()); + printf("\tDDR_MR: 0x%08x DDR_EMR1: 0x%08x\n", + bfin_read_DMC0_MR(), bfin_read_DMC0_EMR1()); + printf("\tDDR_CTL: 0x%08x DDR_STAT: 0x%08x\n", + bfin_read_DMC0_CTL(), bfin_read_DMC0_STAT()); + printf("\tDDR_DLLCTL:0x%08x\n", bfin_read_DMC0_DLLCTL()); +#endif #endif /* CONFIG_BLACKFIN */
return 0;

Dear Sonic Zhang,
In message 1360223258-6945-3-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Set up clocks, DDR controller, Nor flash controller, reboot, serial port. Add new SPI boot modes.
Checkpatch issues, please fix.
+#ifndef __ADSPBF60x__ +#include <asm/mach-common/bits/pll.h> +#else +#include <asm/mach-common/bits/cgu.h> +#endif
General question: you add a _lot_ of new #ifdef's all over the place.
Also, I think I see lots of duplicated (or very similar) code.
Can this not be avoided?
if (BFIN_DEBUG_EARLY_SERIAL) {
int ucen = bfin_read16(&pUART->gctl) & UCEN;
serial_early_init(uart_base);int enabled = serial_early_enabled(uart_base);
Please spearate declarations and code by a blankline. Please fix globally (at least where you touch the code anyway).
Best regards,
Wolfgang Denk

On Thu, Feb 7, 2013 at 6:21 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-3-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Set up clocks, DDR controller, Nor flash controller, reboot, serial port. Add new SPI boot modes.
Checkpatch issues, please fix.
OK
+#ifndef __ADSPBF60x__ +#include <asm/mach-common/bits/pll.h> +#else +#include <asm/mach-common/bits/cgu.h> +#endif
General question: you add a _lot_ of new #ifdef's all over the place.
Also, I think I see lots of duplicated (or very similar) code.
Can this not be avoided?
I tried to avoid #ifdef's. But, BF60x differs a lot in on-chip peripherals from those in BF5xx. I will try to clean up the #ifdef's on my best.
if (BFIN_DEBUG_EARLY_SERIAL) {
int ucen = bfin_read16(&pUART->gctl) & UCEN;
int enabled = serial_early_enabled(uart_base); serial_early_init(uart_base);
Please spearate declarations and code by a blankline. Please fix globally (at least where you touch the code anyway).
OK.
Thanks,
Sonic

From: Sonic Zhang sonic.zhang@analog.com
Add serial for bf60x.
Signed-off-by: Sonic Zhang sonic.zhang@analog.com Signed-off-by: Bob Liu lliubbo@gmail.com --- arch/blackfin/cpu/serial.c | 81 ++++--- arch/blackfin/cpu/serial.h | 222 ++--------------- arch/blackfin/cpu/serial1.h | 275 ++++++++++++++++++++ arch/blackfin/cpu/serial4.h | 139 ++++++++++ arch/blackfin/include/asm/mach-bf533/BF531_def.h | 1 + arch/blackfin/include/asm/mach-bf561/BF561_def.h | 1 + arch/blackfin/include/asm/mach-common/bits/uart4.h | 66 +++++ 7 files changed, 547 insertions(+), 238 deletions(-) create mode 100644 arch/blackfin/cpu/serial1.h create mode 100644 arch/blackfin/cpu/serial4.h create mode 100644 arch/blackfin/include/asm/mach-common/bits/uart4.h
diff --git a/arch/blackfin/cpu/serial.c b/arch/blackfin/cpu/serial.c index 64340ec..9847e9f 100644 --- a/arch/blackfin/cpu/serial.c +++ b/arch/blackfin/cpu/serial.c @@ -43,7 +43,6 @@ #include <serial.h> #include <linux/compiler.h> #include <asm/blackfin.h> -#include <asm/mach-common/bits/uart.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -52,8 +51,8 @@ DECLARE_GLOBAL_DATA_PTR; #include "serial.h"
#ifdef CONFIG_DEBUG_SERIAL -static uint16_t cached_lsr[256]; -static uint16_t cached_rbr[256]; +static uart_lsr_t cached_lsr[256]; +static uart_lsr_t cached_rbr[256]; static size_t cache_count;
/* The LSR is read-to-clear on some parts, so we have to make sure status @@ -61,10 +60,10 @@ static size_t cache_count; * works around anomaly 05000099 at the same time by keeping a cumulative * tally of all the status bits. */ -static uint16_t uart_lsr_save; -static uint16_t uart_lsr_read(uint32_t uart_base) +static uart_lsr_t uart_lsr_save; +static uart_lsr_t uart_lsr_read(uint32_t uart_base) { - uint16_t lsr = bfin_read(&pUART->lsr); + uart_lsr_t lsr = _lsr_read(pUART); uart_lsr_save |= (lsr & (OE|PE|FE|BI)); return lsr | uart_lsr_save; } @@ -72,20 +71,20 @@ static uint16_t uart_lsr_read(uint32_t uart_base) static void uart_lsr_clear(uint32_t uart_base) { uart_lsr_save = 0; - bfin_write(&pUART->lsr, bfin_read(&pUART->lsr) | -1); + _lsr_write(pUART, -1); } #else /* When debugging is disabled, we only care about the DR bit, so if other * bits get set/cleared, we don't really care since we don't read them * anyways (and thus anomaly 05000099 is irrelevant). */ -static inline uint16_t uart_lsr_read(uint32_t uart_base) +static inline uart_lsr_t uart_lsr_read(uint32_t uart_base) { - return bfin_read(&pUART->lsr); + return _lsr_read(pUART); } static void uart_lsr_clear(uint32_t uart_base) { - bfin_write(&pUART->lsr, bfin_read(&pUART->lsr) | -1); + _lsr_write(pUART, -1); } #endif
@@ -127,20 +126,14 @@ static int uart_getc(uint32_t uart_base)
#ifdef CONFIG_DEBUG_SERIAL /* grab & clear the LSR */ - uint16_t uart_lsr_val = uart_lsr_read(uart_base); + uart_lsr_t uart_lsr_val = uart_lsr_read(uart_base);
cached_lsr[cache_count] = uart_lsr_val; cached_rbr[cache_count] = uart_rbr_val; cache_count = (cache_count + 1) % ARRAY_SIZE(cached_lsr);
if (uart_lsr_val & (OE|PE|FE|BI)) { - uint16_t dll, dlh; printf("\n[SERIAL ERROR]\n"); - ACCESS_LATCH(); - dll = bfin_read(&pUART->dll); - dlh = bfin_read(&pUART->dlh); - ACCESS_PORT_IER(); - printf("\tDLL=0x%x DLH=0x%x\n", dll, dlh); do { --cache_count; printf("\t%3zu: RBR=0x%02x LSR=0x%02x\n", cache_count, @@ -160,6 +153,8 @@ static int uart_getc(uint32_t uart_base) # define LOOP(x) #endif
+#if BFIN_UART_HW_VER < 4 + LOOP( static void uart_loop(uint32_t uart_base, int state) { @@ -178,6 +173,28 @@ static void uart_loop(uint32_t uart_base, int state) } )
+#else + +LOOP( +static void uart_loop(uint32_t uart_base, int state) +{ + u32 control; + + /* Drain the TX fifo first so bytes don't come back */ + while (!(uart_lsr_read(uart_base) & TEMT)) + continue; + + control = bfin_read(&pUART->control); + if (state) + control |= LOOP_ENA | MRTS; + else + control &= ~(LOOP_ENA | MRTS); + bfin_write(&pUART->control, control); +} +) + +#endif + #ifdef CONFIG_SYS_BFIN_UART
static void uart_puts(uint32_t uart_base, const char *s) @@ -246,16 +263,16 @@ struct serial_device bfin_serial##n##_device = { \ LOOP(.loop = uart##n##_loop) \ };
-#ifdef UART0_DLL +#ifdef UART0_RBR DECL_BFIN_UART(0) #endif -#ifdef UART1_DLL +#ifdef UART1_RBR DECL_BFIN_UART(1) #endif -#ifdef UART2_DLL +#ifdef UART2_RBR DECL_BFIN_UART(2) #endif -#ifdef UART3_DLL +#ifdef UART3_RBR DECL_BFIN_UART(3) #endif
@@ -274,16 +291,16 @@ __weak struct serial_device *default_serial_console(void)
void bfin_serial_initialize(void) { -#ifdef UART0_DLL +#ifdef UART0_RBR serial_register(&bfin_serial0_device); #endif -#ifdef UART1_DLL +#ifdef UART1_RBR serial_register(&bfin_serial1_device); #endif -#ifdef UART2_DLL +#ifdef UART2_RBR serial_register(&bfin_serial2_device); #endif -#ifdef UART3_DLL +#ifdef UART3_RBR serial_register(&bfin_serial3_device); #endif } @@ -293,7 +310,7 @@ void bfin_serial_initialize(void) /* Symbol for our assembly to call. */ void serial_set_baud(uint32_t baud) { - serial_early_set_baud(UART_DLL, baud); + serial_early_set_baud(UART_BASE, baud); }
/* Symbol for common u-boot code to call. @@ -307,7 +324,7 @@ void serial_setbrg(void) /* Symbol for our assembly to call. */ void serial_initialize(void) { - serial_early_init(UART_DLL); + serial_early_init(UART_BASE); }
/* Symbol for common u-boot code to call. */ @@ -315,23 +332,23 @@ int serial_init(void) { serial_initialize(); serial_setbrg(); - uart_lsr_clear(UART_DLL); + uart_lsr_clear(UART_BASE); return 0; }
int serial_tstc(void) { - return uart_tstc(UART_DLL); + return uart_tstc(UART_BASE); }
int serial_getc(void) { - return uart_getc(UART_DLL); + return uart_getc(UART_BASE); }
void serial_putc(const char c) { - uart_putc(UART_DLL, c); + uart_putc(UART_BASE, c); }
void serial_puts(const char *s) @@ -343,7 +360,7 @@ void serial_puts(const char *s) LOOP( void serial_loop(int state) { - uart_loop(UART_DLL, state); + uart_loop(UART_BASE, state); } )
diff --git a/arch/blackfin/cpu/serial.h b/arch/blackfin/cpu/serial.h index 8a076dd..9200339 100644 --- a/arch/blackfin/cpu/serial.h +++ b/arch/blackfin/cpu/serial.h @@ -3,7 +3,7 @@ * any functions defined here must be always_inline since * initcode cannot have function calls. * - * Copyright (c) 2004-2007 Analog Devices Inc. + * Copyright (c) 2004-2011 Analog Devices Inc. * * Licensed under the GPL-2 or later. */ @@ -12,7 +12,7 @@ #define __BFIN_CPU_SERIAL_H__
#include <asm/blackfin.h> -#include <asm/mach-common/bits/uart.h> +#include <asm/portmux.h>
#ifndef CONFIG_UART_CONSOLE # define CONFIG_UART_CONSOLE 0 @@ -24,88 +24,34 @@ # define BFIN_DEBUG_EARLY_SERIAL 0 #endif
-#ifndef __ASSEMBLY__ - -#include <asm/portmux.h> - -#define LOB(x) ((x) & 0xFF) -#define HIB(x) (((x) >> 8) & 0xFF) - -#if defined(__ADSPBF50x__) || defined(__ADSPBF54x__) +#if defined(__ADSPBF60x__) +# define BFIN_UART_HW_VER 4 +#elif defined(__ADSPBF50x__) || defined(__ADSPBF54x__) # define BFIN_UART_HW_VER 2 #else # define BFIN_UART_HW_VER 1 #endif
-/* - * All Blackfin system MMRs are padded to 32bits even if the register - * itself is only 16bits. So use a helper macro to streamline this. - */ -#define __BFP(m) u16 m; u16 __pad_##m -struct bfin_mmr_serial { -#if BFIN_UART_HW_VER == 2 - __BFP(dll); - __BFP(dlh); - __BFP(gctl); - __BFP(lcr); - __BFP(mcr); - __BFP(lsr); - __BFP(msr); - __BFP(scr); - __BFP(ier_set); - __BFP(ier_clear); - __BFP(thr); - __BFP(rbr); -#else - union { - u16 dll; - u16 thr; - const u16 rbr; - }; - const u16 __spad0; - union { - u16 dlh; - u16 ier; - }; - const u16 __spad1; - const __BFP(iir); - __BFP(lcr); - __BFP(mcr); - __BFP(lsr); - __BFP(msr); - __BFP(scr); - const u32 __spad2; - __BFP(gctl); -#endif -}; -#undef __BFP - #define __PASTE_UART(num, pfx, sfx) pfx##num##_##sfx #define _PASTE_UART(num, pfx, sfx) __PASTE_UART(num, pfx, sfx) -#define MMR_UART(n) _PASTE_UART(n, UART, DLL) #define _P_UART(n, pin) _PASTE_UART(n, P_UART, pin) #define P_UART(pin) _P_UART(CONFIG_UART_CONSOLE, pin)
-#ifndef UART_DLL -# define UART_DLL MMR_UART(CONFIG_UART_CONSOLE) -#else -# define UART0_DLL UART_DLL -# if CONFIG_UART_CONSOLE != 0 -# error CONFIG_UART_CONSOLE must be 0 on parts with only one UART -# endif -#endif #define pUART ((volatile struct bfin_mmr_serial *)uart_base)
-#if BFIN_UART_HW_VER == 2 -# define ACCESS_LATCH() -# define ACCESS_PORT_IER() +#ifndef __ASSEMBLY__ +__attribute__((always_inline)) +static inline void serial_do_portmux(void); +#endif + +#if BFIN_UART_HW_VER < 4 +# include "serial1.h" #else -# define ACCESS_LATCH() \ - bfin_write(&pUART->lcr, bfin_read(&pUART->lcr) | DLAB) -# define ACCESS_PORT_IER() \ - bfin_write(&pUART->lcr, bfin_read(&pUART->lcr) & ~DLAB) +# include "serial4.h" #endif
+#ifndef __ASSEMBLY__ + __attribute__((always_inline)) static inline void serial_do_portmux(void) { @@ -115,143 +61,7 @@ static inline void serial_do_portmux(void) return; }
-#if defined(__ADSPBF50x__) -# define DO_MUX(port, mux_tx, mux_rx, tx, rx) \ - bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##mux_tx##_MASK | PORT_x_MUX_##mux_rx##_MASK)) | PORT_x_MUX_##mux_tx##_FUNC_1 | PORT_x_MUX_##mux_rx##_FUNC_1); \ - bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx); - switch (CONFIG_UART_CONSOLE) { - case 0: DO_MUX(G, 7, 7, 12, 13); break; /* Port G; mux 7; PG12 and PG13 */ - case 1: DO_MUX(F, 3, 3, 6, 7); break; /* Port F; mux 3; PF6 and PF7 */ - } - SSYNC(); -#elif defined(__ADSPBF51x__) -# define DO_MUX(port, mux_tx, mux_rx, tx, rx) \ - bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##mux_tx##_MASK | PORT_x_MUX_##mux_rx##_MASK)) | PORT_x_MUX_##mux_tx##_FUNC_2 | PORT_x_MUX_##mux_rx##_FUNC_2); \ - bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx); - switch (CONFIG_UART_CONSOLE) { - case 0: DO_MUX(G, 5, 5, 9, 10); break; /* Port G; mux 5; PG9 and PG10 */ - case 1: DO_MUX(F, 2, 3, 14, 15); break; /* Port H; mux 2/3; PH14 and PH15 */ - } - SSYNC(); -#elif defined(__ADSPBF52x__) -# define DO_MUX(port, mux, tx, rx) \ - bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~PORT_x_MUX_##mux##_MASK) | PORT_x_MUX_##mux##_FUNC_3); \ - bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx); - switch (CONFIG_UART_CONSOLE) { - case 0: DO_MUX(G, 2, 7, 8); break; /* Port G; mux 2; PG2 and PG8 */ - case 1: DO_MUX(F, 5, 14, 15); break; /* Port F; mux 5; PF14 and PF15 */ - } - SSYNC(); -#elif defined(__ADSPBF537__) || defined(__ADSPBF536__) || defined(__ADSPBF534__) - const uint16_t func[] = { PFDE, PFTE, }; - bfin_write_PORT_MUX(bfin_read_PORT_MUX() & ~func[CONFIG_UART_CONSOLE]); - bfin_write_PORTF_FER(bfin_read_PORTF_FER() | - (1 << P_IDENT(P_UART(RX))) | - (1 << P_IDENT(P_UART(TX)))); - SSYNC(); -#elif defined(__ADSPBF54x__) -# define DO_MUX(port, tx, rx) \ - bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##tx##_MASK | PORT_x_MUX_##rx##_MASK)) | PORT_x_MUX_##tx##_FUNC_1 | PORT_x_MUX_##rx##_FUNC_1); \ - bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx); - switch (CONFIG_UART_CONSOLE) { - case 0: DO_MUX(E, 7, 8); break; /* Port E; PE7 and PE8 */ - case 1: DO_MUX(H, 0, 1); break; /* Port H; PH0 and PH1 */ - case 2: DO_MUX(B, 4, 5); break; /* Port B; PB4 and PB5 */ - case 3: DO_MUX(B, 6, 7); break; /* Port B; PB6 and PB7 */ - } - SSYNC(); -#elif defined(__ADSPBF561__) - /* UART pins could be GPIO, but they aren't pin muxed. */ -#else -# if (P_UART(RX) & P_DEFINED) || (P_UART(TX) & P_DEFINED) -# error "missing portmux logic for UART" -# endif -#endif -} - -__attribute__((always_inline)) -static inline int uart_init(uint32_t uart_base) -{ - /* always enable UART -- avoids anomalies 05000309 and 05000350 */ - bfin_write(&pUART->gctl, UCEN); - - /* Set LCR to Word Lengh 8-bit word select */ - bfin_write(&pUART->lcr, WLS_8); - - SSYNC(); - - return 0; -} - -__attribute__((always_inline)) -static inline int serial_early_init(uint32_t uart_base) -{ - /* handle portmux crap on different Blackfins */ - serial_do_portmux(); - - return uart_init(uart_base); -} - -__attribute__((always_inline)) -static inline int serial_early_uninit(uint32_t uart_base) -{ - /* disable the UART by clearing UCEN */ - bfin_write(&pUART->gctl, 0); - - return 0; -} - -__attribute__((always_inline)) -static inline void serial_early_put_div(uint32_t uart_base, uint16_t divisor) -{ - /* Set DLAB in LCR to Access DLL and DLH */ - ACCESS_LATCH(); - SSYNC(); - - /* Program the divisor to get the baud rate we want */ - bfin_write(&pUART->dll, LOB(divisor)); - bfin_write(&pUART->dlh, HIB(divisor)); - SSYNC(); - - /* Clear DLAB in LCR to Access THR RBR IER */ - ACCESS_PORT_IER(); - SSYNC(); -} - -__attribute__((always_inline)) -static inline uint16_t serial_early_get_div(void) -{ - uint32_t uart_base = UART_DLL; - - /* Set DLAB in LCR to Access DLL and DLH */ - ACCESS_LATCH(); - SSYNC(); - - uint8_t dll = bfin_read(&pUART->dll); - uint8_t dlh = bfin_read(&pUART->dlh); - uint16_t divisor = (dlh << 8) | dll; - - /* Clear DLAB in LCR to Access THR RBR IER */ - ACCESS_PORT_IER(); - SSYNC(); - - return divisor; -} - -/* We cannot use get_sclk() early on as it uses caches in external memory */ -#if defined(BFIN_IN_INITCODE) || defined(CONFIG_DEBUG_EARLY_SERIAL) -# define get_sclk() (CONFIG_CLKIN_HZ * CONFIG_VCO_MULT / CONFIG_SCLK_DIV) -#endif - -__attribute__((always_inline)) -static inline void serial_early_set_baud(uint32_t uart_base, uint32_t baud) -{ - /* Translate from baud into divisor in terms of SCLK. The - * weird multiplication is to make sure we over sample just - * a little rather than under sample the incoming signals. - */ - serial_early_put_div(uart_base, - (get_sclk() + (baud * 8)) / (baud * 16) - ANOMALY_05000230); + serial_early_do_portmux(); }
#ifndef BFIN_IN_INITCODE diff --git a/arch/blackfin/cpu/serial1.h b/arch/blackfin/cpu/serial1.h new file mode 100644 index 0000000..986494d --- /dev/null +++ b/arch/blackfin/cpu/serial1.h @@ -0,0 +1,275 @@ +/* + * serial.h - common serial defines for early debug and serial driver. + * any functions defined here must be always_inline since + * initcode cannot have function calls. + * + * Copyright (c) 2004-2011 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#ifndef __BFIN_CPU_SERIAL1_H__ +#define __BFIN_CPU_SERIAL1_H__ + +#include <asm/mach-common/bits/uart.h> + +#ifndef __ASSEMBLY__ + +#define MMR_UART(n) _PASTE_UART(n, UART, DLL) +#ifdef UART_DLL +# define UART0_DLL UART_DLL +# if CONFIG_UART_CONSOLE != 0 +# error CONFIG_UART_CONSOLE must be 0 on parts with only one UART +# endif +#endif +#define UART_BASE MMR_UART(CONFIG_UART_CONSOLE) + +#define LOB(x) ((x) & 0xFF) +#define HIB(x) (((x) >> 8) & 0xFF) + +/* + * All Blackfin system MMRs are padded to 32bits even if the register + * itself is only 16bits. So use a helper macro to streamline this. + */ +#define __BFP(m) u16 m; u16 __pad_##m +struct bfin_mmr_serial { +#if BFIN_UART_HW_VER == 2 + __BFP(dll); + __BFP(dlh); + __BFP(gctl); + __BFP(lcr); + __BFP(mcr); + __BFP(lsr); + __BFP(msr); + __BFP(scr); + __BFP(ier_set); + __BFP(ier_clear); + __BFP(thr); + __BFP(rbr); +#else + union { + u16 dll; + u16 thr; + const u16 rbr; + }; + const u16 __spad0; + union { + u16 dlh; + u16 ier; + }; + const u16 __spad1; + const __BFP(iir); + __BFP(lcr); + __BFP(mcr); + __BFP(lsr); + __BFP(msr); + __BFP(scr); + const u32 __spad2; + __BFP(gctl); +#endif +}; +#undef __BFP + +typedef uint16_t uart_lsr_t; +#define _lsr_read(p) bfin_read(&p->lsr) +#define _lsr_write(p, v) bfin_write(&p->lsr, v) + +#if BFIN_UART_HW_VER == 2 +# define ACCESS_LATCH() +# define ACCESS_PORT_IER() +#else +# define ACCESS_LATCH() bfin_write_or(&pUART->lcr, DLAB) +# define ACCESS_PORT_IER() bfin_write_and(&pUART->lcr, ~DLAB) +#endif + +__attribute__((always_inline)) +static inline void serial_early_do_portmux(void) +{ +#if defined(__ADSPBF50x__) +# define DO_MUX(port, mux_tx, mux_rx, tx, rx) \ + bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##mux_tx##_MASK | PORT_x_MUX_##mux_rx##_MASK)) | PORT_x_MUX_##mux_tx##_FUNC_1 | PORT_x_MUX_##mux_rx##_FUNC_1); \ + bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx); + switch (CONFIG_UART_CONSOLE) { + case 0: + DO_MUX(G, 7, 7, 12, 13); + break; /* Port G; mux 7; PG12 and PG13 */ + case 1: + DO_MUX(F, 3, 3, 6, 7); + break; /* Port F; mux 3; PF6 and PF7 */ + } + SSYNC(); +#elif defined(__ADSPBF51x__) +# define DO_MUX(port, mux_tx, mux_rx, tx, rx) \ + bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##mux_tx##_MASK | PORT_x_MUX_##mux_rx##_MASK)) | PORT_x_MUX_##mux_tx##_FUNC_2 | PORT_x_MUX_##mux_rx##_FUNC_2); \ + bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx); + switch (CONFIG_UART_CONSOLE) { + case 0: + DO_MUX(G, 5, 5, 9, 10); + break; /* Port G; mux 5; PG9 and PG10 */ + case 1: + DO_MUX(F, 2, 3, 14, 15); + break; /* Port H; mux 2/3; PH14 and PH15 */ + } + SSYNC(); +#elif defined(__ADSPBF52x__) +# define DO_MUX(port, mux, tx, rx) \ + bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~PORT_x_MUX_##mux##_MASK) | PORT_x_MUX_##mux##_FUNC_3); \ + bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx); + switch (CONFIG_UART_CONSOLE) { + case 0: + DO_MUX(G, 2, 7, 8); + break; /* Port G; mux 2; PG2 and PG8 */ + case 1: + DO_MUX(F, 5, 14, 15); + break; /* Port F; mux 5; PF14 and PF15 */ + } + SSYNC(); +#elif defined(__ADSPBF537__) || defined(__ADSPBF536__) || defined(__ADSPBF534__) + const uint16_t func[] = { PFDE, PFTE, }; + bfin_write_PORT_MUX(bfin_read_PORT_MUX() & ~func[CONFIG_UART_CONSOLE]); + bfin_write_PORTF_FER(bfin_read_PORTF_FER() | + (1 << P_IDENT(P_UART(RX))) | + (1 << P_IDENT(P_UART(TX)))); + SSYNC(); +#elif defined(__ADSPBF54x__) +# define DO_MUX(port, tx, rx) \ + bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##tx##_MASK | PORT_x_MUX_##rx##_MASK)) | PORT_x_MUX_##tx##_FUNC_1 | PORT_x_MUX_##rx##_FUNC_1); \ + bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx); + switch (CONFIG_UART_CONSOLE) { + case 0: + DO_MUX(E, 7, 8); + break; /* Port E; PE7 and PE8 */ + case 1: + DO_MUX(H, 0, 1); + break; /* Port H; PH0 and PH1 */ + case 2: + DO_MUX(B, 4, 5); + break; /* Port B; PB4 and PB5 */ + case 3: + DO_MUX(B, 6, 7); + break; /* Port B; PB6 and PB7 */ + } + SSYNC(); +#elif defined(__ADSPBF561__) + /* UART pins could be GPIO, but they aren't pin muxed. */ +#else +# if (P_UART(RX) & P_DEFINED) || (P_UART(TX) & P_DEFINED) +# error "missing portmux logic for UART" +# endif +#endif +} + +__attribute__((always_inline)) +static inline uint32_t uart_sclk(void) +{ +#if defined(BFIN_IN_INITCODE) || defined(CONFIG_DEBUG_EARLY_SERIAL) + /* We cannot use get_sclk() early on as it uses caches in external memory */ + return CONFIG_CLKIN_HZ * CONFIG_VCO_MULT / CONFIG_SCLK_DIV; +#else + return get_sclk(); +#endif +} + +__attribute__((always_inline)) +static inline int uart_init(uint32_t uart_base) +{ + /* always enable UART -- avoids anomalies 05000309 and 05000350 */ + bfin_write(&pUART->gctl, UCEN); + + /* Set LCR to Word Lengh 8-bit word select */ + bfin_write(&pUART->lcr, WLS_8); + + SSYNC(); + + return 0; +} + +__attribute__((always_inline)) +static inline int serial_early_init(uint32_t uart_base) +{ + /* handle portmux crap on different Blackfins */ + serial_do_portmux(); + + return uart_init(uart_base); +} + +__attribute__((always_inline)) +static inline int serial_early_uninit(uint32_t uart_base) +{ + /* disable the UART by clearing UCEN */ + bfin_write(&pUART->gctl, 0); + + return 0; +} + +__attribute__((always_inline)) +static inline int serial_early_enabled(uint32_t uart_base) +{ + return bfin_read(&pUART->gctl) & UCEN; +} + +__attribute__((always_inline)) +static inline void serial_early_set_baud(uint32_t uart_base, uint32_t baud) +{ + /* Translate from baud into divisor in terms of SCLK. The + * weird multiplication is to make sure we over sample just + * a little rather than under sample the incoming signals. + */ + uint16_t divisor = (uart_sclk() + (baud * 8)) / (baud * 16) - ANOMALY_05000230; + + /* Set DLAB in LCR to Access DLL and DLH */ + ACCESS_LATCH(); + SSYNC(); + + /* Program the divisor to get the baud rate we want */ + bfin_write(&pUART->dll, LOB(divisor)); + bfin_write(&pUART->dlh, HIB(divisor)); + SSYNC(); + + /* Clear DLAB in LCR to Access THR RBR IER */ + ACCESS_PORT_IER(); + SSYNC(); +} + +__attribute__((always_inline)) +static inline void serial_early_put_div(uint16_t divisor) +{ + uint32_t uart_base = UART_BASE; + + /* Set DLAB in LCR to Access DLL and DLH */ + ACCESS_LATCH(); + SSYNC(); + + /* Program the divisor to get the baud rate we want */ + bfin_write(&pUART->dll, LOB(divisor)); + bfin_write(&pUART->dlh, HIB(divisor)); + SSYNC(); + + /* Clear DLAB in LCR to Access THR RBR IER */ + ACCESS_PORT_IER(); + SSYNC(); +} + +__attribute__((always_inline)) +static inline uint16_t serial_early_get_div(void) +{ + uint32_t uart_base = UART_BASE; + + /* Set DLAB in LCR to Access DLL and DLH */ + ACCESS_LATCH(); + SSYNC(); + + uint8_t dll = bfin_read(&pUART->dll); + uint8_t dlh = bfin_read(&pUART->dlh); + uint16_t divisor = (dlh << 8) | dll; + + /* Clear DLAB in LCR to Access THR RBR IER */ + ACCESS_PORT_IER(); + SSYNC(); + + return divisor; +} + +#endif + +#endif diff --git a/arch/blackfin/cpu/serial4.h b/arch/blackfin/cpu/serial4.h new file mode 100644 index 0000000..d84de58 --- /dev/null +++ b/arch/blackfin/cpu/serial4.h @@ -0,0 +1,139 @@ +/* + * serial.h - common serial defines for early debug and serial driver. + * any functions defined here must be always_inline since + * initcode cannot have function calls. + * + * Copyright (c) 2004-2011 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#ifndef __BFIN_CPU_SERIAL4_H__ +#define __BFIN_CPU_SERIAL4_H__ + +#include <asm/mach-common/bits/uart4.h> + +#ifndef __ASSEMBLY__ + +#define MMR_UART(n) _PASTE_UART(n, UART, REVID) +#define UART_BASE MMR_UART(CONFIG_UART_CONSOLE) + +struct bfin_mmr_serial { + u32 revid; + u32 control; + u32 status; + u32 scr; + u32 clock; + u32 emask; + u32 emaskst; + u32 emaskcl; + u32 rbr; + u32 thr; + u32 taip; + u32 tsr; + u32 rsr; + u32 txdiv_cnt; + u32 rxdiv_cnt; +}; +typedef uint32_t uart_lsr_t; +#define _lsr_read(p) bfin_read(&p->status) +#define _lsr_write(p, v) bfin_write(&p->status, v) + +__attribute__((always_inline)) +static inline void serial_early_do_portmux(void) +{ +#if defined(__ADSPBF60x__) +# define DO_MUX(port, tx, rx, func) do \ +{\ + bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##tx##_MASK | PORT_x_MUX_##rx##_MASK)) | PORT_x_MUX_##tx##_FUNC_##func | PORT_x_MUX_##rx##_FUNC_##func); \ + bfin_write_PORT##port##_FER_SET(P##port##tx | P##port##rx);\ +} while (0) + switch (CONFIG_UART_CONSOLE) { + case 0: + DO_MUX(D, 7, 8, 2); + break; /* Port D; PD7 and PD8; function 2 */ + case 1: + DO_MUX(G, 15, 14, 1); + break; /* Port G; PG15 and PH14; function 1 */ + } + SSYNC(); +#else +# if (P_UART(RX) & P_DEFINED) || (P_UART(TX) & P_DEFINED) +# error "missing portmux logic for UART" +# endif +#endif +} + +__attribute__((always_inline)) +static inline uint32_t uart_sclk(void) +{ +#if defined(BFIN_IN_INITCODE) || defined(CONFIG_DEBUG_EARLY_SERIAL) + /* We cannot use get_sclk() early on as it uses caches in external memory */ + return CONFIG_CLKIN_HZ * CONFIG_VCO_MULT / CONFIG_SCLK_DIV / CONFIG_SCLK0_DIV; +#else + return get_sclk0(); +#endif +} + +__attribute__((always_inline)) +static inline int uart_init(uint32_t uart_base) +{ + /* always enable UART to 8-bit mode */ + bfin_write(&pUART->control, UEN | UMOD_UART | WLS_8); + + SSYNC(); + + return 0; +} + +__attribute__((always_inline)) +static inline int serial_early_init(uint32_t uart_base) +{ + /* handle portmux crap on different Blackfins */ + serial_do_portmux(); + + return uart_init(uart_base); +} + +__attribute__((always_inline)) +static inline int serial_early_uninit(uint32_t uart_base) +{ + /* disable the UART by clearing UEN */ + bfin_write(&pUART->control, 0); + + return 0; +} + +__attribute__((always_inline)) +static inline int serial_early_enabled(uint32_t uart_base) +{ + return bfin_read(&pUART->control) & UEN; +} + +__attribute__((always_inline)) +static inline void serial_early_set_baud(uint32_t uart_base, uint32_t baud) +{ + uint32_t divisor = uart_sclk() / (baud * 16); + + /* Program the divisor to get the baud rate we want */ + bfin_write(&pUART->clock, divisor); + SSYNC(); +} + +__attribute__((always_inline)) +static inline void serial_early_put_div(uint32_t divisor) +{ + uint32_t uart_base = UART_BASE; + bfin_write(&pUART->clock, divisor); +} + +__attribute__((always_inline)) +static inline uint32_t serial_early_get_div(void) +{ + uint32_t uart_base = UART_BASE; + return bfin_read(&pUART->clock); +} + +#endif + +#endif diff --git a/arch/blackfin/include/asm/mach-bf533/BF531_def.h b/arch/blackfin/include/asm/mach-bf533/BF531_def.h index 3b61aaf..2bcd2d8 100644 --- a/arch/blackfin/include/asm/mach-bf533/BF531_def.h +++ b/arch/blackfin/include/asm/mach-bf533/BF531_def.h @@ -149,6 +149,7 @@ #define UART_LSR 0xFFC00414 #define UART_SCR 0xFFC0041C #define UART_RBR 0xFFC00400 /* Receive Buffer */ +#define UART0_RBR UART_RBR #define UART_GCTL 0xFFC00424 #define SPT0_TX_CONFIG0 0xFFC00800 #define SPT0_TX_CONFIG1 0xFFC00804 diff --git a/arch/blackfin/include/asm/mach-bf561/BF561_def.h b/arch/blackfin/include/asm/mach-bf561/BF561_def.h index 46925f8..a7ff5a3 100644 --- a/arch/blackfin/include/asm/mach-bf561/BF561_def.h +++ b/arch/blackfin/include/asm/mach-bf561/BF561_def.h @@ -690,6 +690,7 @@ #define PPI1_FRAME 0xFFC01310 #define UART_THR 0xFFC00400 #define UART_RBR 0xFFC00400 +#define UART0_RBR UART_RBR #define UART_DLL 0xFFC00400 #define UART_DLH 0xFFC00404 #define UART_IER 0xFFC00404 diff --git a/arch/blackfin/include/asm/mach-common/bits/uart4.h b/arch/blackfin/include/asm/mach-common/bits/uart4.h new file mode 100644 index 0000000..37808de --- /dev/null +++ b/arch/blackfin/include/asm/mach-common/bits/uart4.h @@ -0,0 +1,66 @@ +/* + * UART4 Masks + */ + +#ifndef __BFIN_PERIPHERAL_UART4__ +#define __BFIN_PERIPHERAL_UART4__ + +/* UART_CONTROL */ +#define UEN (1 << 0) +#define LOOP_ENA (1 << 1) +#define UMOD (3 << 4) +#define UMOD_UART (0 << 4) +#define UMOD_MDB (1 << 4) +#define UMOD_IRDA (1 << 4) +#define WLS (3 << 8) +#define WLS_5 (0 << 8) +#define WLS_6 (1 << 8) +#define WLS_7 (2 << 8) +#define WLS_8 (3 << 8) +#define STB (1 << 12) +#define STBH (1 << 13) +#define PEN (1 << 14) +#define EPS (1 << 15) +#define STP (1 << 16) +#define FPE (1 << 17) +#define FFE (1 << 18) +#define SB (1 << 19) +#define FCPOL (1 << 22) +#define RPOLC (1 << 23) +#define TPOLC (1 << 24) +#define MRTS (1 << 25) +#define XOFF (1 << 26) +#define ARTS (1 << 27) +#define ACTS (1 << 28) +#define RFIT (1 << 29) +#define RFRT (1 << 30) + +/* UART_STATUS */ +#define DR (1 << 0) +#define OE (1 << 1) +#define PE (1 << 2) +#define FE (1 << 3) +#define BI (1 << 4) +#define THRE (1 << 5) +#define TEMT (1 << 7) +#define TFI (1 << 8) +#define ASTKY (1 << 9) +#define ADDR (1 << 10) +#define RO (1 << 11) +#define SCTS (1 << 12) +#define CTS (1 << 16) +#define RFCS (1 << 17) + +/* UART_EMASK */ +#define ERBFI (1 << 0) +#define ETBEI (1 << 1) +#define ELSI (1 << 2) +#define EDSSI (1 << 3) +#define EDTPTI (1 << 4) +#define ETFI (1 << 5) +#define ERFCI (1 << 6) +#define EAWI (1 << 7) +#define ERXS (1 << 8) +#define ETXS (1 << 9) + +#endif

Dear Sonic Zhang,
In message 1360223258-6945-4-git-send-email-sonic.adi@gmail.com you wrote:
Add serial for bf60x.
There is a large number of checkpatch issues. Please fix!!
+/*
- All Blackfin system MMRs are padded to 32bits even if the register
- itself is only 16bits. So use a helper macro to streamline this.
- */
+#define __BFP(m) u16 m; u16 __pad_##m +struct bfin_mmr_serial { +#if BFIN_UART_HW_VER == 2
- __BFP(dll);
- __BFP(dlh);
- __BFP(gctl);
- __BFP(lcr);
- __BFP(mcr);
- __BFP(lsr);
- __BFP(msr);
- __BFP(scr);
- __BFP(ier_set);
- __BFP(ier_clear);
- __BFP(thr);
- __BFP(rbr);
+#else
- union {
u16 dll;
u16 thr;
const u16 rbr;
- };
- const u16 __spad0;
- union {
u16 dlh;
u16 ier;
- };
- const u16 __spad1;
- const __BFP(iir);
- __BFP(lcr);
- __BFP(mcr);
- __BFP(lsr);
- __BFP(msr);
- __BFP(scr);
- const u32 __spad2;
- __BFP(gctl);
+#endif
Sorry, but this is totally unreadable.
+# define DO_MUX(port, mux_tx, mux_rx, tx, rx) \
- bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##mux_tx##_MASK | PORT_x_MUX_##mux_rx##_MASK)) | PORT_x_MUX_##mux_tx##_FUNC_1 | PORT_x_MUX_##mux_rx##_FUNC_1); \
- bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx);
- switch (CONFIG_UART_CONSOLE) {
- case 0:
DO_MUX(G, 7, 7, 12, 13);
break; /* Port G; mux 7; PG12 and PG13 */
- case 1:
DO_MUX(F, 3, 3, 6, 7);
break; /* Port F; mux 3; PF6 and PF7 */
This is totally unreadable.
This needs serious fixing.
Best regards,
Wolfgang Denk

On Thu, Feb 7, 2013 at 6:15 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-4-git-send-email-sonic.adi@gmail.com you wrote:
Add serial for bf60x.
There is a large number of checkpatch issues. Please fix!!
OK.
+/*
- All Blackfin system MMRs are padded to 32bits even if the register
- itself is only 16bits. So use a helper macro to streamline this.
- */
+#define __BFP(m) u16 m; u16 __pad_##m +struct bfin_mmr_serial { +#if BFIN_UART_HW_VER == 2
__BFP(dll);
__BFP(dlh);
__BFP(gctl);
__BFP(lcr);
__BFP(mcr);
__BFP(lsr);
__BFP(msr);
__BFP(scr);
__BFP(ier_set);
__BFP(ier_clear);
__BFP(thr);
__BFP(rbr);
+#else
union {
u16 dll;
u16 thr;
const u16 rbr;
};
const u16 __spad0;
union {
u16 dlh;
u16 ier;
};
const u16 __spad1;
const __BFP(iir);
__BFP(lcr);
__BFP(mcr);
__BFP(lsr);
__BFP(msr);
__BFP(scr);
const u32 __spad2;
__BFP(gctl);
+#endif
Sorry, but this is totally unreadable.
I will turn back to normal definition other than the help Macro.
+# define DO_MUX(port, mux_tx, mux_rx, tx, rx) \
bfin_write_PORT##port##_MUX((bfin_read_PORT##port##_MUX() & ~(PORT_x_MUX_##mux_tx##_MASK | PORT_x_MUX_##mux_rx##_MASK)) | PORT_x_MUX_##mux_tx##_FUNC_1 | PORT_x_MUX_##mux_rx##_FUNC_1); \
bfin_write_PORT##port##_FER(bfin_read_PORT##port##_FER() | P##port##tx | P##port##rx);
switch (CONFIG_UART_CONSOLE) {
case 0:
DO_MUX(G, 7, 7, 12, 13);
break; /* Port G; mux 7; PG12 and PG13 */
case 1:
DO_MUX(F, 3, 3, 6, 7);
break; /* Port F; mux 3; PF6 and PF7 */
This is totally unreadable.
This needs serious fixing.
I will fix it.
Sonic

From: Bob Liu lliubbo@gmail.com
Add dma support for bf60x.
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com --- arch/blackfin/include/asm/dma.h | 113 ++++++++++++---------- arch/blackfin/include/asm/mach-common/bits/dma.h | 48 +++++++++- arch/blackfin/lib/string.c | 97 ++++++++++--------- 3 files changed, 159 insertions(+), 99 deletions(-)
diff --git a/arch/blackfin/include/asm/dma.h b/arch/blackfin/include/asm/dma.h index 21ff1cf..211719a 100644 --- a/arch/blackfin/include/asm/dma.h +++ b/arch/blackfin/include/asm/dma.h @@ -8,68 +8,77 @@ #ifndef _BLACKFIN_DMA_H_ #define _BLACKFIN_DMA_H_
+#include <linux/types.h> +#ifdef __ADSPBF60x__ +#include <asm/mach-common/bits/dde.h> +#else #include <asm/mach-common/bits/dma.h> +#endif
struct dmasg_large { void *next_desc_addr; - unsigned long start_addr; - unsigned short cfg; - unsigned short x_count; - short x_modify; - unsigned short y_count; - short y_modify; + u32 start_addr; + u16 cfg; + u16 x_count; + s16 x_modify; + u16 y_count; + s16 y_modify; } __attribute__((packed));
struct dmasg { - unsigned long start_addr; - unsigned short cfg; - unsigned short x_count; - short x_modify; - unsigned short y_count; - short y_modify; + u32 start_addr; + u16 cfg; + u16 x_count; + s16 x_modify; + u16 y_count; + s16 y_modify; } __attribute__((packed));
+/* + * All Blackfin system MMRs are padded to 32bits even if the register + * itself is only 16bits. So use a helper macro to streamline this. + */ +#define __BFP(m) m; u16 __pad_##m struct dma_register { - void *next_desc_ptr; /* DMA Next Descriptor Pointer register */ - unsigned long start_addr; /* DMA Start address register */ - - unsigned short cfg; /* DMA Configuration register */ - unsigned short dummy1; /* DMA Configuration register */ - - unsigned long reserved; - - unsigned short x_count; /* DMA x_count register */ - unsigned short dummy2; - - short x_modify; /* DMA x_modify register */ - unsigned short dummy3; - - unsigned short y_count; /* DMA y_count register */ - unsigned short dummy4; - - short y_modify; /* DMA y_modify register */ - unsigned short dummy5; - - void *curr_desc_ptr; /* DMA Current Descriptor Pointer - register */ - unsigned long curr_addr_ptr; /* DMA Current Address Pointer - register */ - unsigned short irq_status; /* DMA irq status register */ - unsigned short dummy6; - - unsigned short peripheral_map; /* DMA peripheral map register */ - unsigned short dummy7; - - unsigned short curr_x_count; /* DMA Current x-count register */ - unsigned short dummy8; - - unsigned long reserved2; - - unsigned short curr_y_count; /* DMA Current y-count register */ - unsigned short dummy9; - - unsigned long reserved3; - +#ifdef __ADSPBF60x__ + void *next_desc_ptr; + u32 start_addr; + u32 config; + u32 x_count; + s32 x_modify; + u32 y_count; + s32 y_modify; + u32 __pad0[2]; + void *curr_desc_ptr; + void *prev_desc_ptr; + void *curr_addr; + u32 status; + u32 curr_x_count; + u32 curr_y_count; + u32 __pad1[2]; + u32 bw_limit; + u32 curr_bw_limit; + u32 bw_monitor; + u32 curr_bw_monitor; +#else + void *next_desc_ptr; + u32 start_addr; + u16 __BFP(config); + u32 __pad0; + u16 __BFP(x_count); + s16 __BFP(x_modify); + u16 __BFP(y_count); + s16 __BFP(y_modify); + void *curr_desc_ptr; + u32 curr_addr_ptr; + u16 __BFP(status); + u16 __BFP(peripheral_map); + u16 __BFP(curr_x_count); + u32 __pad1; + u16 __BFP(curr_y_count); + u32 __pad2; +#endif }; +#undef __BFP
#endif diff --git a/arch/blackfin/include/asm/mach-common/bits/dma.h b/arch/blackfin/include/asm/mach-common/bits/dma.h index 136313e..1126c44 100644 --- a/arch/blackfin/include/asm/mach-common/bits/dma.h +++ b/arch/blackfin/include/asm/mach-common/bits/dma.h @@ -9,8 +9,48 @@ #define DMAEN 0x0001 /* DMA Channel Enable */ #define WNR 0x0002 /* Channel Direction (W/R*) */ #define WDSIZE_8 0x0000 /* Transfer Word Size = 8 */ + +#ifdef CONFIG_BF60x + +#define PSIZE_8 0x00000000 /* Transfer Word Size = 16 */ +#define PSIZE_16 0x00000010 /* Transfer Word Size = 16 */ +#define PSIZE_32 0x00000020 /* Transfer Word Size = 32 */ +#define PSIZE_64 0x00000030 /* Transfer Word Size = 32 */ +#define WDSIZE_16 0x00000100 /* Transfer Word Size = 16 */ +#define WDSIZE_32 0x00000200 /* Transfer Word Size = 32 */ +#define WDSIZE_64 0x00000300 /* Transfer Word Size = 32 */ +#define WDSIZE_128 0x00000400 /* Transfer Word Size = 32 */ +#define WDSIZE_256 0x00000500 /* Transfer Word Size = 32 */ +#define DMA2D 0x04000000 /* DMA Mode (2D/1D*) */ +#define RESTART 0x00000004 /* DMA Buffer Clear SYNC */ +#define DI_EN_X 0x00100000 /* Data Interrupt Enable in X count */ +#define DI_EN_Y 0x00200000 /* Data Interrupt Enable in Y count */ +#define DI_EN_P 0x00300000 /* Data Interrupt Enable in Peripheral */ +#define DI_EN DI_EN_X /* Data Interrupt Enable */ +#define NDSIZE_0 0x00000000 /* Next Descriptor Size = 0 (Stop/Autobuffer) */ +#define NDSIZE_1 0x00010000 /* Next Descriptor Size = 1 */ +#define NDSIZE_2 0x00020000 /* Next Descriptor Size = 2 */ +#define NDSIZE_3 0x00030000 /* Next Descriptor Size = 3 */ +#define NDSIZE_4 0x00040000 /* Next Descriptor Size = 4 */ +#define NDSIZE_5 0x00050000 /* Next Descriptor Size = 5 */ +#define NDSIZE_6 0x00060000 /* Next Descriptor Size = 6 */ +#define NDSIZE 0x00070000 /* Next Descriptor Size */ +#define NDSIZE_OFFSET 16 /* Next Descriptor Size Offset */ +#define DMAFLOW_LIST 0x00004000 /* Descriptor List Mode */ +#define DMAFLOW_ARRAY 0x00005000 /* Descriptor Array Mode */ +#define DMAFLOW_LIST_DEMAND 0x00006000 /* Descriptor Demand List Mode */ +#define DMAFLOW_ARRAY_DEMAND 0x00007000 /* Descriptor Demand Array Mode */ +#define DMA_RUN_DFETCH 0x00000100 /* DMA Channel Running Indicator (DFETCH) */ +#define DMA_RUN 0x00000200 /* DMA Channel Running Indicator */ +#define DMA_RUN_WAIT_TRIG 0x00000300 /* DMA Channel Running Indicator (WAIT TRIG) */ +#define DMA_RUN_WAIT_ACK 0x00000400 /* DMA Channel Running Indicator (WAIT ACK) */ + +#else + #define WDSIZE_16 0x0004 /* Transfer Word Size = 16 */ #define WDSIZE_32 0x0008 /* Transfer Word Size = 32 */ +#define PSIZE_16 WDSIZE_16 +#define PSIZE_32 WDSIZE_32 #define DMA2D 0x0010 /* DMA Mode (2D/1D*) */ #define RESTART 0x0020 /* DMA Buffer Clear */ #define DI_SEL 0x0040 /* Data Interrupt Timing Select */ @@ -26,14 +66,13 @@ #define NDSIZE_7 0x0700 /* Next Descriptor Size = 7 */ #define NDSIZE_8 0x0800 /* Next Descriptor Size = 8 */ #define NDSIZE_9 0x0900 /* Next Descriptor Size = 9 */ -#define FLOW_STOP 0x0000 /* Stop Mode */ -#define FLOW_AUTO 0x1000 /* Autobuffer Mode */ #define FLOW_ARRAY 0x4000 /* Descriptor Array Mode */ #define FLOW_SMALL 0x6000 /* Small Model Descriptor List Mode */ #define FLOW_LARGE 0x7000 /* Large Model Descriptor List Mode */
#define DMAEN_P 0 /* Channel Enable */ #define WNR_P 1 /* Channel Direction (W/R*) */ +#define WDSIZE_P 2 /* Transfer Word Size */ #define DMA2D_P 4 /* 2D/1D* Mode */ #define RESTART_P 5 /* Restart */ #define DI_SEL_P 6 /* Data Interrupt Select */ @@ -45,6 +84,11 @@ #define DFETCH 0x0004 /* DMA Descriptor Fetch Indicator */ #define DMA_RUN 0x0008 /* DMA Channel Running Indicator */
+#endif +#define DMAFLOW 0x7000 /* Flow Control */ +#define FLOW_STOP 0x0000 /* Stop Mode */ +#define FLOW_AUTO 0x1000 /* Autobuffer Mode */ + #define DMA_DONE_P 0 /* DMA Done Indicator */ #define DMA_ERR_P 1 /* DMA Error Indicator */ #define DFETCH_P 2 /* Descriptor Fetch Indicator */ diff --git a/arch/blackfin/lib/string.c b/arch/blackfin/lib/string.c index e344d3b..44d8c6d 100644 --- a/arch/blackfin/lib/string.c +++ b/arch/blackfin/lib/string.c @@ -29,7 +29,7 @@ #include <config.h> #include <asm/blackfin.h> #include <asm/io.h> -#include <asm/mach-common/bits/dma.h> +#include <asm/dma.h>
char *strcpy(char *dest, const char *src) { @@ -117,81 +117,88 @@ int strncmp(const char *cs, const char *ct, size_t count) return __res1; }
-#ifdef bfin_write_MDMA1_D0_IRQ_STATUS -# define bfin_write_MDMA_D0_IRQ_STATUS bfin_write_MDMA1_D0_IRQ_STATUS -# define bfin_write_MDMA_D0_START_ADDR bfin_write_MDMA1_D0_START_ADDR -# define bfin_write_MDMA_D0_X_COUNT bfin_write_MDMA1_D0_X_COUNT -# define bfin_write_MDMA_D0_X_MODIFY bfin_write_MDMA1_D0_X_MODIFY -# define bfin_write_MDMA_D0_CONFIG bfin_write_MDMA1_D0_CONFIG -# define bfin_write_MDMA_S0_START_ADDR bfin_write_MDMA1_S0_START_ADDR -# define bfin_write_MDMA_S0_X_COUNT bfin_write_MDMA1_S0_X_COUNT -# define bfin_write_MDMA_S0_X_MODIFY bfin_write_MDMA1_S0_X_MODIFY -# define bfin_write_MDMA_S0_CONFIG bfin_write_MDMA1_S0_CONFIG -# define bfin_write_MDMA_D0_IRQ_STATUS bfin_write_MDMA1_D0_IRQ_STATUS -# define bfin_read_MDMA_D0_IRQ_STATUS bfin_read_MDMA1_D0_IRQ_STATUS +#ifdef MDMA1_D0_NEXT_DESC_PTR +# define MDMA_D0_NEXT_DESC_PTR MDMA1_D0_NEXT_DESC_PTR +# define MDMA_S0_NEXT_DESC_PTR MDMA1_S0_NEXT_DESC_PTR #endif + +static void dma_calc_size(unsigned long ldst, unsigned long lsrc, size_t count, + unsigned long *dshift, unsigned long *bpos) +{ + unsigned long limit; + +#ifdef MSIZE + limit = 6; + *dshift = MSIZE_P; +#else + limit = 3; + *dshift = WDSIZE_P; +#endif + + *bpos = min(limit, ffs(ldst | lsrc | count)) - 1; +} + /* This version misbehaves for count values of 0 and 2^16+. * Perhaps we should detect that ? Nowhere do we actually * use dma memcpy for those types of lengths though ... */ void dma_memcpy_nocache(void *dst, const void *src, size_t count) { - uint16_t wdsize, mod; + struct dma_register *mdma_d0 = (void *)MDMA_D0_NEXT_DESC_PTR; + struct dma_register *mdma_s0 = (void *)MDMA_S0_NEXT_DESC_PTR; + unsigned long ldst = (unsigned long)dst; + unsigned long lsrc = (unsigned long)src; + unsigned long dshift, bpos; + uint32_t dsize, mod;
/* Disable DMA in case it's still running (older u-boot's did not * always turn them off). Do it before the if statement below so * we can be cheap and not do a SSYNC() due to the forced abort. */ - bfin_write_MDMA_D0_CONFIG(0); - bfin_write_MDMA_S0_CONFIG(0); - bfin_write_MDMA_D0_IRQ_STATUS(DMA_RUN | DMA_DONE | DMA_ERR); + bfin_write(&mdma_d0->config, 0); + bfin_write(&mdma_s0->config, 0); + bfin_write(&mdma_d0->status, DMA_RUN | DMA_DONE | DMA_ERR);
/* Scratchpad cannot be a DMA source or destination */ - if (((unsigned long)src >= L1_SRAM_SCRATCH && - (unsigned long)src < L1_SRAM_SCRATCH_END) || - ((unsigned long)dst >= L1_SRAM_SCRATCH && - (unsigned long)dst < L1_SRAM_SCRATCH_END)) + if ((lsrc >= L1_SRAM_SCRATCH && lsrc < L1_SRAM_SCRATCH_END) || + (ldst >= L1_SRAM_SCRATCH && ldst < L1_SRAM_SCRATCH_END)) hang();
- if (((unsigned long)dst | (unsigned long)src | count) & 0x1) { - wdsize = WDSIZE_8; - mod = 1; - } else if (((unsigned long)dst | (unsigned long)src | count) & 0x2) { - wdsize = WDSIZE_16; - count >>= 1; - mod = 2; - } else { - wdsize = WDSIZE_32; - count >>= 2; - mod = 4; - } + dma_calc_size(ldst, lsrc, count, &dshift, &bpos); + dsize = bpos << dshift; + count >>= bpos; + mod = 1 << bpos; + +#ifdef PSIZE + dsize |= min(3, bpos) << PSIZE_P; +#endif
/* Copy sram functions from sdram to sram */ /* Setup destination start address */ - bfin_write_MDMA_D0_START_ADDR(dst); + bfin_write(&mdma_d0->start_addr, ldst); /* Setup destination xcount */ - bfin_write_MDMA_D0_X_COUNT(count); + bfin_write(&mdma_d0->x_count, count); /* Setup destination xmodify */ - bfin_write_MDMA_D0_X_MODIFY(mod); + bfin_write(&mdma_d0->x_modify, mod);
/* Setup Source start address */ - bfin_write_MDMA_S0_START_ADDR(src); + bfin_write(&mdma_s0->start_addr, lsrc); /* Setup Source xcount */ - bfin_write_MDMA_S0_X_COUNT(count); + bfin_write(&mdma_s0->x_count, count); /* Setup Source xmodify */ - bfin_write_MDMA_S0_X_MODIFY(mod); + bfin_write(&mdma_s0->x_modify, mod);
/* Enable source DMA */ - bfin_write_MDMA_S0_CONFIG(wdsize | DMAEN); - bfin_write_MDMA_D0_CONFIG(wdsize | DMAEN | WNR | DI_EN); + bfin_write(&mdma_s0->config, dsize | DMAEN); + bfin_write(&mdma_d0->config, dsize | DMAEN | WNR | DI_EN); SSYNC();
- while (!(bfin_read_MDMA_D0_IRQ_STATUS() & DMA_DONE)) + while (!(bfin_read(&mdma_d0->status) & DMA_DONE)) continue;
- bfin_write_MDMA_D0_IRQ_STATUS(DMA_RUN | DMA_DONE | DMA_ERR); - bfin_write_MDMA_D0_CONFIG(0); - bfin_write_MDMA_S0_CONFIG(0); + bfin_write(&mdma_d0->status, DMA_RUN | DMA_DONE | DMA_ERR); + bfin_write(&mdma_d0->config, 0); + bfin_write(&mdma_s0->config, 0); } /* We should do a dcache invalidate on the destination after the dma, but since * we lack such hardware capability, we'll flush/invalidate the destination

Dear Sonic Zhang,
In message 1360223258-6945-5-git-send-email-sonic.adi@gmail.com you wrote:
From: Bob Liu lliubbo@gmail.com
Add dma support for bf60x.
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com
arch/blackfin/include/asm/dma.h | 113 ++++++++++++---------- arch/blackfin/include/asm/mach-common/bits/dma.h | 48 +++++++++- arch/blackfin/lib/string.c | 97 ++++++++++--------- 3 files changed, 159 insertions(+), 99 deletions(-)
There are checkpatch errors and warnings. Please fix these!!
struct dmasg_large { void *next_desc_addr;
- unsigned long start_addr;
- unsigned short cfg;
- unsigned short x_count;
- short x_modify;
- unsigned short y_count;
- short y_modify;
- u32 start_addr;
- u16 cfg;
- u16 x_count;
- s16 x_modify;
- u16 y_count;
- s16 y_modify;
} __attribute__((packed));
struct dmasg {
- unsigned long start_addr;
- unsigned short cfg;
- unsigned short x_count;
- short x_modify;
- unsigned short y_count;
- short y_modify;
- u32 start_addr;
- u16 cfg;
- u16 x_count;
- s16 x_modify;
- u16 y_count;
- s16 y_modify;
} __attribute__((packed));
These appear totally unrelated changes. These should be split out into separate patches.
+/*
- All Blackfin system MMRs are padded to 32bits even if the register
- itself is only 16bits. So use a helper macro to streamline this.
- */
+#define __BFP(m) m; u16 __pad_##m struct dma_register {
- void *next_desc_ptr; /* DMA Next Descriptor Pointer register */
- unsigned long start_addr; /* DMA Start address register */
- unsigned short cfg; /* DMA Configuration register */
- unsigned short dummy1; /* DMA Configuration register */
- unsigned long reserved;
- unsigned short x_count; /* DMA x_count register */
- unsigned short dummy2;
- short x_modify; /* DMA x_modify register */
- unsigned short dummy3;
- unsigned short y_count; /* DMA y_count register */
- unsigned short dummy4;
- short y_modify; /* DMA y_modify register */
- unsigned short dummy5;
- void *curr_desc_ptr; /* DMA Current Descriptor Pointer
register */
- unsigned long curr_addr_ptr; /* DMA Current Address Pointer
register */
- unsigned short irq_status; /* DMA irq status register */
- unsigned short dummy6;
- unsigned short peripheral_map; /* DMA peripheral map register */
- unsigned short dummy7;
- unsigned short curr_x_count; /* DMA Current x-count register */
- unsigned short dummy8;
- unsigned long reserved2;
- unsigned short curr_y_count; /* DMA Current y-count register */
- unsigned short dummy9;
- unsigned long reserved3;
+#ifdef __ADSPBF60x__
- void *next_desc_ptr;
- u32 start_addr;
- u32 config;
You drop all the comments; please don't do that.
Also, "cfg" used to be a short, now it gets replaced by "config" which is a u32. Is this correct?
- void *next_desc_ptr;
- u32 start_addr;
- u16 __BFP(config);
- u32 __pad0;
- u16 __BFP(x_count);
- s16 __BFP(x_modify);
- u16 __BFP(y_count);
- s16 __BFP(y_modify);
- void *curr_desc_ptr;
- u32 curr_addr_ptr;
- u16 __BFP(status);
- u16 __BFP(peripheral_map);
- u16 __BFP(curr_x_count);
- u32 __pad1;
- u16 __BFP(curr_y_count);
- u32 __pad2;
Sorry, but this is unreadable. NAK.
Best regards,
Wolfgang Denk

On Thu, Feb 7, 2013 at 6:11 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-5-git-send-email-sonic.adi@gmail.com you wrote:
From: Bob Liu lliubbo@gmail.com
Add dma support for bf60x.
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com
arch/blackfin/include/asm/dma.h | 113 ++++++++++++---------- arch/blackfin/include/asm/mach-common/bits/dma.h | 48 +++++++++- arch/blackfin/lib/string.c | 97 ++++++++++--------- 3 files changed, 159 insertions(+), 99 deletions(-)
There are checkpatch errors and warnings. Please fix these!!
No problem.
struct dmasg_large { void *next_desc_addr;
unsigned long start_addr;
unsigned short cfg;
unsigned short x_count;
short x_modify;
unsigned short y_count;
short y_modify;
u32 start_addr;
u16 cfg;
u16 x_count;
s16 x_modify;
u16 y_count;
s16 y_modify;
} __attribute__((packed));
struct dmasg {
unsigned long start_addr;
unsigned short cfg;
unsigned short x_count;
short x_modify;
unsigned short y_count;
short y_modify;
u32 start_addr;
u16 cfg;
u16 x_count;
s16 x_modify;
u16 y_count;
s16 y_modify;
} __attribute__((packed));
These appear totally unrelated changes. These should be split out into separate patches.
OK, I will move these changes out as a new patch.
+/*
- All Blackfin system MMRs are padded to 32bits even if the register
- itself is only 16bits. So use a helper macro to streamline this.
- */
+#define __BFP(m) m; u16 __pad_##m struct dma_register {
void *next_desc_ptr; /* DMA Next Descriptor Pointer register */
unsigned long start_addr; /* DMA Start address register */
unsigned short cfg; /* DMA Configuration register */
unsigned short dummy1; /* DMA Configuration register */
unsigned long reserved;
unsigned short x_count; /* DMA x_count register */
unsigned short dummy2;
short x_modify; /* DMA x_modify register */
unsigned short dummy3;
unsigned short y_count; /* DMA y_count register */
unsigned short dummy4;
short y_modify; /* DMA y_modify register */
unsigned short dummy5;
void *curr_desc_ptr; /* DMA Current Descriptor Pointer
register */
unsigned long curr_addr_ptr; /* DMA Current Address Pointer
register */
unsigned short irq_status; /* DMA irq status register */
unsigned short dummy6;
unsigned short peripheral_map; /* DMA peripheral map register */
unsigned short dummy7;
unsigned short curr_x_count; /* DMA Current x-count register */
unsigned short dummy8;
unsigned long reserved2;
unsigned short curr_y_count; /* DMA Current y-count register */
unsigned short dummy9;
unsigned long reserved3;
+#ifdef __ADSPBF60x__
void *next_desc_ptr;
u32 start_addr;
u32 config;
You drop all the comments; please don't do that.
Also, "cfg" used to be a short, now it gets replaced by "config" which is a u32. Is this correct?
Yes, this is correct for BF60x. The DMA config MMR on BF60x is 32 bits while it is 16 bits on BF5xx.
void *next_desc_ptr;
u32 start_addr;
u16 __BFP(config);
u32 __pad0;
u16 __BFP(x_count);
s16 __BFP(x_modify);
u16 __BFP(y_count);
s16 __BFP(y_modify);
void *curr_desc_ptr;
u32 curr_addr_ptr;
u16 __BFP(status);
u16 __BFP(peripheral_map);
u16 __BFP(curr_x_count);
u32 __pad1;
u16 __BFP(curr_y_count);
u32 __pad2;
Sorry, but this is unreadable. NAK.
OK, I will change back to the former definition style.
Sonic Zhang

From: Bob Liu lliubbo@gmail.com
Bf60x support 16K, 64K, 16M and 64M cplb pages, this patch add support for them. So that bf609-ezkit can use it's 128M memory.
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com --- arch/blackfin/include/asm/cplb.h | 17 +++++++++++------ arch/blackfin/lib/board.c | 27 ++++++++++++++++++++------- 2 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/arch/blackfin/include/asm/cplb.h b/arch/blackfin/include/asm/cplb.h index cc21e93..afdc920 100644 --- a/arch/blackfin/include/asm/cplb.h +++ b/arch/blackfin/include/asm/cplb.h @@ -45,9 +45,14 @@ #define CPLB_INOCACHE CPLB_USER_RD | CPLB_VALID #define CPLB_IDOCACHE CPLB_INOCACHE | CPLB_L1_CHBL
-/* Data Attibutes*/ +#if defined(__ADSPBF60x__) +#define PAGE_SIZE (PAGE_SIZE_16MB) +#else +#define PAGE_SIZE (PAGE_SIZE_4MB) +#endif
-#define SDRAM_IGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID) +/* Data Attibutes*/ +#define SDRAM_IGENERIC (PAGE_SIZE | CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID) #define SDRAM_IKERNEL (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | CPLB_LOCK) #define L1_IMEMORY (PAGE_SIZE_1MB | CPLB_USER_RD | CPLB_VALID | CPLB_LOCK) #define SDRAM_INON_CHBL (PAGE_SIZE_4MB | CPLB_USER_RD | CPLB_VALID) @@ -59,18 +64,18 @@ #endif
#ifdef CONFIG_DCACHE_WB /*Write Back Policy */ -#define SDRAM_DGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_DIRTY | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND) +#define SDRAM_DGENERIC (PAGE_SIZE | CPLB_L1_CHBL | CPLB_DIRTY | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND) #define SDRAM_DNON_CHBL (PAGE_SIZE_4MB | CPLB_DIRTY | CPLB_SUPV_WR | CPLB_USER_RD | CPLB_USER_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) #define SDRAM_DKERNEL (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_USER_RD | CPLB_USER_WR | CPLB_DIRTY | CPLB_SUPV_WR | CPLB_VALID | CPLB_LOCK | ANOMALY_05000158_WORKAROUND) #define L1_DMEMORY (PAGE_SIZE_4MB | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND) -#define SDRAM_EBIU (PAGE_SIZE_4MB | CPLB_DIRTY | CPLB_USER_RD | CPLB_USER_WR | CPLB_SUPV_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) +#define SDRAM_EBIU (PAGE_SIZE | CPLB_DIRTY | CPLB_USER_RD | CPLB_USER_WR | CPLB_SUPV_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
#else /*Write Through */ -#define SDRAM_DGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_SUPV_WR | CPLB_USER_RD | CPLB_USER_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) +#define SDRAM_DGENERIC (PAGE_SIZE | CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_SUPV_WR | CPLB_USER_RD | CPLB_USER_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) #define SDRAM_DNON_CHBL (PAGE_SIZE_4MB | CPLB_WT | CPLB_L1_AOW | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND) #define SDRAM_DKERNEL (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_USER_RD | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_VALID | CPLB_LOCK | ANOMALY_05000158_WORKAROUND) #define L1_DMEMORY (PAGE_SIZE_4MB | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) -#define SDRAM_EBIU (PAGE_SIZE_4MB | CPLB_WT | CPLB_L1_AOW | CPLB_USER_RD | CPLB_USER_WR | CPLB_SUPV_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) +#define SDRAM_EBIU (PAGE_SIZE | CPLB_WT | CPLB_L1_AOW | CPLB_USER_RD | CPLB_USER_WR | CPLB_SUPV_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) #endif
#endif /* _CPLB_H */ diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index 098f685..e3f7fe3 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -94,12 +94,12 @@ static void display_global_data(void) printf(" \-bi_flashoffset: %lx\n", bd->bi_flashoffset); }
-#define CPLB_PAGE_SIZE (4 * 1024 * 1024) -#define CPLB_PAGE_MASK (~(CPLB_PAGE_SIZE - 1)) void init_cplbtables(void) { volatile uint32_t *ICPLB_ADDR, *ICPLB_DATA; volatile uint32_t *DCPLB_ADDR, *DCPLB_DATA; + uint32_t cplb_page_size; + uint32_t cplb_page_mask; uint32_t extern_memory; size_t i;
@@ -127,12 +127,19 @@ void init_cplbtables(void) icplb_add(0xFFA00000, L1_IMEMORY); dcplb_add(0xFF800000, L1_DMEMORY); ++i; +#if defined(__ADSPBF60x__) + icplb_add(0x0, 0x0); + dcplb_add(CONFIG_SYS_FLASH_BASE, SDRAM_EBIU); + ++i; +#endif + cplb_page_size = (4 * 1024 * 1024); + cplb_page_mask = (~(cplb_page_size - 1));
if (CONFIG_MEM_SIZE) { uint32_t mbase = CONFIG_SYS_MONITOR_BASE; uint32_t mend = mbase + CONFIG_SYS_MONITOR_LEN; - mbase &= CPLB_PAGE_MASK; - mend &= CPLB_PAGE_MASK; + mbase &= cplb_page_mask; + mend &= cplb_page_mask;
icplb_add(mbase, SDRAM_IKERNEL); dcplb_add(mbase, SDRAM_DKERNEL); @@ -150,9 +157,11 @@ void init_cplbtables(void) } }
+#ifndef __ADSPBF60x__ icplb_add(0x20000000, SDRAM_INON_CHBL); dcplb_add(0x20000000, SDRAM_EBIU); ++i; +#endif
/* Add entries for the rest of external RAM up to the bootrom */ extern_memory = 0; @@ -163,14 +172,18 @@ void init_cplbtables(void) ++i; icplb_add(extern_memory, SDRAM_IKERNEL); dcplb_add(extern_memory, SDRAM_DKERNEL); - extern_memory += CPLB_PAGE_SIZE; + extern_memory += cplb_page_size; ++i; #endif
- while (i < 16 && extern_memory < (CONFIG_SYS_MONITOR_BASE & CPLB_PAGE_MASK)) { +#if defined(__ADSPBF60x__) + cplb_page_size = (16 * 1024 * 1024); + cplb_page_mask = (~(cplb_page_size - 1)); +#endif + while (i < 16 && extern_memory < (CONFIG_SYS_MONITOR_BASE & cplb_page_mask)) { icplb_add(extern_memory, SDRAM_IGENERIC); dcplb_add(extern_memory, SDRAM_DGENERIC); - extern_memory += CPLB_PAGE_SIZE; + extern_memory += cplb_page_size; ++i; } while (i < 16) {

Dear Sonic Zhang,
In message 1360223258-6945-6-git-send-email-sonic.adi@gmail.com you wrote:
From: Bob Liu lliubbo@gmail.com
Bf60x support 16K, 64K, 16M and 64M cplb pages, this patch add support for them. So that bf609-ezkit can use it's 128M memory.
Checkpatch issues, please fix.
-#define CPLB_PAGE_SIZE (4 * 1024 * 1024) -#define CPLB_PAGE_MASK (~(CPLB_PAGE_SIZE - 1))
...
- uint32_t cplb_page_size;
- uint32_t cplb_page_mask;
...
- cplb_page_size = (4 * 1024 * 1024);
- cplb_page_mask = (~(cplb_page_size - 1));
...
mbase &= CPLB_PAGE_MASK;
mend &= CPLB_PAGE_MASK;
mbase &= cplb_page_mask;
mend &= cplb_page_mask;
What exsactly is the reason for replacing a compile-time calculation with a run-time one?
Best regards,
Wolfgang Denk

On Thu, Feb 7, 2013 at 6:33 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-6-git-send-email-sonic.adi@gmail.com you wrote:
From: Bob Liu lliubbo@gmail.com
Bf60x support 16K, 64K, 16M and 64M cplb pages, this patch add support for them. So that bf609-ezkit can use it's 128M memory.
Checkpatch issues, please fix.
OK
-#define CPLB_PAGE_SIZE (4 * 1024 * 1024) -#define CPLB_PAGE_MASK (~(CPLB_PAGE_SIZE - 1))
...
uint32_t cplb_page_size;
uint32_t cplb_page_mask;
...
cplb_page_size = (4 * 1024 * 1024);
cplb_page_mask = (~(cplb_page_size - 1));
...
mbase &= CPLB_PAGE_MASK;
mend &= CPLB_PAGE_MASK;
mbase &= cplb_page_mask;
mend &= cplb_page_mask;
What exsactly is the reason for replacing a compile-time calculation with a run-time one?
I will check with Bob on this change.
Sonic Zhang

On Thu, Feb 7, 2013 at 6:33 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-6-git-send-email-sonic.adi@gmail.com you wrote:
From: Bob Liu lliubbo@gmail.com
Bf60x support 16K, 64K, 16M and 64M cplb pages, this patch add support for them. So that bf609-ezkit can use it's 128M memory.
Checkpatch issues, please fix.
-#define CPLB_PAGE_SIZE (4 * 1024 * 1024) -#define CPLB_PAGE_MASK (~(CPLB_PAGE_SIZE - 1))
...
uint32_t cplb_page_size;
uint32_t cplb_page_mask;
...
cplb_page_size = (4 * 1024 * 1024);
cplb_page_mask = (~(cplb_page_size - 1));
...
mbase &= CPLB_PAGE_MASK;
mend &= CPLB_PAGE_MASK;
mbase &= cplb_page_mask;
mend &= cplb_page_mask;
What exsactly is the reason for replacing a compile-time calculation with a run-time one?
Because bf60x will use different cplb page size in some place, if don't use run-time variable then more marco and #ifdef are needed. I prefer to reuse this code with run-time variable.
Best regards,
Wolfgang Denk
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de Whom the gods would destroy, they first teach BASIC. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Bob,
On Mon, Feb 18, 2013 at 10:43 AM, Bob Liu lliubbo@gmail.com wrote:
On Thu, Feb 7, 2013 at 6:33 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-6-git-send-email-sonic.adi@gmail.com you wrote:
From: Bob Liu lliubbo@gmail.com
Bf60x support 16K, 64K, 16M and 64M cplb pages, this patch add support for them. So that bf609-ezkit can use it's 128M memory.
Checkpatch issues, please fix.
-#define CPLB_PAGE_SIZE (4 * 1024 * 1024) -#define CPLB_PAGE_MASK (~(CPLB_PAGE_SIZE - 1))
...
uint32_t cplb_page_size;
uint32_t cplb_page_mask;
...
cplb_page_size = (4 * 1024 * 1024);
cplb_page_mask = (~(cplb_page_size - 1));
...
mbase &= CPLB_PAGE_MASK;
mend &= CPLB_PAGE_MASK;
mbase &= cplb_page_mask;
mend &= cplb_page_mask;
What exsactly is the reason for replacing a compile-time calculation with a run-time one?
Because bf60x will use different cplb page size in some place, if don't use run-time variable then more marco and #ifdef are needed. I prefer to reuse this code with run-time variable.
Thanks for explanation. I changed your run-time variable into new macro to avoid this problem.
Regards,
Sonic

From: Bob Liu lliubbo@gmail.com
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com --- arch/blackfin/cpu/gpio.c | 36 +++++-- arch/blackfin/include/asm/gpio.h | 2 +- arch/blackfin/include/asm/mach-bf609/gpio.h | 151 +++++++++++++++++++++++++++ 3 files changed, 181 insertions(+), 8 deletions(-) create mode 100644 arch/blackfin/include/asm/mach-bf609/gpio.h
diff --git a/arch/blackfin/cpu/gpio.c b/arch/blackfin/cpu/gpio.c index 5674d42..f684be5 100644 --- a/arch/blackfin/cpu/gpio.c +++ b/arch/blackfin/cpu/gpio.c @@ -66,6 +66,14 @@ static struct gpio_port_t * const gpio_array[] = { (struct gpio_port_t *)PORTH_FER, (struct gpio_port_t *)PORTI_FER, (struct gpio_port_t *)PORTJ_FER, +#elif defined(CONFIG_BF60x) + (struct gpio_port_t *)PORTA_FER, + (struct gpio_port_t *)PORTB_FER, + (struct gpio_port_t *)PORTC_FER, + (struct gpio_port_t *)PORTD_FER, + (struct gpio_port_t *)PORTE_FER, + (struct gpio_port_t *)PORTF_FER, + (struct gpio_port_t *)PORTG_FER, #else # error no gpio arrays defined #endif @@ -216,6 +224,12 @@ static void port_setup(unsigned gpio, unsigned short usage) else gpio_array[gpio_bank(gpio)]->port_fer |= gpio_bit(gpio); SSYNC(); +#elif defined(CONFIG_BF60x) + if (usage == GPIO_USAGE) + gpio_array[gpio_bank(gpio)]->port_fer_clear = gpio_bit(gpio); + else + gpio_array[gpio_bank(gpio)]->port_fer_set = gpio_bit(gpio); + SSYNC(); #endif }
@@ -290,7 +304,7 @@ static void portmux_setup(unsigned short per) } } } -#elif defined(CONFIG_BF54x) +#elif defined(CONFIG_BF54x) || defined(CONFIG_BF60x) inline void portmux_setup(unsigned short per) { u32 pmux; @@ -330,7 +344,7 @@ inline void portmux_setup(unsigned short per) # define portmux_setup(...) do { } while (0) #endif
-#ifndef CONFIG_BF54x +#if !defined(CONFIG_BF54x) && !defined(CONFIG_BF60x) /*********************************************************** * * FUNCTIONS: Blackfin General Purpose Ports Access Functions @@ -534,7 +548,7 @@ int peripheral_request(unsigned short per, const char *label) * be requested and used by several drivers */
-#ifdef CONFIG_BF54x +#if defined(CONFIG_BF54x) || defined(CONFIG_BF60x) if (!((per & P_MAYSHARE) && get_portmux(per) == P_FUNCT2MUX(per))) { #else if (!(per & P_MAYSHARE)) { @@ -651,7 +665,7 @@ int bfin_gpio_request(unsigned gpio, const char *label) gpio, get_label(gpio)); return -EBUSY; } -#ifndef CONFIG_BF54x +#if !defined(CONFIG_BF54x) && !defined(CONFIG_BF60x) else { /* Reset POLAR setting when acquiring a gpio for the first time */ set_gpio_polar(gpio, 0); } @@ -732,12 +746,16 @@ void bfin_special_gpio_free(unsigned gpio)
static inline void __bfin_gpio_direction_input(unsigned gpio) { -#ifdef CONFIG_BF54x +#if defined(CONFIG_BF54x) || defined(CONFIG_BF60x) gpio_array[gpio_bank(gpio)]->dir_clear = gpio_bit(gpio); #else gpio_array[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio); #endif +#if defined(CONFIG_BF60x) + gpio_array[gpio_bank(gpio)]->inen_set = gpio_bit(gpio); +#else gpio_array[gpio_bank(gpio)]->inen |= gpio_bit(gpio); +#endif }
int bfin_gpio_direction_input(unsigned gpio) @@ -785,9 +803,13 @@ int bfin_gpio_direction_output(unsigned gpio, int value)
local_irq_save(flags);
+#if defined(CONFIG_BF60x) + gpio_array[gpio_bank(gpio)]->inen_clear = gpio_bit(gpio); +#else gpio_array[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio); +#endif gpio_set_value(gpio, value); -#ifdef CONFIG_BF54x +#if defined(CONFIG_BF54x) || defined(CONFIG_BF60x) gpio_array[gpio_bank(gpio)]->dir_set = gpio_bit(gpio); #else gpio_array[gpio_bank(gpio)]->dir |= gpio_bit(gpio); @@ -801,7 +823,7 @@ int bfin_gpio_direction_output(unsigned gpio, int value)
int bfin_gpio_get_value(unsigned gpio) { -#ifdef CONFIG_BF54x +#if defined(CONFIG_BF54x) || defined(CONFIG_BF60x) return (1 & (gpio_array[gpio_bank(gpio)]->data >> gpio_sub_n(gpio))); #else unsigned long flags; diff --git a/arch/blackfin/include/asm/gpio.h b/arch/blackfin/include/asm/gpio.h index 224688f..05131b5 100644 --- a/arch/blackfin/include/asm/gpio.h +++ b/arch/blackfin/include/asm/gpio.h @@ -68,7 +68,7 @@
#ifndef __ASSEMBLY__
-#ifndef CONFIG_BF54x +#if !defined(CONFIG_BF54x) && !defined(CONFIG_BF60x) void set_gpio_dir(unsigned, unsigned short); void set_gpio_inen(unsigned, unsigned short); void set_gpio_polar(unsigned, unsigned short); diff --git a/arch/blackfin/include/asm/mach-bf609/gpio.h b/arch/blackfin/include/asm/mach-bf609/gpio.h new file mode 100644 index 0000000..e297bcc --- /dev/null +++ b/arch/blackfin/include/asm/mach-bf609/gpio.h @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2008 Analog Devices Inc. + * Licensed under the GPL-2 or later. + */ + +#ifndef _MACH_GPIO_H_ +#define _MACH_GPIO_H_ + +#define MAX_BLACKFIN_GPIOS 112 + +#define GPIO_PA0 0 +#define GPIO_PA1 1 +#define GPIO_PA2 2 +#define GPIO_PA3 3 +#define GPIO_PA4 4 +#define GPIO_PA5 5 +#define GPIO_PA6 6 +#define GPIO_PA7 7 +#define GPIO_PA8 8 +#define GPIO_PA9 9 +#define GPIO_PA10 10 +#define GPIO_PA11 11 +#define GPIO_PA12 12 +#define GPIO_PA13 13 +#define GPIO_PA14 14 +#define GPIO_PA15 15 +#define GPIO_PB0 16 +#define GPIO_PB1 17 +#define GPIO_PB2 18 +#define GPIO_PB3 19 +#define GPIO_PB4 20 +#define GPIO_PB5 21 +#define GPIO_PB6 22 +#define GPIO_PB7 23 +#define GPIO_PB8 24 +#define GPIO_PB9 25 +#define GPIO_PB10 26 +#define GPIO_PB11 27 +#define GPIO_PB12 28 +#define GPIO_PB13 29 +#define GPIO_PB14 30 +#define GPIO_PB15 31 +#define GPIO_PC0 32 +#define GPIO_PC1 33 +#define GPIO_PC2 34 +#define GPIO_PC3 35 +#define GPIO_PC4 36 +#define GPIO_PC5 37 +#define GPIO_PC6 38 +#define GPIO_PC7 39 +#define GPIO_PC8 40 +#define GPIO_PC9 41 +#define GPIO_PC10 42 +#define GPIO_PC11 43 +#define GPIO_PC12 44 +#define GPIO_PC13 45 +#define GPIO_PC14 46 +#define GPIO_PC15 47 +#define GPIO_PD0 48 +#define GPIO_PD1 49 +#define GPIO_PD2 50 +#define GPIO_PD3 51 +#define GPIO_PD4 52 +#define GPIO_PD5 53 +#define GPIO_PD6 54 +#define GPIO_PD7 55 +#define GPIO_PD8 56 +#define GPIO_PD9 57 +#define GPIO_PD10 58 +#define GPIO_PD11 59 +#define GPIO_PD12 60 +#define GPIO_PD13 61 +#define GPIO_PD14 62 +#define GPIO_PD15 63 +#define GPIO_PE0 64 +#define GPIO_PE1 65 +#define GPIO_PE2 66 +#define GPIO_PE3 67 +#define GPIO_PE4 68 +#define GPIO_PE5 69 +#define GPIO_PE6 70 +#define GPIO_PE7 71 +#define GPIO_PE8 72 +#define GPIO_PE9 73 +#define GPIO_PE10 74 +#define GPIO_PE11 75 +#define GPIO_PE12 76 +#define GPIO_PE13 77 +#define GPIO_PE14 78 +#define GPIO_PE15 79 +#define GPIO_PF0 80 +#define GPIO_PF1 81 +#define GPIO_PF2 82 +#define GPIO_PF3 83 +#define GPIO_PF4 84 +#define GPIO_PF5 85 +#define GPIO_PF6 86 +#define GPIO_PF7 87 +#define GPIO_PF8 88 +#define GPIO_PF9 89 +#define GPIO_PF10 90 +#define GPIO_PF11 91 +#define GPIO_PF12 92 +#define GPIO_PF13 93 +#define GPIO_PF14 94 +#define GPIO_PF15 95 +#define GPIO_PG0 96 +#define GPIO_PG1 97 +#define GPIO_PG2 98 +#define GPIO_PG3 99 +#define GPIO_PG4 100 +#define GPIO_PG5 101 +#define GPIO_PG6 102 +#define GPIO_PG7 103 +#define GPIO_PG8 104 +#define GPIO_PG9 105 +#define GPIO_PG10 106 +#define GPIO_PG11 107 +#define GPIO_PG12 108 +#define GPIO_PG13 109 +#define GPIO_PG14 110 +#define GPIO_PG15 111 + +#ifndef __ASSEMBLY__ + +struct gpio_port_t { + unsigned long port_fer; + unsigned long port_fer_set; + unsigned long port_fer_clear; + unsigned long data; + unsigned long data_set; + unsigned long data_clear; + unsigned long dir; + unsigned long dir_set; + unsigned long dir_clear; + unsigned long inen; + unsigned long inen_set; + unsigned long inen_clear; + unsigned long port_mux; + unsigned long toggle; + unsigned long polar; + unsigned long polar_set; + unsigned long polar_clear; + unsigned long lock; + unsigned long spare; + unsigned long revid; +}; + +#endif + +#endif /* _MACH_GPIO_H_ */

From: Sonic Zhang sonic.zhang@analog.com
Board and config header files for bf609-ezkit support.
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com --- MAINTAINERS | 3 +- board/bf609-ezkit/Makefile | 55 ++++++++++++ board/bf609-ezkit/bf609-ezkit.c | 67 +++++++++++++++ boards.cfg | 1 + include/configs/bf609-ezkit.h | 168 +++++++++++++++++++++++++++++++++++++ include/configs/bfin_adi_common.h | 8 +- 6 files changed, 297 insertions(+), 5 deletions(-) create mode 100644 board/bf609-ezkit/Makefile create mode 100644 board/bf609-ezkit/bf609-ezkit.c create mode 100644 include/configs/bf609-ezkit.h
diff --git a/MAINTAINERS b/MAINTAINERS index 28c052d..76368cf 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1214,7 +1214,7 @@ Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com # Board CPU # #########################################################################
-Mike Frysinger vapier@gentoo.org +Sonic Zhang sonic.adi@gmail.com Blackfin Team u-boot-devel@blackfin.uclinux.org
BF506F-EZKIT BF506 @@ -1231,6 +1231,7 @@ Blackfin Team u-boot-devel@blackfin.uclinux.org BF538F-EZKIT BF538 BF548-EZKIT BF548 BF561-EZKIT BF561 + BF609-EZKIT BF609
M.Hasewinkel (MHA) info@ssv-embedded.de
diff --git a/board/bf609-ezkit/Makefile b/board/bf609-ezkit/Makefile new file mode 100644 index 0000000..0bb8fe6 --- /dev/null +++ b/board/bf609-ezkit/Makefile @@ -0,0 +1,55 @@ +# +# U-boot - Makefile +# +# Copyright (c) 2005-2008 Analog Device Inc. +# +# (C) Copyright 2000-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# See file CREDITS for list of people who contributed to this +# project. +# +# 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 +# + +include $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).o + +COBJS-y := $(BOARD).o +COBJS-$(CONFIG_BFIN_SOFT_SWITCH) += soft_switch.o + +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y)) +SOBJS := $(addprefix $(obj),$(SOBJS-y)) + +$(LIB): $(obj).depend $(OBJS) $(SOBJS) + $(call cmd_link_o_target, $(OBJS) $(SOBJS)) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak $(obj).depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/bf609-ezkit/bf609-ezkit.c b/board/bf609-ezkit/bf609-ezkit.c new file mode 100644 index 0000000..0388226 --- /dev/null +++ b/board/bf609-ezkit/bf609-ezkit.c @@ -0,0 +1,67 @@ +/* + * U-boot - main board file + * + * Copyright (c) 2008-2011 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <netdev.h> +#include <asm/blackfin.h> +#include <asm/io.h> +#include <asm/portmux.h> +#include "soft_switch.h" + +int checkboard(void) +{ + printf("Board: ADI BF609 EZ-Kit board\n"); + printf(" Support: http://blackfin.uclinux.org/%5Cn"); + return 0; +} + +int board_early_init_f(void) +{ + static const unsigned short pins[] = { + P_A3, P_A4, P_A5, P_A6, P_A7, P_A8, P_A9, P_A10, P_A11, P_A12, + P_A13, P_A14, P_A15, P_A16, P_A17, P_A18, P_A19, P_A20, P_A21, + P_A22, P_A23, P_A24, P_A25, P_NORCK, 0, + }; + peripheral_request_list(pins, "smc0"); + + return 0; +} + +#ifdef CONFIG_DESIGNWARE_ETH +int board_eth_init(bd_t *bis) +{ + int ret = 0; + + if (CONFIG_DW_PORTS & 1) { + static const unsigned short pins[] = P_RMII0; + if (!peripheral_request_list(pins, "emac0")) + ret += designware_initialize(0, EMAC0_MACCFG, 1, 0); + } + if (CONFIG_DW_PORTS & 2) { + static const unsigned short pins[] = P_RMII1; + if (!peripheral_request_list(pins, "emac1")) + ret += designware_initialize(1, EMAC1_MACCFG, 1, 0); + } + + return ret; +} +#endif + +#ifdef CONFIG_BFIN_SDH +int board_mmc_init(bd_t *bis) +{ + return bfin_mmc_init(bis); +} +#endif + +/* miscellaneous platform dependent initialisations */ +int misc_init_r(void) +{ + printf("other init\n"); + return setup_board_switches(); +} diff --git a/boards.cfg b/boards.cfg index e4b0d44..11060c4 100644 --- a/boards.cfg +++ b/boards.cfg @@ -356,6 +356,7 @@ bf538f-ezkit blackfin blackfin bf548-ezkit blackfin blackfin bf561-acvilon blackfin blackfin bf561-ezkit blackfin blackfin +bf609-ezkit blackfin blackfin blackstamp blackfin blackfin blackvme blackfin blackfin br4 blackfin blackfin diff --git a/include/configs/bf609-ezkit.h b/include/configs/bf609-ezkit.h new file mode 100644 index 0000000..a599127 --- /dev/null +++ b/include/configs/bf609-ezkit.h @@ -0,0 +1,168 @@ +/* + * U-boot - Configuration file for BF609 EZ-Kit board + */ + +#ifndef __CONFIG_BF609_EZKIT_H__ +#define __CONFIG_BF609_EZKIT_H__ + +#include <asm/config-pre.h> + +/* + * Processor Settings + */ +#define __ADSPBF60x__ 1 +#define __ADSPBF609__ 1 +#undef __ADSPBF592__ +#undef __ADSPBF59x__ +#define CONFIG_BFIN_CPU bf609-0.0 +#define CONFIG_BFIN_BOOT_MODE BFIN_BOOT_PARA + + +/* For ez-board version 1.0, else undef this */ +#define CONFIG_BFIN_BOARD_VERSION_1_0 + +/* + * Clock Settings + * CCLK = (CLKIN * VCO_MULT) / CCLK_DIV + * SCLK = (CLKIN * VCO_MULT) / SYSCLK_DIV + * SCLK0 = SCLK / SCLK0_DIV + * SCLK1 = SCLK / SCLK1_DIV + */ +/* CONFIG_CLKIN_HZ is any value in Hz */ +#define CONFIG_CLKIN_HZ (25000000) +/* CLKIN_HALF controls the DF bit in PLL_CTL 0 = CLKIN */ +/* 1 = CLKIN / 2 */ +#define CONFIG_CLKIN_HALF (0) + +/* VCO_MULT controls the MSEL (multiplier) bits in PLL_CTL */ +/* Values can range from 0-127 (where 0 means 128) */ +#define CONFIG_VCO_MULT (20) + +/* CCLK_DIV controls the core clock divider */ +/* Values can range from 0-31 (where 0 means 32) */ +#define CONFIG_CCLK_DIV (1) +/* SCLK_DIV controls the system clock divider */ +/* Values can range from 0-31 (where 0 means 32) */ +#define CONFIG_SCLK_DIV (4) +/* Values can range from 0-7 (where 0 means 8) */ +#define CONFIG_SCLK0_DIV (1) +#define CONFIG_SCLK1_DIV (1) +/* DCLK_DIV controls the DDR clock divider */ +/* Values can range from 0-31 (where 0 means 32) */ +#define CONFIG_DCLK_DIV (2) +/* OCLK_DIV controls the output clock divider */ +/* Values can range from 0-127 (where 0 means 128) */ +#define CONFIG_OCLK_DIV (16) + +/* + * Memory Settings + */ +#define CONFIG_MEM_SIZE 128 + +#define CONFIG_SMC_GCTL_VAL 0x00000010 +#define CONFIG_SMC_B0CTL_VAL 0x01007011 +#define CONFIG_SMC_B0TIM_VAL 0x08170977 +#define CONFIG_SMC_B0ETIM_VAL 0x00092231 + +#define CONFIG_SYS_MONITOR_LEN (768 * 1024) +#define CONFIG_SYS_MALLOC_LEN (512 * 1024) + +/* + * Network Settings + */ +#define ADI_CMDS_NETWORK 1 +#define CONFIG_NETCONSOLE 1 +#define CONFIG_NET_MULTI 1 +#define CONFIG_HOSTNAME bf609-ezkit +#define CONFIG_DESIGNWARE_ETH +#define CONFIG_DW_PORTS 1 +#define CONFIG_DW_AUTONEG +#define CONFIG_DW_ALTDESCRIPTOR +#define CONFIG_CMD_NET +#define CONFIG_CMD_MII +#define CONFIG_MII + +/* i2c Settings */ +#define CONFIG_BFIN_TWI_I2C 1 +#define CONFIG_HARD_I2C 1 + +/* + * Flash Settings + */ +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_JFFS2 +#define CONFIG_SYS_FLASH_CFI_WIDTH 2 +#define CONFIG_FLASH_CFI_DRIVER +#define CONFIG_SYS_FLASH_BASE 0xb0000000 +#define CONFIG_SYS_FLASH_CFI +#define CONFIG_SYS_FLASH_PROTECTION +#define CONFIG_SYS_MAX_FLASH_BANKS 1 +#define CONFIG_SYS_MAX_FLASH_SECT 131 +#define CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS + +/* + * SPI Settings + */ +#define CONFIG_BFIN_SPI6XX +#define CONFIG_ENV_SPI_MAX_HZ 25000000 +#define CONFIG_SF_DEFAULT_SPEED 25000000 +#define CONFIG_SPI_FLASH +#define CONFIG_SPI_FLASH_ALL + +/* + * Env Storage Settings + */ +#if (CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_SPI_MASTER) +#define CONFIG_ENV_IS_IN_SPI_FLASH +#define CONFIG_ENV_OFFSET 0x10000 +#define CONFIG_ENV_SIZE 0x2000 +#define CONFIG_ENV_SECT_SIZE 0x10000 +#define CONFIG_ENV_IS_EMBEDDED_IN_LDR +#elif (CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_NAND) +#define CONFIG_ENV_IS_IN_NAND +#define CONFIG_ENV_OFFSET 0x60000 +#define CONFIG_ENV_SIZE 0x20000 +#else +#define CONFIG_ENV_IS_IN_FLASH +#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET) +#define CONFIG_ENV_OFFSET 0x8000 +#define CONFIG_ENV_SIZE 0x8000 +#define CONFIG_ENV_SECT_SIZE 0x8000 +#define CONFIG_ENV_IS_EMBEDDED_IN_LDR +#endif + +#define FLASHBOOT_ENV_SETTINGS "flashboot=bootm 0xB0100000\0" + +/* + * SDH Settings + */ +#define CONFIG_GENERIC_MMC +#define CONFIG_MMC +#define CONFIG_BFIN_SDH + +/* + * Misc Settings + */ +#define CONFIG_BOARD_EARLY_INIT_F +#define CONFIG_UART_CONSOLE 0 + +#define CONFIG_DEBUG_DUMP 1 +#define CONFIG_KALLSYMS 1 + +#define CONFIG_CMD_MEMORY + +#define CONFIG_SYS_MEMTEST_END (CONFIG_STACKBASE - 20*1024*1024 + 4) +#define CONFIG_BFIN_SOFT_SWITCH + +#if 0 +#define CONFIG_UART_MEM 1024 +#undef CONFIG_UART_CONSOLE +#undef CONFIG_JTAG_CONSOLE +#undef CONFIG_UART_CONSOLE_IS_JTAG +#endif + +/* + * Pull in common ADI header for remaining command/environment setup + */ +#include <configs/bfin_adi_common.h> +#endif diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h index ccdec0d..b6ac14e 100644 --- a/include/configs/bfin_adi_common.h +++ b/include/configs/bfin_adi_common.h @@ -193,10 +193,10 @@ "nand erase 0 0x40000;" \ "nand write $(loadaddr) 0 0x40000" # else -# define UBOOT_ENV_UPDATE \ - "protect off 0x20000000 +$(filesize);" \ - "erase 0x20000000 +$(filesize);" \ - "cp.b $(loadaddr) 0x20000000 $(filesize)" +# define UBOOT_ENV_UPDATE \ + "protect off " MK_STR(CONFIG_SYS_FLASH_BASE) " +$(filesize);" \ + "erase " MK_STR(CONFIG_SYS_FLASH_BASE) " +$(filesize);" \ + "cp.b $(loadaddr)" MK_STR(CONFIG_SYS_FLASH_BASE) " $(filesize)" # endif # ifdef CONFIG_NETCONSOLE # define NETCONSOLE_ENV \

Dear Sonic Zhang,
In message 1360223258-6945-8-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Board and config header files for bf609-ezkit support.
Checkpatch errors, please fix.
+#define ADI_CMDS_NETWORK 1 +#define CONFIG_NETCONSOLE 1 +#define CONFIG_NET_MULTI 1
Please do not define values for variables that don't actually have one. Please fix globally.
Best regards,
Wolfgang Denk

On Thu, Feb 7, 2013 at 6:26 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-8-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Board and config header files for bf609-ezkit support.
Checkpatch errors, please fix.
OK
+#define ADI_CMDS_NETWORK 1 +#define CONFIG_NETCONSOLE 1 +#define CONFIG_NET_MULTI 1
Please do not define values for variables that don't actually have one. Please fix globally.
Will put to a new patch.
Thanks,
Sonic

On Thu, Feb 7, 2013 at 6:26 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-8-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Board and config header files for bf609-ezkit support.
Checkpatch errors, please fix.
+#define CONFIG_BFIN_CPU bf609-0.0
Sorry, the cpu name bf609-0.0 is use as the link flags and is not a checkpatch error.
Regards,
Sonic

On Thu, Feb 7, 2013 at 6:26 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-8-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Board and config header files for bf609-ezkit support.
Checkpatch errors, please fix.
+#define ADI_CMDS_NETWORK 1 +#define CONFIG_NETCONSOLE 1 +#define CONFIG_NET_MULTI 1
Please do not define values for variables that don't actually have one. Please fix globally.
The values of these 3 variables are used in include/configs/bfin_adi_common.h. They should be defined values, otherwise the compilation fails.
Regards,
Sonic

Dear Sonic Zhang,
In message CAJxxZ0MbkmPgGjFrQR3Uq0M=V-67gBryF1oTQd6_ayv8pZh2Dw@mail.gmail.com you wrote:
On Thu, Feb 7, 2013 at 6:26 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-8-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Board and config header files for bf609-ezkit support.
Checkpatch errors, please fix.
+#define ADI_CMDS_NETWORK 1 +#define CONFIG_NETCONSOLE 1 +#define CONFIG_NET_MULTI 1
Please do not define values for variables that don't actually have one. Please fix globally.
The values of these 3 variables are used in include/configs/bfin_adi_common.h. They should be defined values, otherwise the compilation fails.
This is a bug in include/configs/bfin_adi_common.h then, which needs to be fixed there.
It is wrong to use #if on these defines.
Best regards,
Wolfgang Denk

From: Sonic Zhang sonic.zhang@analog.com
Add rsi/sdh support for bf60x.
Signed-off-by: Sonic Zhang sonic.zhang@analog.com Signed-off-by: Bob Liu lliubbo@gmail.com --- arch/blackfin/include/asm/mach-common/bits/sdh.h | 38 +++++++++++- drivers/mmc/bfin_sdh.c | 68 ++++++++++++++++----- 2 files changed, 88 insertions(+), 18 deletions(-)
diff --git a/arch/blackfin/include/asm/mach-common/bits/sdh.h b/arch/blackfin/include/asm/mach-common/bits/sdh.h index 8c5dd33..3495558 100644 --- a/arch/blackfin/include/asm/mach-common/bits/sdh.h +++ b/arch/blackfin/include/asm/mach-common/bits/sdh.h @@ -12,18 +12,35 @@ #define CMD_INT_E 0x100 /* Command Interrupt */ #define CMD_PEND_E 0x200 /* Command Pending */ #define CMD_E 0x400 /* Command Enable */ +#ifdef RSI_BLKSZ +#define CMD_CRC_CHECK_D 0x800 /* CRC Check is disabled */ +#define CMD_DATA0_BUSY 0x1000 /* Check for Busy State on the DATA0 pin */ +#endif
/* Bit masks for SDH_PWR_CTL */ +#ifndef RSI_BLKSZ #define PWR_ON 0x3 /* Power On */ #define SD_CMD_OD 0x40 /* Open Drain Output */ #define ROD_CTL 0x80 /* Rod Control */ +#endif
/* Bit masks for SDH_CLK_CTL */ #define CLKDIV 0xff /* MC_CLK Divisor */ #define CLK_E 0x100 /* MC_CLK Bus Clock Enable */ #define PWR_SV_E 0x200 /* Power Save Enable */ #define CLKDIV_BYPASS 0x400 /* Bypass Divisor */ -#define WIDE_BUS 0x800 /* Wide Bus Mode Enable */ +#define BUS_MODE_MASK 0x1800 /* Bus Mode Mask */ +#define STD_BUS_1 0x000 /* Standard Bus 1 bit mode */ +#define WIDE_BUS_4 0x800 /* Wide Bus 4 bit mode */ +#define BYTE_BUS_8 0x1000 /* Byte Bus 8 bit mode */ +#ifdef RSI_BLKSZ +#define CARD_TYPE_MASK 0xe000 /* Card type mask */ +#define CARD_TYPE_OFFSET 13 /* Card type offset */ +#define CARD_TYPE_SDIO 0 +#define CARD_TYPE_eMMC 1 +#define CARD_TYPE_SD 2 +#define CARD_TYPE_CEATA 3 +#endif
/* Bit masks for SDH_RESP_CMD */ #define RESP_CMD 0x3f /* Response Command */ @@ -33,7 +50,13 @@ #define DTX_DIR 0x2 /* Data Transfer Direction */ #define DTX_MODE 0x4 /* Data Transfer Mode */ #define DTX_DMA_E 0x8 /* Data Transfer DMA Enable */ +#ifndef RSI_BLKSZ #define DTX_BLK_LGTH 0xf0 /* Data Transfer Block Length */ +#else + +/* Bit masks for SDH_BLK_SIZE */ +#define DTX_BLK_LGTH 0x1fff /* Data Transfer Block Length */ +#endif
/* Bit masks for SDH_STATUS */ #define CMD_CRC_FAIL 0x1 /* CMD CRC Fail */ @@ -102,10 +125,13 @@ /* Bit masks for SDH_E_STATUS */ #define SDIO_INT_DET 0x2 /* SDIO Int Detected */ #define SD_CARD_DET 0x10 /* SD Card Detect */ +#define SD_CARD_BUSYMODE 0x80000000 /* Card is in Busy mode */ +#define SD_CARD_SLPMODE 0x40000000 /* Card in Sleep Mode */ +#define SD_CARD_READY 0x00020000 /* Card Ready */
/* Bit masks for SDH_E_MASK */ #define SDIO_MSK 0x2 /* Mask SDIO Int Detected */ -#define SCD_MSK 0x40 /* Mask Card Detect */ +#define SCD_MSK 0x10 /* Mask Card Detect */
/* Bit masks for SDH_CFG */ #define CLKS_EN 0x1 /* Clocks Enable */ @@ -114,7 +140,15 @@ #define SD_RST 0x10 /* SDMMC Reset */ #define PUP_SDDAT 0x20 /* Pull-up SD_DAT */ #define PUP_SDDAT3 0x40 /* Pull-up SD_DAT3 */ +#ifndef RSI_BLKSZ #define PD_SDDAT3 0x80 /* Pull-down SD_DAT3 */ +#else +#define PWR_ON 0x600 /* Power On */ +#define SD_CMD_OD 0x800 /* Open Drain Output */ +#define BOOT_EN 0x1000 /* Boot Enable */ +#define BOOT_MODE 0x2000 /* Alternate Boot Mode */. +#define BOOT_ACK_EN 0x4000 /* Boot ACK is expected */ +#endif
/* Bit masks for SDH_RD_WAIT_EN */ #define RWR 0x1 /* Read Wait Request */ diff --git a/drivers/mmc/bfin_sdh.c b/drivers/mmc/bfin_sdh.c index 8d59d46..f22429a 100644 --- a/drivers/mmc/bfin_sdh.c +++ b/drivers/mmc/bfin_sdh.c @@ -19,9 +19,7 @@ #include <asm/mach-common/bits/sdh.h> #include <asm/mach-common/bits/dma.h>
-#if defined(__ADSPBF50x__) || defined(__ADSPBF51x__) -# define bfin_read_SDH_PWR_CTL bfin_read_RSI_PWR_CONTROL -# define bfin_write_SDH_PWR_CTL bfin_write_RSI_PWR_CONTROL +#if defined(__ADSPBF50x__) || defined(__ADSPBF51x__) || defined(__ADSPBF60x__) # define bfin_read_SDH_CLK_CTL bfin_read_RSI_CLK_CONTROL # define bfin_write_SDH_CLK_CTL bfin_write_RSI_CLK_CONTROL # define bfin_write_SDH_ARGUMENT bfin_write_RSI_ARGUMENT @@ -38,10 +36,21 @@ # define bfin_write_SDH_STATUS_CLR bfin_write_RSI_STATUSCL # define bfin_read_SDH_CFG bfin_read_RSI_CONFIG # define bfin_write_SDH_CFG bfin_write_RSI_CONFIG +# if defined(__ADSPBF60x__) +# define bfin_read_SDH_BLK_SIZE bfin_read_RSI_BLKSZ +# define bfin_write_SDH_BLK_SIZE bfin_write_RSI_BLKSZ +# define bfin_write_DMA_START_ADDR bfin_write_DMA10_START_ADDR +# define bfin_write_DMA_X_COUNT bfin_write_DMA10_X_COUNT +# define bfin_write_DMA_X_MODIFY bfin_write_DMA10_X_MODIFY +# define bfin_write_DMA_CONFIG bfin_write_DMA10_CONFIG +# else +# define bfin_read_SDH_PWR_CTL bfin_read_RSI_PWR_CONTROL +# define bfin_write_SDH_PWR_CTL bfin_write_RSI_PWR_CONTROL # define bfin_write_DMA_START_ADDR bfin_write_DMA4_START_ADDR # define bfin_write_DMA_X_COUNT bfin_write_DMA4_X_COUNT # define bfin_write_DMA_X_MODIFY bfin_write_DMA4_X_MODIFY # define bfin_write_DMA_CONFIG bfin_write_DMA4_CONFIG +# endif # define PORTMUX_PINS \ { P_RSI_DATA0, P_RSI_DATA1, P_RSI_DATA2, P_RSI_DATA3, P_RSI_CMD, P_RSI_CLK, 0 } #elif defined(__ADSPBF54x__) @@ -70,6 +79,9 @@ sdh_send_cmd(struct mmc *mmc, struct mmc_cmd *mmc_cmd) sdh_cmd |= CMD_RSP; if (flags & MMC_RSP_136) sdh_cmd |= CMD_L_RSP; +#ifdef RSI_BLKSZ + sdh_cmd |= CMD_DATA0_BUSY; +#endif
bfin_write_SDH_ARGUMENT(arg); bfin_write_SDH_COMMAND(sdh_cmd); @@ -104,6 +116,12 @@ sdh_send_cmd(struct mmc *mmc, struct mmc_cmd *mmc_cmd)
bfin_write_SDH_STATUS_CLR(CMD_SENT_STAT | CMD_RESP_END_STAT | CMD_TIMEOUT_STAT | CMD_CRC_FAIL_STAT); +#ifdef RSI_BLKSZ + /* wait till card ready */ + while (!(bfin_read_RSI_ESTAT() & SD_CARD_READY)) + ; + bfin_write_RSI_ESTAT(SD_CARD_READY); +#endif
return ret; } @@ -113,16 +131,19 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data) { u16 data_ctl = 0; u16 dma_cfg = 0; - int ret = 0; unsigned long data_size = data->blocksize * data->blocks;
/* Don't support write yet. */ if (data->flags & MMC_DATA_WRITE) return UNUSABLE_ERR; +#ifndef RSI_BLKSZ data_ctl |= ((ffs(data_size) - 1) << 4); +#else + bfin_write_SDH_BLK_SIZE(data_size); +#endif data_ctl |= DTX_DIR; bfin_write_SDH_DATA_CTL(data_ctl); - dma_cfg = WDSIZE_32 | RESTART | WNR | DMAEN; + dma_cfg = WDSIZE_32 | PSIZE_32 | RESTART | WNR | DMAEN;
bfin_write_SDH_DATA_TIMER(-1);
@@ -137,7 +158,7 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data) /* kick off transfer */ bfin_write_SDH_DATA_CTL(bfin_read_SDH_DATA_CTL() | DTX_DMA_E | DTX_E);
- return ret; + return 0; }
@@ -147,13 +168,23 @@ static int bfin_sdh_request(struct mmc *mmc, struct mmc_cmd *cmd, u32 status; int ret = 0;
+ if (data) { + ret = sdh_setup_data(mmc, data); + if (ret) + return ret; + } + ret = sdh_send_cmd(mmc, cmd); if (ret) { + bfin_write_SDH_COMMAND(0); + bfin_write_DMA_CONFIG(0); + bfin_write_SDH_DATA_CTL(0); + SSYNC(); printf("sending CMD%d failed\n", cmd->cmdidx); return ret; } + if (data) { - ret = sdh_setup_data(mmc, data); do { udelay(1); status = bfin_read_SDH_STATUS(); @@ -208,10 +239,12 @@ static void bfin_sdh_set_ios(struct mmc *mmc)
if (mmc->bus_width == 4) { cfg = bfin_read_SDH_CFG(); - cfg &= ~0x80; - cfg |= 0x40; +#ifndef RSI_BLKSZ + cfg &= ~PD_SDDAT3; +#endif + cfg |= PUP_SDDAT3; bfin_write_SDH_CFG(cfg); - clk_ctl |= WIDE_BUS; + clk_ctl |= WIDE_BUS_4; } bfin_write_SDH_CLK_CTL(clk_ctl); sdh_set_clk(mmc->clock); @@ -220,20 +253,23 @@ static void bfin_sdh_set_ios(struct mmc *mmc) static int bfin_sdh_init(struct mmc *mmc) { const unsigned short pins[] = PORTMUX_PINS; - u16 pwr_ctl = 0; + int ret;
/* Initialize sdh controller */ - peripheral_request_list(pins, "bfin_sdh"); + ret = peripheral_request_list(pins, "bfin_sdh"); + if (ret < 0) + return ret; #if defined(__ADSPBF54x__) bfin_write_DMAC1_PERIMUX(bfin_read_DMAC1_PERIMUX() | 0x1); #endif bfin_write_SDH_CFG(bfin_read_SDH_CFG() | CLKS_EN); /* Disable card detect pin */ bfin_write_SDH_CFG((bfin_read_SDH_CFG() & 0x1F) | 0x60); - - pwr_ctl |= ROD_CTL; - pwr_ctl |= PWR_ON; - bfin_write_SDH_PWR_CTL(pwr_ctl); +#ifndef RSI_BLKSZ + bfin_write_SDH_PWR_CTL(PWR_ON | ROD_CTL); +#else + bfin_write_SDH_CFG(bfin_read_SDH_CFG() | PWR_ON); +#endif return 0; }

Dear Sonic Zhang,
In message 1360223258-6945-9-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Add rsi/sdh support for bf60x.
Checkpatch errors. Please fix.
@@ -113,16 +131,19 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data)
...
- int ret = 0;
...
- return ret;
- return 0;
If this function can always only return 0, then please make it void.
Please fix globally.
Best regards,
Wolfgang Denk

On Thu, Feb 7, 2013 at 6:17 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-9-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Add rsi/sdh support for bf60x.
Checkpatch errors. Please fix.
OK
@@ -113,16 +131,19 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data)
...
int ret = 0;
...
return ret;
return 0;
If this function can always only return 0, then please make it void.
Please fix globally.
Yes
Thanks,
Sonic

On Thu, Feb 7, 2013 at 6:17 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-9-git-send-email-sonic.adi@gmail.com you wrote:
From: Sonic Zhang sonic.zhang@analog.com
Add rsi/sdh support for bf60x.
Checkpatch errors. Please fix.
@@ -113,16 +131,19 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data)
...
int ret = 0;
...
return ret;
return 0;
If this function can always only return 0, then please make it void.
Please fix globally.
I am sorry, this function can't be changed to void, because it may return error. See bellow code.
static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data) { u16 data_ctl = 0; u16 dma_cfg = 0; unsigned long data_size = data->blocksize * data->blocks;
/* Don't support write yet. */ if (data->flags & MMC_DATA_WRITE) return UNUSABLE_ERR; ......
Regards,
Sonic

Dear Sonic Zhang,
In message CAJxxZ0OTwow6X2KX8yAujtrxc6qicVPMO2rP4MHwJQVQUbhecw@mail.gmail.com you wrote:
@@ -113,16 +131,19 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data)
...
int ret = 0;
...
return ret;
return 0;
If this function can always only return 0, then please make it void.
Please fix globally.
I am sorry, this function can't be changed to void, because it may return error. See bellow code.
You are contradicting yourself. You _always_ return a 0 here. Your code CANNOT return an error code.
Best regards,
Wolfgang Denk

Hi Wolfgang,
On Mon, Feb 18, 2013 at 4:15 AM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message CAJxxZ0OTwow6X2KX8yAujtrxc6qicVPMO2rP4MHwJQVQUbhecw@mail.gmail.com you wrote:
@@ -113,16 +131,19 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data)
...
int ret = 0;
...
return ret;
return 0;
If this function can always only return 0, then please make it void.
Please fix globally.
I am sorry, this function can't be changed to void, because it may return error. See bellow code.
You are contradicting yourself. You _always_ return a 0 here. Your code CANNOT return an error code.
Maybe I didn't describe it clearly. Yes, I return 0 at the end of this function. But, the same function may return UNUSABLE_ERR(-17) at the beginning if the data flags match MMC_DATA_WRITE. That's why the function can't return void. Is anything contradicting in my explanation?
@@ -113,16 +131,19 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data) { u16 data_ctl = 0; u16 dma_cfg = 0; - int ret = 0; unsigned long data_size = data->blocksize * data->blocks;
/* Don't support write yet. */ if (data->flags & MMC_DATA_WRITE) return UNUSABLE_ERR;
@@ -137,7 +158,7 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data) /* kick off transfer */ bfin_write_SDH_DATA_CTL(bfin_read_SDH_DATA_CTL() | DTX_DMA_E | DTX_E);
- return ret; + return 0; }
Regards,
Sonic Zhang

Dear Sonic Zhang,
In message CAJxxZ0O_OZk7w_CDfJkzPwDMFqwT1m-Yn_Bz6yzHRDFqT6wrBw@mail.gmail.com you wrote:
Maybe I didn't describe it clearly. Yes, I return 0 at the end of this function. But, the same function may return UNUSABLE_ERR(-17) at the beginning if the data flags match MMC_DATA_WRITE. That's why the function can't return void. Is anything contradicting in my explanation?
I see. Sorry, I missed that other return.
One additional question, though:
/* kick off transfer */ bfin_write_SDH_DATA_CTL(bfin_read_SDH_DATA_CTL() | DTX_DMA_E | DTX_E);
return ret;
return 0;
Are the bfin_read_SDH_DATA_CTL() and bfin_write_SDH_DATA_CTL() supposed to always work, i. e. are we positively sure that these can never fail, so there is no need to test the return code and handle error conditions?
Best regards,
Wolfgang Denk

Hi Wolfgang,
On Mon, Mar 4, 2013 at 7:21 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message CAJxxZ0O_OZk7w_CDfJkzPwDMFqwT1m-Yn_Bz6yzHRDFqT6wrBw@mail.gmail.com you wrote:
Maybe I didn't describe it clearly. Yes, I return 0 at the end of this function. But, the same function may return UNUSABLE_ERR(-17) at the beginning if the data flags match MMC_DATA_WRITE. That's why the function can't return void. Is anything contradicting in my explanation?
I see. Sorry, I missed that other return.
One additional question, though:
/* kick off transfer */ bfin_write_SDH_DATA_CTL(bfin_read_SDH_DATA_CTL() | DTX_DMA_E | DTX_E);
return ret;
return 0;
Are the bfin_read_SDH_DATA_CTL() and bfin_write_SDH_DATA_CTL() supposed to always work, i. e. are we positively sure that these can never fail, so there is no need to test the return code and handle error conditions?
Yes, bfin_write_XXX and bfin_read_XXX are simply defined as memory access operations. They either succeed or cause hardware error exception.
#define bfin_read_SDH_DATA_CTL() bfin_read16(SDH_DATA_CTL) #define _bfin_readX(addr, size, asm_size, asm_ext) ({ \ u32 __v; \ __asm__ __volatile__( \ "%0 = " #asm_size "[%1]" #asm_ext ";" \ : "=d" (__v) \ : "a" (addr) \ ); \ __v; })
Regards,
Sonic

From: Scott Jiang scott.jiang.linux@gmail.com
Spi driver for bf60x is different from old one, so implement a new driver for it.
Signed-off-by: Scott Jiang scott.jiang.linux@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com Signed-off-by: Bob Liu lliubbo@gmail.com --- .../blackfin/include/asm/mach-common/bits/spi6xx.h | 240 +++++++++++++++ drivers/spi/Makefile | 1 + drivers/spi/bfin_spi6xx.c | 308 ++++++++++++++++++++ 3 files changed, 549 insertions(+), 0 deletions(-) create mode 100644 arch/blackfin/include/asm/mach-common/bits/spi6xx.h create mode 100644 drivers/spi/bfin_spi6xx.c
diff --git a/arch/blackfin/include/asm/mach-common/bits/spi6xx.h b/arch/blackfin/include/asm/mach-common/bits/spi6xx.h new file mode 100644 index 0000000..8b8dd25 --- /dev/null +++ b/arch/blackfin/include/asm/mach-common/bits/spi6xx.h @@ -0,0 +1,240 @@ +/* + * Analog Devices bfin_spi3 controller driver + * + * Copyright (c) 2011 Analog Devices Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef _SPI_CHANNEL_H_ +#define _SPI_CHANNEL_H_ + +#include <linux/types.h> + +/* SPI_CONTROL */ +#define SPI_CTL_EN 0x00000001 /* Enable */ +#define SPI_CTL_MSTR 0x00000002 /* Master/Slave */ +#define SPI_CTL_PSSE 0x00000004 /* controls modf error in master mode */ +#define SPI_CTL_ODM 0x00000008 /* Open Drain Mode */ +#define SPI_CTL_CPHA 0x00000010 /* Clock Phase */ +#define SPI_CTL_CPOL 0x00000020 /* Clock Polarity */ +#define SPI_CTL_ASSEL 0x00000040 /* Slave Select Pin Control */ +#define SPI_CTL_SELST 0x00000080 /* Slave Select Polarity in-between transfers */ +#define SPI_CTL_EMISO 0x00000100 /* Enable MISO */ +#define SPI_CTL_SIZE 0x00000600 /* Word Transfer Size */ +#define SPI_CTL_SIZE08 0x00000000 /* SIZE: 8 bits */ +#define SPI_CTL_SIZE16 0x00000200 /* SIZE: 16 bits */ +#define SPI_CTL_SIZE32 0x00000400 /* SIZE: 32 bits */ +#define SPI_CTL_LSBF 0x00001000 /* LSB First */ +#define SPI_CTL_FCEN 0x00002000 /* Flow-Control Enable */ +#define SPI_CTL_FCCH 0x00004000 /* Flow-Control Channel Selection */ +#define SPI_CTL_FCPL 0x00008000 /* Flow-Control Polarity */ +#define SPI_CTL_FCWM 0x00030000 /* Flow-Control Water-Mark */ +#define SPI_CTL_FIFO0 0x00000000 /* FCWM: TFIFO empty or RFIFO Full */ +#define SPI_CTL_FIFO1 0x00010000 /* FCWM: TFIFO 75% or more empty or RFIFO 75% or more full */ +#define SPI_CTL_FIFO2 0x00020000 /* FCWM: TFIFO 50% or more empty or RFIFO 50% or more full */ +#define SPI_CTL_FMODE 0x00040000 /* Fast-mode Enable */ +#define SPI_CTL_MIOM 0x00300000 /* Multiple I/O Mode */ +#define SPI_CTL_MIO_DIS 0x00000000 /* MIOM: Disable */ +#define SPI_CTL_MIO_DUAL 0x00100000 /* MIOM: Enable DIOM (Dual I/O Mode) */ +#define SPI_CTL_MIO_QUAD 0x00200000 /* MIOM: Enable QUAD (Quad SPI Mode) */ +#define SPI_CTL_SOSI 0x00400000 /* Start on MOSI */ +/* SPI_RX_CONTROL */ +#define SPI_RXCTL_REN 0x00000001 /* Receive Channel Enable */ +#define SPI_RXCTL_RTI 0x00000004 /* Receive Transfer Initiate */ +#define SPI_RXCTL_RWCEN 0x00000008 /* Receive Word Counter Enable */ +#define SPI_RXCTL_RDR 0x00000070 /* Receive Data Request */ +#define SPI_RXCTL_RDR_DIS 0x00000000 /* RDR: Disabled */ +#define SPI_RXCTL_RDR_NE 0x00000010 /* RDR: RFIFO not empty */ +#define SPI_RXCTL_RDR_25 0x00000020 /* RDR: RFIFO 25% full */ +#define SPI_RXCTL_RDR_50 0x00000030 /* RDR: RFIFO 50% full */ +#define SPI_RXCTL_RDR_75 0x00000040 /* RDR: RFIFO 75% full */ +#define SPI_RXCTL_RDR_FULL 0x00000050 /* RDR: RFIFO full */ +#define SPI_RXCTL_RDO 0x00000100 /* Receive Data Over-Run */ +#define SPI_RXCTL_RRWM 0x00003000 /* FIFO Regular Water-Mark */ +#define SPI_RXCTL_RWM_0 0x00000000 /* RRWM: RFIFO Empty */ +#define SPI_RXCTL_RWM_25 0x00001000 /* RRWM: RFIFO 25% full */ +#define SPI_RXCTL_RWM_50 0x00002000 /* RRWM: RFIFO 50% full */ +#define SPI_RXCTL_RWM_75 0x00003000 /* RRWM: RFIFO 75% full */ +#define SPI_RXCTL_RUWM 0x00070000 /* FIFO Urgent Water-Mark */ +#define SPI_RXCTL_UWM_DIS 0x00000000 /* RUWM: Disabled */ +#define SPI_RXCTL_UWM_25 0x00010000 /* RUWM: RFIFO 25% full */ +#define SPI_RXCTL_UWM_50 0x00020000 /* RUWM: RFIFO 50% full */ +#define SPI_RXCTL_UWM_75 0x00030000 /* RUWM: RFIFO 75% full */ +#define SPI_RXCTL_UWM_FULL 0x00040000 /* RUWM: RFIFO full */ +/* SPI_TX_CONTROL */ +#define SPI_TXCTL_TEN 0x00000001 /* Transmit Channel Enable */ +#define SPI_TXCTL_TTI 0x00000004 /* Transmit Transfer Initiate */ +#define SPI_TXCTL_TWCEN 0x00000008 /* Transmit Word Counter Enable */ +#define SPI_TXCTL_TDR 0x00000070 /* Transmit Data Request */ +#define SPI_TXCTL_TDR_DIS 0x00000000 /* TDR: Disabled */ +#define SPI_TXCTL_TDR_NF 0x00000010 /* TDR: TFIFO not full */ +#define SPI_TXCTL_TDR_25 0x00000020 /* TDR: TFIFO 25% empty */ +#define SPI_TXCTL_TDR_50 0x00000030 /* TDR: TFIFO 50% empty */ +#define SPI_TXCTL_TDR_75 0x00000040 /* TDR: TFIFO 75% empty */ +#define SPI_TXCTL_TDR_EMPTY 0x00000050 /* TDR: TFIFO empty */ +#define SPI_TXCTL_TDU 0x00000100 /* Transmit Data Under-Run */ +#define SPI_TXCTL_TRWM 0x00003000 /* FIFO Regular Water-Mark */ +#define SPI_TXCTL_RWM_FULL 0x00000000 /* TRWM: TFIFO full */ +#define SPI_TXCTL_RWM_25 0x00001000 /* TRWM: TFIFO 25% empty */ +#define SPI_TXCTL_RWM_50 0x00002000 /* TRWM: TFIFO 50% empty */ +#define SPI_TXCTL_RWM_75 0x00003000 /* TRWM: TFIFO 75% empty */ +#define SPI_TXCTL_TUWM 0x00070000 /* FIFO Urgent Water-Mark */ +#define SPI_TXCTL_UWM_DIS 0x00000000 /* TUWM: Disabled */ +#define SPI_TXCTL_UWM_25 0x00010000 /* TUWM: TFIFO 25% empty */ +#define SPI_TXCTL_UWM_50 0x00020000 /* TUWM: TFIFO 50% empty */ +#define SPI_TXCTL_UWM_75 0x00030000 /* TUWM: TFIFO 75% empty */ +#define SPI_TXCTL_UWM_EMPTY 0x00040000 /* TUWM: TFIFO empty */ +/* SPI_CLOCK */ +#define SPI_CLK_BAUD 0x0000FFFF /* Baud Rate */ +/* SPI_DELAY */ +#define SPI_DLY_STOP 0x000000FF /* Transfer delay time in multiples of SCK period */ +#define SPI_DLY_LEADX 0x00000100 /* Extended (1 SCK) LEAD Control */ +#define SPI_DLY_LAGX 0x00000200 /* Extended (1 SCK) LAG control */ +/* SPI_SSEL */ +#define SPI_SLVSEL_SSE1 0x00000002 /* SPISSEL1 Enable */ +#define SPI_SLVSEL_SSE2 0x00000004 /* SPISSEL2 Enable */ +#define SPI_SLVSEL_SSE3 0x00000008 /* SPISSEL3 Enable */ +#define SPI_SLVSEL_SSE4 0x00000010 /* SPISSEL4 Enable */ +#define SPI_SLVSEL_SSE5 0x00000020 /* SPISSEL5 Enable */ +#define SPI_SLVSEL_SSE6 0x00000040 /* SPISSEL6 Enable */ +#define SPI_SLVSEL_SSE7 0x00000080 /* SPISSEL7 Enable */ +#define SPI_SLVSEL_SSEL1 0x00000200 /* SPISSEL1 Value */ +#define SPI_SLVSEL_SSEL2 0x00000400 /* SPISSEL2 Value */ +#define SPI_SLVSEL_SSEL3 0x00000800 /* SPISSEL3 Value */ +#define SPI_SLVSEL_SSEL4 0x00001000 /* SPISSEL4 Value */ +#define SPI_SLVSEL_SSEL5 0x00002000 /* SPISSEL5 Value */ +#define SPI_SLVSEL_SSEL6 0x00004000 /* SPISSEL6 Value */ +#define SPI_SLVSEL_SSEL7 0x00008000 /* SPISSEL7 Value */ +/* SPI_RWC */ +#define SPI_RWC_VALUE 0x0000FFFF /* Received Word-Count */ +/* SPI_RWCR */ +#define SPI_RWCR_VALUE 0x0000FFFF /* Received Word-Count Reload */ +/* SPI_TWC */ +#define SPI_TWC_VALUE 0x0000FFFF /* Transmitted Word-Count */ +/* SPI_TWCR */ +#define SPI_TWCR_VALUE 0x0000FFFF /* Transmitted Word-Count Reload */ +/* SPI_IMASK */ +#define SPI_IMSK_RUWM 0x00000002 /* Receive Urgent Water-Mark Interrupt Mask */ +#define SPI_IMSK_TUWM 0x00000004 /* Transmit Urgent Water-Mark Interrupt Mask */ +#define SPI_IMSK_ROM 0x00000010 /* Receive Over-Run Error Interrupt Mask */ +#define SPI_IMSK_TUM 0x00000020 /* Transmit Under-Run Error Interrupt Mask */ +#define SPI_IMSK_TCM 0x00000040 /* Transmit Collision Error Interrupt Mask */ +#define SPI_IMSK_MFM 0x00000080 /* Mode Fault Error Interrupt Mask */ +#define SPI_IMSK_RSM 0x00000100 /* Receive Start Interrupt Mask */ +#define SPI_IMSK_TSM 0x00000200 /* Transmit Start Interrupt Mask */ +#define SPI_IMSK_RFM 0x00000400 /* Receive Finish Interrupt Mask */ +#define SPI_IMSK_TFM 0x00000800 /* Transmit Finish Interrupt Mask */ +/* SPI_IMASKCL */ +#define SPI_IMSK_CLR_RUW 0x00000002 /* Receive Urgent Water-Mark Interrupt Mask */ +#define SPI_IMSK_CLR_TUWM 0x00000004 /* Transmit Urgent Water-Mark Interrupt Mask */ +#define SPI_IMSK_CLR_ROM 0x00000010 /* Receive Over-Run Error Interrupt Mask */ +#define SPI_IMSK_CLR_TUM 0x00000020 /* Transmit Under-Run Error Interrupt Mask */ +#define SPI_IMSK_CLR_TCM 0x00000040 /* Transmit Collision Error Interrupt Mask */ +#define SPI_IMSK_CLR_MFM 0x00000080 /* Mode Fault Error Interrupt Mask */ +#define SPI_IMSK_CLR_RSM 0x00000100 /* Receive Start Interrupt Mask */ +#define SPI_IMSK_CLR_TSM 0x00000200 /* Transmit Start Interrupt Mask */ +#define SPI_IMSK_CLR_RFM 0x00000400 /* Receive Finish Interrupt Mask */ +#define SPI_IMSK_CLR_TFM 0x00000800 /* Transmit Finish Interrupt Mask */ +/* SPI_IMASKST */ +#define SPI_IMSK_SET_RUWM 0x00000002 /* Receive Urgent Water-Mark Interrupt Mask */ +#define SPI_IMSK_SET_TUWM 0x00000004 /* Transmit Urgent Water-Mark Interrupt Mask */ +#define SPI_IMSK_SET_ROM 0x00000010 /* Receive Over-Run Error Interrupt Mask */ +#define SPI_IMSK_SET_TUM 0x00000020 /* Transmit Under-Run Error Interrupt Mask */ +#define SPI_IMSK_SET_TCM 0x00000040 /* Transmit Collision Error Interrupt Mask */ +#define SPI_IMSK_SET_MFM 0x00000080 /* Mode Fault Error Interrupt Mask */ +#define SPI_IMSK_SET_RSM 0x00000100 /* Receive Start Interrupt Mask */ +#define SPI_IMSK_SET_TSM 0x00000200 /* Transmit Start Interrupt Mask */ +#define SPI_IMSK_SET_RFM 0x00000400 /* Receive Finish Interrupt Mask */ +#define SPI_IMSK_SET_TFM 0x00000800 /* Transmit Finish Interrupt Mask */ +/* SPI_STATUS */ +#define SPI_STAT_SPIF 0x00000001 /* SPI Finished */ +#define SPI_STAT_RUWM 0x00000002 /* Receive Urgent Water-Mark Breached */ +#define SPI_STAT_TUWM 0x00000004 /* Transmit Urgent Water-Mark Breached */ +#define SPI_STAT_ROE 0x00000010 /* Receive Over-Run Error Indication */ +#define SPI_STAT_TUE 0x00000020 /* Transmit Under-Run Error Indication */ +#define SPI_STAT_TCE 0x00000040 /* Transmit Collision Error Indication */ +#define SPI_STAT_MODF 0x00000080 /* Mode Fault Error Indication */ +#define SPI_STAT_RS 0x00000100 /* Receive Start Indication */ +#define SPI_STAT_TS 0x00000200 /* Transmit Start Indication */ +#define SPI_STAT_RF 0x00000400 /* Receive Finish Indication */ +#define SPI_STAT_TF 0x00000800 /* Transmit Finish Indication */ +#define SPI_STAT_RFS 0x00007000 /* SPI_RFIFO status */ +#define SPI_STAT_RFIFO_EMPTY 0x00000000 /* RFS: RFIFO Empty */ +#define SPI_STAT_RFIFO_25 0x00001000 /* RFS: RFIFO 25% Full */ +#define SPI_STAT_RFIFO_50 0x00002000 /* RFS: RFIFO 50% Full */ +#define SPI_STAT_RFIFO_75 0x00003000 /* RFS: RFIFO 75% Full */ +#define SPI_STAT_RFIFO_FULL 0x00004000 /* RFS: RFIFO Full */ +#define SPI_STAT_TFS 0x00070000 /* SPI_TFIFO status */ +#define SPI_STAT_TFIFO_FULL 0x00000000 /* TFS: TFIFO full */ +#define SPI_STAT_TFIFO_25 0x00010000 /* TFS: TFIFO 25% empty */ +#define SPI_STAT_TFIFO_50 0x00020000 /* TFS: TFIFO 50% empty */ +#define SPI_STAT_TFIFO_75 0x00030000 /* TFS: TFIFO 75% empty */ +#define SPI_STAT_TFIFO_EMPTY 0x00040000 /* TFS: TFIFO empty */ +#define SPI_STAT_FCS 0x00100000 /* Flow-Control Stall Indication */ +#define SPI_STAT_RFE 0x00400000 /* SPI_RFIFO Empty */ +#define SPI_STAT_TFF 0x00800000 /* SPI_TFIFO Full */ +/* SPI_ILAT */ +#define SPI_ILAT_RUWMI 0x00000002 /* Receive Urgent Water Mark Interrupt */ +#define SPI_ILAT_TUWMI 0x00000004 /* Transmit Urgent Water Mark Interrupt */ +#define SPI_ILAT_ROI 0x00000010 /* Receive Over-Run Error Indication */ +#define SPI_ILAT_TUI 0x00000020 /* Transmit Under-Run Error Indication */ +#define SPI_ILAT_TCI 0x00000040 /* Transmit Collision Error Indication */ +#define SPI_ILAT_MFI 0x00000080 /* Mode Fault Error Indication */ +#define SPI_ILAT_RSI 0x00000100 /* Receive Start Indication */ +#define SPI_ILAT_TSI 0x00000200 /* Transmit Start Indication */ +#define SPI_ILAT_RFI 0x00000400 /* Receive Finish Indication */ +#define SPI_ILAT_TFI 0x00000800 /* Transmit Finish Indication */ +/* SPI_ILATCL */ +#define SPI_ILAT_CLR_RUWMI 0x00000002 /* Receive Urgent Water Mark Interrupt */ +#define SPI_ILAT_CLR_TUWMI 0x00000004 /* Transmit Urgent Water Mark Interrupt */ +#define SPI_ILAT_CLR_ROI 0x00000010 /* Receive Over-Run Error Indication */ +#define SPI_ILAT_CLR_TUI 0x00000020 /* Transmit Under-Run Error Indication */ +#define SPI_ILAT_CLR_TCI 0x00000040 /* Transmit Collision Error Indication */ +#define SPI_ILAT_CLR_MFI 0x00000080 /* Mode Fault Error Indication */ +#define SPI_ILAT_CLR_RSI 0x00000100 /* Receive Start Indication */ +#define SPI_ILAT_CLR_TSI 0x00000200 /* Transmit Start Indication */ +#define SPI_ILAT_CLR_RFI 0x00000400 /* Receive Finish Indication */ +#define SPI_ILAT_CLR_TFI 0x00000800 /* Transmit Finish Indication */ + +/* + * bfin spi3 registers layout + */ +struct bfin_spi_regs { + u32 revid; + u32 control; + u32 rx_control; + u32 tx_control; + u32 clock; + u32 delay; + u32 ssel; + u32 rwc; + u32 rwcr; + u32 twc; + u32 twcr; + u32 reserved0; + u32 emask; + u32 emaskcl; + u32 emaskst; + u32 reserved1; + u32 status; + u32 elat; + u32 elatcl; + u32 reserved2; + u32 rfifo; + u32 reserved3; + u32 tfifo; +}; + +#endif /* _SPI_CHANNEL_H_ */ diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile index 824d357..42aa1a7 100644 --- a/drivers/spi/Makefile +++ b/drivers/spi/Makefile @@ -31,6 +31,7 @@ COBJS-$(CONFIG_ARMADA100_SPI) += armada100_spi.o COBJS-$(CONFIG_ATMEL_DATAFLASH_SPI) += atmel_dataflash_spi.o COBJS-$(CONFIG_ATMEL_SPI) += atmel_spi.o COBJS-$(CONFIG_BFIN_SPI) += bfin_spi.o +COBJS-$(CONFIG_BFIN_SPI6XX) += bfin_spi6xx.o COBJS-$(CONFIG_CF_SPI) += cf_spi.o COBJS-$(CONFIG_CF_QSPI) += cf_qspi.o COBJS-$(CONFIG_DAVINCI_SPI) += davinci_spi.o diff --git a/drivers/spi/bfin_spi6xx.c b/drivers/spi/bfin_spi6xx.c new file mode 100644 index 0000000..be1ae70 --- /dev/null +++ b/drivers/spi/bfin_spi6xx.c @@ -0,0 +1,308 @@ +/* + * Analog Devices SPI3 controller driver + * + * Copyright (c) 2011 Analog Devices Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <common.h> +#include <malloc.h> +#include <spi.h> + +#include <asm/blackfin.h> +#include <asm/gpio.h> +#include <asm/portmux.h> +#include <asm/mach-common/bits/spi6xx.h> + +struct bfin_spi_slave { + struct spi_slave slave; + u32 control, clock; + struct bfin_spi_regs *regs; + int cs_pol; +}; + +#define to_bfin_spi_slave(s) container_of(s, struct bfin_spi_slave, slave) + +#define gpio_cs(cs) ((cs) - MAX_CTRL_CS) +#ifdef CONFIG_BFIN_SPI_GPIO_CS +# define is_gpio_cs(cs) ((cs) > MAX_CTRL_CS) +#else +# define is_gpio_cs(cs) 0 +#endif + +int spi_cs_is_valid(unsigned int bus, unsigned int cs) +{ + if (is_gpio_cs(cs)) + return gpio_is_valid(gpio_cs(cs)); + else + return (cs >= 1 && cs <= MAX_CTRL_CS); +} + +void spi_cs_activate(struct spi_slave *slave) +{ + struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); + + if (is_gpio_cs(slave->cs)) { + unsigned int cs = gpio_cs(slave->cs); + gpio_set_value(cs, bss->cs_pol); + } else { + u32 ssel; + ssel = bfin_read32(&bss->regs->ssel); + ssel |= 1 << slave->cs; + if (bss->cs_pol) + ssel |= (1 << 8) << slave->cs; + else + ssel &= ~((1 << 8) << slave->cs); + bfin_write32(&bss->regs->ssel, ssel); + } + + SSYNC(); +} + +void spi_cs_deactivate(struct spi_slave *slave) +{ + struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); + + if (is_gpio_cs(slave->cs)) { + unsigned int cs = gpio_cs(slave->cs); + gpio_set_value(cs, !bss->cs_pol); + } else { + u32 ssel; + ssel = bfin_read32(&bss->regs->ssel); + if (bss->cs_pol) + ssel &= ~((1 << 8) << slave->cs); + else + ssel |= (1 << 8) << slave->cs; + /* deassert cs */ + bfin_write32(&bss->regs->ssel, ssel); + SSYNC(); + /* disable cs */ + ssel &= ~(1 << slave->cs); + bfin_write32(&bss->regs->ssel, ssel); + } + + SSYNC(); +} + +void spi_init() +{ +} + +#define SPI_PINS(n) \ + [n] = { 0, P_SPI##n##_SCK, P_SPI##n##_MISO, P_SPI##n##_MOSI, 0 } +static unsigned short pins[][5] = { +#ifdef SPI0_REGBASE + SPI_PINS(0), +#endif +#ifdef SPI1_REGBASE + SPI_PINS(1), +#endif +#ifdef SPI2_REGBASE + SPI_PINS(2), +#endif +}; + +#define SPI_CS_PINS(n) \ + [n] = { \ + P_SPI##n##_SSEL1, P_SPI##n##_SSEL2, P_SPI##n##_SSEL3, \ + P_SPI##n##_SSEL4, P_SPI##n##_SSEL5, P_SPI##n##_SSEL6, \ + P_SPI##n##_SSEL7, \ + } +static const unsigned short cs_pins[][7] = { +#ifdef SPI0_REGBASE + SPI_CS_PINS(0), +#endif +#ifdef SPI1_REGBASE + SPI_CS_PINS(1), +#endif +#ifdef SPI2_REGBASE + SPI_CS_PINS(2), +#endif +}; + +void spi_set_speed(struct spi_slave *slave, uint hz) +{ + struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); + ulong sclk; + u32 clock; + + sclk = get_sclk1(); + clock = sclk / hz; + if (clock) + clock--; + bss->clock = clock; +} + +struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, + unsigned int max_hz, unsigned int mode) +{ + struct bfin_spi_slave *bss; + u32 reg_base; + + if (!spi_cs_is_valid(bus, cs)) + return NULL; + + if (bus >= ARRAY_SIZE(pins) || pins[bus] == NULL) { + debug("%s: invalid bus %u\n", __func__, bus); + return NULL; + } + switch (bus) { +#ifdef SPI0_REGBASE + case 0: + reg_base = SPI0_REGBASE; + break; +#endif +#ifdef SPI1_REGBASE + case 1: + reg_base = SPI1_REGBASE; + break; +#endif +#ifdef SPI2_REGBASE + case 2: + reg_base = SPI2_REGBASE; + break; +#endif + default: + return NULL; + } + + bss = malloc(sizeof(*bss)); + if (!bss) + return NULL; + + bss->slave.bus = bus; + bss->slave.cs = cs; + bss->regs = (struct bfin_spi_regs *)reg_base; + bss->control = SPI_CTL_EN | SPI_CTL_MSTR; + if (mode & SPI_CPHA) + bss->control |= SPI_CTL_CPHA; + if (mode & SPI_CPOL) + bss->control |= SPI_CTL_CPOL; + if (mode & SPI_LSB_FIRST) + bss->control |= SPI_CTL_LSBF; + bss->control &= ~SPI_CTL_ASSEL; + bss->cs_pol = mode & SPI_CS_HIGH ? 1 : 0; + spi_set_speed(&bss->slave, max_hz); + + return &bss->slave; +} + +void spi_free_slave(struct spi_slave *slave) +{ + struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); + free(bss); +} + +int spi_claim_bus(struct spi_slave *slave) +{ + struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); + + debug("%s: bus:%i cs:%i\n", __func__, slave->bus, slave->cs); + + if (is_gpio_cs(slave->cs)) { + unsigned int cs = gpio_cs(slave->cs); + gpio_request(cs, "bfin-spi"); + gpio_direction_output(cs, !bss->cs_pol); + pins[slave->bus][0] = P_DONTCARE; + } else + pins[slave->bus][0] = cs_pins[slave->bus][slave->cs - 1]; + peripheral_request_list(pins[slave->bus], "bfin-spi"); + + bfin_write32(&bss->regs->control, bss->control); + bfin_write32(&bss->regs->clock, bss->clock); + bfin_write32(&bss->regs->delay, 0x0); + bfin_write32(&bss->regs->rx_control, SPI_RXCTL_REN); + bfin_write32(&bss->regs->tx_control, SPI_TXCTL_TEN | SPI_TXCTL_TTI); + SSYNC(); + + return 0; +} + +void spi_release_bus(struct spi_slave *slave) +{ + struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); + + debug("%s: bus:%i cs:%i\n", __func__, slave->bus, slave->cs); + + peripheral_free_list(pins[slave->bus]); + if (is_gpio_cs(slave->cs)) + gpio_free(gpio_cs(slave->cs)); + + bfin_write32(&bss->regs->rx_control, 0x0); + bfin_write32(&bss->regs->tx_control, 0x0); + bfin_write32(&bss->regs->control, 0x0); + SSYNC(); +} + +#ifndef CONFIG_BFIN_SPI_IDLE_VAL +# define CONFIG_BFIN_SPI_IDLE_VAL 0xff +#endif + +static int spi_pio_xfer(struct bfin_spi_slave *bss, const u8 *tx, u8 *rx, + uint bytes) +{ + /* discard invalid rx data and empty rfifo */ + while (!(bfin_read32(&bss->regs->status) & SPI_STAT_RFE)) + bfin_read32(&bss->regs->rfifo); + + while (bytes--) { + u8 value = (tx ? *tx++ : CONFIG_BFIN_SPI_IDLE_VAL); + debug("%s: tx:%x ", __func__, value); + bfin_write32(&bss->regs->tfifo, value); + SSYNC(); + while (bfin_read32(&bss->regs->status) & SPI_STAT_RFE) + if (ctrlc()) + return -1; + value = bfin_read32(&bss->regs->rfifo); + if (rx) + *rx++ = value; + debug("rx:%x\n", value); + } + + return 0; +} + +int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout, + void *din, unsigned long flags) +{ + struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); + const u8 *tx = dout; + u8 *rx = din; + uint bytes = bitlen / 8; + int ret = 0; + + debug("%s: bus:%i cs:%i bitlen:%i bytes:%i flags:%lx\n", __func__, + slave->bus, slave->cs, bitlen, bytes, flags); + + if (bitlen == 0) + goto done; + + /* we can only do 8 bit transfers */ + if (bitlen % 8) { + flags |= SPI_XFER_END; + goto done; + } + + if (flags & SPI_XFER_BEGIN) + spi_cs_activate(slave); + + ret = spi_pio_xfer(bss, tx, rx, bytes); + + done: + if (flags & SPI_XFER_END) + spi_cs_deactivate(slave); + + return ret; +}

Dear Sonic Zhang,
In message 1360223258-6945-10-git-send-email-sonic.adi@gmail.com you wrote:
From: Scott Jiang scott.jiang.linux@gmail.com
Spi driver for bf60x is different from old one, so implement a new driver for it.
Checkpatch issues, please fix.
Best regards,
Wolfgang Denk

On Thu, Feb 7, 2013 at 6:23 PM, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-10-git-send-email-sonic.adi@gmail.com you wrote:
From: Scott Jiang scott.jiang.linux@gmail.com
Spi driver for bf60x is different from old one, so implement a new driver for it.
Checkpatch issues, please fix.
Could the checkpatch warning "line over 80 characters" in head file Macro definition be ignored? I think put the explanation and the definition on the same line is more clean than to chopping to 80.
#define SPI_CTL_FIFO0 0x00000000 /* FCWM: TFIFO empty or RFIFO Full */ #define SPI_CTL_FIFO1 0x00010000 /* FCWM: TFIFO 75% or more empty or RFIFO 75% or more full */ #define SPI_CTL_FIFO2 0x00020000 /* FCWM: TFIFO 50% or more empty or RFIFO 50% or more full */
Regards,
Sonic

Dear Sonic Zhang,
In message CAJxxZ0OLH71+HCkGiR1CdFApdqqY4fKoa3e_mjvhozUSa=sEzg@mail.gmail.com you wrote:
Checkpatch issues, please fix.
Could the checkpatch warning "line over 80 characters" in head file Macro definition be ignored? I think put the explanation and the definition on the same line is more clean than to chopping to 80.
No. It is more or less a mandatory requirement.
#define SPI_CTL_FIFO0 0x00000000 /* FCWM: TFIFO empty or RFIFO Full */ #define SPI_CTL_FIFO1 0x00010000 /* FCWM: TFIFO 75% or more empty or RFIFO 75% or more full */ #define SPI_CTL_FIFO2 0x00020000 /* FCWM: TFIFO 50% or more empty or RFIFO 50% or more full */
There ius no need for so much white speace between name and value; and explanation can be given in a much terse way, or summarized in a comment preceeding these defines.
Best regards,
Wolfgang Denk

From: Bob Liu lliubbo@gmail.com
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com --- arch/blackfin/cpu/initcode.c | 13 +++++++++++++ arch/blackfin/cpu/start.S | 2 ++ include/configs/bf609-ezkit.h | 1 + 3 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/arch/blackfin/cpu/initcode.c b/arch/blackfin/cpu/initcode.c index acfa475..5ee2203 100644 --- a/arch/blackfin/cpu/initcode.c +++ b/arch/blackfin/cpu/initcode.c @@ -461,8 +461,21 @@ program_early_devices(ADI_BOOT_DATA *bs, uint *sdivB, uint *divB, uint *vcoB) */ if (CONFIG_BFIN_BOOT_MODE != BFIN_BOOT_BYPASS) { serial_putc('e'); +#ifdef __ADSPBF60x__ + bfin_write_SEC_GCTL(0x2); + SSYNC(); + bfin_write_SEC_FCTL(0xc1); + bfin_write_SEC_SCTL(2, bfin_read_SEC_SCTL(2) | 0x6); + + bfin_write_SEC_CCTL(0x2); + SSYNC(); + bfin_write_SEC_GCTL(0x1); + bfin_write_SEC_CCTL(0x1); +#endif bfin_write_WDOG_CNT(MSEC_TO_SCLK(CONFIG_HW_WATCHDOG_TIMEOUT_INITCODE)); +#if CONFIG_BFIN_BOOT_MODE != BFIN_BOOT_UART bfin_write_WDOG_CTL(0); +#endif serial_putc('f'); } #endif diff --git a/arch/blackfin/cpu/start.S b/arch/blackfin/cpu/start.S index 90b4d1a..7155fc8 100644 --- a/arch/blackfin/cpu/start.S +++ b/arch/blackfin/cpu/start.S @@ -65,6 +65,7 @@ ENTRY(_start) p5.h = HI(COREMMR_BASE);
#ifdef CONFIG_HW_WATCHDOG +#ifndef __ADSPBF60x__ # ifndef CONFIG_HW_WATCHDOG_TIMEOUT_START # define CONFIG_HW_WATCHDOG_TIMEOUT_START 5000 # endif @@ -78,6 +79,7 @@ ENTRY(_start) /* fire up the watchdog - R0.L above needs to be 0x0000 */ W[p4 + (WDOG_CTL - SYSMMR_BASE)] = r0; #endif +#endif
/* Turn on the serial for debugging the init process */ serial_early_init diff --git a/include/configs/bf609-ezkit.h b/include/configs/bf609-ezkit.h index a599127..0b5859f 100644 --- a/include/configs/bf609-ezkit.h +++ b/include/configs/bf609-ezkit.h @@ -67,6 +67,7 @@ #define CONFIG_SYS_MONITOR_LEN (768 * 1024) #define CONFIG_SYS_MALLOC_LEN (512 * 1024)
+#define CONFIG_HW_WATCHDOG /* * Network Settings */

From: Steven Miao realmz6@gmail.com
Add Bf60x resume from hibernate support
Signed-off-by: Steven Miao realmz6@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com Signed-off-by: Bob Liu lliubbo@gmail.com --- arch/blackfin/cpu/initcode.c | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/arch/blackfin/cpu/initcode.c b/arch/blackfin/cpu/initcode.c index 5ee2203..1d293cc 100644 --- a/arch/blackfin/cpu/initcode.c +++ b/arch/blackfin/cpu/initcode.c @@ -509,6 +509,11 @@ maybe_self_refresh(ADI_BOOT_DATA *bs) return false;
#ifdef __ADSPBF60x__ + /* resume from hibernate, return false let ddr initialize */ + if ((bfin_read32(DPM0_STAT) & 0xF0) == 0x50) { + serial_putc('b'); + return false; + }
#else /* __ADSPBF60x__ */
@@ -823,6 +828,7 @@ program_memory_controller(ADI_BOOT_DATA *bs, bool put_into_srfs) while (!(bfin_read_DMC0_STAT() & DLLCALDONE)) continue; serial_putc('!'); + #else /* __ADSPBF60x__ */
/* Program the external memory controller before we come out of @@ -890,7 +896,44 @@ check_hibernation(ADI_BOOT_DATA *bs, u16 vr_ctl, bool put_into_srfs) return;
serial_putc('b'); +#ifdef __ADSPBF60x__ + if (bfin_read32(DPM0_RESTORE0) != 0) { + uint32_t reg = bfin_read_DMC0_CTL(); + reg &= ~0x8; + bfin_write_DMC0_CTL(reg); + + while ((bfin_read_DMC0_STAT() & 0x8)) + continue; + while (!(bfin_read_DMC0_STAT() & 0x1)) + continue;
+ serial_putc('z'); + uint32_t *hibernate_magic = bfin_read32(DPM0_RESTORE4); + SSYNC(); /* make sure memory controller is done */ + if (hibernate_magic[0] == 0xDEADBEEF) { + serial_putc('c'); + SSYNC(); + bfin_write_EVT15(hibernate_magic[1]); + bfin_write_IMASK(EVT_IVG15); + __asm__ __volatile__ ( + /* load reti early to avoid anomaly 281 */ + "reti = %2;" + /* clear hibernate magic */ + "[%0] = %1;" + /* load stack pointer */ + "SP = [%0 + 8];" + /* lower ourselves from reset ivg to ivg15 */ + "raise 15;" + "nop;nop;nop;" + "rti;" + : + : "p"(hibernate_magic), "d"(0x2000 /* jump.s 0 */), "d"(0xffa00000) + ); + } + + + } +#else /* Are we coming out of hibernate (suspend to memory) ? * The memory layout is: * 0x0: hibernate magic for anomaly 307 (0xDEADBEEF) @@ -922,6 +965,7 @@ check_hibernation(ADI_BOOT_DATA *bs, u16 vr_ctl, bool put_into_srfs) } serial_putc('d'); } +#endif
serial_putc('e'); }

Dear Sonic Zhang,
In message 1360223258-6945-12-git-send-email-sonic.adi@gmail.com you wrote:
From: Steven Miao realmz6@gmail.com
Add Bf60x resume from hibernate support
Signed-off-by: Steven Miao realmz6@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com Signed-off-by: Bob Liu lliubbo@gmail.com
Checkpatch issues, please fix.
Best regards,
Wolfgang Denk

Dear Sonic Zhang,
In message 1360223258-6945-1-git-send-email-sonic.adi@gmail.com you wrote:
ADSP-BF60x is the new generation Blackfin® dual-core processor announced by Analog Devices in late March, 2012. This patch set adds BF60x processor support to Das U-Boot Blackfin architecture.
It appears there are a number of chackpatch issues with this series.
Please read http://www.denx.de/wiki/U-Boot/Patches and follow the rules.
Best regards,
Wolfgang Denk

Hi Sonic,
On Thu, 07 Feb 2013 11:04:23 +0100, Wolfgang Denk wd@denx.de wrote:
Dear Sonic Zhang,
In message 1360223258-6945-1-git-send-email-sonic.adi@gmail.com you wrote:
ADSP-BF60x is the new generation Blackfin® dual-core processor announced by Analog Devices in late March, 2012. This patch set adds BF60x processor support to Das U-Boot Blackfin architecture.
It appears there are a number of chackpatch issues with this series.
Please read http://www.denx.de/wiki/U-Boot/Patches and follow the rules.
Also read http://www.denx.de/wiki/U-Boot/Custodians : this series should have been addressed To: the Blackfin, not ARM, custodian.
Best regards,
Wolfgang Denk
Amicalement,
participants (4)
-
Albert ARIBAUD
-
Bob Liu
-
Sonic Zhang
-
Wolfgang Denk