diff options
Diffstat (limited to 'c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h')
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h | 326 |
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 |