Skip to content

Commit 88e2692

Browse files
tile: <arch/> header updates from upstream
The hardware architecture descriptor headers have been updated, in particular to reflect some larger MMIO fields on the mPIPE shims for controlling the network hardware, from the recent Gx72 release. Signed-off-by: Chris Metcalf <[email protected]>
1 parent 126eb08 commit 88e2692

File tree

4 files changed

+59
-35
lines changed

4 files changed

+59
-35
lines changed

arch/tile/include/arch/mpipe.h

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,18 @@ typedef union
176176
*/
177177
uint_reg_t stack_idx : 5;
178178
/* 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;
180191
/*
181192
* Reads as one to indicate that this is a hardware managed buffer.
182193
* Ignored on writes since all buffers on a given stack are the same size.
@@ -205,7 +216,8 @@ typedef union
205216
uint_reg_t c : 2;
206217
uint_reg_t size : 3;
207218
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;
209221
uint_reg_t stack_idx : 5;
210222
uint_reg_t __reserved_1 : 6;
211223
int_reg_t va : 35;
@@ -231,9 +243,9 @@ typedef union
231243
/* Reserved. */
232244
uint_reg_t __reserved_0 : 3;
233245
/* eDMA ring being accessed */
234-
uint_reg_t ring : 5;
246+
uint_reg_t ring : 6;
235247
/* Reserved. */
236-
uint_reg_t __reserved_1 : 18;
248+
uint_reg_t __reserved_1 : 17;
237249
/*
238250
* This field of the address selects the region (address space) to be
239251
* accessed. For the egress DMA post region, this field must be 5.
@@ -250,8 +262,8 @@ typedef union
250262
uint_reg_t svc_dom : 5;
251263
uint_reg_t __reserved_2 : 6;
252264
uint_reg_t region : 3;
253-
uint_reg_t __reserved_1 : 18;
254-
uint_reg_t ring : 5;
265+
uint_reg_t __reserved_1 : 17;
266+
uint_reg_t ring : 6;
255267
uint_reg_t __reserved_0 : 3;
256268
#endif
257269
};

arch/tile/include/arch/mpipe_constants.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
#ifndef __ARCH_MPIPE_CONSTANTS_H__
1717
#define __ARCH_MPIPE_CONSTANTS_H__
1818

19-
#define MPIPE_NUM_CLASSIFIERS 10
19+
#define MPIPE_NUM_CLASSIFIERS 16
2020
#define MPIPE_CLS_MHZ 1200
2121

22-
#define MPIPE_NUM_EDMA_RINGS 32
22+
#define MPIPE_NUM_EDMA_RINGS 64
2323

2424
#define MPIPE_NUM_SGMII_MACS 16
25-
#define MPIPE_NUM_XAUI_MACS 4
25+
#define MPIPE_NUM_XAUI_MACS 16
2626
#define MPIPE_NUM_LOOPBACK_CHANNELS 4
2727
#define MPIPE_NUM_NON_LB_CHANNELS 28
2828

arch/tile/include/arch/mpipe_shm.h

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,14 @@ typedef union
4444
* descriptors toggles each time the ring tail pointer wraps.
4545
*/
4646
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;
4753
/** Reserved. Must be zero. */
48-
uint_reg_t r0 : 7;
54+
uint_reg_t r0 : 1;
4955
/** Checksum generation enabled for this transfer. */
5056
uint_reg_t csum : 1;
5157
/**
@@ -110,7 +116,8 @@ typedef union
110116
uint_reg_t notif : 1;
111117
uint_reg_t ns : 1;
112118
uint_reg_t csum : 1;
113-
uint_reg_t r0 : 7;
119+
uint_reg_t r0 : 1;
120+
uint_reg_t efifo_sel : 6;
114121
uint_reg_t gen : 1;
115122
#endif
116123

@@ -126,14 +133,16 @@ typedef union
126133
/** Reserved. */
127134
uint_reg_t __reserved_1 : 3;
128135
/**
129-
* Instance ID. For devices that support more than one mPIPE instance,
130-
* this field indicates the buffer owner. If the INST field does not
131-
* match the mPIPE's instance number when a packet is egressed, buffers
132-
* with HWB set will be returned to the other mPIPE instance.
136+
* Instance ID. For devices that support automatic buffer return between
137+
* mPIPE instances, this field indicates the buffer owner. If the INST
138+
* field does not match the mPIPE's instance number when a packet is
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.
133144
*/
134-
uint_reg_t inst : 1;
135-
/** Reserved. */
136-
uint_reg_t __reserved_2 : 1;
145+
uint_reg_t inst : 2;
137146
/**
138147
* Always set to one by hardware in iDMA packet descriptors. For eDMA,
139148
* indicates whether the buffer will be released to the buffer stack
@@ -166,8 +175,7 @@ typedef union
166175
uint_reg_t c : 2;
167176
uint_reg_t size : 3;
168177
uint_reg_t hwb : 1;
169-
uint_reg_t __reserved_2 : 1;
170-
uint_reg_t inst : 1;
178+
uint_reg_t inst : 2;
171179
uint_reg_t __reserved_1 : 3;
172180
uint_reg_t stack_idx : 5;
173181
uint_reg_t __reserved_0 : 6;
@@ -408,7 +416,10 @@ typedef union
408416
/**
409417
* Sequence number applied when packet is distributed. Classifier
410418
* 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.
412423
*/
413424
uint_reg_t gp_sqn : 16;
414425
/**
@@ -451,14 +462,16 @@ typedef union
451462
/** Reserved. */
452463
uint_reg_t __reserved_5 : 3;
453464
/**
454-
* Instance ID. For devices that support more than one mPIPE instance,
455-
* this field indicates the buffer owner. If the INST field does not
456-
* match the mPIPE's instance number when a packet is egressed, buffers
457-
* with HWB set will be returned to the other mPIPE instance.
465+
* Instance ID. For devices that support automatic buffer return between
466+
* mPIPE instances, this field indicates the buffer owner. If the INST
467+
* field does not match the mPIPE's instance number when a packet is
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.
458473
*/
459-
uint_reg_t inst : 1;
460-
/** Reserved. */
461-
uint_reg_t __reserved_6 : 1;
474+
uint_reg_t inst : 2;
462475
/**
463476
* Always set to one by hardware in iDMA packet descriptors. For eDMA,
464477
* indicates whether the buffer will be released to the buffer stack
@@ -491,8 +504,7 @@ typedef union
491504
uint_reg_t c : 2;
492505
uint_reg_t size : 3;
493506
uint_reg_t hwb : 1;
494-
uint_reg_t __reserved_6 : 1;
495-
uint_reg_t inst : 1;
507+
uint_reg_t inst : 2;
496508
uint_reg_t __reserved_5 : 3;
497509
uint_reg_t stack_idx : 5;
498510
uint_reg_t __reserved_4 : 6;

arch/tile/include/arch/trio_constants.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@
1616
#ifndef __ARCH_TRIO_CONSTANTS_H__
1717
#define __ARCH_TRIO_CONSTANTS_H__
1818

19-
#define TRIO_NUM_ASIDS 16
19+
#define TRIO_NUM_ASIDS 32
2020
#define TRIO_NUM_TLBS_PER_ASID 16
2121

2222
#define TRIO_NUM_TPIO_REGIONS 8
2323
#define TRIO_LOG2_NUM_TPIO_REGIONS 3
2424

25-
#define TRIO_NUM_MAP_MEM_REGIONS 16
26-
#define TRIO_LOG2_NUM_MAP_MEM_REGIONS 4
25+
#define TRIO_NUM_MAP_MEM_REGIONS 32
26+
#define TRIO_LOG2_NUM_MAP_MEM_REGIONS 5
2727
#define TRIO_NUM_MAP_SQ_REGIONS 8
2828
#define TRIO_LOG2_NUM_MAP_SQ_REGIONS 3
2929

3030
#define TRIO_LOG2_NUM_SQ_FIFO_ENTRIES 6
3131

32-
#define TRIO_NUM_PUSH_DMA_RINGS 32
32+
#define TRIO_NUM_PUSH_DMA_RINGS 64
3333

34-
#define TRIO_NUM_PULL_DMA_RINGS 32
34+
#define TRIO_NUM_PULL_DMA_RINGS 64
3535

3636
#endif /* __ARCH_TRIO_CONSTANTS_H__ */

0 commit comments

Comments
 (0)