diff options
| -rw-r--r-- | arch/tile/include/arch/mpipe.h | 24 | ||||
| -rw-r--r-- | arch/tile/include/arch/mpipe_constants.h | 6 | ||||
| -rw-r--r-- | arch/tile/include/arch/mpipe_shm.h | 54 | ||||
| -rw-r--r-- | arch/tile/include/arch/trio_constants.h | 10 |
4 files changed, 59 insertions, 35 deletions
diff --git a/arch/tile/include/arch/mpipe.h b/arch/tile/include/arch/mpipe.h index 8a33912fd6cc..904538e754d8 100644 --- a/arch/tile/include/arch/mpipe.h +++ b/arch/tile/include/arch/mpipe.h | |||
| @@ -176,7 +176,18 @@ typedef union | |||
| 176 | */ | 176 | */ |
| 177 | uint_reg_t stack_idx : 5; | 177 | uint_reg_t stack_idx : 5; |
| 178 | /* Reserved. */ | 178 | /* Reserved. */ |
| 179 | uint_reg_t __reserved_2 : 5; | 179 | uint_reg_t __reserved_2 : 3; |
| 180 | /* | ||
| 181 | * Instance ID. For devices that support automatic buffer return between | ||
| 182 | * mPIPE instances, this field indicates the buffer owner. If the INST | ||
| 183 | * field does not match the mPIPE's instance number when a packet is | ||
| 184 | * egressed, buffers with HWB set will be returned to the other mPIPE | ||
| 185 | * instance. Note that not all devices support multi-mPIPE buffer | ||
| 186 | * return. The MPIPE_EDMA_INFO.REMOTE_BUFF_RTN_SUPPORT bit indicates | ||
| 187 | * whether the INST field in the buffer descriptor is populated by iDMA | ||
| 188 | * hardware. This field is ignored on writes. | ||
| 189 | */ | ||
| 190 | uint_reg_t inst : 2; | ||
| 180 | /* | 191 | /* |
| 181 | * Reads as one to indicate that this is a hardware managed buffer. | 192 | * Reads as one to indicate that this is a hardware managed buffer. |
| 182 | * Ignored on writes since all buffers on a given stack are the same size. | 193 | * Ignored on writes since all buffers on a given stack are the same size. |
| @@ -205,7 +216,8 @@ typedef union | |||
| 205 | uint_reg_t c : 2; | 216 | uint_reg_t c : 2; |
| 206 | uint_reg_t size : 3; | 217 | uint_reg_t size : 3; |
| 207 | uint_reg_t hwb : 1; | 218 | uint_reg_t hwb : 1; |
| 208 | uint_reg_t __reserved_2 : 5; | 219 | uint_reg_t inst : 2; |
| 220 | uint_reg_t __reserved_2 : 3; | ||
| 209 | uint_reg_t stack_idx : 5; | 221 | uint_reg_t stack_idx : 5; |
| 210 | uint_reg_t __reserved_1 : 6; | 222 | uint_reg_t __reserved_1 : 6; |
| 211 | int_reg_t va : 35; | 223 | int_reg_t va : 35; |
| @@ -231,9 +243,9 @@ typedef union | |||
| 231 | /* Reserved. */ | 243 | /* Reserved. */ |
| 232 | uint_reg_t __reserved_0 : 3; | 244 | uint_reg_t __reserved_0 : 3; |
| 233 | /* eDMA ring being accessed */ | 245 | /* eDMA ring being accessed */ |
| 234 | uint_reg_t ring : 5; | 246 | uint_reg_t ring : 6; |
| 235 | /* Reserved. */ | 247 | /* Reserved. */ |
| 236 | uint_reg_t __reserved_1 : 18; | 248 | uint_reg_t __reserved_1 : 17; |
| 237 | /* | 249 | /* |
| 238 | * This field of the address selects the region (address space) to be | 250 | * This field of the address selects the region (address space) to be |
| 239 | * accessed. For the egress DMA post region, this field must be 5. | 251 | * accessed. For the egress DMA post region, this field must be 5. |
| @@ -250,8 +262,8 @@ typedef union | |||
| 250 | uint_reg_t svc_dom : 5; | 262 | uint_reg_t svc_dom : 5; |
| 251 | uint_reg_t __reserved_2 : 6; | 263 | uint_reg_t __reserved_2 : 6; |
| 252 | uint_reg_t region : 3; | 264 | uint_reg_t region : 3; |
| 253 | uint_reg_t __reserved_1 : 18; | 265 | uint_reg_t __reserved_1 : 17; |
| 254 | uint_reg_t ring : 5; | 266 | uint_reg_t ring : 6; |
| 255 | uint_reg_t __reserved_0 : 3; | 267 | uint_reg_t __reserved_0 : 3; |
| 256 | #endif | 268 | #endif |
| 257 | }; | 269 | }; |
diff --git a/arch/tile/include/arch/mpipe_constants.h b/arch/tile/include/arch/mpipe_constants.h index 410a0400e055..84022ac5fe82 100644 --- a/arch/tile/include/arch/mpipe_constants.h +++ b/arch/tile/include/arch/mpipe_constants.h | |||
| @@ -16,13 +16,13 @@ | |||
| 16 | #ifndef __ARCH_MPIPE_CONSTANTS_H__ | 16 | #ifndef __ARCH_MPIPE_CONSTANTS_H__ |
| 17 | #define __ARCH_MPIPE_CONSTANTS_H__ | 17 | #define __ARCH_MPIPE_CONSTANTS_H__ |
| 18 | 18 | ||
| 19 | #define MPIPE_NUM_CLASSIFIERS 10 | 19 | #define MPIPE_NUM_CLASSIFIERS 16 |
| 20 | #define MPIPE_CLS_MHZ 1200 | 20 | #define MPIPE_CLS_MHZ 1200 |
| 21 | 21 | ||
| 22 | #define MPIPE_NUM_EDMA_RINGS 32 | 22 | #define MPIPE_NUM_EDMA_RINGS 64 |
| 23 | 23 | ||
| 24 | #define MPIPE_NUM_SGMII_MACS 16 | 24 | #define MPIPE_NUM_SGMII_MACS 16 |
| 25 | #define MPIPE_NUM_XAUI_MACS 4 | 25 | #define MPIPE_NUM_XAUI_MACS 16 |
| 26 | #define MPIPE_NUM_LOOPBACK_CHANNELS 4 | 26 | #define MPIPE_NUM_LOOPBACK_CHANNELS 4 |
| 27 | #define MPIPE_NUM_NON_LB_CHANNELS 28 | 27 | #define MPIPE_NUM_NON_LB_CHANNELS 28 |
| 28 | 28 | ||
diff --git a/arch/tile/include/arch/mpipe_shm.h b/arch/tile/include/arch/mpipe_shm.h index f2e9e122818d..13b3c4300e50 100644 --- a/arch/tile/include/arch/mpipe_shm.h +++ b/arch/tile/include/arch/mpipe_shm.h | |||
| @@ -44,8 +44,14 @@ typedef union | |||
| 44 | * descriptors toggles each time the ring tail pointer wraps. | 44 | * descriptors toggles each time the ring tail pointer wraps. |
| 45 | */ | 45 | */ |
| 46 | uint_reg_t gen : 1; | 46 | uint_reg_t gen : 1; |
| 47 | /** | ||
| 48 | * For devices with EDMA reorder support, this field allows the | ||
| 49 | * descriptor to select the egress FIFO. The associated DMA ring must | ||
| 50 | * have ALLOW_EFIFO_SEL enabled. | ||
| 51 | */ | ||
| 52 | uint_reg_t efifo_sel : 6; | ||
| 47 | /** Reserved. Must be zero. */ | 53 | /** Reserved. Must be zero. */ |
| 48 | uint_reg_t r0 : 7; | 54 | uint_reg_t r0 : 1; |
| 49 | /** Checksum generation enabled for this transfer. */ | 55 | /** Checksum generation enabled for this transfer. */ |
| 50 | uint_reg_t csum : 1; | 56 | uint_reg_t csum : 1; |
| 51 | /** | 57 | /** |
| @@ -110,7 +116,8 @@ typedef union | |||
| 110 | uint_reg_t notif : 1; | 116 | uint_reg_t notif : 1; |
| 111 | uint_reg_t ns : 1; | 117 | uint_reg_t ns : 1; |
| 112 | uint_reg_t csum : 1; | 118 | uint_reg_t csum : 1; |
| 113 | uint_reg_t r0 : 7; | 119 | uint_reg_t r0 : 1; |
| 120 | uint_reg_t efifo_sel : 6; | ||
| 114 | uint_reg_t gen : 1; | 121 | uint_reg_t gen : 1; |
| 115 | #endif | 122 | #endif |
| 116 | 123 | ||
| @@ -126,14 +133,16 @@ typedef union | |||
| 126 | /** Reserved. */ | 133 | /** Reserved. */ |
| 127 | uint_reg_t __reserved_1 : 3; | 134 | uint_reg_t __reserved_1 : 3; |
| 128 | /** | 135 | /** |
| 129 | * Instance ID. For devices that support more than one mPIPE instance, | 136 | * Instance ID. For devices that support automatic buffer return between |
| 130 | * this field indicates the buffer owner. If the INST field does not | 137 | * mPIPE instances, this field indicates the buffer owner. If the INST |
| 131 | * match the mPIPE's instance number when a packet is egressed, buffers | 138 | * field does not match the mPIPE's instance number when a packet is |
| 132 | * with HWB set will be returned to the other mPIPE instance. | 139 | * egressed, buffers with HWB set will be returned to the other mPIPE |
| 140 | * instance. Note that not all devices support multi-mPIPE buffer | ||
| 141 | * return. The MPIPE_EDMA_INFO.REMOTE_BUFF_RTN_SUPPORT bit indicates | ||
| 142 | * whether the INST field in the buffer descriptor is populated by iDMA | ||
| 143 | * hardware. | ||
| 133 | */ | 144 | */ |
| 134 | uint_reg_t inst : 1; | 145 | uint_reg_t inst : 2; |
| 135 | /** Reserved. */ | ||
| 136 | uint_reg_t __reserved_2 : 1; | ||
| 137 | /** | 146 | /** |
| 138 | * Always set to one by hardware in iDMA packet descriptors. For eDMA, | 147 | * Always set to one by hardware in iDMA packet descriptors. For eDMA, |
| 139 | * indicates whether the buffer will be released to the buffer stack | 148 | * indicates whether the buffer will be released to the buffer stack |
| @@ -166,8 +175,7 @@ typedef union | |||
| 166 | uint_reg_t c : 2; | 175 | uint_reg_t c : 2; |
| 167 | uint_reg_t size : 3; | 176 | uint_reg_t size : 3; |
| 168 | uint_reg_t hwb : 1; | 177 | uint_reg_t hwb : 1; |
| 169 | uint_reg_t __reserved_2 : 1; | 178 | uint_reg_t inst : 2; |
| 170 | uint_reg_t inst : 1; | ||
| 171 | uint_reg_t __reserved_1 : 3; | 179 | uint_reg_t __reserved_1 : 3; |
| 172 | uint_reg_t stack_idx : 5; | 180 | uint_reg_t stack_idx : 5; |
| 173 | uint_reg_t __reserved_0 : 6; | 181 | uint_reg_t __reserved_0 : 6; |
| @@ -408,7 +416,10 @@ typedef union | |||
| 408 | /** | 416 | /** |
| 409 | * Sequence number applied when packet is distributed. Classifier | 417 | * Sequence number applied when packet is distributed. Classifier |
| 410 | * selects which sequence number is to be applied by writing the 13-bit | 418 | * selects which sequence number is to be applied by writing the 13-bit |
| 411 | * SQN-selector into this field. | 419 | * SQN-selector into this field. For devices that support EXT_SQN (as |
| 420 | * indicated in IDMA_INFO.EXT_SQN_SUPPORT), the GP_SQN can be extended to | ||
| 421 | * 32-bits via the IDMA_CTL.EXT_SQN register. In this case the | ||
| 422 | * PACKET_SQN will be reduced to 32 bits. | ||
| 412 | */ | 423 | */ |
| 413 | uint_reg_t gp_sqn : 16; | 424 | uint_reg_t gp_sqn : 16; |
| 414 | /** | 425 | /** |
| @@ -451,14 +462,16 @@ typedef union | |||
| 451 | /** Reserved. */ | 462 | /** Reserved. */ |
| 452 | uint_reg_t __reserved_5 : 3; | 463 | uint_reg_t __reserved_5 : 3; |
| 453 | /** | 464 | /** |
| 454 | * Instance ID. For devices that support more than one mPIPE instance, | 465 | * Instance ID. For devices that support automatic buffer return between |
| 455 | * this field indicates the buffer owner. If the INST field does not | 466 | * mPIPE instances, this field indicates the buffer owner. If the INST |
| 456 | * match the mPIPE's instance number when a packet is egressed, buffers | 467 | * field does not match the mPIPE's instance number when a packet is |
| 457 | * with HWB set will be returned to the other mPIPE instance. | 468 | * egressed, buffers with HWB set will be returned to the other mPIPE |
| 469 | * instance. Note that not all devices support multi-mPIPE buffer | ||
| 470 | * return. The MPIPE_EDMA_INFO.REMOTE_BUFF_RTN_SUPPORT bit indicates | ||
| 471 | * whether the INST field in the buffer descriptor is populated by iDMA | ||
| 472 | * hardware. | ||
| 458 | */ | 473 | */ |
| 459 | uint_reg_t inst : 1; | 474 | uint_reg_t inst : 2; |
| 460 | /** Reserved. */ | ||
| 461 | uint_reg_t __reserved_6 : 1; | ||
| 462 | /** | 475 | /** |
| 463 | * Always set to one by hardware in iDMA packet descriptors. For eDMA, | 476 | * Always set to one by hardware in iDMA packet descriptors. For eDMA, |
| 464 | * indicates whether the buffer will be released to the buffer stack | 477 | * indicates whether the buffer will be released to the buffer stack |
| @@ -491,8 +504,7 @@ typedef union | |||
| 491 | uint_reg_t c : 2; | 504 | uint_reg_t c : 2; |
| 492 | uint_reg_t size : 3; | 505 | uint_reg_t size : 3; |
| 493 | uint_reg_t hwb : 1; | 506 | uint_reg_t hwb : 1; |
| 494 | uint_reg_t __reserved_6 : 1; | 507 | uint_reg_t inst : 2; |
| 495 | uint_reg_t inst : 1; | ||
| 496 | uint_reg_t __reserved_5 : 3; | 508 | uint_reg_t __reserved_5 : 3; |
| 497 | uint_reg_t stack_idx : 5; | 509 | uint_reg_t stack_idx : 5; |
| 498 | uint_reg_t __reserved_4 : 6; | 510 | uint_reg_t __reserved_4 : 6; |
diff --git a/arch/tile/include/arch/trio_constants.h b/arch/tile/include/arch/trio_constants.h index 628b045436b8..85647e91a458 100644 --- a/arch/tile/include/arch/trio_constants.h +++ b/arch/tile/include/arch/trio_constants.h | |||
| @@ -16,21 +16,21 @@ | |||
| 16 | #ifndef __ARCH_TRIO_CONSTANTS_H__ | 16 | #ifndef __ARCH_TRIO_CONSTANTS_H__ |
| 17 | #define __ARCH_TRIO_CONSTANTS_H__ | 17 | #define __ARCH_TRIO_CONSTANTS_H__ |
| 18 | 18 | ||
| 19 | #define TRIO_NUM_ASIDS 16 | 19 | #define TRIO_NUM_ASIDS 32 |
| 20 | #define TRIO_NUM_TLBS_PER_ASID 16 | 20 | #define TRIO_NUM_TLBS_PER_ASID 16 |
| 21 | 21 | ||
| 22 | #define TRIO_NUM_TPIO_REGIONS 8 | 22 | #define TRIO_NUM_TPIO_REGIONS 8 |
| 23 | #define TRIO_LOG2_NUM_TPIO_REGIONS 3 | 23 | #define TRIO_LOG2_NUM_TPIO_REGIONS 3 |
| 24 | 24 | ||
| 25 | #define TRIO_NUM_MAP_MEM_REGIONS 16 | 25 | #define TRIO_NUM_MAP_MEM_REGIONS 32 |
| 26 | #define TRIO_LOG2_NUM_MAP_MEM_REGIONS 4 | 26 | #define TRIO_LOG2_NUM_MAP_MEM_REGIONS 5 |
| 27 | #define TRIO_NUM_MAP_SQ_REGIONS 8 | 27 | #define TRIO_NUM_MAP_SQ_REGIONS 8 |
| 28 | #define TRIO_LOG2_NUM_MAP_SQ_REGIONS 3 | 28 | #define TRIO_LOG2_NUM_MAP_SQ_REGIONS 3 |
| 29 | 29 | ||
| 30 | #define TRIO_LOG2_NUM_SQ_FIFO_ENTRIES 6 | 30 | #define TRIO_LOG2_NUM_SQ_FIFO_ENTRIES 6 |
| 31 | 31 | ||
| 32 | #define TRIO_NUM_PUSH_DMA_RINGS 32 | 32 | #define TRIO_NUM_PUSH_DMA_RINGS 64 |
| 33 | 33 | ||
| 34 | #define TRIO_NUM_PULL_DMA_RINGS 32 | 34 | #define TRIO_NUM_PULL_DMA_RINGS 64 |
| 35 | 35 | ||
| 36 | #endif /* __ARCH_TRIO_CONSTANTS_H__ */ | 36 | #endif /* __ARCH_TRIO_CONSTANTS_H__ */ |
