diff options
Diffstat (limited to 'c/src/lib/libbsp/powerpc/qoriq/include')
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/include/bsp.h | 12 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/include/irq.h | 121 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/include/mmu.h | 12 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h | 326 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/include/tm27.h | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/include/u-boot-config.h | 10 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/include/uart-bridge.h | 2 |
7 files changed, 329 insertions, 156 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/bsp.h b/c/src/lib/libbsp/powerpc/qoriq/include/bsp.h index 08760607b5..c0904687f9 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/include/bsp.h +++ b/c/src/lib/libbsp/powerpc/qoriq/include/bsp.h @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2010-2013 embedded brains GmbH. All rights reserved. + * Copyright (c) 2010-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -37,6 +37,16 @@ extern "C" { #define BSP_FEATURE_IRQ_EXTENSION +#define QORIQ_CHIP(alpha, num) ((alpha) * 10000 + (num)) + +#define QORIQ_CHIP_P1020 QORIQ_CHIP('P', 1020) + +#define QORIQ_CHIP_T2080 QORIQ_CHIP('T', 2080) + +#define QORIQ_CHIP_T4240 QORIQ_CHIP('T', 4240) + +#define QORIQ_CHIP_IS_T_VARIANT(variant) ((variant) / 10000 == 'T') + extern unsigned BSP_bus_frequency; struct rtems_bsdnet_ifconfig; diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/irq.h b/c/src/lib/libbsp/powerpc/qoriq/include/irq.h index 3464028560..7f3085732a 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/include/irq.h +++ b/c/src/lib/libbsp/powerpc/qoriq/include/irq.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,7 +23,7 @@ #ifndef LIBBSP_POWERPC_QORIQ_IRQ_H #define LIBBSP_POWERPC_QORIQ_IRQ_H -#include <rtems.h> +#include <bsp.h> #include <rtems/irq.h> #include <rtems/irq-extension.h> @@ -31,6 +31,113 @@ extern "C" { #endif /* __cplusplus */ +#define QORIQ_IRQ_ERROR 0 + +#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT) + +#define QORIQ_IRQ_PCI_EXPRESS_1 4 +#define QORIQ_IRQ_PCI_EXPRESS_2 5 +#define QORIQ_IRQ_PCI_EXPRESS_3 6 +#define QORIQ_IRQ_PCI_EXPRESS_4 7 +#define QORIQ_IRQ_PAMU 8 +#define QORIQ_IRQ_IFC 9 +#define QORIQ_IRQ_DMA_CHANNEL_1_1 12 +#define QORIQ_IRQ_DMA_CHANNEL_1_2 13 +#define QORIQ_IRQ_DMA_CHANNEL_1_3 14 +#define QORIQ_IRQ_DMA_CHANNEL_1_4 15 +#define QORIQ_IRQ_DMA_CHANNEL_2_1 16 +#define QORIQ_IRQ_DMA_CHANNEL_2_2 17 +#define QORIQ_IRQ_DMA_CHANNEL_2_3 18 +#define QORIQ_IRQ_DMA_CHANNEL_2_4 19 +#define QORIQ_IRQ_DUART_1 20 +#define QORIQ_IRQ_DUART_2 21 +#define QORIQ_IRQ_DUARL_I2C_1 22 +#define QORIQ_IRQ_DUARL_I2C_2 23 +#define QORIQ_IRQ_PCI_EXPRESS_1_INTA 24 +#define QORIQ_IRQ_PCI_EXPRESS_2_INTA 25 +#define QORIQ_IRQ_PCI_EXPRESS_3_INTA 26 +#define QORIQ_IRQ_PCI_EXPRESS_4_INTA 27 +#define QORIQ_IRQ_USB_1 28 +#define QORIQ_IRQ_USB_2 29 +#define QORIQ_IRQ_ESDHC 32 +#define QORIQ_IRQ_PERF_MON 36 +#define QORIQ_IRQ_ESPI 37 +#define QORIQ_IRQ_GPIO_2 38 +#define QORIQ_IRQ_GPIO_1 39 +#define QORIQ_IRQ_SATA_1 52 +#define QORIQ_IRQ_SATA_2 53 +#define QORIQ_IRQ_DMA_CHANNEL_1_5 60 +#define QORIQ_IRQ_DMA_CHANNEL_1_6 61 +#define QORIQ_IRQ_DMA_CHANNEL_1_7 62 +#define QORIQ_IRQ_DMA_CHANNEL_1_8 63 +#define QORIQ_IRQ_DMA_CHANNEL_2_5 64 +#define QORIQ_IRQ_DMA_CHANNEL_2_6 65 +#define QORIQ_IRQ_DMA_CHANNEL_2_7 66 +#define QORIQ_IRQ_DMA_CHANNEL_2_8 67 +#define QORIQ_IRQ_EVENT_PROC_UNIT_1 68 +#define QORIQ_IRQ_EVENT_PROC_UNIT_2 69 +#define QORIQ_IRQ_GPIO_3 70 +#define QORIQ_IRQ_GPIO_4 71 +#define QORIQ_IRQ_SEC_5_2_JOB_QUEUE_1 72 +#define QORIQ_IRQ_SEC_5_2_JOB_QUEUE_2 73 +#define QORIQ_IRQ_SEC_5_2_JOB_QUEUE_3 74 +#define QORIQ_IRQ_SEC_5_2_JOB_QUEUE_4 75 +#define QORIQ_IRQ_SEC_5_2_GLOBAL_ERROR 76 +#define QORIQ_IRQ_SEC_MON 77 +#define QORIQ_IRQ_EVENT_PROC_UNIT_3 78 +#define QORIQ_IRQ_EVENT_PROC_UNIT_4 79 +#define QORIQ_IRQ_FRAME_MGR 80 +#define QORIQ_IRQ_MDIO_1 84 +#define QORIQ_IRQ_MDIO_2 85 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_0 88 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_0 89 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_1 90 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_1 91 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_2 92 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_2 93 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_3 94 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_3 95 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_4 96 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_4 97 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_5 98 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_5 99 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_6 100 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_6 101 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_7 102 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_7 103 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_8 104 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_8 105 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_9 106 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_9 107 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_10 109 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_10 109 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_11 110 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_11 111 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_12 112 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_12 113 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_13 114 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_13 115 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_14 116 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_14 117 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_15 118 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_15 119 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_16 120 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_16 121 +#define QORIQ_IRQ_QUEUE_MGR_PORTAL_17 122 +#define QORIQ_IRQ_BUFFER_MGR_PORTAL_17 123 +#define QORIQ_IRQ_DMA_CHANNEL_3_1 240 +#define QORIQ_IRQ_DMA_CHANNEL_3_2 241 +#define QORIQ_IRQ_DMA_CHANNEL_3_3 242 +#define QORIQ_IRQ_DMA_CHANNEL_3_4 243 +#define QORIQ_IRQ_DMA_CHANNEL_3_4 244 +#define QORIQ_IRQ_DMA_CHANNEL_3_5 245 +#define QORIQ_IRQ_DMA_CHANNEL_3_6 246 +#define QORIQ_IRQ_DMA_CHANNEL_3_8 247 + +#define QORIQ_IRQ_EXT_BASE 128 + +#else /* QORIQ_CHIP_VARIANT */ + /** * @defgroup QoriqInterruptP1020 QorIQ - P1020 Internal Interrupt Sources * @@ -41,7 +148,6 @@ extern "C" { * @{ */ -#define QORIQ_IRQ_ERROR 0 #define QORIQ_IRQ_ETSEC_TX_1_GROUP_1 1 #define QORIQ_IRQ_ETSEC_RX_1_GROUP_1 2 #define QORIQ_IRQ_ETSEC_ER_1_GROUP_1 8 @@ -107,7 +213,7 @@ extern "C" { #define QORIQ_IRQ_ETSEC_TX_2 19 #define QORIQ_IRQ_ETSEC_RX_2 20 #define QORIQ_IRQ_ETSEC_ER_2 24 -#define QORIQ_IRQ_DUART 26 +#define QORIQ_IRQ_DUART_1 26 #define QORIQ_IRQ_I2C 27 #define QORIQ_IRQ_PERFORMANCE_MONITOR 28 #define QORIQ_IRQ_SECURITY_1 29 @@ -126,6 +232,10 @@ extern "C" { /** @} */ +#define QORIQ_IRQ_EXT_BASE 64 + +#endif /* QORIQ_CHIP_VARIANT */ + /** * @defgroup QoriqInterruptExternal QorIQ - External Interrupt Sources * @@ -136,7 +246,6 @@ extern "C" { * @{ */ -#define QORIQ_IRQ_EXT_BASE 64 #define QORIQ_IRQ_EXT_0 (QORIQ_IRQ_EXT_BASE + 0) #define QORIQ_IRQ_EXT_1 (QORIQ_IRQ_EXT_BASE + 1) #define QORIQ_IRQ_EXT_2 (QORIQ_IRQ_EXT_BASE + 2) diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/mmu.h b/c/src/lib/libbsp/powerpc/qoriq/include/mmu.h index 0215227f30..f08cc43384 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/include/mmu.h +++ b/c/src/lib/libbsp/powerpc/qoriq/include/mmu.h @@ -7,10 +7,10 @@ */ /* - * Copyright (c) 2011 embedded brains GmbH. All rights reserved. + * Copyright (c) 2011-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Obere Lagerstr. 30 + * Dornierstr. 4 * 82178 Puchheim * Germany * <rtems@embedded-brains.de> @@ -26,6 +26,8 @@ #include <stdint.h> #include <stdbool.h> +#include <bspopts.h> + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -40,10 +42,8 @@ extern "C" { * @{ */ -#define QORIQ_MMU_ENTRY_COUNT 32 - #define QORIQ_MMU_MIN_POWER 12 -#define QORIQ_MMU_MAX_POWER 32 +#define QORIQ_MMU_MAX_POWER 30 #define QORIQ_MMU_POWER_STEP 2 typedef struct { @@ -57,7 +57,7 @@ typedef struct { typedef struct { int count; - qoriq_mmu_entry entries [QORIQ_MMU_ENTRY_COUNT]; + qoriq_mmu_entry entries [QORIQ_TLB1_ENTRY_COUNT]; } qoriq_mmu_context; void qoriq_mmu_context_init(qoriq_mmu_context *self); 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 diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/tm27.h b/c/src/lib/libbsp/powerpc/qoriq/include/tm27.h index cc35487ca9..46264b7e67 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/include/tm27.h +++ b/c/src/lib/libbsp/powerpc/qoriq/include/tm27.h @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2010-2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2010-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/u-boot-config.h b/c/src/lib/libbsp/powerpc/qoriq/include/u-boot-config.h index 5a34906ecd..3e6fa90b55 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/include/u-boot-config.h +++ b/c/src/lib/libbsp/powerpc/qoriq/include/u-boot-config.h @@ -1,8 +1,8 @@ /* - * 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> @@ -15,6 +15,12 @@ #ifndef LIBBSP_POWERPC_QORIQ_U_BOOT_CONFIG_H #define LIBBSP_POWERPC_QORIQ_U_BOOT_CONFIG_H +#include <bspopts.h> + +#define U_BOOT_BOARD_INFO_TEXT_SECTION __attribute__((section(".bsp_start_text"))) + +#define U_BOOT_BOARD_INFO_DATA_SECTION __attribute__((section(".bsp_start_data"))) + #define CONFIG_E500 #define CONFIG_HAS_ETH1 #define CONFIG_HAS_ETH2 diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/uart-bridge.h b/c/src/lib/libbsp/powerpc/qoriq/include/uart-bridge.h index cd342ffcb6..97e6553b7c 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/include/uart-bridge.h +++ b/c/src/lib/libbsp/powerpc/qoriq/include/uart-bridge.h @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2011-2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2011-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 |