1/*
2 * Register definitions for High-Speed Bus Matrix
3 */
4#ifndef __HMATRIX_H
5#define __HMATRIX_H
6
7/* HMATRIX register offsets */
8#define HMATRIX_MCFG0				0x0000
9#define HMATRIX_MCFG1				0x0004
10#define HMATRIX_MCFG2				0x0008
11#define HMATRIX_MCFG3				0x000c
12#define HMATRIX_MCFG4				0x0010
13#define HMATRIX_MCFG5				0x0014
14#define HMATRIX_MCFG6				0x0018
15#define HMATRIX_MCFG7				0x001c
16#define HMATRIX_MCFG8				0x0020
17#define HMATRIX_MCFG9				0x0024
18#define HMATRIX_MCFG10				0x0028
19#define HMATRIX_MCFG11				0x002c
20#define HMATRIX_MCFG12				0x0030
21#define HMATRIX_MCFG13				0x0034
22#define HMATRIX_MCFG14				0x0038
23#define HMATRIX_MCFG15				0x003c
24#define HMATRIX_SCFG0				0x0040
25#define HMATRIX_SCFG1				0x0044
26#define HMATRIX_SCFG2				0x0048
27#define HMATRIX_SCFG3				0x004c
28#define HMATRIX_SCFG4				0x0050
29#define HMATRIX_SCFG5				0x0054
30#define HMATRIX_SCFG6				0x0058
31#define HMATRIX_SCFG7				0x005c
32#define HMATRIX_SCFG8				0x0060
33#define HMATRIX_SCFG9				0x0064
34#define HMATRIX_SCFG10				0x0068
35#define HMATRIX_SCFG11				0x006c
36#define HMATRIX_SCFG12				0x0070
37#define HMATRIX_SCFG13				0x0074
38#define HMATRIX_SCFG14				0x0078
39#define HMATRIX_SCFG15				0x007c
40#define HMATRIX_PRAS0				0x0080
41#define HMATRIX_PRBS0				0x0084
42#define HMATRIX_PRAS1				0x0088
43#define HMATRIX_PRBS1				0x008c
44#define HMATRIX_PRAS2				0x0090
45#define HMATRIX_PRBS2				0x0094
46#define HMATRIX_PRAS3				0x0098
47#define HMATRIX_PRBS3				0x009c
48#define HMATRIX_PRAS4				0x00a0
49#define HMATRIX_PRBS4				0x00a4
50#define HMATRIX_PRAS5				0x00a8
51#define HMATRIX_PRBS5				0x00ac
52#define HMATRIX_PRAS6				0x00b0
53#define HMATRIX_PRBS6				0x00b4
54#define HMATRIX_PRAS7				0x00b8
55#define HMATRIX_PRBS7				0x00bc
56#define HMATRIX_PRAS8				0x00c0
57#define HMATRIX_PRBS8				0x00c4
58#define HMATRIX_PRAS9				0x00c8
59#define HMATRIX_PRBS9				0x00cc
60#define HMATRIX_PRAS10				0x00d0
61#define HMATRIX_PRBS10				0x00d4
62#define HMATRIX_PRAS11				0x00d8
63#define HMATRIX_PRBS11				0x00dc
64#define HMATRIX_PRAS12				0x00e0
65#define HMATRIX_PRBS12				0x00e4
66#define HMATRIX_PRAS13				0x00e8
67#define HMATRIX_PRBS13				0x00ec
68#define HMATRIX_PRAS14				0x00f0
69#define HMATRIX_PRBS14				0x00f4
70#define HMATRIX_PRAS15				0x00f8
71#define HMATRIX_PRBS15				0x00fc
72#define HMATRIX_MRCR				0x0100
73#define HMATRIX_SFR0				0x0110
74#define HMATRIX_SFR1				0x0114
75#define HMATRIX_SFR2				0x0118
76#define HMATRIX_SFR3				0x011c
77#define HMATRIX_SFR4				0x0120
78#define HMATRIX_SFR5				0x0124
79#define HMATRIX_SFR6				0x0128
80#define HMATRIX_SFR7				0x012c
81#define HMATRIX_SFR8				0x0130
82#define HMATRIX_SFR9				0x0134
83#define HMATRIX_SFR10				0x0138
84#define HMATRIX_SFR11				0x013c
85#define HMATRIX_SFR12				0x0140
86#define HMATRIX_SFR13				0x0144
87#define HMATRIX_SFR14				0x0148
88#define HMATRIX_SFR15				0x014c
89
90/* Bitfields in MCFGx */
91#define HMATRIX_ULBT_OFFSET			0
92#define HMATRIX_ULBT_SIZE			3
93
94/* Bitfields in SCFGx */
95#define HMATRIX_SLOT_CYCLE_OFFSET		0
96#define HMATRIX_SLOT_CYCLE_SIZE			8
97#define HMATRIX_DEFMSTR_TYPE_OFFSET		16
98#define HMATRIX_DEFMSTR_TYPE_SIZE		2
99#define HMATRIX_FIXED_DEFMSTR_OFFSET		18
100#define HMATRIX_FIXED_DEFMSTR_SIZE		4
101#define HMATRIX_ARBT_OFFSET			24
102#define HMATRIX_ARBT_SIZE			2
103
104/* Bitfields in PRASx */
105#define HMATRIX_M0PR_OFFSET			0
106#define HMATRIX_M0PR_SIZE			4
107#define HMATRIX_M1PR_OFFSET			4
108#define HMATRIX_M1PR_SIZE			4
109#define HMATRIX_M2PR_OFFSET			8
110#define HMATRIX_M2PR_SIZE			4
111#define HMATRIX_M3PR_OFFSET			12
112#define HMATRIX_M3PR_SIZE			4
113#define HMATRIX_M4PR_OFFSET			16
114#define HMATRIX_M4PR_SIZE			4
115#define HMATRIX_M5PR_OFFSET			20
116#define HMATRIX_M5PR_SIZE			4
117#define HMATRIX_M6PR_OFFSET			24
118#define HMATRIX_M6PR_SIZE			4
119#define HMATRIX_M7PR_OFFSET			28
120#define HMATRIX_M7PR_SIZE			4
121
122/* Bitfields in PRBSx */
123#define HMATRIX_M8PR_OFFSET			0
124#define HMATRIX_M8PR_SIZE			4
125#define HMATRIX_M9PR_OFFSET			4
126#define HMATRIX_M9PR_SIZE			4
127#define HMATRIX_M10PR_OFFSET			8
128#define HMATRIX_M10PR_SIZE			4
129#define HMATRIX_M11PR_OFFSET			12
130#define HMATRIX_M11PR_SIZE			4
131#define HMATRIX_M12PR_OFFSET			16
132#define HMATRIX_M12PR_SIZE			4
133#define HMATRIX_M13PR_OFFSET			20
134#define HMATRIX_M13PR_SIZE			4
135#define HMATRIX_M14PR_OFFSET			24
136#define HMATRIX_M14PR_SIZE			4
137#define HMATRIX_M15PR_OFFSET			28
138#define HMATRIX_M15PR_SIZE			4
139
140/* Bitfields in SFR4 */
141#define HMATRIX_CS1A_OFFSET			1
142#define HMATRIX_CS1A_SIZE			1
143#define HMATRIX_CS3A_OFFSET			3
144#define HMATRIX_CS3A_SIZE			1
145#define HMATRIX_CS4A_OFFSET			4
146#define HMATRIX_CS4A_SIZE			1
147#define HMATRIX_CS5A_OFFSET			5
148#define HMATRIX_CS5A_SIZE			1
149#define HMATRIX_DBPUC_OFFSET			8
150#define HMATRIX_DBPUC_SIZE			1
151
152/* Constants for ULBT */
153#define HMATRIX_ULBT_INFINITE			0
154#define HMATRIX_ULBT_SINGLE			1
155#define HMATRIX_ULBT_FOUR_BEAT			2
156#define HMATRIX_ULBT_EIGHT_BEAT			3
157#define HMATRIX_ULBT_SIXTEEN_BEAT		4
158
159/* Constants for DEFMSTR_TYPE */
160#define HMATRIX_DEFMSTR_TYPE_NO_DEFAULT		0
161#define HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT	1
162#define HMATRIX_DEFMSTR_TYPE_FIXED_DEFAULT	2
163
164/* Constants for ARBT */
165#define HMATRIX_ARBT_ROUND_ROBIN		0
166#define HMATRIX_ARBT_FIXED_PRIORITY		1
167
168/* Bit manipulation macros */
169#define HMATRIX_BIT(name)					\
170	(1 << HMATRIX_##name##_OFFSET)
171#define HMATRIX_BF(name,value)					\
172	(((value) & ((1 << HMATRIX_##name##_SIZE) - 1))		\
173	 << HMATRIX_##name##_OFFSET)
174#define HMATRIX_BFEXT(name,value)				\
175	(((value) >> HMATRIX_##name##_OFFSET)			\
176	 & ((1 << HMATRIX_##name##_SIZE) - 1))
177#define HMATRIX_BFINS(name,value,old)				\
178	(((old) & ~(((1 << HMATRIX_##name##_SIZE) - 1)		\
179		    << HMATRIX_##name##_OFFSET))		\
180	 | HMATRIX_BF(name,value))
181
182#endif /* __HMATRIX_H */
183