summaryrefslogtreecommitdiffstats
path: root/drivers/spi
diff options
context:
space:
mode:
authorJan Glauber <jglauber@cavium.com>2016-07-23 06:42:53 -0400
committerMark Brown <broonie@kernel.org>2016-07-24 16:54:29 -0400
commit22cc1b6b35ce560ebf9252027397d5f1b92bfa9b (patch)
treed8f389e3f4136ead8796197b5e117552e323012a /drivers/spi
parentee423c5322aece231415c316da5478e9d5241b4c (diff)
spi: octeon: Move include file from arch/mips to drivers/spi
Move the register definitions to the drivers directory because they are only used there. Signed-off-by: Jan Glauber <jglauber@cavium.com> Tested-by: Steven J. Hill <steven.hill@cavium.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi-cavium.h298
-rw-r--r--drivers/spi/spi-octeon.c3
2 files changed, 300 insertions, 1 deletions
diff --git a/drivers/spi/spi-cavium.h b/drivers/spi/spi-cavium.h
new file mode 100644
index 000000000000..d41dba5968fd
--- /dev/null
+++ b/drivers/spi/spi-cavium.h
@@ -0,0 +1,298 @@
1/* MPI register descriptions */
2
3#define CVMX_MPI_CFG (CVMX_ADD_IO_SEG(0x0001070000001000ull))
4#define CVMX_MPI_DATX(offset) (CVMX_ADD_IO_SEG(0x0001070000001080ull) + ((offset) & 15) * 8)
5#define CVMX_MPI_STS (CVMX_ADD_IO_SEG(0x0001070000001008ull))
6#define CVMX_MPI_TX (CVMX_ADD_IO_SEG(0x0001070000001010ull))
7
8union cvmx_mpi_cfg {
9 uint64_t u64;
10 struct cvmx_mpi_cfg_s {
11#ifdef __BIG_ENDIAN_BITFIELD
12 uint64_t reserved_29_63:35;
13 uint64_t clkdiv:13;
14 uint64_t csena3:1;
15 uint64_t csena2:1;
16 uint64_t csena1:1;
17 uint64_t csena0:1;
18 uint64_t cslate:1;
19 uint64_t tritx:1;
20 uint64_t idleclks:2;
21 uint64_t cshi:1;
22 uint64_t csena:1;
23 uint64_t int_ena:1;
24 uint64_t lsbfirst:1;
25 uint64_t wireor:1;
26 uint64_t clk_cont:1;
27 uint64_t idlelo:1;
28 uint64_t enable:1;
29#else
30 uint64_t enable:1;
31 uint64_t idlelo:1;
32 uint64_t clk_cont:1;
33 uint64_t wireor:1;
34 uint64_t lsbfirst:1;
35 uint64_t int_ena:1;
36 uint64_t csena:1;
37 uint64_t cshi:1;
38 uint64_t idleclks:2;
39 uint64_t tritx:1;
40 uint64_t cslate:1;
41 uint64_t csena0:1;
42 uint64_t csena1:1;
43 uint64_t csena2:1;
44 uint64_t csena3:1;
45 uint64_t clkdiv:13;
46 uint64_t reserved_29_63:35;
47#endif
48 } s;
49 struct cvmx_mpi_cfg_cn30xx {
50#ifdef __BIG_ENDIAN_BITFIELD
51 uint64_t reserved_29_63:35;
52 uint64_t clkdiv:13;
53 uint64_t reserved_12_15:4;
54 uint64_t cslate:1;
55 uint64_t tritx:1;
56 uint64_t idleclks:2;
57 uint64_t cshi:1;
58 uint64_t csena:1;
59 uint64_t int_ena:1;
60 uint64_t lsbfirst:1;
61 uint64_t wireor:1;
62 uint64_t clk_cont:1;
63 uint64_t idlelo:1;
64 uint64_t enable:1;
65#else
66 uint64_t enable:1;
67 uint64_t idlelo:1;
68 uint64_t clk_cont:1;
69 uint64_t wireor:1;
70 uint64_t lsbfirst:1;
71 uint64_t int_ena:1;
72 uint64_t csena:1;
73 uint64_t cshi:1;
74 uint64_t idleclks:2;
75 uint64_t tritx:1;
76 uint64_t cslate:1;
77 uint64_t reserved_12_15:4;
78 uint64_t clkdiv:13;
79 uint64_t reserved_29_63:35;
80#endif
81 } cn30xx;
82 struct cvmx_mpi_cfg_cn31xx {
83#ifdef __BIG_ENDIAN_BITFIELD
84 uint64_t reserved_29_63:35;
85 uint64_t clkdiv:13;
86 uint64_t reserved_11_15:5;
87 uint64_t tritx:1;
88 uint64_t idleclks:2;
89 uint64_t cshi:1;
90 uint64_t csena:1;
91 uint64_t int_ena:1;
92 uint64_t lsbfirst:1;
93 uint64_t wireor:1;
94 uint64_t clk_cont:1;
95 uint64_t idlelo:1;
96 uint64_t enable:1;
97#else
98 uint64_t enable:1;
99 uint64_t idlelo:1;
100 uint64_t clk_cont:1;
101 uint64_t wireor:1;
102 uint64_t lsbfirst:1;
103 uint64_t int_ena:1;
104 uint64_t csena:1;
105 uint64_t cshi:1;
106 uint64_t idleclks:2;
107 uint64_t tritx:1;
108 uint64_t reserved_11_15:5;
109 uint64_t clkdiv:13;
110 uint64_t reserved_29_63:35;
111#endif
112 } cn31xx;
113 struct cvmx_mpi_cfg_cn30xx cn50xx;
114 struct cvmx_mpi_cfg_cn61xx {
115#ifdef __BIG_ENDIAN_BITFIELD
116 uint64_t reserved_29_63:35;
117 uint64_t clkdiv:13;
118 uint64_t reserved_14_15:2;
119 uint64_t csena1:1;
120 uint64_t csena0:1;
121 uint64_t cslate:1;
122 uint64_t tritx:1;
123 uint64_t idleclks:2;
124 uint64_t cshi:1;
125 uint64_t reserved_6_6:1;
126 uint64_t int_ena:1;
127 uint64_t lsbfirst:1;
128 uint64_t wireor:1;
129 uint64_t clk_cont:1;
130 uint64_t idlelo:1;
131 uint64_t enable:1;
132#else
133 uint64_t enable:1;
134 uint64_t idlelo:1;
135 uint64_t clk_cont:1;
136 uint64_t wireor:1;
137 uint64_t lsbfirst:1;
138 uint64_t int_ena:1;
139 uint64_t reserved_6_6:1;
140 uint64_t cshi:1;
141 uint64_t idleclks:2;
142 uint64_t tritx:1;
143 uint64_t cslate:1;
144 uint64_t csena0:1;
145 uint64_t csena1:1;
146 uint64_t reserved_14_15:2;
147 uint64_t clkdiv:13;
148 uint64_t reserved_29_63:35;
149#endif
150 } cn61xx;
151 struct cvmx_mpi_cfg_cn66xx {
152#ifdef __BIG_ENDIAN_BITFIELD
153 uint64_t reserved_29_63:35;
154 uint64_t clkdiv:13;
155 uint64_t csena3:1;
156 uint64_t csena2:1;
157 uint64_t reserved_12_13:2;
158 uint64_t cslate:1;
159 uint64_t tritx:1;
160 uint64_t idleclks:2;
161 uint64_t cshi:1;
162 uint64_t reserved_6_6:1;
163 uint64_t int_ena:1;
164 uint64_t lsbfirst:1;
165 uint64_t wireor:1;
166 uint64_t clk_cont:1;
167 uint64_t idlelo:1;
168 uint64_t enable:1;
169#else
170 uint64_t enable:1;
171 uint64_t idlelo:1;
172 uint64_t clk_cont:1;
173 uint64_t wireor:1;
174 uint64_t lsbfirst:1;
175 uint64_t int_ena:1;
176 uint64_t reserved_6_6:1;
177 uint64_t cshi:1;
178 uint64_t idleclks:2;
179 uint64_t tritx:1;
180 uint64_t cslate:1;
181 uint64_t reserved_12_13:2;
182 uint64_t csena2:1;
183 uint64_t csena3:1;
184 uint64_t clkdiv:13;
185 uint64_t reserved_29_63:35;
186#endif
187 } cn66xx;
188 struct cvmx_mpi_cfg_cn61xx cnf71xx;
189};
190
191union cvmx_mpi_datx {
192 uint64_t u64;
193 struct cvmx_mpi_datx_s {
194#ifdef __BIG_ENDIAN_BITFIELD
195 uint64_t reserved_8_63:56;
196 uint64_t data:8;
197#else
198 uint64_t data:8;
199 uint64_t reserved_8_63:56;
200#endif
201 } s;
202 struct cvmx_mpi_datx_s cn30xx;
203 struct cvmx_mpi_datx_s cn31xx;
204 struct cvmx_mpi_datx_s cn50xx;
205 struct cvmx_mpi_datx_s cn61xx;
206 struct cvmx_mpi_datx_s cn66xx;
207 struct cvmx_mpi_datx_s cnf71xx;
208};
209
210union cvmx_mpi_sts {
211 uint64_t u64;
212 struct cvmx_mpi_sts_s {
213#ifdef __BIG_ENDIAN_BITFIELD
214 uint64_t reserved_13_63:51;
215 uint64_t rxnum:5;
216 uint64_t reserved_1_7:7;
217 uint64_t busy:1;
218#else
219 uint64_t busy:1;
220 uint64_t reserved_1_7:7;
221 uint64_t rxnum:5;
222 uint64_t reserved_13_63:51;
223#endif
224 } s;
225 struct cvmx_mpi_sts_s cn30xx;
226 struct cvmx_mpi_sts_s cn31xx;
227 struct cvmx_mpi_sts_s cn50xx;
228 struct cvmx_mpi_sts_s cn61xx;
229 struct cvmx_mpi_sts_s cn66xx;
230 struct cvmx_mpi_sts_s cnf71xx;
231};
232
233union cvmx_mpi_tx {
234 uint64_t u64;
235 struct cvmx_mpi_tx_s {
236#ifdef __BIG_ENDIAN_BITFIELD
237 uint64_t reserved_22_63:42;
238 uint64_t csid:2;
239 uint64_t reserved_17_19:3;
240 uint64_t leavecs:1;
241 uint64_t reserved_13_15:3;
242 uint64_t txnum:5;
243 uint64_t reserved_5_7:3;
244 uint64_t totnum:5;
245#else
246 uint64_t totnum:5;
247 uint64_t reserved_5_7:3;
248 uint64_t txnum:5;
249 uint64_t reserved_13_15:3;
250 uint64_t leavecs:1;
251 uint64_t reserved_17_19:3;
252 uint64_t csid:2;
253 uint64_t reserved_22_63:42;
254#endif
255 } s;
256 struct cvmx_mpi_tx_cn30xx {
257#ifdef __BIG_ENDIAN_BITFIELD
258 uint64_t reserved_17_63:47;
259 uint64_t leavecs:1;
260 uint64_t reserved_13_15:3;
261 uint64_t txnum:5;
262 uint64_t reserved_5_7:3;
263 uint64_t totnum:5;
264#else
265 uint64_t totnum:5;
266 uint64_t reserved_5_7:3;
267 uint64_t txnum:5;
268 uint64_t reserved_13_15:3;
269 uint64_t leavecs:1;
270 uint64_t reserved_17_63:47;
271#endif
272 } cn30xx;
273 struct cvmx_mpi_tx_cn30xx cn31xx;
274 struct cvmx_mpi_tx_cn30xx cn50xx;
275 struct cvmx_mpi_tx_cn61xx {
276#ifdef __BIG_ENDIAN_BITFIELD
277 uint64_t reserved_21_63:43;
278 uint64_t csid:1;
279 uint64_t reserved_17_19:3;
280 uint64_t leavecs:1;
281 uint64_t reserved_13_15:3;
282 uint64_t txnum:5;
283 uint64_t reserved_5_7:3;
284 uint64_t totnum:5;
285#else
286 uint64_t totnum:5;
287 uint64_t reserved_5_7:3;
288 uint64_t txnum:5;
289 uint64_t reserved_13_15:3;
290 uint64_t leavecs:1;
291 uint64_t reserved_17_19:3;
292 uint64_t csid:1;
293 uint64_t reserved_21_63:43;
294#endif
295 } cn61xx;
296 struct cvmx_mpi_tx_s cn66xx;
297 struct cvmx_mpi_tx_cn61xx cnf71xx;
298};
diff --git a/drivers/spi/spi-octeon.c b/drivers/spi/spi-octeon.c
index 209eddcc19b6..21801769b808 100644
--- a/drivers/spi/spi-octeon.c
+++ b/drivers/spi/spi-octeon.c
@@ -15,7 +15,8 @@
15#include <linux/of.h> 15#include <linux/of.h>
16 16
17#include <asm/octeon/octeon.h> 17#include <asm/octeon/octeon.h>
18#include <asm/octeon/cvmx-mpi-defs.h> 18
19#include "spi-cavium.h"
19 20
20#define OCTEON_SPI_MAX_BYTES 9 21#define OCTEON_SPI_MAX_BYTES 9
21 22