source: rtems/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h @ c499856

4.115
Last change on this file since c499856 was c499856, checked in by Chris Johns <chrisj@…>, on 03/20/14 at 21:10:47

Change all references of rtems.com to rtems.org.

  • Property mode set to 100644
File size: 12.0 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup QorIQ
5 *
6 * @brief QorIQ Configuration, Control and Status Registers.
7 */
8
9/*
10 * Copyright (c) 2010 embedded brains GmbH.  All rights reserved.
11 *
12 *  embedded brains GmbH
13 *  Obere Lagerstr. 30
14 *  82178 Puchheim
15 *  Germany
16 *  <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#ifndef LIBBSP_POWERPC_QORIQ_QORIQ_H
24#define LIBBSP_POWERPC_QORIQ_QORIQ_H
25
26#include <bsp/tsec.h>
27#include <bsp/utility.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif /* __cplusplus */
32
33#define QORIQ_FILL(a, b, s) uint8_t reserved_ ## b [b - a - sizeof(s)]
34#define QORIQ_RESERVE(a, b) uint8_t reserved_ ## b [b - a]
35
36typedef struct {
37        uint32_t ccsrbar;
38        uint32_t reserved_0;
39        uint32_t altcbar;
40        uint32_t reserved_1;
41        uint32_t altcar;
42        uint32_t reserved_2 [3];
43        uint32_t bptr;
44} qoriq_lcc;
45
46#define CCSRBAR_BASE_ADDR(val) BSP_BFLD32(val, 8, 23)
47#define CCSRBAR_BASE_ADDR_GET(reg) BSP_BFLD32GET(reg, 8, 23)
48#define CCSRBAR_BASE_ADDR_SET(reg, val) BSP_BFLD32SET(reg, val, 8, 23)
49
50#define ALTCBAR_BASE_ADDR(val) BSP_BFLD32(val, 8, 23)
51#define ALTCBAR_BASE_ADDR_GET(reg) BSP_BFLD32GET(reg, 8, 23)
52#define ALTCBAR_BASE_ADDR_SET(reg, val) BSP_BFLD32SET(reg, val, 8, 23)
53
54#define ALTCAR_EN BSP_BBIT32(0)
55#define ALTCAR_TRGT_ID(val) BSP_BFLD32(val, 8, 11)
56#define ALTCAR_TRGT_ID_GET(reg) BSP_BFLD32GET(reg, 8, 11)
57#define ALTCAR_TRGT_ID_SET(reg, val) BSP_BFLD32SET(reg, val, 8, 11)
58
59#define BPTR_EN BSP_BBIT32(0)
60#define BPTR_BOOT_PAGE(val) BSP_BFLD32(val, 8, 31)
61#define BPTR_BOOT_PAGE_GET(reg) BSP_BFLD32GET(reg, 8, 31)
62#define BPTR_BOOT_PAGE_SET(reg, val) BSP_BFLD32SET(reg, val, 8, 31)
63
64typedef struct {
65        uint32_t bar;
66        uint32_t reserved_0;
67        uint32_t ar;
68        uint32_t reserved_1 [5];
69} qoriq_law;
70
71#define LAWBAR_BASE_ADDR(val) BSP_BFLD32(val, 8, 31)
72#define LAWBAR_BASE_ADDR_GET(reg) BSP_BFLD32GET(reg, 8, 31)
73#define LAWBAR_BASE_ADDR_SET(reg, val) BSP_BFLD32SET(reg, val, 8, 31)
74
75#define LAWAR_EN BSP_BBIT32(0)
76#define LAWAR_TRGT(val) BSP_BFLD32(val, 8, 11)
77#define LAWAR_TRGT_GET(reg) BSP_BFLD32GET(reg, 8, 11)
78#define LAWAR_TRGT_SET(reg, val) BSP_BFLD32SET(reg, val, 8, 11)
79#define LAWAR_SIZE(val) BSP_BFLD32(val, 26, 31)
80#define LAWAR_SIZE_GET(reg) BSP_BFLD32GET(reg, 26, 31)
81#define LAWAR_SIZE_SET(reg, val) BSP_BFLD32SET(reg, val, 26, 31)
82
83typedef struct {
84} qoriq_ecm;
85
86typedef struct {
87} qoriq_ddr_controller;
88
89typedef struct {
90} qoriq_i2c;
91
92typedef struct {
93} qoriq_uart;
94
95typedef struct {
96} qoriq_local_bus;
97
98typedef struct {
99} qoriq_spi;
100
101typedef struct {
102} qoriq_pci_express;
103
104typedef struct {
105} qoriq_gpio;
106
107typedef struct {
108} qoriq_tdm;
109
110typedef struct {
111} qoriq_l2_cache;
112
113typedef struct {
114} qoriq_dma;
115
116typedef struct {
117  QORIQ_RESERVE(0x000, 0x100);
118  uint16_t caplength;
119  uint16_t hciversion;
120  uint32_t hcsparams;
121  uint32_t hccparams;
122  QORIQ_RESERVE(0x10c, 0x120);
123  uint32_t dciversion;
124  uint32_t dccparams;
125  QORIQ_RESERVE(0x128, 0x140);
126  uint32_t usbcmd;
127  uint32_t usbsts;
128  uint32_t usbintr;
129  uint32_t frindex;
130  QORIQ_RESERVE(0x150, 0x154);
131  union {
132    uint32_t periodiclistbase;
133    uint32_t deviceaddr;
134  } perbase_devaddr;
135  union {
136    uint32_t asynclistaddr;
137    uint32_t addr;
138  } async_addr;
139  QORIQ_RESERVE(0x15c, 0x160);
140  uint32_t burstsize;
141  uint32_t txfilltuning;
142  QORIQ_RESERVE(0x168, 0x170);
143  uint32_t viewport;
144  QORIQ_RESERVE(0x174, 0x180);
145  uint32_t configflag;
146  uint32_t portsc1;
147  QORIQ_RESERVE(0x188, 0x1a8);
148  uint32_t usbmode;
149  uint32_t endptsetupstat;
150  uint32_t endpointprime;
151  uint32_t endptflush;
152  uint32_t endptstatus;
153  uint32_t endptcomplete;
154  uint32_t endptctrl[6];
155  QORIQ_RESERVE(0x1d8, 0x400);
156  uint32_t snoop1;
157  uint32_t snoop2;
158  uint32_t age_cnt_thresh;
159  uint32_t pri_ctrl;
160  uint32_t si_ctrl;
161  QORIQ_RESERVE(0x414, 0x500);
162  uint32_t control;
163} qoriq_usb;
164
165typedef struct {
166} qoriq_tdm_dma;
167
168typedef struct {
169  uint32_t dsaddr;
170  uint32_t blkattr;
171  uint32_t cmdarg;
172  uint32_t xfertyp;
173  uint32_t cmdrsp0;
174  uint32_t cmdrsp1;
175  uint32_t cmdrsp2;
176  uint32_t cmdrsp3;
177  uint32_t datport;
178  uint32_t prsstat;
179  uint32_t proctl;
180  uint32_t sysctl;
181  uint32_t irqstat;
182  uint32_t irqstaten;
183  uint32_t irqsigen;
184  uint32_t autoc12err;
185  uint32_t hostcapblt;
186  uint32_t wml;
187  QORIQ_FILL(0x00044, 0x00050, uint32_t);
188  uint32_t fevt;
189  QORIQ_FILL(0x00050, 0x000fc, uint32_t);
190  uint32_t hostver;
191  QORIQ_FILL(0x000fc, 0x0040c, uint32_t);
192  uint32_t dcr;
193} qoriq_esdhc;
194
195typedef struct {
196} qoriq_sec;
197
198typedef struct {
199  uint32_t reg;
200  QORIQ_FILL(0x00000, 0x00010, uint32_t);
201} qoriq_pic_reg;
202
203typedef struct {
204  uint32_t ccr;
205  QORIQ_FILL(0x00000, 0x00010, uint32_t);
206  uint32_t bcr;
207  QORIQ_FILL(0x00010, 0x00020, uint32_t);
208  uint32_t vpr;
209  QORIQ_FILL(0x00020, 0x00030, uint32_t);
210  uint32_t dr;
211  QORIQ_FILL(0x00030, 0x00040, uint32_t);
212} qoriq_pic_global_timer;
213
214#define GTCCR_TOG BSP_BBIT32(0)
215#define GTCCR_COUNT_GET(reg) BSP_BFLD32GET(reg, 1, 31)
216
217#define GTBCR_CI BSP_BBIT32(0)
218#define GTBCR_COUNT(val) BSP_BFLD32(val, 1, 31)
219#define GTBCR_COUNT_GET(reg) BSP_BFLD32GET(reg, 1, 31)
220#define GTBCR_COUNT_SET(reg, val) BSP_BFLD32SET(reg, val, 1, 31)
221
222typedef struct {
223  uint32_t misc;
224  QORIQ_FILL(0x00000, 0x00010, uint32_t);
225  uint32_t internal [2];
226  QORIQ_FILL(0x00010, 0x00020, uint32_t [2]);
227} qoriq_pic_bit_field;
228
229typedef struct {
230  uint32_t vpr;
231  QORIQ_FILL(0x00000, 0x00010, uint32_t);
232  uint32_t dr;
233  QORIQ_FILL(0x00010, 0x00020, uint32_t);
234} qoriq_pic_src_cfg;
235
236typedef struct {
237  QORIQ_RESERVE(0x00000, 0x00040);
238  qoriq_pic_reg ipidr [4];
239  uint32_t ctpr;
240  QORIQ_FILL(0x00080, 0x00090, uint32_t);
241  uint32_t whoami;
242  QORIQ_FILL(0x00090, 0x000a0, uint32_t);
243  uint32_t iack;
244  QORIQ_FILL(0x000a0, 0x000b0, uint32_t);
245  uint32_t eoi;
246  QORIQ_FILL(0x000b0, 0x01000, uint32_t);
247} qoriq_pic_per_cpu;
248
249typedef struct {
250  uint32_t brr1;
251  QORIQ_FILL(0x00000, 0x00010, uint32_t);
252  uint32_t brr2;
253  QORIQ_FILL(0x00010, 0x00040, uint32_t);
254  qoriq_pic_reg ipidr [4];
255  uint32_t ctpr;
256  QORIQ_FILL(0x00080, 0x00090, uint32_t);
257  uint32_t whoami;
258  QORIQ_FILL(0x00090, 0x000a0, uint32_t);
259  uint32_t iack;
260  QORIQ_FILL(0x000a0, 0x000b0, uint32_t);
261  uint32_t eoi;
262  QORIQ_FILL(0x000b0, 0x01000, uint32_t);
263  uint32_t frr;
264  QORIQ_FILL(0x01000, 0x01020, uint32_t);
265  uint32_t gcr;
266  QORIQ_FILL(0x01020, 0x01080, uint32_t);
267  uint32_t vir;
268  QORIQ_FILL(0x01080, 0x01090, uint32_t);
269  uint32_t pir;
270  QORIQ_FILL(0x01090, 0x010a0, uint32_t);
271  qoriq_pic_reg ipivpr [4];
272  uint32_t svr;
273  QORIQ_FILL(0x010e0, 0x010f0, uint32_t);
274  uint32_t tfrra;
275  QORIQ_FILL(0x010f0, 0x01100, uint32_t);
276  qoriq_pic_global_timer gta [4];
277  QORIQ_RESERVE(0x01200, 0x01300);
278  uint32_t tcra;
279  QORIQ_FILL(0x01300, 0x01308, uint32_t);
280  uint32_t erqsr;
281  QORIQ_FILL(0x01308, 0x01310, uint32_t);
282  qoriq_pic_bit_field irqsr;
283  qoriq_pic_bit_field cisr;
284  qoriq_pic_bit_field pm [4];
285  QORIQ_RESERVE(0x013d0, 0x01400);
286  qoriq_pic_reg msgr03 [4];
287  QORIQ_RESERVE(0x01440, 0x01500);
288  uint32_t mer03;
289  QORIQ_FILL(0x01500, 0x01510, uint32_t);
290  uint32_t msr03;
291  QORIQ_FILL(0x01510, 0x01600, uint32_t);
292  qoriq_pic_reg msir [8];
293  QORIQ_RESERVE(0x01680, 0x01720);
294  uint32_t msisr;
295  QORIQ_FILL(0x01720, 0x01740, uint32_t);
296  uint32_t msiir;
297  QORIQ_FILL(0x01740, 0x020f0, uint32_t);
298  uint32_t tfrrb;
299  QORIQ_FILL(0x020f0, 0x02100, uint32_t);
300  qoriq_pic_global_timer gtb [4];
301  QORIQ_RESERVE(0x02200, 0x02300);
302  uint32_t tcrb;
303  QORIQ_FILL(0x02300, 0x02400, uint32_t);
304  qoriq_pic_reg msgr47 [4];
305  QORIQ_RESERVE(0x02440, 0x02500);
306  uint32_t mer47;
307  QORIQ_FILL(0x02500, 0x02510, uint32_t);
308  uint32_t msr47;
309  QORIQ_FILL(0x02510, 0x10000, uint32_t);
310  qoriq_pic_src_cfg ei [12];
311  QORIQ_RESERVE(0x10180, 0x10200);
312  qoriq_pic_src_cfg ii [64];
313  QORIQ_RESERVE(0x10a00, 0x11600);
314  qoriq_pic_src_cfg mi [8];
315  QORIQ_RESERVE(0x11700, 0x11c00);
316  qoriq_pic_src_cfg msi [8];
317  QORIQ_RESERVE(0x11d00, 0x20000);
318  qoriq_pic_per_cpu per_cpu [2];
319} qoriq_pic;
320
321#define GTTCR_ROVR(val) BSP_BFLD32(val, 5, 7)
322#define GTTCR_ROVR_GET(reg) BSP_BFLD32GET(reg, 5, 7)
323#define GTTCR_ROVR_SET(reg, val) BSP_BFLD32SET(reg, val, 5, 7)
324#define GTTCR_RTM BSP_BBIT32(15)
325#define GTTCR_CLKR(val) BSP_BFLD32(val, 22, 23)
326#define GTTCR_CLKR_GET(reg) BSP_BFLD32GET(reg, 22, 23)
327#define GTTCR_CLKR_SET(reg, val) BSP_BFLD32SET(reg, val, 22, 23)
328#define GTTCR_CASC(val) BSP_BFLD32(val, 29, 31)
329#define GTTCR_CASC_GET(reg) BSP_BFLD32GET(reg, 29, 31)
330#define GTTCR_CASC_SET(reg, val) BSP_BFLD32SET(reg, val, 29, 31)
331
332typedef struct {
333} qoriq_serial_rapid_io;
334
335typedef struct {
336} qoriq_global_utilities;
337
338typedef struct {
339} qoriq_performance_monitor;
340
341typedef struct {
342} qoriq_debug_watchpoint;
343
344typedef struct {
345} qoriq_serdes;
346
347typedef struct {
348} qoriq_boot_rom;
349
350typedef struct {
351  qoriq_lcc lcc;
352  QORIQ_FILL(0x00000, 0x00c08, qoriq_lcc);
353  qoriq_law law [12];
354  QORIQ_FILL(0x00c08, 0x01000, qoriq_law [12]);
355  qoriq_ecm ecm;
356  QORIQ_FILL(0x01000, 0x02000, qoriq_ecm);
357  qoriq_ddr_controller ddr_controller;
358  QORIQ_FILL(0x02000, 0x03000, qoriq_ddr_controller);
359  qoriq_i2c i2c;
360  QORIQ_FILL(0x03000, 0x04000, qoriq_i2c);
361  QORIQ_RESERVE(0x04000, 0x04500);
362  qoriq_uart uart_0;
363  QORIQ_FILL(0x04500, 0x04600, qoriq_uart);
364  qoriq_uart uart_1;
365  QORIQ_FILL(0x04600, 0x04700, qoriq_uart);
366  QORIQ_RESERVE(0x04700, 0x05000);
367  qoriq_local_bus local_bus;
368  QORIQ_FILL(0x05000, 0x06000, qoriq_local_bus);
369  qoriq_spi spi;
370  QORIQ_FILL(0x06000, 0x07000, qoriq_spi);
371  QORIQ_RESERVE(0x07000, 0x08000);
372  qoriq_pci_express pci_express_3;
373  QORIQ_FILL(0x08000, 0x09000, qoriq_pci_express);
374  qoriq_pci_express pci_express_2;
375  QORIQ_FILL(0x09000, 0x0a000, qoriq_pci_express);
376  qoriq_pci_express pci_express_1;
377  QORIQ_FILL(0x0a000, 0x0b000, qoriq_pci_express);
378  QORIQ_RESERVE(0x0b000, 0x0c000);
379  qoriq_dma dma_2;
380  QORIQ_FILL(0x0c000, 0x0d000, qoriq_dma);
381  QORIQ_RESERVE(0x0d000, 0x0f000);
382  qoriq_gpio gpio;
383  QORIQ_FILL(0x0f000, 0x10000, qoriq_gpio);
384  QORIQ_RESERVE(0x10000, 0x16000);
385  qoriq_tdm tdm;
386  QORIQ_FILL(0x16000, 0x17000, qoriq_tdm);
387  QORIQ_RESERVE(0x17000, 0x20000);
388  qoriq_l2_cache l2_cache;
389  QORIQ_FILL(0x20000, 0x21000, qoriq_l2_cache);
390  qoriq_dma dma_1;
391  QORIQ_FILL(0x21000, 0x22000, qoriq_dma);
392  qoriq_usb usb_1;
393  QORIQ_FILL(0x22000, 0x23000, qoriq_usb);
394  qoriq_usb usb_2;
395  QORIQ_FILL(0x23000, 0x24000, qoriq_usb);
396  tsec_registers tsec_1;
397  QORIQ_FILL(0x24000, 0x25000, tsec_registers);
398  tsec_registers tsec_2;
399  QORIQ_FILL(0x25000, 0x26000, tsec_registers);
400  tsec_registers tsec_3;
401  QORIQ_FILL(0x26000, 0x27000, tsec_registers);
402  QORIQ_RESERVE(0x27000, 0x2c000);
403  qoriq_tdm_dma tdm_dma;
404  QORIQ_FILL(0x2c000, 0x2d000, qoriq_tdm_dma);
405  QORIQ_RESERVE(0x2d000, 0x2e000);
406  qoriq_esdhc esdhc;
407  QORIQ_FILL(0x2e000, 0x2f000, qoriq_esdhc);
408  QORIQ_RESERVE(0x2f000, 0x30000);
409  qoriq_sec sec;
410  QORIQ_FILL(0x30000, 0x31000, qoriq_sec);
411  QORIQ_RESERVE(0x31000, 0x40000);
412  qoriq_pic pic;
413  QORIQ_FILL(0x40000, 0x80000, qoriq_pic);
414  QORIQ_RESERVE(0x80000, 0xb0000);
415  tsec_registers tsec_1_group_0;
416  QORIQ_FILL(0xb0000, 0xb1000, tsec_registers);
417  tsec_registers tsec_2_group_0;
418  QORIQ_FILL(0xb1000, 0xb2000, tsec_registers);
419  tsec_registers tsec_3_group_0;
420  QORIQ_FILL(0xb2000, 0xb3000, tsec_registers);
421  QORIQ_RESERVE(0xb3000, 0xb4000);
422  tsec_registers tsec_1_group_1;
423  QORIQ_FILL(0xb4000, 0xb5000, tsec_registers);
424  tsec_registers tsec_2_group_1;
425  QORIQ_FILL(0xb5000, 0xb6000, tsec_registers);
426  tsec_registers tsec_3_group_1;
427  QORIQ_FILL(0xb6000, 0xb7000, tsec_registers);
428  QORIQ_RESERVE(0xb7000, 0xc0000);
429  qoriq_serial_rapid_io serial_rapid_io;
430  QORIQ_FILL(0xc0000, 0xe0000, qoriq_serial_rapid_io);
431  qoriq_global_utilities global_utilities;
432  QORIQ_FILL(0xe0000, 0xe1000, qoriq_global_utilities);
433  qoriq_performance_monitor performance_monitor;
434  QORIQ_FILL(0xe1000, 0xe2000, qoriq_performance_monitor);
435  qoriq_debug_watchpoint debug_watchpoint;
436  QORIQ_FILL(0xe2000, 0xe3000, qoriq_debug_watchpoint);
437  qoriq_serdes serdes;
438  QORIQ_FILL(0xe3000, 0xe4000, qoriq_serdes);
439  QORIQ_RESERVE(0xe4000, 0xf0000);
440  qoriq_boot_rom boot_rom;
441  QORIQ_FILL(0xf0000, 0x100000, qoriq_boot_rom);
442} qoriq_ccsr;
443
444extern volatile qoriq_ccsr qoriq;
445
446#ifdef __cplusplus
447}
448#endif /* __cplusplus */
449
450#endif /* LIBBSP_POWERPC_QORIQ_QORIQ_H */
Note: See TracBrowser for help on using the repository browser.