1131a75b6SHemant Agrawal /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) 208464d29SNipun Gupta * 308464d29SNipun Gupta * Copyright 2013-2016 Freescale Semiconductor Inc. 408464d29SNipun Gupta * 508464d29SNipun Gupta */ 608464d29SNipun Gupta #ifndef _FSL_DPCI_CMD_H 708464d29SNipun Gupta #define _FSL_DPCI_CMD_H 808464d29SNipun Gupta 908464d29SNipun Gupta /* DPCI Version */ 1008464d29SNipun Gupta #define DPCI_VER_MAJOR 3 11*b4a63e60SHemant Agrawal #define DPCI_VER_MINOR 4 1208464d29SNipun Gupta 1316bbc98aSShreyansh Jain #define DPCI_CMD_BASE_VERSION 1 1416bbc98aSShreyansh Jain #define DPCI_CMD_BASE_VERSION_V2 2 1516bbc98aSShreyansh Jain #define DPCI_CMD_ID_OFFSET 4 1616bbc98aSShreyansh Jain 1716bbc98aSShreyansh Jain #define DPCI_CMD_V1(id) ((id << DPCI_CMD_ID_OFFSET) | DPCI_CMD_BASE_VERSION) 1816bbc98aSShreyansh Jain #define DPCI_CMD_V2(id) ((id << DPCI_CMD_ID_OFFSET) | DPCI_CMD_BASE_VERSION_V2) 1916bbc98aSShreyansh Jain 2008464d29SNipun Gupta /* Command IDs */ 2116bbc98aSShreyansh Jain #define DPCI_CMDID_CLOSE DPCI_CMD_V1(0x800) 2216bbc98aSShreyansh Jain #define DPCI_CMDID_OPEN DPCI_CMD_V1(0x807) 2316bbc98aSShreyansh Jain #define DPCI_CMDID_CREATE DPCI_CMD_V2(0x907) 2416bbc98aSShreyansh Jain #define DPCI_CMDID_DESTROY DPCI_CMD_V1(0x987) 2516bbc98aSShreyansh Jain #define DPCI_CMDID_GET_API_VERSION DPCI_CMD_V1(0xa07) 2608464d29SNipun Gupta 2716bbc98aSShreyansh Jain #define DPCI_CMDID_ENABLE DPCI_CMD_V1(0x002) 2816bbc98aSShreyansh Jain #define DPCI_CMDID_DISABLE DPCI_CMD_V1(0x003) 2916bbc98aSShreyansh Jain #define DPCI_CMDID_GET_ATTR DPCI_CMD_V1(0x004) 3016bbc98aSShreyansh Jain #define DPCI_CMDID_RESET DPCI_CMD_V1(0x005) 3116bbc98aSShreyansh Jain #define DPCI_CMDID_IS_ENABLED DPCI_CMD_V1(0x006) 3208464d29SNipun Gupta 3316bbc98aSShreyansh Jain #define DPCI_CMDID_SET_RX_QUEUE DPCI_CMD_V1(0x0e0) 3416bbc98aSShreyansh Jain #define DPCI_CMDID_GET_LINK_STATE DPCI_CMD_V1(0x0e1) 3516bbc98aSShreyansh Jain #define DPCI_CMDID_GET_PEER_ATTR DPCI_CMD_V1(0x0e2) 3616bbc98aSShreyansh Jain #define DPCI_CMDID_GET_RX_QUEUE DPCI_CMD_V1(0x0e3) 3716bbc98aSShreyansh Jain #define DPCI_CMDID_GET_TX_QUEUE DPCI_CMD_V1(0x0e4) 38*b4a63e60SHemant Agrawal #define DPCI_CMDID_SET_OPR DPCI_CMD_V1(0x0e5) 39*b4a63e60SHemant Agrawal #define DPCI_CMDID_GET_OPR DPCI_CMD_V1(0x0e6) 4008464d29SNipun Gupta 4116bbc98aSShreyansh Jain /* Macros for accessing command fields smaller than 1byte */ 4216bbc98aSShreyansh Jain #define DPCI_MASK(field) \ 4316bbc98aSShreyansh Jain GENMASK(DPCI_##field##_SHIFT + DPCI_##field##_SIZE - 1, \ 4416bbc98aSShreyansh Jain DPCI_##field##_SHIFT) 4516bbc98aSShreyansh Jain #define dpci_set_field(var, field, val) \ 4616bbc98aSShreyansh Jain ((var) |= (((val) << DPCI_##field##_SHIFT) & DPCI_MASK(field))) 4716bbc98aSShreyansh Jain #define dpci_get_field(var, field) \ 4816bbc98aSShreyansh Jain (((var) & DPCI_MASK(field)) >> DPCI_##field##_SHIFT) 4908464d29SNipun Gupta 5016bbc98aSShreyansh Jain #pragma pack(push, 1) 5116bbc98aSShreyansh Jain struct dpci_cmd_open { 5216bbc98aSShreyansh Jain uint32_t dpci_id; 5316bbc98aSShreyansh Jain }; 5408464d29SNipun Gupta 5516bbc98aSShreyansh Jain struct dpci_cmd_create { 5616bbc98aSShreyansh Jain uint8_t num_of_priorities; 5716bbc98aSShreyansh Jain uint8_t pad[15]; 5816bbc98aSShreyansh Jain uint32_t options; 5916bbc98aSShreyansh Jain }; 6008464d29SNipun Gupta 6116bbc98aSShreyansh Jain struct dpci_cmd_destroy { 6216bbc98aSShreyansh Jain uint32_t dpci_id; 6316bbc98aSShreyansh Jain }; 6408464d29SNipun Gupta 6516bbc98aSShreyansh Jain #define DPCI_ENABLE_SHIFT 0 6616bbc98aSShreyansh Jain #define DPCI_ENABLE_SIZE 1 6708464d29SNipun Gupta 6816bbc98aSShreyansh Jain struct dpci_rsp_is_enabled { 6916bbc98aSShreyansh Jain /* only the LSB bit */ 7016bbc98aSShreyansh Jain uint8_t en; 7116bbc98aSShreyansh Jain }; 7208464d29SNipun Gupta 7316bbc98aSShreyansh Jain struct dpci_rsp_get_attr { 7416bbc98aSShreyansh Jain uint32_t id; 7516bbc98aSShreyansh Jain uint16_t pad; 7616bbc98aSShreyansh Jain uint8_t num_of_priorities; 7716bbc98aSShreyansh Jain }; 7808464d29SNipun Gupta 7916bbc98aSShreyansh Jain struct dpci_rsp_get_peer_attr { 8016bbc98aSShreyansh Jain uint32_t id; 8116bbc98aSShreyansh Jain uint32_t pad; 8216bbc98aSShreyansh Jain uint8_t num_of_priorities; 8316bbc98aSShreyansh Jain }; 8408464d29SNipun Gupta 8516bbc98aSShreyansh Jain #define DPCI_UP_SHIFT 0 8616bbc98aSShreyansh Jain #define DPCI_UP_SIZE 1 8708464d29SNipun Gupta 8816bbc98aSShreyansh Jain struct dpci_rsp_get_link_state { 8916bbc98aSShreyansh Jain /* only the LSB bit */ 9016bbc98aSShreyansh Jain uint8_t up; 9116bbc98aSShreyansh Jain }; 9208464d29SNipun Gupta 9316bbc98aSShreyansh Jain #define DPCI_DEST_TYPE_SHIFT 0 9416bbc98aSShreyansh Jain #define DPCI_DEST_TYPE_SIZE 4 95*b4a63e60SHemant Agrawal #define DPCI_ORDER_PRESERVATION_SHIFT 4 96*b4a63e60SHemant Agrawal #define DPCI_ORDER_PRESERVATION_SIZE 1 9708464d29SNipun Gupta 9816bbc98aSShreyansh Jain struct dpci_cmd_set_rx_queue { 9916bbc98aSShreyansh Jain uint32_t dest_id; 10016bbc98aSShreyansh Jain uint8_t dest_priority; 10116bbc98aSShreyansh Jain uint8_t priority; 10216bbc98aSShreyansh Jain /* from LSB: dest_type:4 */ 10316bbc98aSShreyansh Jain uint8_t dest_type; 10416bbc98aSShreyansh Jain uint8_t pad; 10516bbc98aSShreyansh Jain uint64_t user_ctx; 10616bbc98aSShreyansh Jain uint32_t options; 10716bbc98aSShreyansh Jain }; 10808464d29SNipun Gupta 10916bbc98aSShreyansh Jain struct dpci_cmd_get_queue { 11016bbc98aSShreyansh Jain uint8_t pad[5]; 11116bbc98aSShreyansh Jain uint8_t priority; 11216bbc98aSShreyansh Jain }; 11308464d29SNipun Gupta 11416bbc98aSShreyansh Jain struct dpci_rsp_get_rx_queue { 11516bbc98aSShreyansh Jain uint32_t dest_id; 11616bbc98aSShreyansh Jain uint8_t dest_priority; 11716bbc98aSShreyansh Jain uint8_t pad; 11816bbc98aSShreyansh Jain /* from LSB: dest_type:4 */ 11916bbc98aSShreyansh Jain uint8_t dest_type; 12016bbc98aSShreyansh Jain uint8_t pad1; 12116bbc98aSShreyansh Jain uint64_t user_ctx; 12216bbc98aSShreyansh Jain uint32_t fqid; 12316bbc98aSShreyansh Jain }; 12416bbc98aSShreyansh Jain 12516bbc98aSShreyansh Jain struct dpci_rsp_get_tx_queue { 12616bbc98aSShreyansh Jain uint32_t pad; 12716bbc98aSShreyansh Jain uint32_t fqid; 12816bbc98aSShreyansh Jain }; 12916bbc98aSShreyansh Jain 13016bbc98aSShreyansh Jain struct dpci_rsp_get_api_version { 13116bbc98aSShreyansh Jain uint16_t major; 13216bbc98aSShreyansh Jain uint16_t minor; 13316bbc98aSShreyansh Jain }; 13416bbc98aSShreyansh Jain 135*b4a63e60SHemant Agrawal struct dpci_cmd_set_opr { 136*b4a63e60SHemant Agrawal uint16_t pad0; 137*b4a63e60SHemant Agrawal uint8_t index; 138*b4a63e60SHemant Agrawal uint8_t options; 139*b4a63e60SHemant Agrawal uint8_t pad1[7]; 140*b4a63e60SHemant Agrawal uint8_t oloe; 141*b4a63e60SHemant Agrawal uint8_t oeane; 142*b4a63e60SHemant Agrawal uint8_t olws; 143*b4a63e60SHemant Agrawal uint8_t oa; 144*b4a63e60SHemant Agrawal uint8_t oprrws; 145*b4a63e60SHemant Agrawal }; 146*b4a63e60SHemant Agrawal 147*b4a63e60SHemant Agrawal struct dpci_cmd_get_opr { 148*b4a63e60SHemant Agrawal uint16_t pad; 149*b4a63e60SHemant Agrawal uint8_t index; 150*b4a63e60SHemant Agrawal }; 151*b4a63e60SHemant Agrawal 152*b4a63e60SHemant Agrawal #define DPCI_RIP_SHIFT 0 153*b4a63e60SHemant Agrawal #define DPCI_RIP_SIZE 1 154*b4a63e60SHemant Agrawal #define DPCI_OPR_ENABLE_SHIFT 1 155*b4a63e60SHemant Agrawal #define DPCI_OPR_ENABLE_SIZE 1 156*b4a63e60SHemant Agrawal #define DPCI_TSEQ_NLIS_SHIFT 0 157*b4a63e60SHemant Agrawal #define DPCI_TSEQ_NLIS_SIZE 1 158*b4a63e60SHemant Agrawal #define DPCI_HSEQ_NLIS_SHIFT 0 159*b4a63e60SHemant Agrawal #define DPCI_HSEQ_NLIS_SIZE 1 160*b4a63e60SHemant Agrawal 161*b4a63e60SHemant Agrawal struct dpci_rsp_get_opr { 162*b4a63e60SHemant Agrawal uint64_t pad0; 163*b4a63e60SHemant Agrawal /* from LSB: rip:1 enable:1 */ 164*b4a63e60SHemant Agrawal uint8_t flags; 165*b4a63e60SHemant Agrawal uint16_t pad1; 166*b4a63e60SHemant Agrawal uint8_t oloe; 167*b4a63e60SHemant Agrawal uint8_t oeane; 168*b4a63e60SHemant Agrawal uint8_t olws; 169*b4a63e60SHemant Agrawal uint8_t oa; 170*b4a63e60SHemant Agrawal uint8_t oprrws; 171*b4a63e60SHemant Agrawal uint16_t nesn; 172*b4a63e60SHemant Agrawal uint16_t pad8; 173*b4a63e60SHemant Agrawal uint16_t ndsn; 174*b4a63e60SHemant Agrawal uint16_t pad2; 175*b4a63e60SHemant Agrawal uint16_t ea_tseq; 176*b4a63e60SHemant Agrawal /* only the LSB */ 177*b4a63e60SHemant Agrawal uint8_t tseq_nlis; 178*b4a63e60SHemant Agrawal uint8_t pad3; 179*b4a63e60SHemant Agrawal uint16_t ea_hseq; 180*b4a63e60SHemant Agrawal /* only the LSB */ 181*b4a63e60SHemant Agrawal uint8_t hseq_nlis; 182*b4a63e60SHemant Agrawal uint8_t pad4; 183*b4a63e60SHemant Agrawal uint16_t ea_hptr; 184*b4a63e60SHemant Agrawal uint16_t pad5; 185*b4a63e60SHemant Agrawal uint16_t ea_tptr; 186*b4a63e60SHemant Agrawal uint16_t pad6; 187*b4a63e60SHemant Agrawal uint16_t opr_vid; 188*b4a63e60SHemant Agrawal uint16_t pad7; 189*b4a63e60SHemant Agrawal uint16_t opr_id; 190*b4a63e60SHemant Agrawal }; 19116bbc98aSShreyansh Jain #pragma pack(pop) 19208464d29SNipun Gupta #endif /* _FSL_DPCI_CMD_H */ 193