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