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