xref: /dpdk/drivers/bus/fslmc/mc/fsl_dpdmai_cmd.h (revision 2cb2abf304fcecc0e2804b8da61760d4f2cb9a7e)
123e8fcb0SNipun Gupta /* SPDX-License-Identifier: BSD-3-Clause
2*2cb2abf3SHemant Agrawal  * Copyright 2017-2018, 2020-2021 NXP
323e8fcb0SNipun Gupta  */
423e8fcb0SNipun Gupta #ifndef _FSL_DPDMAI_CMD_H
523e8fcb0SNipun Gupta #define _FSL_DPDMAI_CMD_H
623e8fcb0SNipun Gupta 
723e8fcb0SNipun Gupta /* DPDMAI Version */
823e8fcb0SNipun Gupta #define DPDMAI_VER_MAJOR		3
9*2cb2abf3SHemant Agrawal #define DPDMAI_VER_MINOR		4
1023e8fcb0SNipun Gupta 
1123e8fcb0SNipun Gupta /* Command versioning */
1223e8fcb0SNipun Gupta #define DPDMAI_CMD_BASE_VERSION		1
13b4a63e60SHemant Agrawal #define DPDMAI_CMD_VERSION_2		2
14*2cb2abf3SHemant Agrawal #define DPDMAI_CMD_VERSION_3		3
1523e8fcb0SNipun Gupta #define DPDMAI_CMD_ID_OFFSET		4
1623e8fcb0SNipun Gupta 
1723e8fcb0SNipun Gupta #define DPDMAI_CMD(id)	((id << DPDMAI_CMD_ID_OFFSET) | DPDMAI_CMD_BASE_VERSION)
18b4a63e60SHemant Agrawal #define DPDMAI_CMD_V2(id) ((id << DPDMAI_CMD_ID_OFFSET) | DPDMAI_CMD_VERSION_2)
19*2cb2abf3SHemant Agrawal #define DPDMAI_CMD_V3(id) ((id << DPDMAI_CMD_ID_OFFSET) | DPDMAI_CMD_VERSION_3)
2023e8fcb0SNipun Gupta 
2123e8fcb0SNipun Gupta /* Command IDs */
2223e8fcb0SNipun Gupta #define DPDMAI_CMDID_CLOSE		DPDMAI_CMD(0x800)
2323e8fcb0SNipun Gupta #define DPDMAI_CMDID_OPEN		DPDMAI_CMD(0x80E)
24*2cb2abf3SHemant Agrawal #define DPDMAI_CMDID_CREATE		DPDMAI_CMD_V3(0x90E)
2523e8fcb0SNipun Gupta #define DPDMAI_CMDID_DESTROY		DPDMAI_CMD(0x98E)
2623e8fcb0SNipun Gupta #define DPDMAI_CMDID_GET_API_VERSION	DPDMAI_CMD(0xa0E)
2723e8fcb0SNipun Gupta 
2823e8fcb0SNipun Gupta #define DPDMAI_CMDID_ENABLE		DPDMAI_CMD(0x002)
2923e8fcb0SNipun Gupta #define DPDMAI_CMDID_DISABLE		DPDMAI_CMD(0x003)
30*2cb2abf3SHemant Agrawal #define DPDMAI_CMDID_GET_ATTR		DPDMAI_CMD_V3(0x004)
3123e8fcb0SNipun Gupta #define DPDMAI_CMDID_RESET		DPDMAI_CMD(0x005)
3223e8fcb0SNipun Gupta #define DPDMAI_CMDID_IS_ENABLED		DPDMAI_CMD(0x006)
3323e8fcb0SNipun Gupta 
34b4a63e60SHemant Agrawal #define DPDMAI_CMDID_SET_RX_QUEUE	DPDMAI_CMD_V2(0x1A0)
35b4a63e60SHemant Agrawal #define DPDMAI_CMDID_GET_RX_QUEUE	DPDMAI_CMD_V2(0x1A1)
36b4a63e60SHemant Agrawal #define DPDMAI_CMDID_GET_TX_QUEUE	DPDMAI_CMD_V2(0x1A2)
3723e8fcb0SNipun Gupta 
3823e8fcb0SNipun Gupta /* Macros for accessing command fields smaller than 1byte */
3923e8fcb0SNipun Gupta #define DPDMAI_MASK(field)        \
4023e8fcb0SNipun Gupta 	GENMASK(DPDMAI_##field##_SHIFT + DPDMAI_##field##_SIZE - 1, \
4123e8fcb0SNipun Gupta 		DPDMAI_##field##_SHIFT)
4223e8fcb0SNipun Gupta #define dpdmai_set_field(var, field, val) \
4323e8fcb0SNipun Gupta 	((var) |= (((val) << DPDMAI_##field##_SHIFT) & DPDMAI_MASK(field)))
4423e8fcb0SNipun Gupta #define dpdmai_get_field(var, field)      \
4523e8fcb0SNipun Gupta 	(((var) & DPDMAI_MASK(field)) >> DPDMAI_##field##_SHIFT)
4623e8fcb0SNipun Gupta 
4723e8fcb0SNipun Gupta #pragma pack(push, 1)
4823e8fcb0SNipun Gupta struct dpdmai_cmd_open {
4923e8fcb0SNipun Gupta 	uint32_t dpdmai_id;
5023e8fcb0SNipun Gupta };
5123e8fcb0SNipun Gupta 
5223e8fcb0SNipun Gupta struct dpdmai_cmd_create {
53b4a63e60SHemant Agrawal 	uint8_t num_queues;
5423e8fcb0SNipun Gupta 	uint8_t priorities[2];
55*2cb2abf3SHemant Agrawal 	uint8_t pad;
56*2cb2abf3SHemant Agrawal 	uint32_t options;
5723e8fcb0SNipun Gupta };
5823e8fcb0SNipun Gupta 
5923e8fcb0SNipun Gupta struct dpdmai_cmd_destroy {
6023e8fcb0SNipun Gupta 	uint32_t dpdmai_id;
6123e8fcb0SNipun Gupta };
6223e8fcb0SNipun Gupta 
6323e8fcb0SNipun Gupta #define DPDMAI_ENABLE_SHIFT	0
6423e8fcb0SNipun Gupta #define DPDMAI_ENABLE_SIZE	1
6523e8fcb0SNipun Gupta 
6623e8fcb0SNipun Gupta struct dpdmai_rsp_is_enabled {
6723e8fcb0SNipun Gupta 	/* only the LSB bit */
6823e8fcb0SNipun Gupta 	uint8_t en;
6923e8fcb0SNipun Gupta };
7023e8fcb0SNipun Gupta 
7123e8fcb0SNipun Gupta struct dpdmai_rsp_get_attr {
7223e8fcb0SNipun Gupta 	uint32_t id;
7323e8fcb0SNipun Gupta 	uint8_t num_of_priorities;
74b4a63e60SHemant Agrawal 	uint8_t num_of_queues;
75*2cb2abf3SHemant Agrawal 	uint16_t pad;
76*2cb2abf3SHemant Agrawal 	uint32_t options;
7723e8fcb0SNipun Gupta };
7823e8fcb0SNipun Gupta 
7923e8fcb0SNipun Gupta #define DPDMAI_DEST_TYPE_SHIFT	0
8023e8fcb0SNipun Gupta #define DPDMAI_DEST_TYPE_SIZE	4
8123e8fcb0SNipun Gupta 
8223e8fcb0SNipun Gupta struct dpdmai_cmd_set_rx_queue {
8323e8fcb0SNipun Gupta 	uint32_t dest_id;
8423e8fcb0SNipun Gupta 	uint8_t dest_priority;
8523e8fcb0SNipun Gupta 	uint8_t priority;
8623e8fcb0SNipun Gupta 	/* from LSB: dest_type:4 */
8723e8fcb0SNipun Gupta 	uint8_t dest_type;
88b4a63e60SHemant Agrawal 	uint8_t queue_idx;
8923e8fcb0SNipun Gupta 	uint64_t user_ctx;
9023e8fcb0SNipun Gupta 	uint32_t options;
9123e8fcb0SNipun Gupta };
9223e8fcb0SNipun Gupta 
9323e8fcb0SNipun Gupta struct dpdmai_cmd_get_queue {
9423e8fcb0SNipun Gupta 	uint8_t pad[5];
9523e8fcb0SNipun Gupta 	uint8_t priority;
96b4a63e60SHemant Agrawal 	uint8_t queue_idx;
9723e8fcb0SNipun Gupta };
9823e8fcb0SNipun Gupta 
9923e8fcb0SNipun Gupta struct dpdmai_rsp_get_rx_queue {
10023e8fcb0SNipun Gupta 	uint32_t dest_id;
10123e8fcb0SNipun Gupta 	uint8_t dest_priority;
10223e8fcb0SNipun Gupta 	uint8_t pad1;
10323e8fcb0SNipun Gupta 	/* from LSB: dest_type:4 */
10423e8fcb0SNipun Gupta 	uint8_t dest_type;
10523e8fcb0SNipun Gupta 	uint8_t pad2;
10623e8fcb0SNipun Gupta 	uint64_t user_ctx;
10723e8fcb0SNipun Gupta 	uint32_t fqid;
10823e8fcb0SNipun Gupta };
10923e8fcb0SNipun Gupta 
11023e8fcb0SNipun Gupta struct dpdmai_rsp_get_tx_queue {
11123e8fcb0SNipun Gupta 	uint64_t pad;
11223e8fcb0SNipun Gupta 	uint32_t fqid;
11323e8fcb0SNipun Gupta };
11423e8fcb0SNipun Gupta 
11523e8fcb0SNipun Gupta #pragma pack(pop)
11623e8fcb0SNipun Gupta #endif /* _FSL_DPDMAI_CMD_H */
117