Home | History | Annotate | Line # | Download | only in broadcom
bcm53xx_reg.h revision 1.19.4.1
      1  1.19.4.1   skrll /* $NetBSD: bcm53xx_reg.h,v 1.19.4.1 2024/02/16 12:07:08 skrll Exp $ */
      2      1.19  andvar 
      3       1.1    matt /*-
      4       1.1    matt  * Copyright (c) 2012 The NetBSD Foundation, Inc.
      5       1.1    matt  * All rights reserved.
      6       1.1    matt  *
      7       1.1    matt  * This code is derived from software contributed to The NetBSD Foundation
      8       1.1    matt  * by Matt Thomas of 3am Software Foundry.
      9       1.1    matt  *
     10       1.1    matt  * Redistribution and use in source and binary forms, with or without
     11       1.1    matt  * modification, are permitted provided that the following conditions
     12       1.1    matt  * are met:
     13       1.1    matt  * 1. Redistributions of source code must retain the above copyright
     14       1.1    matt  *    notice, this list of conditions and the following disclaimer.
     15       1.1    matt  * 2. Redistributions in binary form must reproduce the above copyright
     16       1.1    matt  *    notice, this list of conditions and the following disclaimer in the
     17       1.1    matt  *    documentation and/or other materials provided with the distribution.
     18       1.1    matt  *
     19       1.1    matt  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20       1.1    matt  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21       1.1    matt  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22       1.1    matt  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23       1.1    matt  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24       1.1    matt  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25       1.1    matt  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26       1.1    matt  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27       1.1    matt  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28       1.1    matt  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29       1.1    matt  * POSSIBILITY OF SUCH DAMAGE.
     30       1.1    matt  */
     31       1.1    matt 
     32       1.1    matt #ifndef _ARM_BROADCOM_BCM53XX_REG_H_
     33       1.1    matt #define _ARM_BROADCOM_BCM53XX_REG_H_
     34       1.1    matt 
     35       1.1    matt /*
     36       1.1    matt  * 0x0000_0000..0x07ff_ffff	 128MB	DDR2/3 DRAM Memory Region (dual map)
     37       1.1    matt  * 0x0800_0000..0x0fff_ffff	 128MB	PCIe 0 Address Match Region
     38       1.1    matt  * 0x1800_0000..0x180f_ffff	   1MB	Core Register Region
     39       1.1    matt  * 0x1810_0000..0x181f_ffff	   1MB	IDM Register Region
     40       1.1    matt  * 0x1900_0000..0x190f_ffff	   1MB	ARMcore (CORTEX-A9) Register Region
     41       1.1    matt  * 0x1c00_0000..0x1dff_ffff	   1MB	NAND Flash Region
     42       1.1    matt  * 0x1e00_0000..0x1dff_ffff	   1MB	Serial Flash Region
     43       1.1    matt  * 0x4000_0000..0x47ff_ffff	 128MB	PCIe 1 Address Match Region
     44       1.1    matt  * 0x4800_0000..0x4fff_ffff	 128MB	PCIe 2 Address Match Region
     45       1.1    matt  * 0x8000_0000..0xbfff_ffff	1024MB	DDR2/3 DRAM Memory Region
     46       1.1    matt  * 0xfffd_0000..0xfffe_ffff	 128KB	Internal Boot ROM Region
     47       1.1    matt  * 0xffff_0000..0xffff_043f	1088B	Internal SKU ROM Region
     48       1.1    matt  * 0xffff_1000..0xffff_1fff	   4KB	Enumeration ROM Register Region
     49       1.1    matt  */
     50      1.15    matt #define BCM53XX_PCIE0_OWIN_PBASE 0x08000000
     51      1.15    matt #define BCM53XX_PCIE0_OWIN_SIZE	0x04000000
     52      1.15    matt #define BCM53XX_PCIE0_OWIN_MAX	0x08000000
     53       1.3    matt 
     54      1.15    matt #define BCM53XX_IOREG_PBASE	0x18000000
     55      1.15    matt #define BCM53XX_IOREG_SIZE	0x00200000
     56       1.1    matt 
     57      1.15    matt #define BCM53XX_ARMCORE_PBASE	0x19000000
     58      1.15    matt #define BCM53XX_ARMCORE_SIZE	0x00100000
     59       1.1    matt 
     60      1.15    matt #define BCM53XX_NAND_PBASE	0x1c000000
     61      1.15    matt #define BCM53XX_NAND_SIZE	0x01000000
     62       1.1    matt 
     63      1.15    matt #define BCM53XX_SPIFLASH_PBASE	0x1d000000
     64      1.15    matt #define BCM53XX_SPIFLASH_SIZE	0x01000000
     65       1.1    matt 
     66      1.15    matt #define BCM53XX_PCIE1_OWIN_PBASE 0x40000000
     67      1.15    matt #define BCM53XX_PCIE1_OWIN_SIZE	0x04000000
     68      1.15    matt #define BCM53XX_PCIE1_OWIN_MAX	0x08000000
     69       1.3    matt 
     70      1.15    matt #define BCM53XX_PCIE2_OWIN_PBASE 0x48000000
     71      1.15    matt #define BCM53XX_PCIE2_OWIN_SIZE	0x04000000
     72      1.15    matt #define BCM53XX_PCIE2_OWIN_MAX	0x08000000
     73       1.3    matt 
     74      1.18   skrll #define BCM53XX_ROM_REGION_PBASE 0xfff00000
     75      1.18   skrll #define BCM53XX_ROM_REGION_SIZE	0x00100000
     76      1.18   skrll 
     77      1.15    matt #define BCM53XX_IO_SIZE		(BCM53XX_IOREG_SIZE		\
     78       1.3    matt 				 + BCM53XX_ARMCORE_SIZE		\
     79       1.3    matt 				 + BCM53XX_PCIE0_OWIN_SIZE	\
     80       1.3    matt 				 + BCM53XX_PCIE1_OWIN_SIZE	\
     81      1.18   skrll 				 + BCM53XX_PCIE2_OWIN_SIZE	\
     82      1.18   skrll 				 + BCM53XX_ROM_REGION_SIZE)
     83       1.1    matt 
     84      1.15    matt #define BCM53XX_REF_CLK		(25*1000*1000)
     85       1.1    matt 
     86      1.15    matt #define CCA_UART_FREQ		BCM53XX_REF_CLK
     87       1.1    matt 
     88       1.1    matt /* Chip Common A */
     89      1.15    matt #define CCA_MISC_BASE		0x000000
     90      1.15    matt #define CCA_MISC_SIZE		0x001000
     91      1.15    matt #define CCA_UART0_BASE		0x000300
     92      1.15    matt #define CCA_UART1_BASE		0x000400
     93       1.1    matt 
     94       1.1    matt /* Chip Common B */
     95      1.15    matt #define CCB_BASE		0x000000
     96      1.16    matt #ifdef BCM5301X
     97      1.15    matt #define CCB_SIZE		0x030000
     98      1.15    matt #define PWM_BASE		0x002000
     99      1.15    matt #define MII_BASE		0x003000
    100      1.15    matt #define RNG_BASE		0x004000
    101      1.15    matt #define TIMER0_BASE		0x005000
    102      1.15    matt #define TIMER1_BASE		0x006000
    103      1.15    matt #define SRAB_BASE		0x007000
    104      1.16    matt #define UART2_BASE		0x008000
    105      1.16    matt #define SMBUS1_BASE		0x009000
    106       1.1    matt 
    107      1.15    matt #define CRU_BASE		0x00b000
    108      1.15    matt #define DMU_BASE		0x00c000
    109      1.16    matt #elif defined(BCM563XX)
    110      1.16    matt #define CCB_SIZE		0x040000
    111      1.16    matt #define GPIO_BASE		0x030000
    112      1.16    matt #define PWM_BASE		0x031000
    113      1.16    matt #define MII_BASE		0x032000
    114      1.16    matt #define RNG_BASE		0x033000
    115      1.16    matt #define TIMER0_BASE		0x034000
    116      1.16    matt #define TIMER1_BASE		0x035000
    117      1.16    matt #define UART2_BASE		0x037000
    118      1.16    matt #define SMBUS0_BASE		0x038000
    119      1.16    matt #define WDT_BASE		0x039000
    120      1.16    matt #define PKA_BASE		0x03a000
    121      1.16    matt #define SMBUS1_BASE		0x03b000
    122      1.16    matt 
    123      1.16    matt #define CRU_BASE		0x03e000
    124      1.16    matt #define DMU_BASE		0x03f000
    125      1.16    matt #endif
    126       1.1    matt 
    127      1.15    matt #define DDR_BASE		0x010000
    128       1.1    matt 
    129      1.15    matt #define PCIE0_BASE		0x012000
    130      1.15    matt #define PCIE1_BASE		0x013000
    131      1.14    matt 
    132      1.14    matt #ifdef BCM5301X
    133      1.15    matt #define PCIE2_BASE		0x014000
    134       1.1    matt #define SDIO_BASE		0x020000
    135      1.15    matt #define EHCI_BASE		0x021000
    136      1.15    matt #define OHCI_BASE		0x022000
    137      1.15    matt #define GMAC0_BASE		0x024000
    138      1.15    matt #define GMAC1_BASE		0x025000
    139      1.15    matt #define GMAC2_BASE		0x026000
    140      1.15    matt #define GMAC3_BASE		0x027000
    141      1.15    matt #define NAND_BASE		0x028000
    142      1.14    matt #define QSPI_BASE		0x029000
    143      1.14    matt #define I2S_BASE		0x02A000
    144      1.14    matt #define DMAC_BASE		0x02C000
    145      1.14    matt #endif
    146      1.14    matt 
    147      1.14    matt #ifdef BCM563XX
    148      1.14    matt #define DMAC_BASE		0x020000
    149      1.15    matt #define GMAC0_BASE		0x022000
    150      1.15    matt #define GMAC1_BASE		0x023000
    151      1.15    matt #define NAND_BASE		0x026000
    152      1.15    matt #define QSPI_BASE		0x027000
    153      1.15    matt #define EHCI_BASE		0x02A000
    154      1.15    matt #define OHCI_BASE		0x02B000
    155      1.14    matt #endif
    156       1.1    matt 
    157      1.15    matt #define IDM_BASE		0x100000
    158      1.15    matt #define IDM_SIZE		0x100000
    159       1.1    matt 
    160       1.1    matt /* Chip Common A */
    161       1.1    matt 
    162       1.1    matt #ifdef CCA_PRIVATE
    163       1.1    matt 
    164      1.15    matt #define MISC_CHIPID			0x000
    165      1.15    matt #define CHIPID_REV			__BITS(19,16)
    166      1.15    matt #define CHIPID_ID			__BITS(15,0)
    167      1.15    matt #define ID_BCM53010			0xcf12	// 53010
    168      1.15    matt #define ID_BCM53011			0xcf13	// 53011
    169      1.15    matt #define ID_BCM53012			0xcf14	// 53012
    170      1.15    matt #define ID_BCM53013			0xcf15	// 53013
    171      1.15    matt #define ID_BCM56340			0xdc14	// 56340
    172      1.15    matt 
    173      1.15    matt #define MISC_CAPABILITY			0x004
    174      1.15    matt #define CAPABILITY_JTAG_PRESENT		__BIT(22)
    175      1.15    matt #define CAPABILITY_UART_CLKSEL		__BITS(4,3)
    176      1.15    matt #define UART_CLKSEL_REFCLK		0
    177      1.15    matt #define UART_CLKSEL_INTCLK		1
    178       1.1    matt 					/* 2 & 3 are reserved */
    179      1.15    matt #define CAPABILITY_BIG_ENDIAN		__BIT(2)
    180      1.15    matt #define CAPABILITY_UART_COUNT		__BITS(1,0)
    181       1.1    matt 
    182      1.15    matt #define MISC_CORECTL			0x008
    183      1.15    matt #define CORECTL_UART_CLK_EN		__BIT(3)
    184      1.15    matt #define CORECTL_GPIO_ASYNC_INT_EN	__BIT(2)
    185      1.15    matt #define CORECTL_UART_CLK_OVERRIDE	__BIT(0)
    186      1.15    matt 
    187      1.15    matt #define MISC_INTSTATUS			0x020
    188      1.15    matt #define INTSTATUS_WDRESET		__BIT(31)	// WO2C
    189      1.15    matt #define INTSTATUS_UARTINT		__BIT(6)	// RO
    190      1.15    matt #define INTSTATUS_GPIOINT		__BIT(0)	// RO
    191      1.15    matt 
    192      1.15    matt #define MISC_INTMASK			0x024
    193      1.15    matt #define INTMASK_UARTINT			__BIT(6)	// 1 = enabled
    194      1.15    matt #define INTMASK_GPIOINT			__BIT(0)	// 1 = enabled
    195       1.1    matt 
    196       1.1    matt /* Only bits [23:0] are used in the GPIO registers */
    197      1.15    matt #define GPIO_INPUT			0x060		// RO
    198      1.15    matt #define GPIO_OUT			0x064
    199      1.15    matt #define GPIO_OUTEN			0x068
    200      1.15    matt #define GPIO_INTPOLARITY		0x070		// 1 = active low
    201      1.15    matt #define GPIO_INTMASK			0x074		// 1 = enabled (level)
    202      1.15    matt #define GPIO_EVENT			0x078		// W1C, 1 = edge seen
    203      1.15    matt #define GPIO_EVENT_INTMASK		0x07c		// 1 = enabled (edge)
    204      1.15    matt #define GPIO_EVENT_INTPOLARITY		0x084		// 1 = falling
    205      1.15    matt #define GPIO_TIMER_VAL			0x088
    206      1.15    matt #define TIMERVAL_ONCOUNT		__BITS(31,16)
    207      1.15    matt #define TIMERVAL_OFFCOUNT		__BITS(15,0)
    208       1.1    matt #define GPIO_TIMER_OUTMASK		0x08c
    209       1.1    matt #define GPIO_DEBUG_SEL			0x0a8
    210       1.1    matt 
    211      1.15    matt #define MISC_WATCHDOG			0x080		// 0 disables, 1 resets
    212       1.1    matt 
    213      1.15    matt #define MISC_CLKDIV			0x0a4
    214      1.15    matt #define CLKDIV_JTAG_MASTER_CLKDIV	__BITS(13,9)
    215      1.15    matt #define CLKDIV_UART_CLKDIV		__BITS(7,1)
    216       1.1    matt 
    217      1.15    matt #define MISC_CAPABILITY2		0x0ac
    218       1.1    matt #define CAPABILITY2_GSIO_PRESENT	__BIT(1)	// SPI exists
    219       1.1    matt 
    220      1.15    matt #define MISC_GSIOCTL			0x0e4
    221      1.15    matt #define GSIOCTL_STARTBUSY		__BIT(31)
    222      1.15    matt #define GSIOCTL_GSIOMODE		__BIT(30)	// 0 = SPI
    223      1.15    matt #define GSIOCTL_ERROR			__BIT(23)
    224      1.15    matt #define GSIOCTL_BIGENDIAN		__BIT(22)
    225      1.15    matt #define GSIOCTL_GSIOGO			__BIT(21)
    226      1.15    matt #define GSIOCTL_NUM_DATABYTES		__BITS(17,16)	// actual is + 1
    227      1.15    matt #define GSIOCTL_NUM_WAITCYCLES		__BITS(15,14)	// actual is + 1
    228      1.15    matt #define GSIOCTL_NUM_ADDRESSBYTES	__BITS(13,12)	// actual is + 1
    229      1.15    matt #define GSIOCTL_GSIOCODE		__BITS(10,8)
    230      1.15    matt #define GSIOCODE_OP_RD1DATA		0
    231      1.15    matt #define GSIOCODE_OP_WRADDR_RDADDR	1
    232      1.15    matt #define GSIOCODE_OP_WRADDR_XFRDATA	2
    233      1.15    matt #define GSIOCODE_OP_WRADDR_WAIT_XFRDATA	3
    234      1.15    matt #define GSIOCODE_XFRDATA		4
    235      1.15    matt #define GSIOCTL_GSIOOP			__BITS(7,0)
    236       1.1    matt 
    237      1.15    matt #define MISC_GSIOADDRESS		0x0e8
    238      1.15    matt #define MISC_GSIODATA			0x0ec
    239       1.1    matt 
    240      1.15    matt #define MISC_CLKDIV2			0x0f0
    241      1.15    matt #define CLKDIV2_GSIODIV			__BITS(20,5)
    242       1.1    matt 
    243      1.15    matt #define MISC_EROM_PTR_OFFSET		0x0fc
    244       1.1    matt 
    245       1.1    matt #endif /* CCA_PRIVATE */
    246       1.1    matt 
    247       1.1    matt /*
    248       1.1    matt  * UART0 & 1 use the standard 16550 register layout (normal 1 byte stride)
    249       1.1    matt  * and have 64-byte FIFOs
    250       1.1    matt  */
    251       1.1    matt 
    252       1.1    matt /* TIMER0 & 1 are implemented by the dtimer driver */
    253       1.1    matt 
    254      1.15    matt #define TIMER_FREQ		BCM53XX_REF_CLK
    255       1.1    matt 
    256       1.6    matt #ifdef SRAB_PRIVATE
    257      1.15    matt #define SRAB_CMDSTAT		0x002c
    258       1.6    matt #define  SRA_PAGE		__BITS(31,24)
    259       1.6    matt #define  SRA_OFFSET		__BITS(23,16)
    260      1.15    matt #define  SRA_PAGEOFFSET		__BITS(31,16)
    261      1.15    matt #define  SRA_RST		__BIT(2)
    262      1.15    matt #define  SRA_WRITE		__BIT(1)
    263      1.15    matt #define  SRA_GORDYN		__BIT(0)
    264      1.15    matt #define SRAB_WDH		0x0030
    265      1.15    matt #define SRAB_WDL		0x0034
    266      1.15    matt #define SRAB_RDH		0x0038
    267      1.15    matt #define SRAB_RDL		0x003c
    268       1.6    matt #endif
    269       1.6    matt 
    270       1.1    matt #ifdef MII_PRIVATE
    271      1.15    matt #define MII_INTERNAL		0x0038003	/* internal phy bitmask */
    272      1.15    matt #define MIIMGT			0x000
    273      1.15    matt #define  MIIMGT_BYP		__BIT(10)
    274      1.15    matt #define  MIIMGT_EXT		__BIT(9)
    275      1.15    matt #define  MIIMGT_BSY		__BIT(8)
    276      1.15    matt #define  MIIMGT_PRE		__BIT(7)
    277      1.15    matt #define  MIIMGT_MDCDIV		__BITS(6,0)
    278      1.15    matt #define MIICMD			0x004
    279       1.1    matt #define  MIICMD_SB		__BITS(31,30)
    280      1.15    matt #define   MIICMD_SB_DEF		__SHIFTIN(1, MIICMD_SB)
    281       1.1    matt #define  MIICMD_OP		__BITS(29,28)
    282      1.15    matt #define   MIICMD_OP_RD		__SHIFTIN(2, MIICMD_OP)
    283      1.15    matt #define   MIICMD_OP_WR		__SHIFTIN(1, MIICMD_OP)
    284       1.1    matt #define  MIICMD_PHY		__BITS(27,23)
    285       1.1    matt #define  MIICMD_REG		__BITS(22,18)
    286       1.1    matt #define  MIICMD_TA		__BITS(17,16)
    287      1.15    matt #define   MIICMD_TA_DEF		__SHIFTIN(2, MIICMD_TA)
    288       1.1    matt #define  MIICMD_DATA		__BITS(15,0)
    289       1.1    matt 
    290      1.15    matt #define  MIICMD_RD_DEF		(MIICMD_SB_DEF|MIICMD_OP_RD|MIICMD_TA_DEF)
    291      1.15    matt #define  MIICMD_WR_DEF		(MIICMD_SB_DEF|MIICMD_OP_WR|MIICMD_TA_DEF)
    292      1.15    matt #define  MIICMD__PHYREG(p,r)	(__SHIFTIN(p,MIICMD_PHY)|__SHIFTIN(r,MIICMD_REG))
    293      1.15    matt #define  MIICMD_RD(p,r)		(MIICMD_RD_DEF|MIICMD__PHYREG((p),(r)))
    294      1.15    matt #define  MIICMD_WR(p,r,v)	(MIICMD_WR_DEF|MIICMD__PHYREG((p),(r))|(v))
    295       1.1    matt #endif /* MII_PRIVATE */
    296       1.1    matt 
    297       1.1    matt #ifdef RNG_PRIVATE
    298      1.15    matt #define RNG_CTRL		0x000
    299       1.1    matt #define  RNG_COMBLK2_OSC_DIS	__BITS(27,22)
    300       1.1    matt #define  RNG_COMBLK1_OSC_DIS	__BITS(21,16)
    301       1.1    matt #define  RNG_ICLK_BYP_DIV_CNT	__BITS(15,8)
    302       1.1    matt #define  RNG_JCLK_BYP_SRC	__BIT(5)
    303       1.1    matt #define  RNG_JCLK_BYP_SEL	__BIT(4)
    304       1.1    matt #define  RNG_RBG2X		__BIT(1)
    305       1.1    matt #define  RNG_RBGEN		__BIT(0)
    306      1.15    matt #define RNG_STATUS		0x004
    307      1.15    matt #define  RNG_VAL		__BITS(31,24)
    308      1.15    matt #define  RNG_WARM_CNT		__BITS(19,0)
    309      1.15    matt 
    310      1.15    matt #define RNG_DATA		0x008
    311      1.15    matt #define RNG_FF_THRESHOLD	0x00c
    312      1.15    matt #define RNG_INT_MASK		0x010
    313      1.15    matt #define  RNG_INT_OFF		__BIT(0)
    314       1.1    matt #endif /* RNG_PRIVATE */
    315       1.1    matt 
    316       1.1    matt #ifdef UART2_PRIVATE
    317       1.1    matt /*
    318       1.1    matt  * UART2 (ChipCommonB) uses a 4-byte stride and 16-byte FIFO.
    319       1.1    matt  * Its frequency is the APB clock.
    320       1.1    matt  */
    321      1.15    matt #define UART2_LPDLL		0x020
    322      1.15    matt #define UART2_LPDLH		0x024
    323       1.1    matt #endif
    324       1.1    matt 
    325       1.1    matt #ifdef CRU_PRIVATE
    326       1.1    matt 
    327      1.15    matt #define CRU_CONTROL		0x000
    328      1.15    matt #define CRUCTL_QSPI_CLK_SEL	__BITS(2,1)
    329      1.15    matt #define QSPI_CLK_25MHZ		0	// iproc_ref_clk
    330      1.15    matt #define QSPI_CLK_50MHZ		1	// iproc_sdio_clk / 4
    331      1.15    matt #define QSPI_CLK_31dot25MHZ	2	// iproc_clk250 / 8
    332      1.15    matt #define QSPI_CLK_62dot5MHZ	3	// iproc_clk250 / 4
    333      1.15    matt #define CRUCTL_SW_RESET		__BIT(0)
    334      1.15    matt 
    335      1.15    matt #define CRU_GENPLL_CONTROL5		0x1154
    336      1.15    matt #define GENPLL_CONTROL5_NDIV_INT	__BITS(29,20)	// = (n ? n : 1024)
    337      1.15    matt #define GENPLL_CONTROL5_NDIV_FRAC	__BITS(19,0)	// = 1 / n
    338      1.15    matt #define CRU_GENPLL_CONTROL6		0x1158
    339      1.15    matt #define GENPLL_CONTROL6_PDIV		__BITS(26,24)	// = (n ? n : 8)
    340      1.15    matt #define GENPLL_CONTROL6_CH0_MDIV	__BITS(23,16)	// = (n ? n : 256), clk_mac
    341  1.19.4.1   skrll #define GENPLL_CONTROL6_CH1_MDIV	__BITS(15,8)	// = (n ? n : 256), clk_robo
    342      1.15    matt #define GENPLL_CONTROL6_CH2_MDIV	__BITS(7,0)	// = (n ? n : 256), clf_usb2
    343      1.15    matt #define CRU_GENPLL_CONTROL7		0x115c
    344      1.15    matt #define GENPLL_CONTROL7_CH3_MDIV	__BITS(23,16)	// = (n ? n : 256), clk_iproc
    345      1.15    matt 
    346      1.15    matt #define USB2_REF_CLK			(1920*1000*1000)
    347      1.15    matt #define CRU_USB2_CONTROL		0x1164
    348      1.15    matt #define USB2_CONTROL_KA			__BITS(24,22)
    349      1.15    matt #define USB2_CONTROL_KI			__BITS(31,19)
    350      1.15    matt #define USB2_CONTROL_KP			__BITS(18,15)
    351  1.19.4.1   skrll #define USB2_CONTROL_PDIV		__BITS(14,12)	// = (n ? n : 8)
    352      1.15    matt #define USB2_CONTROL_NDIV_INT		__BITS(11,2)	// = (n ? n : 1024)
    353      1.15    matt #define USB2_CONTROL_PLL_PCIEUSB3_RESET	__BIT(1)	// inverted 1=normal
    354      1.15    matt #define USB2_CONTROL_PLL_USB2_RESET	__BIT(0)	// inverted 1=normal
    355       1.1    matt 
    356      1.15    matt #define CRU_CLKSET_KEY			0x1180
    357      1.15    matt #define CRU_CLKSET_KEY_MAGIC		0xea68
    358       1.1    matt 
    359      1.15    matt #define CRU_GPIO_SELECT		0x11c0 	// CRU GPIO Select
    360       1.1    matt #define CRU_GPIO_DRIVE_SEL2	0x11c4
    361       1.1    matt #define CRU_GPIO_DRIVE_SEL1	0x11c8
    362       1.1    matt #define CRU_GPIO_DRIVE_SEL0	0x11cc
    363       1.1    matt #define CRU_GPIO_INPUT_DISABLE	0x11d0
    364       1.1    matt #define CRU_GPIO_HYSTERESIS	0x11d4
    365       1.1    matt #define CRU_GPIO_SLEW_RATE	0x11d8
    366       1.1    matt #define CRU_GPIO_PULL_UP	0x11dc
    367       1.1    matt #define CRU_GPIO_PULL_DOWN	0x11e0
    368       1.1    matt 
    369       1.1    matt #define CRU_STRAPS_CONTROL	0x12a0
    370       1.6    matt #define  STRAP_BOOT_DEV		__BITS(17,16)
    371       1.6    matt #define  STRAP_NAND_TYPE	__BITS(15,12)
    372       1.6    matt #define  STRAP_NAND_PAGE	__BITS(11,10)
    373       1.6    matt #define  STRAP_DDR3		__BIT(9)
    374       1.6    matt #define  STRAP_P5_VOLT_15	__BIT(8)
    375       1.6    matt #define  STRAP_P5_MODE		__BITS(7,6)
    376       1.6    matt #define  STRAP_PCIE0_MODE	__BIT(5)
    377       1.6    matt #define  STRAP_USB3_SEL		__BIT(4)
    378       1.6    matt #define  STRAP_EX_EXTCLK	__BIT(3)
    379       1.6    matt #define  STRAP_HW_FWDG_EN	__BIT(2)
    380       1.6    matt #define  STRAP_LED_SERIAL_MODE	__BIT(1)
    381       1.1    matt #define  STRAP_BISR_BYPASS_AUTOLOAD	 __BIT(0)
    382       1.1    matt 
    383       1.1    matt #endif /* CRU_PRIVATE */
    384       1.1    matt 
    385       1.1    matt #ifdef DMU_PRIVATE
    386       1.1    matt 
    387      1.15    matt #define DMU_LCPLL_CONTROL0	0x100
    388      1.15    matt #define DMU_LCPLL_CONTROL1	0x104
    389  1.19.4.1   skrll #define LCPLL_CONTROL1_PDIV	__BITS(30,28)	// = (n ? n : 8)
    390      1.15    matt #define LCPLL_CONTROL1_NDIV_INT	__BITS(27,20)	// = (n ? n : 256)
    391      1.15    matt #define LCPLL_CONTROL1_NDIV_FRAC __BITS(19,0)	// = 1 / n
    392       1.1    matt /*
    393       1.1    matt  * SYS_CLK = (1 / pdiv) * (ndiv_int + (ndiv_frac / 0x40000000)) x F(ref)
    394       1.1    matt  */
    395      1.15    matt #define DMU_LCPLL_CONTROL2	0x108
    396      1.15    matt #define LCPLL_CONTROL2_CH0_MDIV	__BITS(31,24)	// = (n ? n : 256), clk_pcie_ref
    397      1.15    matt #define LCPLL_CONTROL2_CH1_MDIV	__BITS(23,16)	// = (n ? n : 256), clk_sdio
    398  1.19.4.1   skrll #define LCPLL_CONTROL2_CH2_MDIV	__BITS(15,8)	// = (n ? n : 256), clk_ddr
    399      1.15    matt #define LCPLL_CONTROL2_CH3_MDIV	__BITS(7,0)	// = (n ? n : 256), clf_dft
    400       1.1    matt 
    401      1.16    matt #define DMU_CRU_RESET		0x200
    402      1.16    matt #define DMU_CRU_RESET_IPROC	__BIT(1)
    403      1.16    matt #define DMU_CRU_RESET_CMICD	__BIT(0)
    404      1.16    matt 
    405       1.1    matt #endif /* DMU_PRIVATE */
    406       1.1    matt 
    407       1.1    matt #ifdef DDR_PRIVATE
    408       1.1    matt /*
    409       1.1    matt  * DDR CTL register has such inspired names.
    410       1.1    matt  */
    411      1.15    matt #define DDR_CTL_01		0x004
    412      1.15    matt #define CTL_01_MAX_CHIP_SEL	__BITS(18,16)	// not documented as such
    413      1.15    matt #define CTL_01_MAX_COL		__BITS(11,8)
    414      1.15    matt #define CTL_01_MAX_ROW		__BITS(4,0)
    415      1.15    matt 
    416      1.15    matt #define DDR_CTL_82		0x148
    417      1.15    matt #define CTL_82_COL_DIFF		__BITS(26,24)
    418      1.15    matt #define CTL_82_ROW_DIFF		__BITS(18,16)
    419      1.15    matt #define CTL_82_BANK_DIFF	__BITS(9,8)
    420      1.15    matt #define CTL_82_ZQCS_ROTATE	__BIT(0)
    421      1.15    matt 
    422      1.15    matt #define DDR_CTL_86		0x158
    423      1.15    matt #define CTL_86_CS_MAP		__BITS(27,24)
    424      1.15    matt #define CTL_86_INHIBIT_DRAM_CMD	__BIT(16)
    425      1.15    matt #define CTL_86_DIS_RD_INTRLV	__BIT(8)
    426      1.15    matt #define CTL_86_NUM_QENT_ACT_DIS	__BITS(2,0)
    427       1.1    matt 
    428      1.15    matt #define DDR_CTL_87		0x15c
    429       1.1    matt #define CTL_87_IN_ORDER_ACCEPT	__BIT(24)
    430       1.1    matt #define CTL_87_Q_FULLNESS	__BITS(18,16)
    431       1.1    matt #define CTL_87_REDUC		__BIT(8)
    432       1.1    matt #define CTL_87_BURST_ON_FLY_BIT	__BITS(3,0)
    433       1.1    matt 
    434      1.15    matt #define DDR_PHY_CTL_PLL_STATUS	0x810
    435      1.15    matt #define PLL_STATUS_LOCK_LOST	__BIT(26)
    436      1.15    matt #define PLL_STATUS_MHZ		__BITS(25,14)
    437      1.15    matt #define PLL_STATUS_CLOCKING_4X	__BIT(13)
    438      1.15    matt #define PLL_STATUS_STATUS	__BITS(12,1)
    439      1.15    matt #define PLL_STATUS_LOCK		__BIT(0)
    440      1.15    matt 
    441      1.15    matt #define DDR_PHY_CTL_PLL_DIVIDERS	0x81c
    442      1.15    matt #define PLL_DIVIDERS_POST_DIV	__BITS(13,11)
    443      1.15    matt #define PLL_DIVIDERS_PDIV	__BITS(10,8) // 4x: (n ? n : 8), n = n - 4, 4x
    444      1.15    matt #define PLL_DIVIDERS_NDIV	__BITS(7,0)
    445       1.1    matt 
    446       1.1    matt #endif /* DDR_PRIVATE */
    447       1.1    matt 
    448       1.1    matt #ifdef PCIE_PRIVATE
    449       1.1    matt 
    450      1.15    matt #define PCIE_CLK_CONTROL	0x000
    451       1.2    matt 
    452      1.10    matt #define PCIE_RC_AXI_CONFIG	0x100
    453      1.15    matt #define  PCIE_AWCACHE_CONFIG	__BITS(17,14)
    454      1.15    matt #define  PCIE_AWUSER_CONFIG	__BITS(13,9)
    455      1.15    matt #define  PCIE_ARCACHE_CONFIG	__BITS(8,5)
    456      1.15    matt #define  PCIE_ARUSER_CONFIG	__BITS(4,0)
    457      1.10    matt 
    458      1.15    matt #define PCIE_CFG_IND_ADDR	0x120
    459      1.15    matt #define  CFG_IND_ADDR_FUNC	__BITS(15,13)
    460       1.1    matt #define  CFG_IND_ADDR_LAYER	__BITS(12,11)
    461      1.15    matt #define  CFG_IND_ADDR_REG	__BITS(10,2)
    462      1.15    matt #define PCIE_CFG_IND_DATA	0x124
    463      1.15    matt #define PCIE_CFG_ADDR		0x1f8
    464      1.15    matt #define  CFG_ADDR_BUS		__BITS(27,20)
    465      1.15    matt #define  CFG_ADDR_DEV		__BITS(19,15)
    466      1.15    matt #define  CFG_ADDR_FUNC		__BITS(14,12)
    467      1.15    matt #define  CFG_ADDR_REG		__BITS(11,2)
    468      1.15    matt #define  CFG_ADDR_TYPE		__BITS(1,0)
    469      1.15    matt #define  CFG_ADDR_TYPE0		__SHIFTIN(0, CFG_ADDR_TYPE)
    470      1.15    matt #define  CFG_ADDR_TYPE1		__SHIFTIN(1, CFG_ADDR_TYPE)
    471      1.15    matt #define PCIE_CFG_DATA		0x1fc
    472      1.15    matt #define PCIE_EQ_PAGE		0x200
    473      1.15    matt #define PCIE_MSI_PAGE		0x204
    474      1.15    matt #define PCIE_MSI_INTR_EN	0x208
    475      1.15    matt #define PCIE_MSI_CTRL_0		0x210
    476      1.15    matt #define PCIE_MSI_CTRL_1		0x214
    477      1.15    matt #define PCIE_MSI_CTRL_2		0x218
    478      1.15    matt #define PCIE_MSI_CTRL_3		0x21c
    479      1.15    matt #define PCIE_MSI_CTRL_4		0x220
    480      1.15    matt #define PCIE_MSI_CTRL_5		0x224
    481       1.1    matt #define PCIE_SYS_EQ_HEAD_0	0x250
    482       1.1    matt #define PCIE_SYS_EQ_TAIL_0	0x254
    483       1.1    matt #define PCIE_SYS_EQ_HEAD_1	0x258
    484       1.1    matt #define PCIE_SYS_EQ_TAIL_1	0x25c
    485       1.1    matt #define PCIE_SYS_EQ_HEAD_2	0x260
    486       1.1    matt #define PCIE_SYS_EQ_TAIL_2	0x264
    487       1.1    matt #define PCIE_SYS_EQ_HEAD_3	0x268
    488       1.1    matt #define PCIE_SYS_EQ_TAIL_3	0x26c
    489       1.1    matt #define PCIE_SYS_EQ_HEAD_4	0x270
    490       1.1    matt #define PCIE_SYS_EQ_TAIL_4	0x274
    491       1.1    matt #define PCIE_SYS_EQ_HEAD_5	0x278
    492       1.1    matt #define PCIE_SYS_EQ_TAIL_5	0x27c
    493       1.1    matt #define PCIE_SYS_RC_INTX_EN	0x330
    494       1.1    matt #define PCIE_SYS_RC_INTX_CSR	0x334
    495       1.1    matt 
    496      1.15    matt #define PCIE_CFG000_BASE	0x400
    497       1.8    matt 
    498      1.15    matt #define PCIE_FUNC0_IMAP0_0	0xc00
    499      1.15    matt #define PCIE_FUNC0_IMAP0_1	0xc04
    500      1.15    matt #define PCIE_FUNC0_IMAP0_2	0xc08
    501      1.15    matt #define PCIE_FUNC0_IMAP0_3	0xc0c
    502      1.15    matt #define PCIE_FUNC0_IMAP0_4	0xc10
    503      1.15    matt #define PCIE_FUNC0_IMAP0_5	0xc14
    504      1.15    matt #define PCIE_FUNC0_IMAP0_6	0xc18
    505      1.15    matt #define PCIE_FUNC0_IMAP0_7	0xc1c
    506      1.15    matt 
    507      1.15    matt #define PCIE_FUNC0_IMAP1	0xc80
    508      1.15    matt #define PCIE_FUNC1_IMAP1	0xc88
    509      1.15    matt #define PCIE_FUNC0_IMAP2	0xcc0
    510      1.15    matt #define PCIE_FUNC1_IMAP2	0xcc8
    511      1.15    matt 
    512      1.15    matt #define PCIE_IARR_0_LOWER	0xd00
    513      1.15    matt #define PCIE_IARR_0_UPPER	0xd04
    514      1.15    matt #define PCIE_IARR_1_LOWER	0xd08
    515      1.15    matt #define PCIE_IARR_1_UPPER	0xd0c
    516      1.15    matt #define PCIE_IARR_2_LOWER	0xd10
    517      1.15    matt #define PCIE_IARR_2_UPPER	0xd14
    518       1.1    matt 
    519      1.15    matt #define PCIE_OARR_0		0xd20
    520      1.15    matt #define PCIE_OARR_1		0xd28
    521       1.1    matt 
    522       1.3    matt #define  PCIE_OARR_ADDR		__BITS(31,26)
    523       1.3    matt 
    524      1.15    matt #define PCIE_OMAP_0_LOWER	0xd40
    525      1.15    matt #define PCIE_OMAP_0_UPPER	0xd44
    526      1.15    matt #define PCIE_OMAP_1_LOWER	0xd48
    527      1.15    matt #define PCIE_OMAP_1_UPPER	0xd4c
    528       1.1    matt 
    529       1.3    matt #define  PCIE_OMAP_ADDRL	__BITS(31,26)
    530       1.3    matt 
    531      1.15    matt #define PCIE_FUNC1_IARR_1_SIZE	0xd58
    532      1.15    matt #define PCIE_FUNC1_IARR_2_SIZE	0xd5c
    533       1.1    matt 
    534       1.1    matt #define PCIE_MEM_CONTROL	0xf00
    535       1.1    matt #define PCIE_MEM_ECC_ERR_LOG_0	0xf04
    536       1.1    matt #define PCIE_MEM_ECC_ERR_LOG_1	0xf08
    537       1.1    matt 
    538      1.15    matt #define PCIE_LINK_STATUS	0xf0c
    539       1.1    matt #define  PCIE_PHYLINKUP		__BIT(3)
    540       1.1    matt #define  PCIE_DL_ACTIVE		__BIT(2)
    541       1.1    matt #define  PCIE_RX_LOS_TIMEOUT	__BIT(1)
    542       1.1    matt #define  PCIE_LINK_IN_L1	__BIT(0)
    543      1.15    matt #define PCIE_STRAP_STATUS	0xf10
    544       1.1    matt #define  STRAP_PCIE_REPLAY_BUF_TM	__BITS(8,4)
    545       1.1    matt #define  STRAP_PCIE_USER_FOR_CE_GEN1	__BIT(3)
    546       1.1    matt #define  STRAP_PCIE_USER_FOR_CE_1LANE	__BIT(2)
    547       1.1    matt #define  STRAP_PCIE_IF_ENABLE		__BIT(1)
    548       1.1    matt #define  STRAP_PCIE_USER_RC_MODE	__BIT(0)
    549      1.15    matt #define PCIE_RESET_STATUS	0xf14
    550       1.1    matt 
    551      1.15    matt #define PCIE_RESET_ENABLE_IN_PCIE_LINK_DOWN	0xf18
    552       1.1    matt 
    553      1.15    matt #define PCIE_MISC_INTR_EN	0xf1c
    554       1.1    matt #define PCIE_TX_DEBUG_CFG	0xf20
    555      1.15    matt #define PCIE_ERROR_INTR_EN	0xf30
    556      1.15    matt #define PCIE_ERROR_INTR_CLR	0xf34
    557      1.15    matt #define PCIE_ERROR_INTR_STS	0xf38
    558       1.1    matt 
    559       1.1    matt 
    560       1.1    matt // PCIE_SYS_MSI_INTR_EN
    561      1.15    matt #define MSI_INTR_EN_EQ_5	__BIT(5)
    562      1.15    matt #define MSI_INTR_EN_EQ_4	__BIT(4)
    563      1.15    matt #define MSI_INTR_EN_EQ_3	__BIT(3)
    564      1.15    matt #define MSI_INTR_EN_EQ_2	__BIT(2)
    565      1.15    matt #define MSI_INTR_EN_EQ_1	__BIT(1)
    566      1.15    matt #define MSI_INTR_EN_EQ_0	__BIT(0)
    567       1.1    matt 
    568       1.1    matt // PCIE_SYS_MSI_CTRL<n>
    569      1.15    matt #define INT_N_DELAY		__BITS(9,6)
    570      1.15    matt #define INT_N_EVENT		__BITS(1,1)
    571      1.15    matt #define EQ_ENABLE		__BIT(0)
    572       1.1    matt 
    573       1.1    matt // PCIE_SYS_EQ_HEAD<n>
    574      1.15    matt #define HEAD_PTR		__BITS(5,0)
    575       1.1    matt 
    576       1.1    matt // PCIE_SYS_EQ_TAIL<n>
    577      1.15    matt #define EQ_OVERFLOW		__BIT(6)
    578      1.15    matt #define TAIL_PTR		__BITS(5,0)
    579       1.1    matt 
    580       1.1    matt // PCIE_SYS_RC_INTRX_EN
    581      1.15    matt #define RC_EN_INTD		__BIT(3)
    582      1.15    matt #define RC_EN_INTC		__BIT(2)
    583      1.15    matt #define RC_EN_INTB		__BIT(1)
    584      1.15    matt #define RC_EN_INTA		__BIT(0)
    585       1.1    matt 
    586       1.1    matt // PCIE_SYS_RC_INTRX_CSR
    587      1.15    matt #define RC_INTD			__BIT(3)
    588      1.15    matt #define RC_INTC			__BIT(2)
    589      1.15    matt #define RC_INTB			__BIT(1)
    590      1.15    matt #define RC_INTA			__BIT(0)
    591       1.1    matt 
    592       1.1    matt // PCIE_IARR_0_LOWER / UPPER
    593      1.15    matt #define IARR0_ADDR		__BIT(31,15)
    594      1.15    matt #define IARR0_VALID		__BIT(0)
    595       1.1    matt 
    596       1.1    matt // PCIE_IARR_1_LOWER / UPPER
    597      1.15    matt #define IARR1_ADDR		__BIT(31,20)
    598      1.15    matt #define IARR1_SIZE		__BIT(7,0)
    599       1.5    matt 
    600       1.5    matt // PCIE_IARR_2_LOWER / UPPER
    601      1.15    matt #define IARR2_ADDR		__BIT(31,20)
    602      1.15    matt #define IARR2_SIZE		__BIT(7,0)
    603       1.5    matt 
    604       1.5    matt // PCIE_MISC_INTR_EN
    605      1.15    matt #define INTR_EN_PCIE_ERR_ATTN	__BIT(2)
    606      1.15    matt #define INTR_EN_PAXB_ECC_2B_ATTN	__BIT(1)
    607      1.15    matt #define INTR_EN_PCIE_IN_WAKE_B	__BIT(0)
    608       1.5    matt 
    609       1.5    matt // PCIE_ERR_INTR_{EN,CLR,STS}
    610      1.15    matt #define PCIE_OVERFLOW_UNDERFLOW_INTR	__BIT(10)
    611      1.15    matt #define PCIE_AXI_MASTER_RRESP_SLV_ERR_INTR	__BIT(9)
    612      1.15    matt #define PCIE_AXI_MASTER_RRESP_DECERR_INTR	__BIT(8)
    613      1.15    matt #define PCIE_ECRC_ERR_INTR		__BIT(7)
    614      1.15    matt #define PCIE_CMPL_TIMEROUT_INTR		__BIT(6)
    615      1.15    matt #define PCIE_ERR_ATTN_INTR		__BIT(5)
    616      1.15    matt #define PCIE_IN_WAKE_B_INTR		__BIT(4)
    617      1.15    matt #define PCIE_REPLAY_BUF_2B_ECC_ERR_INTR	__BIT(3)
    618      1.15    matt #define PCIE_RD_CMPL_BUF_1_2B_ECC_ERR_INTR	__BIT(2)
    619      1.15    matt #define PCIE_RD_CMPL_BUF_0_2B_ECC_ERR_INTR	__BIT(1)
    620      1.15    matt #define PCIE_WR_DATA_BUF_2B_ECC_ERR_INTR	__BIT(0)
    621      1.15    matt 
    622      1.15    matt #define REGS_DEVICE_CAPACITY	0x04d4
    623      1.15    matt #define REGS_LINK_CAPACITY	0x03dc
    624      1.15    matt #define REGS_TL_CONTROL_0	0x0800
    625      1.15    matt #define REGS_DL_STATUS		0x1048
    626       1.1    matt 
    627       1.1    matt #endif /* PCIE_PRIVATE */
    628       1.1    matt 
    629      1.15    matt #define ARMCORE_SCU_BASE	0x20000		/* CBAR is 19020000 */
    630      1.15    matt #define ARMCORE_L2C_BASE	0x22000
    631       1.1    matt 
    632       1.1    matt #ifdef ARMCORE_PRIVATE
    633       1.1    matt 
    634      1.15    matt #define ARMCORE_CLK_POLICY_FREQ	0x008
    635      1.15    matt #define CLK_POLICY_FREQ_PRIVED	__BIT(31)
    636      1.15    matt #define CLK_POLICY_FREQ_POLICY3	__BITS(26,24)
    637      1.15    matt #define CLK_POLICY_FREQ_POLICY2	__BITS(18,16)
    638      1.15    matt #define CLK_POLICY_FREQ_POLICY1	__BITS(10,8)
    639      1.15    matt #define CLK_POLICY_FREQ_POLICY0	__BITS(2,0)
    640      1.15    matt #define CLK_POLICY_REF_CLK	0	// 25 MHZ
    641      1.15    matt #define CLK_POLICY_SYS_CLK	1	// sys clk (200MHZ)
    642      1.15    matt #define CLK_POLICY_ARM_PLL_CH0	6	// slow clock
    643      1.15    matt #define CLK_POLICY_ARM_PLL_CH1	7	// fast clock
    644      1.15    matt 
    645      1.15    matt #define ARMCORE_CLK_APB_DIV	0xa10
    646      1.15    matt #define CLK_APB_DIV_PRIVED	__BIT(31)
    647      1.15    matt #define CLK_APB_DIV_VALUE	__BITS(1,0)	// n = n + 1
    648      1.15    matt 
    649      1.15    matt #define ARMCORE_CLK_APB_DIV_TRIGGER	0xa10
    650      1.15    matt #define CLK_APB_DIV_TRIGGER_PRIVED	__BIT(31)
    651      1.15    matt #define CLK_APB_DIV_TRIGGER_OVERRIDE	__BIT(0)
    652      1.15    matt 
    653      1.15    matt #define ARMCORE_CLK_PLLARMA	0xc00
    654  1.19.4.1   skrll #define CLK_PLLARMA_PDIV	__BITS(26,24)	// = (n ? n : 16(?))
    655      1.15    matt #define CLK_PLLARMA_NDIV_INT	__BITS(17,8)	// = (n ? n : 1024)
    656       1.1    matt 
    657      1.15    matt #define ARMCORE_CLK_PLLARMB	0xc04
    658      1.15    matt #define CLK_PLLARMB_NDIV_FRAC	__BITS(19,0)	// = 1 / n
    659       1.1    matt 
    660       1.1    matt #endif
    661       1.1    matt 
    662       1.1    matt #ifdef IDM_PRIVATE
    663       1.1    matt 
    664      1.15    matt #define IDM_ARMCORE_M0_BASE		0x00000
    665      1.15    matt #define IDM_PCIE_M0_BASE		0x01000
    666      1.15    matt #define IDM_PCIE_M1_BASE		0x02000
    667      1.15    matt #define IDM_PCIE_M2_BASE		0x03000
    668      1.15    matt #define IDM_USB3_BASE			0x05000
    669      1.15    matt #define IDM_ARMCORE_S1_BASE		0x06000
    670      1.15    matt #define IDM_ARMCORE_S0_BASE		0x07000
    671      1.15    matt #define IDM_DDR_S1_BASE			0x08000
    672      1.15    matt #define IDM_DDR_S2_BASE			0x09000
    673      1.15    matt #define IDM_ROM_S0_BASE			0x0d000
    674      1.15    matt #define IDM_AMAC0_BASE			0x10000
    675      1.15    matt #define IDM_AMAC1_BASE			0x11000
    676      1.15    matt #define IDM_AMAC2_BASE			0x12000
    677      1.15    matt #define IDM_AMAC3_BASE			0x13000
    678      1.15    matt #define IDM_DMAC_M0_BASE		0x14000
    679      1.15    matt #define IDM_USB2_BASE			0x15000
    680      1.15    matt #define IDM_SDIO_BASE			0x16000
    681      1.15    matt #define IDM_I2S_M0_BASE			0x17000
    682      1.15    matt #define IDM_A9JTAG_M0_BASE		0x18000
    683      1.16    matt #ifdef BCM5301X
    684      1.15    matt #define IDM_NAND_BASE			0x1a000
    685      1.15    matt #define IDM_QSPI_BASE			0x1b000
    686      1.16    matt #endif
    687      1.16    matt #ifdef BCM563XX
    688      1.16    matt #define IDM_NAND_BASE			0x1b000
    689      1.16    matt #define IDM_QSPI_BASE			0x1c000
    690      1.16    matt #endif
    691       1.1    matt #define IDM_APBX_BASE			0x21000
    692       1.1    matt 
    693      1.15    matt #define IDM_IO_CONTROL_DIRECT		0x0408
    694      1.15    matt #define IDM_IO_STATUS			0x0500
    695      1.15    matt #define IDM_RESET_CONTROL		0x0800
    696      1.15    matt #define IDM_RESET_STATUS		0x0804
    697      1.15    matt #define IDM_INTERRUPT_STATUS		0x0a00
    698      1.15    matt 
    699      1.15    matt #define IO_CONTROL_DIRECT_ARUSER	__BITS(29,25)
    700      1.15    matt #define IO_CONTROL_DIRECT_AWUSER	__BITS(24,20)
    701      1.15    matt #define IO_CONTROL_DIRECT_ARCACHE	__BITS(19,16)
    702      1.15    matt #define IO_CONTROL_DIRECT_AWCACHE	__BITS(10,7)
    703      1.15    matt #define AXCACHE_WA			__BIT(3)
    704      1.15    matt #define AXCACHE_RA			__BIT(2)
    705      1.15    matt #define AXCACHE_C			__BIT(1)
    706      1.15    matt #define AXCACHE_B			__BIT(0)
    707      1.15    matt #define IO_CONTROL_DIRECT_UARTCLKSEL	__BIT(17)
    708      1.15    matt #define IO_CONTROL_DIRECT_CLK_250_SEL	__BIT(6)
    709      1.15    matt #define IO_CONTROL_DIRECT_DIRECT_GMII_MODE	__BIT(5)
    710      1.15    matt #define IO_CONTROL_DIRECT_TX_CLK_OUT_INVERT_EN	__BIT(4)
    711      1.15    matt #define IO_CONTROL_DIRECT_DEST_SYNC_MODE_EN	__BIT(3)
    712      1.15    matt #define IO_CONTROL_DIRECT_SOURCE_SYNC_MODE_EN	__BIT(2)
    713      1.15    matt #define IO_CONTROL_DIRECT_CLK_GATING_EN	__BIT(0)
    714       1.1    matt 
    715      1.15    matt #define RESET_CONTROL_RESET		__BIT(0)
    716       1.1    matt 
    717       1.1    matt #endif /* IDM_PRIVATE */
    718       1.1    matt 
    719      1.11    matt #ifdef USBH_PRIVATE
    720      1.15    matt #define USBH_PHY_CTRL_P0		0x200
    721      1.15    matt #define USBH_PHY_CTRL_P1		0x204
    722      1.11    matt 
    723      1.15    matt #define USBH_PHY_CTRL_INIT		0x3ff
    724      1.11    matt #endif
    725      1.11    matt 
    726       1.1    matt #ifdef GMAC_PRIVATE
    727       1.1    matt 
    728       1.1    matt struct gmac_txdb {
    729       1.1    matt 	uint32_t txdb_flags;
    730       1.6    matt 	uint32_t txdb_buflen;
    731       1.1    matt 	uint32_t txdb_addrlo;
    732       1.1    matt 	uint32_t txdb_addrhi;
    733       1.1    matt };
    734      1.15    matt #define TXDB_FLAG_SF		__BIT(31)	// Start oF Frame
    735      1.15    matt #define TXDB_FLAG_EF		__BIT(30)	// End oF Frame
    736      1.19  andvar #define TXDB_FLAG_IC		__BIT(29)	// Interrupt on Completion
    737      1.15    matt #define TXDB_FLAG_ET		__BIT(28)	// End Of Table
    738       1.1    matt 
    739       1.1    matt struct gmac_rxdb {
    740       1.1    matt 	uint32_t rxdb_flags;
    741       1.6    matt 	uint32_t rxdb_buflen;
    742       1.1    matt 	uint32_t rxdb_addrlo;
    743       1.1    matt 	uint32_t rxdb_addrhi;
    744       1.1    matt };
    745      1.15    matt #define RXDB_FLAG_SF		__BIT(31)	// Start oF Frame (ignored)
    746      1.15    matt #define RXDB_FLAG_EF		__BIT(30)	// End oF Frame (ignored)
    747      1.19  andvar #define RXDB_FLAG_IC		__BIT(29)	// Interrupt on Completion
    748      1.15    matt #define RXDB_FLAG_ET		__BIT(28)	// End Of Table
    749      1.15    matt 
    750      1.15    matt #define RXSTS_FRAMELEN		__BITS(15,0)	// # of bytes (including padding)
    751      1.15    matt #define RXSTS_PKTTYPE		__BITS(17,16)
    752      1.15    matt #define RXSTS_PKTTYPE_UC	0		// Unicast
    753      1.15    matt #define RXSTS_PKTTYPE_MC	1		// Multicast
    754      1.15    matt #define RXSTS_PKTTYPE_BC	2		// Broadcast
    755      1.15    matt #define RXSTS_VLAN_PRESENT	__BIT(18)
    756      1.15    matt #define RXSTS_CRC_ERROR		__BIT(19)
    757      1.15    matt #define RXSTS_OVERSIZED		__BIT(20)
    758      1.15    matt #define RXSTS_CTF_HIT		__BIT(21)
    759      1.15    matt #define RXSTS_CTF_ERROR		__BIT(22)
    760      1.15    matt #define RXSTS_PKT_OVERFLOW	__BIT(23)
    761      1.15    matt #define RXSTS_DESC_COUNT	__BITS(27,24)	// # of descriptors - 1
    762       1.1    matt 
    763      1.15    matt #define GMAC_DEVCONTROL		0x000
    764       1.6    matt #define  ENABLE_DEL_G_TXC	__BIT(21)
    765       1.6    matt #define  ENABLE_DEL_G_RXC	__BIT(20)
    766      1.15    matt #define  TXC_DRNG		__BITS(19,18)
    767      1.15    matt #define  RXC_DRNG		__BITS(17,16)
    768       1.6    matt #define  TXQ_FLUSH		__BIT(8)
    769       1.6    matt #define  NWAY_AUTO_POLL_EN	__BIT(7)
    770       1.6    matt #define  FLOW_CTRL_MODE		__BITS(6,5)
    771       1.6    matt #define  MIB_RD_RESET_EN	__BIT(4)
    772       1.6    matt #define  RGMII_LINK_STATUS_SEL	__BIT(3)
    773       1.6    matt #define  CPU_FLOW_CTRL_ON	__BIT(2)
    774       1.6    matt #define  RXQ_OVERFLOW_CTRL_SEL	__BIT(1)
    775       1.6    matt #define  TXARB_STRICT_MODE	__BIT(0)
    776       1.1    matt #define GMAC_DEVSTATUS		0x004
    777       1.1    matt #define GMAC_BISTSTATUS		0x00c
    778       1.1    matt #define GMAC_INTSTATUS		0x020
    779       1.1    matt #define GMAC_INTMASK		0x024
    780  1.19.4.1   skrll #define  TXQECCUNCORRECTED	__BIT(31)
    781       1.6    matt #define  TXQECCCORRECTED	__BIT(30)
    782       1.6    matt #define  RXQECCUNCORRECTED	__BIT(29)
    783       1.6    matt #define  RXQECCCORRECTED	__BIT(28)
    784       1.6    matt #define  XMTINT_3		__BIT(27)
    785       1.6    matt #define  XMTINT_2		__BIT(26)
    786       1.6    matt #define  XMTINT_1		__BIT(25)
    787       1.6    matt #define  XMTINT_0		__BIT(24)
    788       1.6    matt #define  RCVINT			__BIT(16)
    789       1.6    matt #define  XMTUF			__BIT(15)
    790       1.6    matt #define  RCVFIFOOF		__BIT(14)
    791       1.6    matt #define  RCVDESCUF		__BIT(13)
    792       1.6    matt #define  DESCPROTOERR		__BIT(12)
    793       1.6    matt #define  DATAERR		__BIT(11)
    794       1.6    matt #define  DESCERR		__BIT(10)
    795       1.6    matt #define  INT_SW_LINK_ST_CHG	__BIT(8)
    796       1.6    matt #define  INT_TIMEOUT		__BIT(7)
    797       1.6    matt #define  MIB_TX_INT		__BIT(6)
    798       1.6    matt #define  MIB_RX_INT		__BIT(5)
    799       1.6    matt #define  MDIOINT		__BIT(4)
    800       1.6    matt #define  NWAYLINKSTATINT	__BIT(3)
    801       1.6    matt #define  TXQ_FLUSH_DONEINT	__BIT(2)
    802       1.6    matt #define  MIB_TX_OVERFLOW	__BIT(1)
    803       1.6    matt #define  MIB_RX_OVERFLOW	__BIT(0)
    804       1.1    matt #define GMAC_GPTIMER		0x028
    805       1.1    matt 
    806       1.1    matt #define GMAC_INTRCVLAZY		0x100
    807       1.7    matt #define  INTRCVLAZY_FRAMECOUNT	__BITS(31,24)
    808       1.7    matt #define  INTRCVLAZY_TIMEOUT	__BITS(23,0)
    809       1.1    matt #define GMAC_FLOWCNTL_TH	0x104
    810       1.1    matt #define GMAC_TXARB_WRR_TH	0x108
    811       1.1    matt #define GMAC_GMACIDLE_CNT_TH	0x10c
    812       1.1    matt 
    813       1.1    matt #define GMAC_FIFOACCESSADDR	0x120
    814       1.1    matt #define GMAC_FIFOACCESSBYTE	0x124
    815       1.1    matt #define GMAC_FIFOACCESSDATA	0x128
    816       1.1    matt 
    817       1.1    matt #define GMAC_PHYACCESS		0x180
    818       1.1    matt #define GMAC_PHYCONTROL		0x188
    819       1.1    matt #define GMAC_TXQCONTROL		0x18c
    820       1.1    matt #define GMAC_RXQCONTROL		0x190
    821       1.1    matt #define GMAC_GPIOSELECT		0x194
    822       1.1    matt #define GMAC_GPIOOUTPUTEN	0x198
    823       1.1    matt #define GMAC_TXQRXQMEMORYCONTROL	0x1a0
    824       1.1    matt #define GMAC_MEMORYECCSTATUS	0x1a4
    825       1.1    matt 
    826       1.1    matt #define GMAC_CLOCKCONTROLSTATUS	0x1e0
    827       1.1    matt #define GMAC_POWERCONTROL	0x1e8
    828       1.1    matt 
    829       1.6    matt #define GMAC_XMTCONTROL		0x200
    830       1.6    matt #define  XMTCTL_PREFETCH_THRESH	__BITS(25,24)
    831       1.6    matt #define  XMTCTL_PREFETCH_CTL	__BITS(23,21)
    832       1.6    matt #define  XMTCTL_BURSTLEN	__BITS(20,18)
    833       1.6    matt #define  XMTCTL_ADDREXT		__BITS(17,16)
    834       1.6    matt #define  XMTCTL_DMA_ACT_INDEX	__BIT(13)
    835       1.6    matt #define  XMTCTL_PARITY_DIS	__BIT(11)
    836       1.6    matt #define  XMTCTL_OUTSTANDING_READS __BITS(7,6)
    837       1.6    matt #define  XMTCTL_BURST_ALIGN_EN	__BIT(5)
    838       1.6    matt #define  XMTCTL_DMA_LOOPBACK	__BIT(2)
    839       1.6    matt #define  XMTCTL_SUSPEND		__BIT(1)
    840       1.6    matt #define  XMTCTL_ENABLE		__BIT(0)
    841       1.6    matt #define GMAC_XMTPTR             0x204
    842       1.6    matt #define  XMT_LASTDSCR		__BITS(11,4)
    843       1.6    matt #define GMAC_XMTADDR_LOW        0x208
    844       1.6    matt #define GMAC_XMTADDR_HIGH       0x20c
    845       1.6    matt #define GMAC_XMTSTATUS0         0x210
    846       1.6    matt #define  XMTSTATE		__BITS(31,28)
    847       1.6    matt #define  XMTSTATE_DIS		0
    848       1.6    matt #define  XMTSTATE_ACTIVE	1
    849       1.6    matt #define  XMTSTATE_IDLE_WAIT	2
    850       1.6    matt #define  XMTSTATE_STOPPED	3
    851       1.6    matt #define  XMTSTATE_SUSP_PENDING	4
    852       1.6    matt #define  XMT_CURRDSCR		__BITS(11,4)
    853       1.6    matt #define GMAC_XMTSTATUS1         0x214
    854       1.6    matt #define  XMTERR			__BITS(31,28)
    855       1.6    matt #define  XMT_ACTIVEDSCR		__BITS(11,4)
    856       1.6    matt #define GMAC_RCVCONTROL         0x220
    857       1.6    matt #define  RCVCTL_PREFETCH_THRESH	__BITS(25,24)
    858       1.6    matt #define  RCVCTL_PREFETCH_CTL	__BITS(23,21)
    859       1.6    matt #define  RCVCTL_BURSTLEN	__BITS(20,18)
    860       1.6    matt #define  RCVCTL_ADDREXT		__BITS(17,16)
    861       1.6    matt #define  RCVCTL_DMA_ACT_INDEX	__BIT(13)
    862       1.6    matt #define  RCVCTL_PARITY_DIS	__BIT(11)
    863       1.6    matt #define  RCVCTL_OFLOW_CONTINUE	__BIT(10)
    864       1.6    matt #define  RCVCTL_SEPRXHDRDESC	__BIT(9)
    865       1.6    matt #define  RCVCTL_RCVOFFSET	__BITS(7,1)
    866       1.6    matt #define  RCVCTL_ENABLE		__BIT(0)
    867       1.1    matt #define GMAC_RCVPTR		0x224
    868      1.15    matt #define  RCVPTR			__BITS(11,4)
    869       1.1    matt #define GMAC_RCVADDR_LOW	0x228
    870       1.1    matt #define GMAC_RCVADDR_HIGH	0x22c
    871       1.1    matt #define GMAC_RCVSTATUS0		0x230
    872       1.6    matt #define  RCVSTATE		__BITS(31,28)
    873       1.6    matt #define  RCVSTATE_DIS		0
    874       1.6    matt #define  RCVSTATE_ACTIVE	1
    875       1.6    matt #define  RCVSTATE_IDLE_WAIT	2
    876       1.6    matt #define  RCVSTATE_STOPPED	3
    877       1.6    matt #define  RCVSTATE_SUSP_PENDING	4
    878       1.6    matt #define  RCV_CURRDSCR		__BITS(11,4)
    879       1.1    matt #define GMAC_RCVSTATUS1		0x234
    880       1.6    matt #define  RCV_ACTIVEDSCR		__BITS(11,4)
    881       1.1    matt 
    882       1.1    matt #define GMAC_TX_GD_OCTETS_LO	0x300
    883       1.1    matt 
    884       1.1    matt 
    885      1.15    matt #define UNIMAC_IPG_HD_BPG_CNTL	0x804
    886      1.15    matt #define UNIMAC_COMMAND_CONFIG	0x808
    887       1.6    matt #define  RUNT_FILTER_DIS	__BIT(30)
    888       1.6    matt #define  OOB_EFC_EN		__BIT(29)
    889       1.6    matt #define  IGNORE_TX_PAUSE	__BIT(28)
    890       1.6    matt #define  PRBL_ENA		__BIT(27)
    891       1.6    matt #define  RX_ERR_DIS		__BIT(26)
    892       1.6    matt #define  LINE_LOOPBACK		__BIT(25)
    893       1.6    matt #define  NO_LENGTH_CHECK	__BIT(24)
    894       1.6    matt #define  CNTRL_FRM_ENA		__BIT(23)
    895       1.6    matt #define  ENA_EXT_CONFIG		__BIT(22)
    896       1.6    matt #define  EN_INTERNAL_TX_CRS	__BIT(21)
    897       1.6    matt #define  SW_OVERRIDE_RX		__BIT(18)
    898       1.6    matt #define  SW_OVERRIDE_TX		__BIT(17)
    899       1.6    matt #define  MAC_LOOP_CON		__BIT(16)
    900       1.6    matt #define  LOOP_ENA		__BIT(15)
    901       1.6    matt #define  RCS_CORRUPT_URUN_EN	__BIT(14)
    902       1.6    matt #define  SW_RESET		__BIT(13)
    903       1.6    matt #define  OVERFLOW_EN		__BIT(12)
    904       1.6    matt #define  RX_LOW_LATENCY_EN	__BIT(11)
    905       1.6    matt #define  HD_ENA			__BIT(10)
    906       1.6    matt #define  TX_ADDR_INS		__BIT(9)
    907  1.19.4.1   skrll #define  PAUSE_IGNORE		__BIT(8)
    908  1.19.4.1   skrll #define  PAUSE_FWD		__BIT(7)
    909  1.19.4.1   skrll #define  CRC_FWD		__BIT(6)
    910  1.19.4.1   skrll #define  PAD_EN			__BIT(5)
    911  1.19.4.1   skrll #define  PROMISC_EN		__BIT(4)
    912       1.6    matt #define  ETH_SPEED		__BITS(3,2)
    913       1.6    matt #define  ETH_SPEED_10		0
    914       1.6    matt #define  ETH_SPEED_100		1
    915       1.6    matt #define  ETH_SPEED_1000		2
    916       1.6    matt #define  ETH_SPEED_2500		3
    917  1.19.4.1   skrll #define  RX_ENA			__BIT(1)
    918  1.19.4.1   skrll #define  TX_ENA			__BIT(0)
    919      1.15    matt #define UNIMAC_MAC_0		0x80c		// bits 16:47 of macaddr
    920      1.15    matt #define UNIMAC_MAC_1		0x810		// bits 0:15 of macaddr
    921      1.15    matt #define UNIMAC_FRAME_LEN	0x814
    922      1.15    matt #define UNIMAC_PAUSE_QUANTA	0x818
    923      1.15    matt #define UNIMAC_TX_TS_SEQ_ID	0x83c
    924      1.15    matt #define UNIMAC_MAC_MODE		0x844
    925      1.15    matt #define UNIMAC_TAG_0		0x848
    926      1.15    matt #define UNIMAC_TAG_1		0x84c
    927      1.15    matt #define UNIMAC_RX_PAUSE_QUANTA_SCALE	0x850
    928      1.15    matt #define UNIMAC_TX_PREAMBLE	0x854
    929      1.15    matt #define UNIMAC_TX_IPG_LENGTH	0x85c
    930      1.15    matt #define UNIMAC_PRF_XOFF_TIMER	0x860
    931      1.15    matt #define UNIMAC_UMAC_EEE_CTRL	0x864
    932      1.15    matt #define UNIMAC_MII_EEE_DELAY_ENTRY_TIMER	0x868
    933      1.15    matt #define UNIMAC_GMII_EEE_DELAY_ENTRY_TIMER	0x86c
    934      1.15    matt #define UNIMAC_UMAC_EEE_REF_COUNT	0x870
    935      1.15    matt #define UNIMAC_UMAX_RX_PKT_DROP_STATUS	0x878
    936       1.1    matt 
    937       1.1    matt #define UNIMAC_UMAC_SYMMETRIC_IDLE_THRESHOLD	0x87c // RX IDLE threshold for LPI prediction
    938       1.1    matt #define UNIMAC_MII_EEE_WAKE_TIMER	0x880 // MII_EEE Wake timer
    939       1.1    matt #define UNIMAC_GMII_EEE_WAKE_TIMER	0x884 // GMII_EEE Wake timer
    940       1.1    matt #define UNIMAC_UMAC_REV_ID	0x888 // UNIMAC_REV_ID
    941       1.1    matt #define UNIMAC_MAC_PFC_TYPE	0xb00 // Programmable ethertype (GNAT 13440)
    942       1.1    matt #define UNIMAC_MAC_PFC_OPCODE	0xb04 // Programmable opcode (GNAT 13440)
    943       1.1    matt #define UNIMAC_MAC_PFC_DA_0	0xb08 // lower 32 bits of programmable DA for PPP (GNAT 13897)
    944       1.1    matt #define UNIMAC_MAC_PFC_DA_1	0xb0c // upper 16 bits of programmable DA for PPP (GNAT 13897)
    945       1.1    matt #define UNIMAC_MACSEC_CNTRL	0xb14 // Miscellaneous control for MACSEC (GNAT 11599,11600,12078,12198)
    946       1.1    matt #define UNIMAC_TS_STATUS_CNTRL	0xb18 // Timestamp control/status
    947       1.1    matt #define UNIMAC_TX_TS_DATA	0xb1c // Transmit Timestamp data
    948       1.1    matt #define UNIMAC_PAUSE_CONTROL	0xb30 // PAUSE frame timer control register
    949       1.1    matt #define UNIMAC_FLUSH_CONTROL	0xb34 // Flush enable control register
    950       1.1    matt #define UNIMAC_RXFIFO_STAT	0xb38 // RXFIFO status register
    951       1.1    matt #define UNIMAC_TXFIFO_STAT	0xb3c // TXFIFO status register
    952       1.1    matt #define UNIMAC_MAC_PFC_CTRL	0xb40 // PPP control register
    953       1.1    matt #define UNIMAC_MAC_PFC_REFRESH_CTRL	0xb44 // PPP refresh control register
    954       1.1    matt 
    955       1.1    matt #endif /* GMAC_PRIVATE */
    956       1.1    matt 
    957      1.14    matt #ifdef NAND_PRIVATE
    958      1.14    matt 
    959      1.14    matt #define NAND_REVISION		0x0000	// NAND Revision
    960      1.14    matt #define NAND_CMD_START		0x0004	// Nand Flash Command Start
    961      1.14    matt #define NAND_CMD_EXT_ADDR	0x0008	// Nand Flash Command Extended Address
    962      1.14    matt #define NAND_CMD_ADDR	0x000c	// Nand Flash Command Address
    963      1.14    matt #define NAND_CMD_END_ADDR	0x0010	// Nand Flash Command End Address
    964      1.14    matt #define NAND_INTFC_STATUS	0x0014	// Nand Flash Interface Status
    965      1.16    matt #define NAND_CS_NAND_SELECT	0x0018	// Nand Flash CS
    966      1.14    matt #define NAND_CS_NAND_XOR	0x001c	// Nand Flash EBI
    967      1.14    matt #define NAND_LL_OP		0x0020	// Nand Flash Low Level Operation
    968      1.14    matt #define NAND_MPLANE_BASE_EXT_ADDR	0x0024	// Nand Flash Multiplane base address
    969      1.14    matt #define NAND_MPLANE_BASE_ADDR	0x0028	// Nand Flash Multiplane base address
    970      1.14    matt #define NAND_ACC_CONTROL_CS0	0x0050	// Nand Flash Access Control
    971      1.14    matt #define NAND_CONFIG_CS0		0x0054	// Nand Flash Config
    972      1.14    matt #define NAND_TIMING_1_CS0	0x0058	// Nand Flash Timing Parameters 1
    973      1.14    matt #define NAND_TIMING_2_CS0	0x005c	// Nand Flash Timing Parameters 2
    974      1.14    matt #define NAND_ACC_CONTROL_CS1	0x0060	// Nand Flash Access Control
    975      1.14    matt #define NAND_CONFIG_CS1		0x0064	// Nand Flash
    976      1.14    matt #define NAND_TIMING_1_CS1	0x0068	// Nand Flash Timing Parameters 1
    977      1.14    matt #define NAND_TIMING_2_CS1	0x006c	// Nand Flash Timing Parameters 2
    978      1.14    matt #define NAND_CORR_STAT_THRESHOLD	0x00c0	// Correctable Error Reporting Threshold
    979      1.14    matt #define NAND_BLK_WR_PROTECT	0x00c8	// Block Write Protect Enable and Size for EBI_CS0b
    980      1.14    matt #define NAND_MULTIPLANE_OPCODES_1	0x00cc	// Nand Flash Multiplane Customized Opcodes
    981      1.14    matt #define NAND_MULTIPLANE_OPCODES_2	0x00d0	// Nand Flash Multiplane Customized Opcodes
    982      1.14    matt #define NAND_MULTIPLANE_CTRL	0x00d4	// Nand Flash Multiplane Control
    983      1.14    matt #define NAND_UNCORR_ERROR_COUNT	0x00fc	// Read Uncorrectable Event Count
    984      1.14    matt #define NAND_CORR_ERROR_COUNT	0x0100	// Read Error Count
    985      1.14    matt #define NAND_READ_ERROR_COUNT	0x0104	// Read Error Count
    986      1.14    matt #define NAND_BLOCK_LOCK_STATUS	0x0108	// Nand Flash Block Lock Status
    987      1.14    matt #define NAND_ECC_CORR_EXT_ADDR	0x010c	// ECC Correctable Error Extended Address
    988      1.14    matt #define NAND_ECC_CORR_ADDR	0x0110	// ECC Correctable Error Address
    989      1.14    matt #define NAND_ECC_UNC_EXT_ADDR	0x0114	// ECC Uncorrectable Error Extended Address
    990      1.14    matt #define NAND_ECC_UNC_ADDR	0x0118	// ECC Uncorrectable Error Address
    991      1.14    matt #define NAND_FLASH_READ_EXT_ADDR	0x011c	// Flash Read Data Extended Address
    992      1.14    matt #define NAND_FLASH_READ_ADDR	0x0120	// Flash Read Data Address
    993      1.14    matt #define NAND_PROGRAM_PAGE_EXT_ADDR	0x0124	// Page Program Extended Address
    994      1.14    matt #define NAND_PROGRAM_PAGE_ADDR	0x0128	// Page Program Address
    995      1.14    matt #define NAND_COPY_BACK_EXT_ADDR	0x012c	// Copy Back Extended Address
    996      1.14    matt #define NAND_COPY_BACK_ADDR	0x0130	// Copy Back Address
    997      1.14    matt #define NAND_BLOCK_ERASE_EXT_ADDR	0x0134	// Block Erase Extended Address
    998      1.14    matt #define NAND_BLOCK_ERASE_ADDR	0x0138	// Block Erase Address
    999      1.14    matt #define NAND_INV_READ_EXT_ADDR	0x013c	// Flash Invalid Data Extended Address
   1000      1.14    matt #define NAND_INV_READ_ADDR	0x0140	// Flash Invalid Data Address
   1001      1.14    matt #define NAND_INIT_STATUS	0x0144	// Initialization status
   1002      1.14    matt #define NAND_ONFI_STATUS	0x0148	// ONFI Status
   1003      1.14    matt #define NAND_ONFI_DEBUG_DATA	0x014c	// ONFI Debug Data
   1004      1.14    matt #define NAND_SEMAPHORE		0x0150	// Semaphore
   1005      1.14    matt #define NAND_FLASH_DEVICE_ID	0x0194	// Nand Flash Device ID
   1006      1.14    matt #define NAND_FLASH_DEVICE_ID_EXT	0x0198	// Nand Flash Extended Device ID
   1007      1.14    matt #define NAND_LL_RDDATA		0x019c	// Nand Flash Low Level Read Data
   1008      1.14    matt 
   1009      1.14    matt #define NAND_SPARE_AREA_READ_OFSn(n)	(0x0200+4*(n)) // Nand Flash Spare Area Read Bytes
   1010      1.14    matt #define NAND_SPARE_AREA_WRITE_OFSn(n)	(0x0280+4*(n)) // Nand Flash Spare Area Write Bytes 8-11
   1011      1.14    matt #define NAND_FLASH_CACHEn(n)	(0x0400+4*(n))	// Flash Cache Buffer Read Access
   1012      1.14    matt 
   1013      1.14    matt #define NAND_DIRECT_READ_RD_MISS	0x0f00	// Interrupt from Nand indicating a read miss on internal memory
   1014      1.14    matt #define NAND_BLOCK_ERASE_COMPLETE	0x0f04	// Interrupt from Nand indicating block erase
   1015      1.14    matt #define NAND_COPY_BACK_COMPLETE	0x0f08	// Interrupt from Nand indicating Copy-Back complete.
   1016      1.14    matt #define NAND_PROGRAM_PAGE_COMPLETE	0x0f0c	// Interrupt from nand indicating page program is complete.
   1017      1.14    matt #define NAND_RO_CTLR_READY	0x0f10	// Interrupt from nand indicating controller ready
   1018      1.14    matt #define NAND_NAND_RB_B		0x0f14	// Interrupt from nand indicating status of Nand Flash ready_bus pin
   1019      1.14    matt #define NAND_ECC_MIPS_UNCORR	0x0f18	// Interrupt from Nand indicating Uncorrectable error
   1020      1.14    matt #define NAND_ECC_MIPS_CORR	0x0f1c	// Interrupt from Nand indicating correctable error
   1021      1.14    matt 
   1022      1.15    matt #define NAND_CMD_START_OPCODE	__BITS(28,24)
   1023      1.14    matt #define  NAND_CMD_START_OPCODE_DEFAULT			0
   1024      1.14    matt #define  NAND_CMD_START_OPCODE_NULL			0
   1025      1.14    matt #define  NAND_CMD_START_OPCODE_PAGE_READ		1
   1026      1.14    matt #define  NAND_CMD_START_OPCODE_SPARE_AREA_READ		2
   1027      1.14    matt #define  NAND_CMD_START_OPCODE_STATUS_READ		3
   1028      1.14    matt #define  NAND_CMD_START_OPCODE_PROGRAM_PAGE		4
   1029      1.14    matt #define  NAND_CMD_START_OPCODE_PROGRAM_SPARE_AREA	5
   1030      1.14    matt #define  NAND_CMD_START_OPCODE_COPY_BACK		6
   1031      1.14    matt #define  NAND_CMD_START_OPCODE_DEVICE_ID_READ		7
   1032      1.14    matt #define  NAND_CMD_START_OPCODE_BLOCK_ERASE		8
   1033      1.14    matt #define  NAND_CMD_START_OPCODE_FLASH_RESET		9
   1034      1.14    matt #define  NAND_CMD_START_OPCODE_BLOCKS_LOCK		10
   1035      1.14    matt #define  NAND_CMD_START_OPCODE_BLOCKS_LOCK_DOWN		11
   1036      1.14    matt #define  NAND_CMD_START_OPCODE_BLOCKS_UNLOCK		12
   1037      1.14    matt #define  NAND_CMD_START_OPCODE_READ_BLOCKS_LOCK_STATUS	13
   1038      1.14    matt #define  NAND_CMD_START_OPCODE_PARAMETER_READ		14
   1039      1.14    matt #define  NAND_CMD_START_OPCODE_PARAMETER_CHANGE_COL	15
   1040      1.14    matt #define  NAND_CMD_START_OPCODE_LOW_LEVEL_OP		16
   1041      1.14    matt #define  NAND_CMD_START_OPCODE_PAGE_READ_MULTI		17
   1042      1.14    matt #define  NAND_CMD_START_OPCODE_STATUS_READ_MULTI	18
   1043      1.14    matt #define  NAND_CMD_START_OPCODE_PROGRAM_PAGE_MULTI	19
   1044      1.14    matt #define  NAND_CMD_START_OPCODE_PROGRAM_PAGE_MULTI_CACHE	20
   1045      1.14    matt #define  NAND_CMD_START_OPCODE_BLOCK_ERASE_MULTI	21
   1046      1.15    matt #define NAND_CMD_START_CSEL	__BITS(18,16)
   1047      1.15    matt #define NAND_CMD_EXT_ADDRESS	__BITS(15,0)
   1048      1.14    matt 
   1049      1.16    matt #define BCM_NAND_IDM_IO_CONTROL_APB_LE_MODE_BIT		__BIT(24)
   1050      1.16    matt 
   1051      1.16    matt 
   1052      1.14    matt #endif /* NAND_PRIVATE */
   1053      1.14    matt 
   1054       1.1    matt #endif /* _ARM_BROADCOM_BCM53XX_REG_H_ */
   1055