summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h')
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h326
1 files changed, 187 insertions, 139 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h b/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
index e56c30fc16..0bacc54463 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
+++ b/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
@@ -7,10 +7,10 @@
*/
/*
- * Copyright (c) 2010 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2010-2015 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
- * Obere Lagerstr. 30
+ * Dornierstr. 4
* 82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
@@ -23,6 +23,7 @@
#ifndef LIBBSP_POWERPC_QORIQ_QORIQ_H
#define LIBBSP_POWERPC_QORIQ_QORIQ_H
+#include <bsp.h>
#include <bsp/tsec.h>
#include <bsp/utility.h>
@@ -34,6 +35,188 @@ extern "C" {
#define QORIQ_RESERVE(a, b) uint8_t reserved_ ## b [b - a]
typedef struct {
+ uint32_t reg;
+ QORIQ_FILL(0x00000, 0x00010, uint32_t);
+} qoriq_pic_reg;
+
+typedef struct {
+ uint32_t ccr;
+ QORIQ_FILL(0x00000, 0x00010, uint32_t);
+ uint32_t bcr;
+ QORIQ_FILL(0x00010, 0x00020, uint32_t);
+ uint32_t vpr;
+ QORIQ_FILL(0x00020, 0x00030, uint32_t);
+ uint32_t dr;
+ QORIQ_FILL(0x00030, 0x00040, uint32_t);
+} qoriq_pic_global_timer;
+
+#define GTCCR_TOG BSP_BBIT32(0)
+#define GTCCR_COUNT_GET(reg) BSP_BFLD32GET(reg, 1, 31)
+
+#define GTBCR_CI BSP_BBIT32(0)
+#define GTBCR_COUNT(val) BSP_BFLD32(val, 1, 31)
+#define GTBCR_COUNT_GET(reg) BSP_BFLD32GET(reg, 1, 31)
+#define GTBCR_COUNT_SET(reg, val) BSP_BFLD32SET(reg, val, 1, 31)
+
+typedef struct {
+ uint32_t misc;
+ QORIQ_FILL(0x00000, 0x00010, uint32_t);
+ uint32_t internal [2];
+ QORIQ_FILL(0x00010, 0x00020, uint32_t [2]);
+} qoriq_pic_bit_field;
+
+typedef struct {
+ uint32_t vpr;
+ QORIQ_FILL(0x00000, 0x00010, uint32_t);
+ uint32_t dr;
+ QORIQ_FILL(0x00010, 0x00020, uint32_t);
+} qoriq_pic_src_cfg;
+
+typedef struct {
+ QORIQ_RESERVE(0x00000, 0x00040);
+ qoriq_pic_reg ipidr [4];
+ uint32_t ctpr;
+ QORIQ_FILL(0x00080, 0x00090, uint32_t);
+ uint32_t whoami;
+ QORIQ_FILL(0x00090, 0x000a0, uint32_t);
+ uint32_t iack;
+ QORIQ_FILL(0x000a0, 0x000b0, uint32_t);
+ uint32_t eoi;
+ QORIQ_FILL(0x000b0, 0x01000, uint32_t);
+} qoriq_pic_per_cpu;
+
+typedef struct {
+ uint32_t brr1;
+ QORIQ_FILL(0x00000, 0x00010, uint32_t);
+ uint32_t brr2;
+ QORIQ_FILL(0x00010, 0x00040, uint32_t);
+ qoriq_pic_reg ipidr [4];
+ uint32_t ctpr;
+ QORIQ_FILL(0x00080, 0x00090, uint32_t);
+ uint32_t whoami;
+ QORIQ_FILL(0x00090, 0x000a0, uint32_t);
+ uint32_t iack;
+ QORIQ_FILL(0x000a0, 0x000b0, uint32_t);
+ uint32_t eoi;
+ QORIQ_FILL(0x000b0, 0x01000, uint32_t);
+ uint32_t frr;
+ QORIQ_FILL(0x01000, 0x01020, uint32_t);
+ uint32_t gcr;
+ QORIQ_FILL(0x01020, 0x01080, uint32_t);
+ uint32_t vir;
+ QORIQ_FILL(0x01080, 0x01090, uint32_t);
+ uint32_t pir;
+ QORIQ_FILL(0x01090, 0x010a0, uint32_t);
+ qoriq_pic_reg ipivpr [4];
+ uint32_t svr;
+ QORIQ_FILL(0x010e0, 0x010f0, uint32_t);
+ uint32_t tfrra;
+ QORIQ_FILL(0x010f0, 0x01100, uint32_t);
+ qoriq_pic_global_timer gta [4];
+ QORIQ_RESERVE(0x01200, 0x01300);
+ uint32_t tcra;
+ QORIQ_FILL(0x01300, 0x01308, uint32_t);
+ uint32_t erqsr;
+ QORIQ_FILL(0x01308, 0x01310, uint32_t);
+ qoriq_pic_bit_field irqsr;
+ qoriq_pic_bit_field cisr;
+ qoriq_pic_bit_field pm [4];
+ QORIQ_RESERVE(0x013d0, 0x01400);
+ qoriq_pic_reg msgr03 [4];
+ QORIQ_RESERVE(0x01440, 0x01500);
+ uint32_t mer03;
+ QORIQ_FILL(0x01500, 0x01510, uint32_t);
+ uint32_t msr03;
+ QORIQ_FILL(0x01510, 0x01600, uint32_t);
+ qoriq_pic_reg msir [8];
+ QORIQ_RESERVE(0x01680, 0x01720);
+ uint32_t msisr;
+ QORIQ_FILL(0x01720, 0x01740, uint32_t);
+ uint32_t msiir;
+ QORIQ_FILL(0x01740, 0x020f0, uint32_t);
+ uint32_t tfrrb;
+ QORIQ_FILL(0x020f0, 0x02100, uint32_t);
+ qoriq_pic_global_timer gtb [4];
+ QORIQ_RESERVE(0x02200, 0x02300);
+ uint32_t tcrb;
+ QORIQ_FILL(0x02300, 0x02400, uint32_t);
+ qoriq_pic_reg msgr47 [4];
+ QORIQ_RESERVE(0x02440, 0x02500);
+ uint32_t mer47;
+ QORIQ_FILL(0x02500, 0x02510, uint32_t);
+ uint32_t msr47;
+ QORIQ_FILL(0x02510, 0x10000, uint32_t);
+ qoriq_pic_src_cfg ei [12];
+ QORIQ_RESERVE(0x10180, 0x10200);
+ qoriq_pic_src_cfg ii [64];
+ QORIQ_RESERVE(0x10a00, 0x11600);
+ qoriq_pic_src_cfg mi [8];
+ QORIQ_RESERVE(0x11700, 0x11c00);
+ qoriq_pic_src_cfg msi [8];
+ QORIQ_RESERVE(0x11d00, 0x20000);
+ qoriq_pic_per_cpu per_cpu [2];
+} qoriq_pic;
+
+#define GTTCR_ROVR(val) BSP_BFLD32(val, 5, 7)
+#define GTTCR_ROVR_GET(reg) BSP_BFLD32GET(reg, 5, 7)
+#define GTTCR_ROVR_SET(reg, val) BSP_BFLD32SET(reg, val, 5, 7)
+#define GTTCR_RTM BSP_BBIT32(15)
+#define GTTCR_CLKR(val) BSP_BFLD32(val, 22, 23)
+#define GTTCR_CLKR_GET(reg) BSP_BFLD32GET(reg, 22, 23)
+#define GTTCR_CLKR_SET(reg, val) BSP_BFLD32SET(reg, val, 22, 23)
+#define GTTCR_CASC(val) BSP_BFLD32(val, 29, 31)
+#define GTTCR_CASC_GET(reg) BSP_BFLD32GET(reg, 29, 31)
+#define GTTCR_CASC_SET(reg, val) BSP_BFLD32SET(reg, val, 29, 31)
+
+typedef struct {
+} qoriq_uart;
+
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
+
+typedef struct {
+ uint32_t ccsrbarh;
+ uint32_t ccsrbarl;
+ uint32_t ccsrar;
+ uint32_t altcbarh;
+ uint32_t altcbarl;
+ uint32_t altcar;
+ uint32_t bstrh;
+ uint32_t bstrl;
+ uint32_t bstar;
+} qoriq_lcc;
+
+#define LCC_BSTAR_EN BSP_BBIT32(0)
+
+typedef struct {
+ uint32_t lawbarh;
+ uint32_t lawbarl;
+ uint32_t lawar;
+ uint32_t reserved_0xc;
+} qoriq_law;
+
+typedef struct {
+ qoriq_lcc lcc;
+ QORIQ_FILL(0x000000, 0x000c00, qoriq_lcc);
+ qoriq_law law [32];
+ QORIQ_FILL(0x000c00, 0x001000, qoriq_law [32]);
+ QORIQ_RESERVE(0x001000, 0x040000);
+ qoriq_pic pic;
+ QORIQ_FILL(0x040000, 0x070000, qoriq_pic);
+ QORIQ_RESERVE(0x070000, 0x11c500);
+ qoriq_uart uart_0;
+ QORIQ_FILL(0x11c500, 0x11c600, qoriq_uart);
+ qoriq_uart uart_1;
+ QORIQ_FILL(0x11c600, 0x11d500, qoriq_uart);
+ qoriq_uart uart_2;
+ QORIQ_FILL(0x11d500, 0x11d600, qoriq_uart);
+ qoriq_uart uart_3;
+ QORIQ_FILL(0x11d600, 0x11e000, qoriq_uart);
+ QORIQ_RESERVE(0x11e000, 0x2000000);
+} qoriq_ccsr;
+
+#else /* QORIQ_CHIP_VARIANT */
+
+typedef struct {
uint32_t ccsrbar;
uint32_t reserved_0;
uint32_t altcbar;
@@ -90,9 +273,6 @@ typedef struct {
} qoriq_i2c;
typedef struct {
-} qoriq_uart;
-
-typedef struct {
} qoriq_local_bus;
typedef struct {
@@ -196,140 +376,6 @@ typedef struct {
} qoriq_sec;
typedef struct {
- uint32_t reg;
- QORIQ_FILL(0x00000, 0x00010, uint32_t);
-} qoriq_pic_reg;
-
-typedef struct {
- uint32_t ccr;
- QORIQ_FILL(0x00000, 0x00010, uint32_t);
- uint32_t bcr;
- QORIQ_FILL(0x00010, 0x00020, uint32_t);
- uint32_t vpr;
- QORIQ_FILL(0x00020, 0x00030, uint32_t);
- uint32_t dr;
- QORIQ_FILL(0x00030, 0x00040, uint32_t);
-} qoriq_pic_global_timer;
-
-#define GTCCR_TOG BSP_BBIT32(0)
-#define GTCCR_COUNT_GET(reg) BSP_BFLD32GET(reg, 1, 31)
-
-#define GTBCR_CI BSP_BBIT32(0)
-#define GTBCR_COUNT(val) BSP_BFLD32(val, 1, 31)
-#define GTBCR_COUNT_GET(reg) BSP_BFLD32GET(reg, 1, 31)
-#define GTBCR_COUNT_SET(reg, val) BSP_BFLD32SET(reg, val, 1, 31)
-
-typedef struct {
- uint32_t misc;
- QORIQ_FILL(0x00000, 0x00010, uint32_t);
- uint32_t internal [2];
- QORIQ_FILL(0x00010, 0x00020, uint32_t [2]);
-} qoriq_pic_bit_field;
-
-typedef struct {
- uint32_t vpr;
- QORIQ_FILL(0x00000, 0x00010, uint32_t);
- uint32_t dr;
- QORIQ_FILL(0x00010, 0x00020, uint32_t);
-} qoriq_pic_src_cfg;
-
-typedef struct {
- QORIQ_RESERVE(0x00000, 0x00040);
- qoriq_pic_reg ipidr [4];
- uint32_t ctpr;
- QORIQ_FILL(0x00080, 0x00090, uint32_t);
- uint32_t whoami;
- QORIQ_FILL(0x00090, 0x000a0, uint32_t);
- uint32_t iack;
- QORIQ_FILL(0x000a0, 0x000b0, uint32_t);
- uint32_t eoi;
- QORIQ_FILL(0x000b0, 0x01000, uint32_t);
-} qoriq_pic_per_cpu;
-
-typedef struct {
- uint32_t brr1;
- QORIQ_FILL(0x00000, 0x00010, uint32_t);
- uint32_t brr2;
- QORIQ_FILL(0x00010, 0x00040, uint32_t);
- qoriq_pic_reg ipidr [4];
- uint32_t ctpr;
- QORIQ_FILL(0x00080, 0x00090, uint32_t);
- uint32_t whoami;
- QORIQ_FILL(0x00090, 0x000a0, uint32_t);
- uint32_t iack;
- QORIQ_FILL(0x000a0, 0x000b0, uint32_t);
- uint32_t eoi;
- QORIQ_FILL(0x000b0, 0x01000, uint32_t);
- uint32_t frr;
- QORIQ_FILL(0x01000, 0x01020, uint32_t);
- uint32_t gcr;
- QORIQ_FILL(0x01020, 0x01080, uint32_t);
- uint32_t vir;
- QORIQ_FILL(0x01080, 0x01090, uint32_t);
- uint32_t pir;
- QORIQ_FILL(0x01090, 0x010a0, uint32_t);
- qoriq_pic_reg ipivpr [4];
- uint32_t svr;
- QORIQ_FILL(0x010e0, 0x010f0, uint32_t);
- uint32_t tfrra;
- QORIQ_FILL(0x010f0, 0x01100, uint32_t);
- qoriq_pic_global_timer gta [4];
- QORIQ_RESERVE(0x01200, 0x01300);
- uint32_t tcra;
- QORIQ_FILL(0x01300, 0x01308, uint32_t);
- uint32_t erqsr;
- QORIQ_FILL(0x01308, 0x01310, uint32_t);
- qoriq_pic_bit_field irqsr;
- qoriq_pic_bit_field cisr;
- qoriq_pic_bit_field pm [4];
- QORIQ_RESERVE(0x013d0, 0x01400);
- qoriq_pic_reg msgr03 [4];
- QORIQ_RESERVE(0x01440, 0x01500);
- uint32_t mer03;
- QORIQ_FILL(0x01500, 0x01510, uint32_t);
- uint32_t msr03;
- QORIQ_FILL(0x01510, 0x01600, uint32_t);
- qoriq_pic_reg msir [8];
- QORIQ_RESERVE(0x01680, 0x01720);
- uint32_t msisr;
- QORIQ_FILL(0x01720, 0x01740, uint32_t);
- uint32_t msiir;
- QORIQ_FILL(0x01740, 0x020f0, uint32_t);
- uint32_t tfrrb;
- QORIQ_FILL(0x020f0, 0x02100, uint32_t);
- qoriq_pic_global_timer gtb [4];
- QORIQ_RESERVE(0x02200, 0x02300);
- uint32_t tcrb;
- QORIQ_FILL(0x02300, 0x02400, uint32_t);
- qoriq_pic_reg msgr47 [4];
- QORIQ_RESERVE(0x02440, 0x02500);
- uint32_t mer47;
- QORIQ_FILL(0x02500, 0x02510, uint32_t);
- uint32_t msr47;
- QORIQ_FILL(0x02510, 0x10000, uint32_t);
- qoriq_pic_src_cfg ei [12];
- QORIQ_RESERVE(0x10180, 0x10200);
- qoriq_pic_src_cfg ii [64];
- QORIQ_RESERVE(0x10a00, 0x11600);
- qoriq_pic_src_cfg mi [8];
- QORIQ_RESERVE(0x11700, 0x11c00);
- qoriq_pic_src_cfg msi [8];
- QORIQ_RESERVE(0x11d00, 0x20000);
- qoriq_pic_per_cpu per_cpu [2];
-} qoriq_pic;
-
-#define GTTCR_ROVR(val) BSP_BFLD32(val, 5, 7)
-#define GTTCR_ROVR_GET(reg) BSP_BFLD32GET(reg, 5, 7)
-#define GTTCR_ROVR_SET(reg, val) BSP_BFLD32SET(reg, val, 5, 7)
-#define GTTCR_RTM BSP_BBIT32(15)
-#define GTTCR_CLKR(val) BSP_BFLD32(val, 22, 23)
-#define GTTCR_CLKR_GET(reg) BSP_BFLD32GET(reg, 22, 23)
-#define GTTCR_CLKR_SET(reg, val) BSP_BFLD32SET(reg, val, 22, 23)
-#define GTTCR_CASC(val) BSP_BFLD32(val, 29, 31)
-#define GTTCR_CASC_GET(reg) BSP_BFLD32GET(reg, 29, 31)
-#define GTTCR_CASC_SET(reg, val) BSP_BFLD32SET(reg, val, 29, 31)
-
-typedef struct {
} qoriq_serial_rapid_io;
typedef struct {
@@ -441,6 +487,8 @@ typedef struct {
QORIQ_FILL(0xf0000, 0x100000, qoriq_boot_rom);
} qoriq_ccsr;
+#endif /* QORIQ_CHIP_VARIANT */
+
extern volatile qoriq_ccsr qoriq;
#ifdef __cplusplus