summaryrefslogtreecommitdiff
path: root/arch/mips/include/asm/netlogic/xlp-hal/sys.h
blob: 6bcf3952e556e6aed0b57e1e0588e14f47b7e2e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
/*
 * Copyright 2003-2011 NetLogic Microsystems, Inc. (NetLogic). All rights
 * reserved.
 *
 * This software is available to you under a choice of one of two
 * licenses.  You may choose to be licensed under the terms of the GNU
 * General Public License (GPL) Version 2, available from the file
 * COPYING in the main directory of this source tree, or the NetLogic
 * license below:
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY NETLOGIC ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL NETLOGIC OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef __NLM_HAL_SYS_H__
#define __NLM_HAL_SYS_H__

/**
* @file_name sys.h
* @author Netlogic Microsystems
* @brief HAL for System configuration registers
*/
#define SYS_CHIP_RESET				0x00
#define SYS_POWER_ON_RESET_CFG			0x01
#define SYS_EFUSE_DEVICE_CFG_STATUS0		0x02
#define SYS_EFUSE_DEVICE_CFG_STATUS1		0x03
#define SYS_EFUSE_DEVICE_CFG_STATUS2		0x04
#define SYS_EFUSE_DEVICE_CFG3			0x05
#define SYS_EFUSE_DEVICE_CFG4			0x06
#define SYS_EFUSE_DEVICE_CFG5			0x07
#define SYS_EFUSE_DEVICE_CFG6			0x08
#define SYS_EFUSE_DEVICE_CFG7			0x09
#define SYS_PLL_CTRL				0x0a
#define SYS_CPU_RESET				0x0b
#define SYS_CPU_NONCOHERENT_MODE		0x0d
#define SYS_CORE_DFS_DIS_CTRL			0x0e
#define SYS_CORE_DFS_RST_CTRL			0x0f
#define SYS_CORE_DFS_BYP_CTRL			0x10
#define SYS_CORE_DFS_PHA_CTRL			0x11
#define SYS_CORE_DFS_DIV_INC_CTRL		0x12
#define SYS_CORE_DFS_DIV_DEC_CTRL		0x13
#define SYS_CORE_DFS_DIV_VALUE			0x14
#define SYS_RESET				0x15
#define SYS_DFS_DIS_CTRL			0x16
#define SYS_DFS_RST_CTRL			0x17
#define SYS_DFS_BYP_CTRL			0x18
#define SYS_DFS_DIV_INC_CTRL			0x19
#define SYS_DFS_DIV_DEC_CTRL			0x1a
#define SYS_DFS_DIV_VALUE0			0x1b
#define SYS_DFS_DIV_VALUE1			0x1c
#define SYS_SENSE_AMP_DLY			0x1d
#define SYS_SOC_SENSE_AMP_DLY			0x1e
#define SYS_CTRL0				0x1f
#define SYS_CTRL1				0x20
#define SYS_TIMEOUT_BS1				0x21
#define SYS_BYTE_SWAP				0x22
#define SYS_VRM_VID				0x23
#define SYS_PWR_RAM_CMD				0x24
#define SYS_PWR_RAM_ADDR			0x25
#define SYS_PWR_RAM_DATA0			0x26
#define SYS_PWR_RAM_DATA1			0x27
#define SYS_PWR_RAM_DATA2			0x28
#define SYS_PWR_UCODE				0x29
#define SYS_CPU0_PWR_STATUS			0x2a
#define SYS_CPU1_PWR_STATUS			0x2b
#define SYS_CPU2_PWR_STATUS			0x2c
#define SYS_CPU3_PWR_STATUS			0x2d
#define SYS_CPU4_PWR_STATUS			0x2e
#define SYS_CPU5_PWR_STATUS			0x2f
#define SYS_CPU6_PWR_STATUS			0x30
#define SYS_CPU7_PWR_STATUS			0x31
#define SYS_STATUS				0x32
#define SYS_INT_POL				0x33
#define SYS_INT_TYPE				0x34
#define SYS_INT_STATUS				0x35
#define SYS_INT_MASK0				0x36
#define SYS_INT_MASK1				0x37
#define SYS_UCO_S_ECC				0x38
#define SYS_UCO_M_ECC				0x39
#define SYS_UCO_ADDR				0x3a
#define SYS_UCO_INSTR				0x3b
#define SYS_MEM_BIST0				0x3c
#define SYS_MEM_BIST1				0x3d
#define SYS_MEM_BIST2				0x3e
#define SYS_MEM_BIST3				0x3f
#define SYS_MEM_BIST4				0x40
#define SYS_MEM_BIST5				0x41
#define SYS_MEM_BIST6				0x42
#define SYS_MEM_BIST7				0x43
#define SYS_MEM_BIST8				0x44
#define SYS_MEM_BIST9				0x45
#define SYS_MEM_BIST10				0x46
#define SYS_MEM_BIST11				0x47
#define SYS_MEM_BIST12				0x48
#define SYS_SCRTCH0				0x49
#define SYS_SCRTCH1				0x4a
#define SYS_SCRTCH2				0x4b
#define SYS_SCRTCH3				0x4c

/* PLL registers XLP2XX */
#define SYS_CPU_PLL_CTRL0(core)			(0x1c0 + (core * 4))
#define SYS_CPU_PLL_CTRL1(core)			(0x1c1 + (core * 4))
#define SYS_CPU_PLL_CTRL2(core)			(0x1c2 + (core * 4))
#define SYS_CPU_PLL_CTRL3(core)			(0x1c3 + (core * 4))
#define SYS_PLL_CTRL0				0x240
#define SYS_PLL_CTRL1				0x241
#define SYS_PLL_CTRL2				0x242
#define SYS_PLL_CTRL3				0x243
#define SYS_DMC_PLL_CTRL0			0x244
#define SYS_DMC_PLL_CTRL1			0x245
#define SYS_DMC_PLL_CTRL2			0x246
#define SYS_DMC_PLL_CTRL3			0x247

#define SYS_PLL_CTRL0_DEVX(x)			(0x248 + (x) * 4)
#define SYS_PLL_CTRL1_DEVX(x)			(0x249 + (x) * 4)
#define SYS_PLL_CTRL2_DEVX(x)			(0x24a + (x) * 4)
#define SYS_PLL_CTRL3_DEVX(x)			(0x24b + (x) * 4)

#define SYS_CPU_PLL_CHG_CTRL			0x288
#define SYS_PLL_CHG_CTRL			0x289
#define SYS_CLK_DEV_DIS				0x28a
#define SYS_CLK_DEV_SEL				0x28b
#define SYS_CLK_DEV_DIV				0x28c
#define SYS_CLK_DEV_CHG				0x28d
#define SYS_CLK_DEV_SEL_REG			0x28e
#define SYS_CLK_DEV_DIV_REG			0x28f
#define SYS_CPU_PLL_LOCK			0x29f
#define SYS_SYS_PLL_LOCK			0x2a0
#define SYS_PLL_MEM_CMD				0x2a1
#define SYS_CPU_PLL_MEM_REQ			0x2a2
#define SYS_SYS_PLL_MEM_REQ			0x2a3
#define SYS_PLL_MEM_STAT			0x2a4

/* PLL registers XLP9XX */
#define SYS_9XX_CPU_PLL_CTRL0(core)		(0xc0 + (core * 4))
#define SYS_9XX_CPU_PLL_CTRL1(core)		(0xc1 + (core * 4))
#define SYS_9XX_CPU_PLL_CTRL2(core)		(0xc2 + (core * 4))
#define SYS_9XX_CPU_PLL_CTRL3(core)		(0xc3 + (core * 4))
#define SYS_9XX_DMC_PLL_CTRL0			0x140
#define SYS_9XX_DMC_PLL_CTRL1			0x141
#define SYS_9XX_DMC_PLL_CTRL2			0x142
#define SYS_9XX_DMC_PLL_CTRL3			0x143
#define SYS_9XX_PLL_CTRL0			0x144
#define SYS_9XX_PLL_CTRL1			0x145
#define SYS_9XX_PLL_CTRL2			0x146
#define SYS_9XX_PLL_CTRL3			0x147

#define SYS_9XX_PLL_CTRL0_DEVX(x)		(0x148 + (x) * 4)
#define SYS_9XX_PLL_CTRL1_DEVX(x)		(0x149 + (x) * 4)
#define SYS_9XX_PLL_CTRL2_DEVX(x)		(0x14a + (x) * 4)
#define SYS_9XX_PLL_CTRL3_DEVX(x)		(0x14b + (x) * 4)

#define SYS_9XX_CPU_PLL_CHG_CTRL		0x188
#define SYS_9XX_PLL_CHG_CTRL			0x189
#define SYS_9XX_CLK_DEV_DIS			0x18a
#define SYS_9XX_CLK_DEV_SEL			0x18b
#define SYS_9XX_CLK_DEV_DIV			0x18d
#define SYS_9XX_CLK_DEV_CHG			0x18f

#define SYS_9XX_CLK_DEV_SEL_REG			0x1a4
#define SYS_9XX_CLK_DEV_DIV_REG			0x1a6

/* Registers changed on 9XX */
#define SYS_9XX_POWER_ON_RESET_CFG		0x00
#define SYS_9XX_CHIP_RESET			0x01
#define SYS_9XX_CPU_RESET			0x02
#define SYS_9XX_CPU_NONCOHERENT_MODE		0x03

/* XLP 9XX fuse block registers */
#define FUSE_9XX_DEVCFG6			0xc6

#ifndef __ASSEMBLY__

#define nlm_read_sys_reg(b, r)		nlm_read_reg(b, r)
#define nlm_write_sys_reg(b, r, v)	nlm_write_reg(b, r, v)
#define nlm_get_sys_pcibase(node)	nlm_pcicfg_base(cpu_is_xlp9xx() ? \
		XLP9XX_IO_SYS_OFFSET(node) : XLP_IO_SYS_OFFSET(node))
#define nlm_get_sys_regbase(node) (nlm_get_sys_pcibase(node) + XLP_IO_PCI_HDRSZ)

/* XLP9XX fuse block */
#define nlm_get_fuse_pcibase(node)	\
			nlm_pcicfg_base(XLP9XX_IO_FUSE_OFFSET(node))
#define nlm_get_fuse_regbase(node)	\
			(nlm_get_fuse_pcibase(node) + XLP_IO_PCI_HDRSZ)

#define nlm_get_clock_pcibase(node)	\
			nlm_pcicfg_base(XLP9XX_IO_CLOCK_OFFSET(node))
#define nlm_get_clock_regbase(node)	\
			(nlm_get_clock_pcibase(node) + XLP_IO_PCI_HDRSZ)

unsigned int nlm_get_pic_frequency(int node);
#endif
#endif