diff options
Diffstat (limited to 'arch/tile')
-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__ */ |