xref: /freebsd/sys/arm/mv/mvreg.h (revision d25a708ba7737cd31dfc109f82efed4713290e49)
1373bbe25SRafal Jaworowski /*-
251369649SPedro F. Giffuni  * SPDX-License-Identifier: BSD-3-Clause
351369649SPedro F. Giffuni  *
416694521SOleksandr Tymoshenko  * Copyright (C) 2007-2011 MARVELL INTERNATIONAL LTD.
5373bbe25SRafal Jaworowski  * All rights reserved.
6373bbe25SRafal Jaworowski  *
7373bbe25SRafal Jaworowski  * Developed by Semihalf.
8373bbe25SRafal Jaworowski  *
9373bbe25SRafal Jaworowski  * Redistribution and use in source and binary forms, with or without
10373bbe25SRafal Jaworowski  * modification, are permitted provided that the following conditions
11373bbe25SRafal Jaworowski  * are met:
12373bbe25SRafal Jaworowski  * 1. Redistributions of source code must retain the above copyright
13373bbe25SRafal Jaworowski  *    notice, this list of conditions and the following disclaimer.
14373bbe25SRafal Jaworowski  * 2. Redistributions in binary form must reproduce the above copyright
15373bbe25SRafal Jaworowski  *    notice, this list of conditions and the following disclaimer in the
16373bbe25SRafal Jaworowski  *    documentation and/or other materials provided with the distribution.
17373bbe25SRafal Jaworowski  * 3. Neither the name of MARVELL nor the names of contributors
18373bbe25SRafal Jaworowski  *    may be used to endorse or promote products derived from this software
19373bbe25SRafal Jaworowski  *    without specific prior written permission.
20373bbe25SRafal Jaworowski  *
21373bbe25SRafal Jaworowski  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
22373bbe25SRafal Jaworowski  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23373bbe25SRafal Jaworowski  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24373bbe25SRafal Jaworowski  * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
25373bbe25SRafal Jaworowski  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26373bbe25SRafal Jaworowski  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27373bbe25SRafal Jaworowski  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28373bbe25SRafal Jaworowski  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29373bbe25SRafal Jaworowski  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30373bbe25SRafal Jaworowski  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31373bbe25SRafal Jaworowski  * SUCH DAMAGE.
32373bbe25SRafal Jaworowski  */
33373bbe25SRafal Jaworowski 
34373bbe25SRafal Jaworowski #ifndef _MVREG_H_
35373bbe25SRafal Jaworowski #define _MVREG_H_
36373bbe25SRafal Jaworowski 
37223e0cfdSZbigniew Bodek #include <arm/mv/mvwin.h>
38223e0cfdSZbigniew Bodek 
3916694521SOleksandr Tymoshenko #define IRQ_CAUSE		0x0
4016694521SOleksandr Tymoshenko #define IRQ_MASK		0x4
4116694521SOleksandr Tymoshenko #define FIQ_MASK		0x8
4216694521SOleksandr Tymoshenko #define ENDPOINT_IRQ_MASK(n)	0xC
43373bbe25SRafal Jaworowski #define IRQ_CAUSE_HI		0x10
44373bbe25SRafal Jaworowski #define IRQ_MASK_HI		0x14
45373bbe25SRafal Jaworowski #define FIQ_MASK_HI		0x18
4616694521SOleksandr Tymoshenko #define ENDPOINT_IRQ_MASK_HI(n)	0x1C
4716694521SOleksandr Tymoshenko #define ENDPOINT_IRQ_MASK_ERROR(n) (-1)
48373bbe25SRafal Jaworowski #define IRQ_CAUSE_ERROR		(-1)		/* Fake defines for unified */
49373bbe25SRafal Jaworowski #define IRQ_MASK_ERROR		(-1)		/* interrupt controller code */
50373bbe25SRafal Jaworowski 
51244af1d4SMarcin Wojtas #define MAIN_IRQ_NUM		116
52244af1d4SMarcin Wojtas #define ERR_IRQ_NUM		32
53244af1d4SMarcin Wojtas #define ERR_IRQ			(MAIN_IRQ_NUM)
54244af1d4SMarcin Wojtas #define MSI_IRQ			(ERR_IRQ + ERR_IRQ_NUM)
55244af1d4SMarcin Wojtas 
56244af1d4SMarcin Wojtas #define MSI_IRQ_NUM		32
57244af1d4SMarcin Wojtas 
58244af1d4SMarcin Wojtas #define IRQ_CPU_SELF		0x00000001
59789bbd4dSMarcin Wojtas #define	BRIDGE_IRQ_CAUSE_ARMADAXP	0x68
60789bbd4dSMarcin Wojtas #define	IRQ_TIMER0_ARMADAXP		0x00000001
61789bbd4dSMarcin Wojtas #define	IRQ_TIMER1_ARMADAXP		0x00000002
62789bbd4dSMarcin Wojtas #define	IRQ_TIMER_WD_ARMADAXP		0x00000004
63789bbd4dSMarcin Wojtas 
64373bbe25SRafal Jaworowski #define BRIDGE_IRQ_CAUSE	0x10
65373bbe25SRafal Jaworowski #define IRQ_CPU_SELF		0x00000001
66373bbe25SRafal Jaworowski #define IRQ_TIMER0		0x00000002
67373bbe25SRafal Jaworowski #define IRQ_TIMER1		0x00000004
68373bbe25SRafal Jaworowski #define IRQ_TIMER_WD		0x00000008
69373bbe25SRafal Jaworowski 
70373bbe25SRafal Jaworowski #define BRIDGE_IRQ_MASK		0x14
71373bbe25SRafal Jaworowski #define IRQ_CPU_MASK		0x00000001
72373bbe25SRafal Jaworowski #define IRQ_TIMER0_MASK		0x00000002
73373bbe25SRafal Jaworowski #define IRQ_TIMER1_MASK		0x00000004
74373bbe25SRafal Jaworowski #define IRQ_TIMER_WD_MASK	0x00000008
7516694521SOleksandr Tymoshenko 
7616694521SOleksandr Tymoshenko #define IRQ_CPU_SELF_CLR	(~IRQ_CPU_SELF)
7716694521SOleksandr Tymoshenko #define IRQ_TIMER0_CLR		(~IRQ_TIMER0)
7816694521SOleksandr Tymoshenko #define IRQ_TIMER_WD_CLR	(~IRQ_TIMER_WD)
79373bbe25SRafal Jaworowski 
80789bbd4dSMarcin Wojtas #define	IRQ_TIMER0_CLR_ARMADAXP		(~IRQ_TIMER0_ARMADAXP)
81789bbd4dSMarcin Wojtas #define	IRQ_TIMER_WD_CLR_ARMADAXP	(~IRQ_TIMER_WD_ARMADAXP)
82789bbd4dSMarcin Wojtas 
83373bbe25SRafal Jaworowski /*
84373bbe25SRafal Jaworowski  * System reset
85373bbe25SRafal Jaworowski  */
8604bb9a66SMarcin Wojtas #define	RSTOUTn_MASK_ARMV7	0x60
8704bb9a66SMarcin Wojtas #define	SYSTEM_SOFT_RESET_ARMV7	0x64
8804bb9a66SMarcin Wojtas #define	SOFT_RST_OUT_EN_ARMV7	0x00000001
8904bb9a66SMarcin Wojtas #define	SYS_SOFT_RST_ARMV7	0x00000001
9004bb9a66SMarcin Wojtas 
91373bbe25SRafal Jaworowski #define RSTOUTn_MASK		0x8
92373bbe25SRafal Jaworowski #define SOFT_RST_OUT_EN		0x00000004
93373bbe25SRafal Jaworowski #define SYSTEM_SOFT_RESET	0xc
94373bbe25SRafal Jaworowski #define SYS_SOFT_RST		0x00000001
95d100eecfSMarcin Wojtas #define RSTOUTn_MASK_WD		0x400
96d100eecfSMarcin Wojtas #define WD_RSTOUTn_MASK		0x4
97d100eecfSMarcin Wojtas #define WD_GLOBAL_MASK		0x00000100
98d100eecfSMarcin Wojtas #define WD_CPU0_MASK		0x00000001
99d100eecfSMarcin Wojtas #define WD_RST_OUT_EN		0x00000002
100373bbe25SRafal Jaworowski 
101373bbe25SRafal Jaworowski /*
102373bbe25SRafal Jaworowski  * Power Control
103373bbe25SRafal Jaworowski  */
104373bbe25SRafal Jaworowski #define CPU_PM_CTRL		0x1C
105373bbe25SRafal Jaworowski #define CPU_PM_CTRL_NONE	0
1065694b144SRafal Jaworowski #define CPU_PM_CTRL_ALL		~0x0
107373bbe25SRafal Jaworowski 
1085694b144SRafal Jaworowski #define CPU_PM_CTRL_CRYPTO	(CPU_PM_CTRL_NONE)
1095694b144SRafal Jaworowski #define CPU_PM_CTRL_IDMA	(CPU_PM_CTRL_NONE)
1105694b144SRafal Jaworowski #define CPU_PM_CTRL_XOR		(CPU_PM_CTRL_NONE)
1115694b144SRafal Jaworowski #define CPU_PM_CTRL_SATA	(CPU_PM_CTRL_NONE)
1125694b144SRafal Jaworowski #define CPU_PM_CTRL_USB(u)	(CPU_PM_CTRL_NONE)
113db5ef4fcSRafal Jaworowski #define CPU_PM_CTRL_GE(u)	(CPU_PM_CTRL_NONE)
114373bbe25SRafal Jaworowski 
115373bbe25SRafal Jaworowski /*
116373bbe25SRafal Jaworowski  * Timers
117373bbe25SRafal Jaworowski  */
11816694521SOleksandr Tymoshenko #define CPU_TIMERS_BASE		0x300
119373bbe25SRafal Jaworowski #define CPU_TIMER_CONTROL	0x0
120373bbe25SRafal Jaworowski #define CPU_TIMER0_EN		0x00000001
121373bbe25SRafal Jaworowski #define CPU_TIMER0_AUTO		0x00000002
122373bbe25SRafal Jaworowski #define CPU_TIMER1_EN		0x00000004
123373bbe25SRafal Jaworowski #define CPU_TIMER1_AUTO		0x00000008
124786e3feaSZbigniew Bodek #define	CPU_TIMER2_EN		0x00000010
125786e3feaSZbigniew Bodek #define	CPU_TIMER2_AUTO		0x00000020
126786e3feaSZbigniew Bodek #define	CPU_TIMER_WD_EN		0x00000100
127786e3feaSZbigniew Bodek #define	CPU_TIMER_WD_AUTO	0x00000200
128046b51bfSGrzegorz Bernacki /* 25MHz mode is Armada XP - specific */
129046b51bfSGrzegorz Bernacki #define CPU_TIMER_WD_25MHZ_EN	0x00000400
130046b51bfSGrzegorz Bernacki #define CPU_TIMER0_25MHZ_EN	0x00000800
131046b51bfSGrzegorz Bernacki #define CPU_TIMER1_25MHZ_EN	0x00001000
132373bbe25SRafal Jaworowski #define CPU_TIMER0_REL		0x10
133373bbe25SRafal Jaworowski #define CPU_TIMER0		0x14
134373bbe25SRafal Jaworowski 
135373bbe25SRafal Jaworowski /*
1369d021439SRafal Jaworowski  * SATA
1379d021439SRafal Jaworowski  */
1389d021439SRafal Jaworowski #define SATA_CHAN_NUM			2
1399d021439SRafal Jaworowski 
1409d021439SRafal Jaworowski #define EDMA_REGISTERS_OFFSET		0x2000
1419d021439SRafal Jaworowski #define EDMA_REGISTERS_SIZE		0x2000
1429d021439SRafal Jaworowski #define SATA_EDMA_BASE(ch)		(EDMA_REGISTERS_OFFSET + \
1439d021439SRafal Jaworowski     ((ch) * EDMA_REGISTERS_SIZE))
1449d021439SRafal Jaworowski 
1459d021439SRafal Jaworowski /* SATAHC registers */
1469d021439SRafal Jaworowski #define SATA_CR				0x000 /* Configuration Reg. */
1479d021439SRafal Jaworowski #define SATA_CR_NODMABS			(1 << 8)
1489d021439SRafal Jaworowski #define SATA_CR_NOEDMABS		(1 << 9)
1499d021439SRafal Jaworowski #define SATA_CR_NOPRDPBS		(1 << 10)
1509d021439SRafal Jaworowski #define SATA_CR_COALDIS(ch)		(1 << (24 + ch))
1519d021439SRafal Jaworowski 
15216694521SOleksandr Tymoshenko /* Interrupt Coalescing Threshold Reg. */
15316694521SOleksandr Tymoshenko #define SATA_ICTR			0x00C
15416694521SOleksandr Tymoshenko #define SATA_ICTR_MAX			((1 << 8) - 1)
15516694521SOleksandr Tymoshenko 
15616694521SOleksandr Tymoshenko /* Interrupt Time Threshold Reg. */
15716694521SOleksandr Tymoshenko #define SATA_ITTR			0x010
15816694521SOleksandr Tymoshenko #define SATA_ITTR_MAX			((1 << 24) - 1)
15916694521SOleksandr Tymoshenko 
1609d021439SRafal Jaworowski #define SATA_ICR			0x014 /* Interrupt Cause Reg. */
1619d021439SRafal Jaworowski #define SATA_ICR_DMADONE(ch)		(1 << (ch))
1629d021439SRafal Jaworowski #define SATA_ICR_COAL			(1 << 4)
1639d021439SRafal Jaworowski #define SATA_ICR_DEV(ch)		(1 << (8 + ch))
1649d021439SRafal Jaworowski 
1659d021439SRafal Jaworowski #define SATA_MICR			0x020 /* Main Interrupt Cause Reg. */
1669d021439SRafal Jaworowski #define SATA_MICR_ERR(ch)		(1 << (2 * ch))
1679d021439SRafal Jaworowski #define SATA_MICR_DONE(ch)		(1 << ((2 * ch) + 1))
1689d021439SRafal Jaworowski #define SATA_MICR_DMADONE(ch)		(1 << (4 + ch))
1699d021439SRafal Jaworowski #define SATA_MICR_COAL			(1 << 8)
1709d021439SRafal Jaworowski 
1719d021439SRafal Jaworowski #define SATA_MIMR			0x024 /*  Main Interrupt Mask Reg. */
1729d021439SRafal Jaworowski 
1739d021439SRafal Jaworowski /* Shadow registers */
1749d021439SRafal Jaworowski #define SATA_SHADOWR_BASE(ch)		(SATA_EDMA_BASE(ch) + 0x100)
1759d021439SRafal Jaworowski #define SATA_SHADOWR_CONTROL(ch)	(SATA_EDMA_BASE(ch) + 0x120)
1769d021439SRafal Jaworowski 
1779d021439SRafal Jaworowski /* SATA registers */
1789d021439SRafal Jaworowski #define SATA_SATA_SSTATUS(ch)		(SATA_EDMA_BASE(ch) + 0x300)
1799d021439SRafal Jaworowski #define SATA_SATA_SERROR(ch)		(SATA_EDMA_BASE(ch) + 0x304)
1809d021439SRafal Jaworowski #define SATA_SATA_SCONTROL(ch)		(SATA_EDMA_BASE(ch) + 0x308)
1819d021439SRafal Jaworowski #define SATA_SATA_FISICR(ch)		(SATA_EDMA_BASE(ch) + 0x364)
1829d021439SRafal Jaworowski 
1839d021439SRafal Jaworowski /* EDMA registers */
1849d021439SRafal Jaworowski #define SATA_EDMA_CFG(ch)		(SATA_EDMA_BASE(ch) + 0x000)
1859d021439SRafal Jaworowski #define SATA_EDMA_CFG_QL128		(1 << 19)
1869d021439SRafal Jaworowski #define SATA_EDMA_CFG_HQCACHE		(1 << 22)
1879d021439SRafal Jaworowski 
1889d021439SRafal Jaworowski #define SATA_EDMA_IECR(ch)		(SATA_EDMA_BASE(ch) + 0x008)
1899d021439SRafal Jaworowski 
1909d021439SRafal Jaworowski #define SATA_EDMA_IEMR(ch)		(SATA_EDMA_BASE(ch) + 0x00C)
1919d021439SRafal Jaworowski #define SATA_EDMA_REQBAHR(ch)		(SATA_EDMA_BASE(ch) + 0x010)
1929d021439SRafal Jaworowski #define SATA_EDMA_REQIPR(ch)		(SATA_EDMA_BASE(ch) + 0x014)
1939d021439SRafal Jaworowski #define SATA_EDMA_REQOPR(ch)		(SATA_EDMA_BASE(ch) + 0x018)
1949d021439SRafal Jaworowski #define SATA_EDMA_RESBAHR(ch)		(SATA_EDMA_BASE(ch) + 0x01C)
1959d021439SRafal Jaworowski #define SATA_EDMA_RESIPR(ch)		(SATA_EDMA_BASE(ch) + 0x020)
1969d021439SRafal Jaworowski #define SATA_EDMA_RESOPR(ch)		(SATA_EDMA_BASE(ch) + 0x024)
1979d021439SRafal Jaworowski 
1989d021439SRafal Jaworowski #define SATA_EDMA_CMD(ch)		(SATA_EDMA_BASE(ch) + 0x028)
1999d021439SRafal Jaworowski #define SATA_EDMA_CMD_ENABLE		(1 << 0)
2009d021439SRafal Jaworowski #define SATA_EDMA_CMD_DISABLE		(1 << 1)
2019d021439SRafal Jaworowski #define SATA_EDMA_CMD_RESET		(1 << 2)
2029d021439SRafal Jaworowski 
2039d021439SRafal Jaworowski #define SATA_EDMA_STATUS(ch)		(SATA_EDMA_BASE(ch) + 0x030)
2049d021439SRafal Jaworowski #define SATA_EDMA_STATUS_IDLE		(1 << 7)
2059d021439SRafal Jaworowski 
2069d021439SRafal Jaworowski /* Offset to extract input slot from REQIPR register */
2079d021439SRafal Jaworowski #define SATA_EDMA_REQIS_OFS		5
2089d021439SRafal Jaworowski 
2099d021439SRafal Jaworowski /* Offset to extract input slot from RESOPR register */
2109d021439SRafal Jaworowski #define SATA_EDMA_RESOS_OFS		3
2119d021439SRafal Jaworowski 
2129d021439SRafal Jaworowski /*
213373bbe25SRafal Jaworowski  * GPIO
214373bbe25SRafal Jaworowski  */
215373bbe25SRafal Jaworowski #define GPIO_DATA_OUT		0x00
216373bbe25SRafal Jaworowski #define GPIO_DATA_OUT_EN_CTRL	0x04
217373bbe25SRafal Jaworowski #define GPIO_BLINK_EN		0x08
218373bbe25SRafal Jaworowski #define GPIO_DATA_IN_POLAR	0x0c
219373bbe25SRafal Jaworowski #define GPIO_DATA_IN		0x10
220373bbe25SRafal Jaworowski #define GPIO_INT_CAUSE		0x14
221373bbe25SRafal Jaworowski #define GPIO_INT_EDGE_MASK	0x18
222373bbe25SRafal Jaworowski #define GPIO_INT_LEV_MASK	0x1c
223373bbe25SRafal Jaworowski 
224373bbe25SRafal Jaworowski #define GPIO(n)			(1 << (n))
225373bbe25SRafal Jaworowski #define MV_GPIO_MAX_NPINS	64
226373bbe25SRafal Jaworowski 
227db5ef4fcSRafal Jaworowski #define MV_GPIO_IN_NONE			0x0
228db5ef4fcSRafal Jaworowski #define MV_GPIO_IN_POL_LOW		(1 << 16)
229db5ef4fcSRafal Jaworowski #define MV_GPIO_IN_IRQ_EDGE		(2 << 16)
230db5ef4fcSRafal Jaworowski #define MV_GPIO_IN_IRQ_LEVEL		(4 << 16)
231*1c45bd11SMarcin Wojtas #define MV_GPIO_IN_IRQ_DOUBLE_EDGE	(8 << 16)
232*1c45bd11SMarcin Wojtas #define MV_GPIO_IN_DEBOUNCE		(16 << 16)
233db5ef4fcSRafal Jaworowski #define MV_GPIO_OUT_NONE		0x0
234db5ef4fcSRafal Jaworowski #define MV_GPIO_OUT_BLINK		0x1
235db5ef4fcSRafal Jaworowski #define MV_GPIO_OUT_OPEN_DRAIN		0x2
236db5ef4fcSRafal Jaworowski #define MV_GPIO_OUT_OPEN_SRC		0x4
237373bbe25SRafal Jaworowski 
2380a57279bSMarcin Wojtas #define	SAMPLE_AT_RESET_ARMADA38X	0x400
239d65cdf4bSGrzegorz Bernacki #define	SAMPLE_AT_RESET_LO		0x30
240d65cdf4bSGrzegorz Bernacki #define	SAMPLE_AT_RESET_HI		0x34
241373bbe25SRafal Jaworowski 
242373bbe25SRafal Jaworowski /*
243373bbe25SRafal Jaworowski  * Clocks
244373bbe25SRafal Jaworowski  */
245373bbe25SRafal Jaworowski 
2460a57279bSMarcin Wojtas #define	TCLK_MASK_ARMADA38X		0x00008000
2470a57279bSMarcin Wojtas #define	TCLK_SHIFT_ARMADA38X		15
2480a57279bSMarcin Wojtas 
249373bbe25SRafal Jaworowski #define TCLK_100MHZ		100000000
250373bbe25SRafal Jaworowski #define TCLK_125MHZ		125000000
251373bbe25SRafal Jaworowski #define TCLK_133MHZ		133333333
252373bbe25SRafal Jaworowski #define TCLK_150MHZ		150000000
253373bbe25SRafal Jaworowski #define TCLK_166MHZ		166666667
254373bbe25SRafal Jaworowski #define TCLK_200MHZ		200000000
25516694521SOleksandr Tymoshenko #define TCLK_250MHZ		250000000
25616694521SOleksandr Tymoshenko #define TCLK_300MHZ		300000000
25716694521SOleksandr Tymoshenko #define TCLK_667MHZ		667000000
25816694521SOleksandr Tymoshenko 
25911a6a330SZbigniew Bodek #define	A38X_CPU_DDR_CLK_MASK	0x00007c00
26011a6a330SZbigniew Bodek #define	A38X_CPU_DDR_CLK_SHIFT	10
26111a6a330SZbigniew Bodek 
26216694521SOleksandr Tymoshenko /*
26316694521SOleksandr Tymoshenko  * CPU Cache Configuration
26416694521SOleksandr Tymoshenko  */
26516694521SOleksandr Tymoshenko 
26616694521SOleksandr Tymoshenko #define CPU_CONFIG		0x00000000
26716694521SOleksandr Tymoshenko #define CPU_CONFIG_IC_PREF	0x00010000
26816694521SOleksandr Tymoshenko #define CPU_CONFIG_DC_PREF	0x00020000
26916694521SOleksandr Tymoshenko #define CPU_CONTROL		0x00000004
27016694521SOleksandr Tymoshenko #define CPU_CONTROL_L2_SIZE	0x00200000	/* Only on Discovery */
27116694521SOleksandr Tymoshenko #define CPU_CONTROL_L2_MODE	0x00020000	/* Only on Discovery */
27216694521SOleksandr Tymoshenko #define CPU_L2_CONFIG		0x00000028	/* Only on Kirkwood */
27316694521SOleksandr Tymoshenko #define CPU_L2_CONFIG_MODE	0x00000010	/* Only on Kirkwood */
27416694521SOleksandr Tymoshenko 
27516694521SOleksandr Tymoshenko /*
27616694521SOleksandr Tymoshenko  * PCI Express port control (CPU Control registers)
27716694521SOleksandr Tymoshenko  */
27816694521SOleksandr Tymoshenko #define CPU_CONTROL_PCIE_DISABLE(n)	(1 << (3 * (n)))
27916694521SOleksandr Tymoshenko 
28016694521SOleksandr Tymoshenko /*
28116694521SOleksandr Tymoshenko  * Vendor ID
28216694521SOleksandr Tymoshenko  */
28316694521SOleksandr Tymoshenko #define PCI_VENDORID_MRVL	0x11AB
28416694521SOleksandr Tymoshenko #define PCI_VENDORID_MRVL2	0x1B4B
285373bbe25SRafal Jaworowski 
286373bbe25SRafal Jaworowski /*
287373bbe25SRafal Jaworowski  * Chip ID
288373bbe25SRafal Jaworowski  */
289f8742b0dSZbigniew Bodek #define MV_DEV_88F6828		0x6828
290f8742b0dSZbigniew Bodek #define MV_DEV_88F6820		0x6820
291f8742b0dSZbigniew Bodek #define MV_DEV_88F6810		0x6810
29216694521SOleksandr Tymoshenko #define MV_DEV_MV78230		0x7823
29316694521SOleksandr Tymoshenko #define MV_DEV_MV78260		0x7826
29416694521SOleksandr Tymoshenko #define MV_DEV_MV78460		0x7846
295373bbe25SRafal Jaworowski 
29616694521SOleksandr Tymoshenko #define MV_DEV_FAMILY_MASK	0xff00
2971e92574fSZbigniew Bodek #define	MV_DEV_ARMADA38X	0x6800
29816694521SOleksandr Tymoshenko 
29916694521SOleksandr Tymoshenko /*
30016694521SOleksandr Tymoshenko  * Doorbell register control
30116694521SOleksandr Tymoshenko  */
30216694521SOleksandr Tymoshenko #define MV_DRBL_PCIE_TO_CPU	0
30316694521SOleksandr Tymoshenko #define MV_DRBL_CPU_TO_PCIE	1
30416694521SOleksandr Tymoshenko 
30516694521SOleksandr Tymoshenko #define MV_DRBL_CAUSE(d,u)	(0x10 * (u) + 0x8 * (d))
30616694521SOleksandr Tymoshenko #define MV_DRBL_MASK(d,u)	(0x10 * (u) + 0x8 * (d) + 0x4)
30716694521SOleksandr Tymoshenko #define MV_DRBL_MSG(m,d,u)	(0x10 * (u) + 0x8 * (d) + 0x4 * (m) + 0x30)
308223e0cfdSZbigniew Bodek 
309223e0cfdSZbigniew Bodek /*
310223e0cfdSZbigniew Bodek  * SCU
311223e0cfdSZbigniew Bodek  */
312223e0cfdSZbigniew Bodek #define	MV_SCU_BASE		(MV_BASE + 0xc000)
313223e0cfdSZbigniew Bodek #define	MV_SCU_REGS_LEN		0x100
31400ad2ec8SZbigniew Bodek #define	MV_SCU_REG_CTRL		0x00
31500ad2ec8SZbigniew Bodek #define	MV_SCU_REG_CONFIG	0x04
316bb98396bSZbigniew Bodek #define	MV_SCU_ENABLE		(1 << 0)
317bb98396bSZbigniew Bodek #define	MV_SCU_SL_L2_ENABLE	(1 << 3)
318ec22b42aSZbigniew Bodek #define	SCU_CFG_REG_NCPU_MASK	0x3
319223e0cfdSZbigniew Bodek 
32000ad2ec8SZbigniew Bodek /*
32100ad2ec8SZbigniew Bodek  * PMSU
32200ad2ec8SZbigniew Bodek  */
32300ad2ec8SZbigniew Bodek #define	MV_PMSU_BASE		(MV_BASE + 0x22000)
32400ad2ec8SZbigniew Bodek #define	MV_PMSU_REGS_LEN	0x1000
32500ad2ec8SZbigniew Bodek #define	PMSU_BOOT_ADDR_REDIRECT_OFFSET(cpu)	(((cpu) * 0x100) + 0x124)
32600ad2ec8SZbigniew Bodek 
32700ad2ec8SZbigniew Bodek /*
32800ad2ec8SZbigniew Bodek  * CPU RESET
32900ad2ec8SZbigniew Bodek  */
33000ad2ec8SZbigniew Bodek #define	MV_CPU_RESET_BASE	(MV_BASE + 0x20800)
33100ad2ec8SZbigniew Bodek #define	MV_CPU_RESET_REGS_LEN	0x8
33200ad2ec8SZbigniew Bodek #define	CPU_RESET_OFFSET(cpu)	((cpu) * 0x8)
33300ad2ec8SZbigniew Bodek #define	CPU_RESET_ASSERT	0x1
33400ad2ec8SZbigniew Bodek 
3352fcf4145SZbigniew Bodek #define	MV_MBUS_CTRL_BASE	(MV_BASE + 0x20420)
3362fcf4145SZbigniew Bodek #define	MV_MBUS_CTRL_REGS_LEN	0x10
3372fcf4145SZbigniew Bodek 
338373bbe25SRafal Jaworowski #endif /* _MVREG_H_ */
339