@@ -65,12 +65,13 @@ struct ipa;
65
65
* of valid bits for the register.
66
66
*/
67
67
68
- /* The next field is not supported for IPA v4.1 */
69
68
#define IPA_REG_COMP_CFG_OFFSET 0x0000003c
69
+ /* The next field is not supported for IPA v4.1 */
70
70
#define ENABLE_FMASK GENMASK(0, 0)
71
71
#define GSI_SNOC_BYPASS_DIS_FMASK GENMASK(1, 1)
72
72
#define GEN_QMB_0_SNOC_BYPASS_DIS_FMASK GENMASK(2, 2)
73
73
#define GEN_QMB_1_SNOC_BYPASS_DIS_FMASK GENMASK(3, 3)
74
+ /* The next field is not present for IPA v4.5 */
74
75
#define IPA_DCMP_FAST_CLK_EN_FMASK GENMASK(4, 4)
75
76
/* The remaining fields are not present for IPA v3.5.1 */
76
77
#define IPA_QMB_SELECT_CONS_EN_FMASK GENMASK(5, 5)
@@ -86,6 +87,8 @@ struct ipa;
86
87
#define GSI_MULTI_AXI_MASTERS_DIS_FMASK GENMASK(15, 15)
87
88
#define IPA_QMB_SELECT_GLOBAL_EN_FMASK GENMASK(16, 16)
88
89
#define IPA_ATOMIC_FETCHER_ARB_LOCK_DIS_FMASK GENMASK(20, 17)
90
+ /* The next field is present for IPA v4.5 */
91
+ #define IPA_FULL_FLUSH_WAIT_RSC_CLOSE_EN_FMASK GENMASK(21, 21)
89
92
90
93
#define IPA_REG_CLKON_CFG_OFFSET 0x00000044
91
94
#define RX_FMASK GENMASK(0, 0)
@@ -105,6 +108,7 @@ struct ipa;
105
108
#define ACK_MNGR_FMASK GENMASK(14, 14)
106
109
#define D_DCPH_FMASK GENMASK(15, 15)
107
110
#define H_DCPH_FMASK GENMASK(16, 16)
111
+ /* The next field is not present for IPA v4.5 */
108
112
#define DCMP_FMASK GENMASK(17, 17)
109
113
#define NTF_TX_CMDQS_FMASK GENMASK(18, 18)
110
114
#define TX_0_FMASK GENMASK(19, 19)
@@ -119,6 +123,8 @@ struct ipa;
119
123
#define GSI_IF_FMASK GENMASK(27, 27)
120
124
#define GLOBAL_FMASK GENMASK(28, 28)
121
125
#define GLOBAL_2X_CLK_FMASK GENMASK(29, 29)
126
+ /* The next field is present for IPA v4.5 */
127
+ #define DPL_FIFO_FMASK GENMASK(30, 30)
122
128
123
129
#define IPA_REG_ROUTE_OFFSET 0x00000048
124
130
#define ROUTE_DIS_FMASK GENMASK(0, 0)
@@ -174,6 +180,7 @@ static inline u32 ipa_reg_state_aggr_active_offset(enum ipa_version version)
174
180
return 0x000000b4 ;
175
181
}
176
182
183
+ /* The next register is not present for IPA v4.5 */
177
184
#define IPA_REG_BCR_OFFSET 0x000001d0
178
185
/* The next two fields are not present for IPA v4.2 */
179
186
#define BCR_CMDQ_L_LACK_ONE_ENTRY_FMASK GENMASK(0, 0)
@@ -205,6 +212,8 @@ static inline u32 ipa_reg_bcr_val(enum ipa_version version)
205
212
BCR_HOLB_DROP_L2_IRQ_FMASK |
206
213
BCR_DUAL_TX_FMASK ;
207
214
215
+ /* assert(version != IPA_VERSION_4_5); */
216
+
208
217
return 0x00000000 ;
209
218
}
210
219
@@ -241,6 +250,8 @@ static inline u32 ipa_aggr_granularity_val(u32 usec)
241
250
#define DMAW_MAX_BEATS_256_DIS_FMASK GENMASK(11, 11)
242
251
#define PA_MASK_EN_FMASK GENMASK(12, 12)
243
252
#define PREFETCH_ALMOST_EMPTY_SIZE_TX1_FMASK GENMASK(16, 13)
253
+ /* The next field is present for IPA v4.5 */
254
+ #define DUAL_TX_ENABLE_FMASK GENMASK(17, 17)
244
255
/* The next two fields are present for IPA v4.2 only */
245
256
#define SSPND_PA_NO_START_STATE_FMASK GENMASK(18, 18)
246
257
#define SSPND_PA_NO_BQ_STATE_FMASK GENMASK(19, 19)
@@ -253,7 +264,7 @@ static inline u32 ipa_aggr_granularity_val(u32 usec)
253
264
254
265
static inline u32 ipa_reg_idle_indication_cfg_offset (enum ipa_version version )
255
266
{
256
- if (version = = IPA_VERSION_4_2 )
267
+ if (version > = IPA_VERSION_4_2 )
257
268
return 0x00000240 ;
258
269
259
270
return 0x00000220 ;
@@ -303,12 +314,14 @@ static inline u32 ipa_resource_group_dst_count(enum ipa_version version)
303
314
(0x00000400 + 0x0020 * (rt))
304
315
#define IPA_REG_SRC_RSRC_GRP_23_RSRC_TYPE_N_OFFSET (rt ) \
305
316
(0x00000404 + 0x0020 * (rt))
317
+ /* The next register is only present for IPA v4.5 */
306
318
#define IPA_REG_SRC_RSRC_GRP_45_RSRC_TYPE_N_OFFSET (rt ) \
307
319
(0x00000408 + 0x0020 * (rt))
308
320
#define IPA_REG_DST_RSRC_GRP_01_RSRC_TYPE_N_OFFSET (rt ) \
309
321
(0x00000500 + 0x0020 * (rt))
310
322
#define IPA_REG_DST_RSRC_GRP_23_RSRC_TYPE_N_OFFSET (rt ) \
311
323
(0x00000504 + 0x0020 * (rt))
324
+ /* The next register is only present for IPA v4.5 */
312
325
#define IPA_REG_DST_RSRC_GRP_45_RSRC_TYPE_N_OFFSET (rt ) \
313
326
(0x00000508 + 0x0020 * (rt))
314
327
/* The next four fields are used for all resource group registers */
@@ -348,7 +361,11 @@ enum ipa_cs_offload_en {
348
361
#define HDR_OFST_PKT_SIZE_FMASK GENMASK(25, 20)
349
362
#define HDR_A5_MUX_FMASK GENMASK(26, 26)
350
363
#define HDR_LEN_INC_DEAGG_HDR_FMASK GENMASK(27, 27)
364
+ /* The next field is not present for IPA v4.5 */
351
365
#define HDR_METADATA_REG_VALID_FMASK GENMASK(28, 28)
366
+ /* The next two fields are present for IPA v4.5 */
367
+ #define HDR_LEN_MSB_FMASK GENMASK(29, 28)
368
+ #define HDR_OFST_METADATA_MSB_FMASK GENMASK(31, 30)
352
369
353
370
#define IPA_REG_ENDP_INIT_HDR_EXT_N_OFFSET (ep ) \
354
371
(0x00000814 + 0x0070 * (ep))
@@ -358,6 +375,10 @@ enum ipa_cs_offload_en {
358
375
#define HDR_PAYLOAD_LEN_INC_PADDING_FMASK GENMASK(3, 3)
359
376
#define HDR_TOTAL_LEN_OR_PAD_OFFSET_FMASK GENMASK(9, 4)
360
377
#define HDR_PAD_TO_ALIGNMENT_FMASK GENMASK(13, 10)
378
+ /* The next three fields are present for IPA v4.5 */
379
+ #define HDR_TOTAL_LEN_OR_PAD_OFFSET_MSB_FMASK GENMASK(17, 16)
380
+ #define HDR_OFST_PKT_SIZE_MSB_FMASK GENMASK(19, 18)
381
+ #define HDR_ADDITIONAL_CONST_LEN_MSB_FMASK GENMASK(21, 20)
361
382
362
383
/* Valid only for RX (IPA producer) endpoints */
363
384
#define IPA_REG_ENDP_INIT_HDR_METADATA_MASK_N_OFFSET (rxep ) \
@@ -367,10 +388,13 @@ enum ipa_cs_offload_en {
367
388
#define IPA_REG_ENDP_INIT_MODE_N_OFFSET (txep ) \
368
389
(0x00000820 + 0x0070 * (txep))
369
390
#define MODE_FMASK GENMASK(2, 0)
391
+ /* The next field is present for IPA v4.5 */
392
+ #define DCPH_ENABLE_FMASK GENMASK(3, 3)
370
393
#define DEST_PIPE_INDEX_FMASK GENMASK(8, 4)
371
394
#define BYTE_THRESHOLD_FMASK GENMASK(27, 12)
372
395
#define PIPE_REPLICATION_EN_FMASK GENMASK(28, 28)
373
396
#define PAD_EN_FMASK GENMASK(29, 29)
397
+ /* The next register is not present for IPA v4.5 */
374
398
#define HDR_FTCH_DISABLE_FMASK GENMASK(30, 30)
375
399
376
400
/** enum ipa_mode - mode field in ENDP_INIT_MODE_N */
@@ -421,6 +445,9 @@ enum ipa_aggr_type {
421
445
/* The next two fields are present for IPA v4.2 only */
422
446
#define BASE_VALUE_FMASK GENMASK(4, 0)
423
447
#define SCALE_FMASK GENMASK(12, 8)
448
+ /* The next two fields are present for IPA v4.5 */
449
+ #define TIME_LIMIT_FMASK GENMASK(4, 0)
450
+ #define GRAN_SEL_FMASK GENMASK(8, 8)
424
451
425
452
/* Valid only for TX (IPA consumer) endpoints */
426
453
#define IPA_REG_ENDP_INIT_DEAGGR_N_OFFSET (txep ) \
@@ -440,6 +467,8 @@ static inline u32 rsrc_grp_encoded(enum ipa_version version, u32 rsrc_grp)
440
467
switch (version ) {
441
468
case IPA_VERSION_4_2 :
442
469
return u32_encode_bits (rsrc_grp , GENMASK (0 , 0 ));
470
+ case IPA_VERSION_4_5 :
471
+ return u32_encode_bits (rsrc_grp , GENMASK (2 , 0 ));
443
472
default :
444
473
return u32_encode_bits (rsrc_grp , GENMASK (1 , 0 ));
445
474
}
@@ -476,6 +505,7 @@ enum ipa_seq_type {
476
505
(0x00000840 + 0x0070 * (ep))
477
506
#define STATUS_EN_FMASK GENMASK(0, 0)
478
507
#define STATUS_ENDP_FMASK GENMASK(5, 1)
508
+ /* The next field is not present for IPA v4.5 */
479
509
#define STATUS_LOCATION_FMASK GENMASK(8, 8)
480
510
/* The next field is not present for IPA v3.5.1 */
481
511
#define STATUS_PKT_SUPPRESS_FMASK GENMASK(9, 9)
@@ -550,6 +580,8 @@ enum ipa_irq_id {
550
580
IPA_IRQ_GSI_EE = 0x17 ,
551
581
IPA_IRQ_GSI_IPA_IF_TLV_RCVD = 0x18 ,
552
582
IPA_IRQ_GSI_UC = 0x19 ,
583
+ /* The next bit is present for IPA v4.5 */
584
+ IPA_IRQ_TLV_LEN_MIN_DSM = 0x1a ,
553
585
IPA_IRQ_COUNT , /* Last; not an id */
554
586
};
555
587
0 commit comments