xref: /dpdk/drivers/common/cnxk/roc_ae.c (revision a8ebe94f8cc11cda874cd0353a47e78279699d10)
180ab347dSKiran Kumar K /* SPDX-License-Identifier: BSD-3-Clause
280ab347dSKiran Kumar K  * Copyright(C) 2021 Marvell.
380ab347dSKiran Kumar K  */
480ab347dSKiran Kumar K 
580ab347dSKiran Kumar K #include "roc_api.h"
680ab347dSKiran Kumar K 
780ab347dSKiran Kumar K #define AE_EC_GRP_TBL_NAME "ae_ec_grp_tbl"
880ab347dSKiran Kumar K 
980ab347dSKiran Kumar K struct ae_ec_grp_tbl {
1080ab347dSKiran Kumar K 	uint64_t refcount;
1180ab347dSKiran Kumar K 	uint8_t ec_grp_tbl[];
1280ab347dSKiran Kumar K };
1380ab347dSKiran Kumar K 
1480ab347dSKiran Kumar K const struct roc_ae_ec_group ae_ec_grp[ROC_AE_EC_ID_PMAX] = {
1580ab347dSKiran Kumar K 	{
1680ab347dSKiran Kumar K 		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1780ab347dSKiran Kumar K 				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1880ab347dSKiran Kumar K 				   0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF,
1980ab347dSKiran Kumar K 				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
2080ab347dSKiran Kumar K 			  .length = 24},
2180ab347dSKiran Kumar K 		.order = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
2280ab347dSKiran Kumar K 				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
2380ab347dSKiran Kumar K 				   0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B,
2480ab347dSKiran Kumar K 				   0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31},
2580ab347dSKiran Kumar K 			  .length = 24},
26f4d66aefSKiran Kumar K 		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
27f4d66aefSKiran Kumar K 				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
28f4d66aefSKiran Kumar K 				    0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF,
29f4d66aefSKiran Kumar K 				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC},
30f4d66aefSKiran Kumar K 			   .length = 24},
31f4d66aefSKiran Kumar K 		.constb = {.data = {0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C,
32f4d66aefSKiran Kumar K 				    0x80, 0xE7, 0x0F, 0xA7, 0xE9, 0xAB,
33f4d66aefSKiran Kumar K 				    0x72, 0x24, 0x30, 0x49, 0xFE, 0xB8,
34f4d66aefSKiran Kumar K 				    0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1},
35f4d66aefSKiran Kumar K 			   .length = 24},
3680ab347dSKiran Kumar K 	},
3780ab347dSKiran Kumar K 	{
3880ab347dSKiran Kumar K 		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
3980ab347dSKiran Kumar K 				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
4080ab347dSKiran Kumar K 				   0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
4180ab347dSKiran Kumar K 				   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
4280ab347dSKiran Kumar K 			  .length = 28},
4380ab347dSKiran Kumar K 		.order = {.data = {0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
4480ab347dSKiran Kumar K 				   0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
4580ab347dSKiran Kumar K 				   0X16, 0XA2, 0XE0, 0XB8, 0XF0, 0X3E, 0X13,
4680ab347dSKiran Kumar K 				   0XDD, 0X29, 0X45, 0X5C, 0X5C, 0X2A, 0X3D},
4780ab347dSKiran Kumar K 			  .length = 28},
48f4d66aefSKiran Kumar K 		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
49f4d66aefSKiran Kumar K 				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
50f4d66aefSKiran Kumar K 				    0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
51f4d66aefSKiran Kumar K 				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE},
52f4d66aefSKiran Kumar K 			   .length = 28},
53f4d66aefSKiran Kumar K 		.constb = {.data = {0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3,
54f4d66aefSKiran Kumar K 				    0xAB, 0xF5, 0x41, 0x32, 0x56, 0x50, 0x44,
55f4d66aefSKiran Kumar K 				    0xB0, 0xB7, 0xD7, 0xBF, 0xD8, 0xBA, 0x27,
56f4d66aefSKiran Kumar K 				    0x0B, 0x39, 0x43, 0x23, 0x55, 0xFF, 0xB4},
57f4d66aefSKiran Kumar K 			   .length = 28},
5880ab347dSKiran Kumar K 	},
5980ab347dSKiran Kumar K 	{
6080ab347dSKiran Kumar K 		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
6180ab347dSKiran Kumar K 				   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6280ab347dSKiran Kumar K 				   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
6380ab347dSKiran Kumar K 				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
6480ab347dSKiran Kumar K 				   0xFF, 0xFF, 0xFF, 0xFF},
6580ab347dSKiran Kumar K 			  .length = 32},
6680ab347dSKiran Kumar K 		.order = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
6780ab347dSKiran Kumar K 				   0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
6880ab347dSKiran Kumar K 				   0xFF, 0xFF, 0xBC, 0xE6, 0xFA, 0xAD, 0xA7,
6980ab347dSKiran Kumar K 				   0x17, 0x9E, 0x84, 0xF3, 0xB9, 0xCA, 0xC2,
7080ab347dSKiran Kumar K 				   0xFC, 0x63, 0x25, 0x51},
7180ab347dSKiran Kumar K 			  .length = 32},
72f4d66aefSKiran Kumar K 		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
73f4d66aefSKiran Kumar K 				    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74f4d66aefSKiran Kumar K 				    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
75f4d66aefSKiran Kumar K 				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
76f4d66aefSKiran Kumar K 				    0xFF, 0xFF, 0xFF, 0xFC},
77f4d66aefSKiran Kumar K 			   .length = 32},
78f4d66aefSKiran Kumar K 		.constb = {.data = {0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93,
79f4d66aefSKiran Kumar K 				    0xE7, 0xB3, 0xEB, 0xBD, 0x55, 0x76, 0x98,
80f4d66aefSKiran Kumar K 				    0x86, 0xBC, 0x65, 0x1D, 0x06, 0xB0, 0xCC,
81f4d66aefSKiran Kumar K 				    0x53, 0xB0, 0xF6, 0x3B, 0xCE, 0x3C, 0x3E,
82f4d66aefSKiran Kumar K 				    0x27, 0xD2, 0x60, 0x4B},
83f4d66aefSKiran Kumar K 			   .length = 32},
8480ab347dSKiran Kumar K 	},
8580ab347dSKiran Kumar K 	{.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
8680ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
8780ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
8880ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
8980ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
9080ab347dSKiran Kumar K 			    0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
9180ab347dSKiran Kumar K 		   .length = 48},
9280ab347dSKiran Kumar K 	 .order = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
9380ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
9480ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
9580ab347dSKiran Kumar K 			    0xC7, 0x63, 0x4D, 0x81, 0xF4, 0x37, 0x2D, 0xDF,
9680ab347dSKiran Kumar K 			    0x58, 0x1A, 0x0D, 0xB2, 0x48, 0xB0, 0xA7, 0x7A,
9780ab347dSKiran Kumar K 			    0xEC, 0xEC, 0x19, 0x6A, 0xCC, 0xC5, 0x29, 0x73},
98f4d66aefSKiran Kumar K 		   .length = 48},
99f4d66aefSKiran Kumar K 	 .consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
100f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
101f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
102f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
103f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
104f4d66aefSKiran Kumar K 			     0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFC},
105f4d66aefSKiran Kumar K 		    .length = 48},
106f4d66aefSKiran Kumar K 	 .constb = {.data = {0xB3, 0x31, 0x2F, 0xA7, 0xE2, 0x3E, 0xE7, 0xE4,
107f4d66aefSKiran Kumar K 			     0x98, 0x8E, 0x05, 0x6B, 0xE3, 0xF8, 0x2D, 0x19,
108f4d66aefSKiran Kumar K 			     0x18, 0x1D, 0x9C, 0x6E, 0xFE, 0x81, 0x41, 0x12,
109f4d66aefSKiran Kumar K 			     0x03, 0x14, 0x08, 0x8F, 0x50, 0x13, 0x87, 0x5A,
110f4d66aefSKiran Kumar K 			     0xC6, 0x56, 0x39, 0x8D, 0x8A, 0x2E, 0xD1, 0x9D,
111f4d66aefSKiran Kumar K 			     0x2A, 0x85, 0xC8, 0xED, 0xD3, 0xEC, 0x2A, 0xEF},
11280ab347dSKiran Kumar K 		    .length = 48}},
11380ab347dSKiran Kumar K 	{.prime = {.data = {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
11480ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
11580ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
11680ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
11780ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
11880ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
11980ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
12080ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
12180ab347dSKiran Kumar K 			    0xFF, 0xFF},
12280ab347dSKiran Kumar K 		   .length = 66},
12380ab347dSKiran Kumar K 	 .order = {.data = {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
12480ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
12580ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
12680ab347dSKiran Kumar K 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
12780ab347dSKiran Kumar K 			    0xFF, 0xFA, 0x51, 0x86, 0x87, 0x83, 0xBF, 0x2F,
12880ab347dSKiran Kumar K 			    0x96, 0x6B, 0x7F, 0xCC, 0x01, 0x48, 0xF7, 0x09,
12980ab347dSKiran Kumar K 			    0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C,
13080ab347dSKiran Kumar K 			    0x47, 0xAE, 0xBB, 0x6F, 0xB7, 0x1E, 0x91, 0x38,
13180ab347dSKiran Kumar K 			    0x64, 0x09},
132f4d66aefSKiran Kumar K 		   .length = 66},
133f4d66aefSKiran Kumar K 	 .consta = {.data = {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
134f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
135f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
136f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
137f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
138f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
139f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
140f4d66aefSKiran Kumar K 			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
141f4d66aefSKiran Kumar K 			     0xFF, 0xFC},
142f4d66aefSKiran Kumar K 		    .length = 66},
143f4d66aefSKiran Kumar K 	 .constb = {.data = {0x00, 0x51, 0x95, 0x3E, 0xB9, 0x61, 0x8E, 0x1C,
144f4d66aefSKiran Kumar K 			     0x9A, 0x1F, 0x92, 0x9A, 0x21, 0xA0, 0xB6, 0x85,
145f4d66aefSKiran Kumar K 			     0x40, 0xEE, 0xA2, 0xDA, 0x72, 0x5B, 0x99, 0xB3,
146f4d66aefSKiran Kumar K 			     0x15, 0xF3, 0xB8, 0xB4, 0x89, 0x91, 0x8E, 0xF1,
147f4d66aefSKiran Kumar K 			     0x09, 0xE1, 0x56, 0x19, 0x39, 0x51, 0xEC, 0x7E,
148f4d66aefSKiran Kumar K 			     0x93, 0x7B, 0x16, 0x52, 0xC0, 0xBD, 0x3B, 0xB1,
149f4d66aefSKiran Kumar K 			     0xBF, 0x07, 0x35, 0x73, 0xDF, 0x88, 0x3D, 0x2C,
150f4d66aefSKiran Kumar K 			     0x34, 0xF1, 0xEF, 0x45, 0x1F, 0xD4, 0x6B, 0x50,
151f4d66aefSKiran Kumar K 			     0x3F, 0x00},
1525686b573SGowrishankar Muthukrishnan 		    .length = 66},
1535686b573SGowrishankar Muthukrishnan 	},
1547ac7ee0aSAnoob Joseph 	{ /* ROC_AE_EC_ID_P160 */ },
1557ac7ee0aSAnoob Joseph 	{ /* ROC_AE_EC_ID_P320 */ },
1567ac7ee0aSAnoob Joseph 	{ /* ROC_AE_EC_ID_P512 */ },
1575686b573SGowrishankar Muthukrishnan 	{
1585686b573SGowrishankar Muthukrishnan 		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF,
1595686b573SGowrishankar Muthukrishnan 				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1605686b573SGowrishankar Muthukrishnan 				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
1615686b573SGowrishankar Muthukrishnan 				   0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
1625686b573SGowrishankar Muthukrishnan 				   0xFF, 0xFF, 0xFF, 0xFF},
1635686b573SGowrishankar Muthukrishnan 			  .length = 32},
1645686b573SGowrishankar Muthukrishnan 		.order = {.data = {0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF,
1655686b573SGowrishankar Muthukrishnan 				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1665686b573SGowrishankar Muthukrishnan 				   0xFF, 0xFF, 0x72, 0x03, 0xDF, 0x6B, 0x21,
1675686b573SGowrishankar Muthukrishnan 				   0xC6, 0x05, 0x2B, 0x53, 0xBB, 0xF4, 0x09,
1685686b573SGowrishankar Muthukrishnan 				   0x39, 0xD5, 0x41, 0x23},
1695686b573SGowrishankar Muthukrishnan 			  .length = 32},
1705686b573SGowrishankar Muthukrishnan 		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF,
1715686b573SGowrishankar Muthukrishnan 				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1725686b573SGowrishankar Muthukrishnan 				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
1735686b573SGowrishankar Muthukrishnan 				    0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
1745686b573SGowrishankar Muthukrishnan 				    0xFF, 0xFF, 0xFF, 0xFC},
1755686b573SGowrishankar Muthukrishnan 			   .length = 32},
1765686b573SGowrishankar Muthukrishnan 		.constb = {.data = {0x28, 0xE9, 0xFA, 0x9E, 0x9D, 0x9F, 0x5E,
1775686b573SGowrishankar Muthukrishnan 				    0x34, 0x4D, 0x5A, 0x9E, 0x4B, 0xCF, 0x65,
1785686b573SGowrishankar Muthukrishnan 				    0x09, 0xA7, 0xF3, 0x97, 0x89, 0xF5, 0x15,
1795686b573SGowrishankar Muthukrishnan 				    0xAB, 0x8F, 0x92, 0xDD, 0xBC, 0xBD, 0x41,
1805686b573SGowrishankar Muthukrishnan 				    0x4D, 0x94, 0x0E, 0x93},
1815686b573SGowrishankar Muthukrishnan 			   .length = 32},
182*a8ebe94fSGowrishankar Muthukrishnan 	},
183*a8ebe94fSGowrishankar Muthukrishnan 	{
184*a8ebe94fSGowrishankar Muthukrishnan 		.prime = {.data = {0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
185*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
186*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
187*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
188*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0x7F},
189*a8ebe94fSGowrishankar Muthukrishnan 			  .length = 32},
190*a8ebe94fSGowrishankar Muthukrishnan 		.order = {.data = {0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12,
191*a8ebe94fSGowrishankar Muthukrishnan 				   0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9,
192*a8ebe94fSGowrishankar Muthukrishnan 				   0xde, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
193*a8ebe94fSGowrishankar Muthukrishnan 				   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
194*a8ebe94fSGowrishankar Muthukrishnan 				   0x00, 0x00, 0x00, 0x10},
195*a8ebe94fSGowrishankar Muthukrishnan 			  .length = 32},
196*a8ebe94fSGowrishankar Muthukrishnan 		.consta = {.data = {0xa3, 0x78, 0x59, 0x13, 0xca, 0x4d, 0xeb,
197*a8ebe94fSGowrishankar Muthukrishnan 				    0x75, 0xab, 0xd8, 0x41, 0x41, 0x4d, 0x0a,
198*a8ebe94fSGowrishankar Muthukrishnan 				    0x70, 0x00, 0x98, 0xe8, 0x79, 0x77, 0x79,
199*a8ebe94fSGowrishankar Muthukrishnan 				    0x40, 0xc7, 0x8c, 0x73, 0xfe, 0x6f, 0x2b,
200*a8ebe94fSGowrishankar Muthukrishnan 				    0xee, 0x6c, 0x03, 0x52},
201*a8ebe94fSGowrishankar Muthukrishnan 			   .length = 32},
202*a8ebe94fSGowrishankar Muthukrishnan 	},
203*a8ebe94fSGowrishankar Muthukrishnan 	{
204*a8ebe94fSGowrishankar Muthukrishnan 		.prime = {.data = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
205*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
206*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
207*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
208*a8ebe94fSGowrishankar Muthukrishnan 				   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
209*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
210*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
211*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
212*a8ebe94fSGowrishankar Muthukrishnan 			  .length = 56},
213*a8ebe94fSGowrishankar Muthukrishnan 		.order = {.data = {0xf3, 0x44, 0x58, 0xab, 0x92, 0xc2, 0x78,
214*a8ebe94fSGowrishankar Muthukrishnan 				   0x23, 0x55, 0x8f, 0xc5, 0x8d, 0x72, 0xc2,
215*a8ebe94fSGowrishankar Muthukrishnan 				   0x6c, 0x21, 0x90, 0x36, 0xd6, 0xae, 0x49,
216*a8ebe94fSGowrishankar Muthukrishnan 				   0xdb, 0x4e, 0xc4, 0xe9, 0x23, 0xca, 0x7c,
217*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
218*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
219*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
220*a8ebe94fSGowrishankar Muthukrishnan 				   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f},
221*a8ebe94fSGowrishankar Muthukrishnan 			  .length = 56},
222*a8ebe94fSGowrishankar Muthukrishnan 		.consta = {.data = {0x56, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff,
223*a8ebe94fSGowrishankar Muthukrishnan 				    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
224*a8ebe94fSGowrishankar Muthukrishnan 				    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
225*a8ebe94fSGowrishankar Muthukrishnan 				    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
226*a8ebe94fSGowrishankar Muthukrishnan 				    0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
227*a8ebe94fSGowrishankar Muthukrishnan 				    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
228*a8ebe94fSGowrishankar Muthukrishnan 				    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
229*a8ebe94fSGowrishankar Muthukrishnan 				    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
230*a8ebe94fSGowrishankar Muthukrishnan 			   .length = 56},
231*a8ebe94fSGowrishankar Muthukrishnan 	},
232*a8ebe94fSGowrishankar Muthukrishnan };
23380ab347dSKiran Kumar K 
23480ab347dSKiran Kumar K int
23580ab347dSKiran Kumar K roc_ae_ec_grp_get(struct roc_ae_ec_group **tbl)
23680ab347dSKiran Kumar K {
23780ab347dSKiran Kumar K 	const char name[] = AE_EC_GRP_TBL_NAME;
23880ab347dSKiran Kumar K 	struct ae_ec_grp_tbl *ec_grp;
23980ab347dSKiran Kumar K 	const struct plt_memzone *mz;
24080ab347dSKiran Kumar K 	int i, len = 0;
24180ab347dSKiran Kumar K 	uint8_t *data;
24280ab347dSKiran Kumar K 
24380ab347dSKiran Kumar K 	if (tbl == NULL)
24480ab347dSKiran Kumar K 		return -EINVAL;
24580ab347dSKiran Kumar K 
24680ab347dSKiran Kumar K 	len = sizeof(ae_ec_grp);
24780ab347dSKiran Kumar K 
24880ab347dSKiran Kumar K 	mz = plt_memzone_lookup(name);
24980ab347dSKiran Kumar K 	if (mz == NULL) {
25080ab347dSKiran Kumar K 		/* Create memzone first time */
25180ab347dSKiran Kumar K 		mz = plt_memzone_reserve_cache_align(
25280ab347dSKiran Kumar K 			name, len + sizeof(struct ae_ec_grp_tbl));
25380ab347dSKiran Kumar K 		if (mz == NULL)
25480ab347dSKiran Kumar K 			return -ENOMEM;
25580ab347dSKiran Kumar K 	}
25680ab347dSKiran Kumar K 
25780ab347dSKiran Kumar K 	ec_grp = mz->addr;
25880ab347dSKiran Kumar K 
25980ab347dSKiran Kumar K 	if (__atomic_fetch_add(&ec_grp->refcount, 1, __ATOMIC_SEQ_CST) != 0)
26080ab347dSKiran Kumar K 		return 0;
26180ab347dSKiran Kumar K 
26280ab347dSKiran Kumar K 	data = PLT_PTR_ADD(mz->addr, sizeof(uint64_t));
26380ab347dSKiran Kumar K 
26480ab347dSKiran Kumar K 	for (i = 0; i < ROC_AE_EC_ID_PMAX; i++) {
26580ab347dSKiran Kumar K 		memcpy(data, &ae_ec_grp[i], sizeof(struct roc_ae_ec_group));
26680ab347dSKiran Kumar K 		tbl[i] = (struct roc_ae_ec_group *)data;
26780ab347dSKiran Kumar K 		data += sizeof(struct roc_ae_ec_group);
26880ab347dSKiran Kumar K 	}
26980ab347dSKiran Kumar K 
27080ab347dSKiran Kumar K 	return 0;
27180ab347dSKiran Kumar K }
27280ab347dSKiran Kumar K 
27380ab347dSKiran Kumar K void
27480ab347dSKiran Kumar K roc_ae_ec_grp_put(void)
27580ab347dSKiran Kumar K {
27680ab347dSKiran Kumar K 	const char name[] = AE_EC_GRP_TBL_NAME;
27780ab347dSKiran Kumar K 	const struct plt_memzone *mz;
27880ab347dSKiran Kumar K 	struct ae_ec_grp_tbl *ec_grp;
27980ab347dSKiran Kumar K 
28080ab347dSKiran Kumar K 	mz = plt_memzone_lookup(name);
28180ab347dSKiran Kumar K 	if (mz == NULL)
28280ab347dSKiran Kumar K 		return;
28380ab347dSKiran Kumar K 
28480ab347dSKiran Kumar K 	ec_grp = mz->addr;
28580ab347dSKiran Kumar K 	/* Decrement number of devices using EC grp table */
286ed090599STyler Retzlaff 	if (__atomic_fetch_sub(&ec_grp->refcount, 1, __ATOMIC_SEQ_CST) - 1 == 0)
28780ab347dSKiran Kumar K 		plt_memzone_free(mz);
28880ab347dSKiran Kumar K }
289