1131a75b6SHemant Agrawal /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) 27ee46864SHemant Agrawal * 37ee46864SHemant Agrawal * Copyright 2013-2016 Freescale Semiconductor Inc. 4131a75b6SHemant Agrawal * Copyright 2016-2017 NXP 57ee46864SHemant Agrawal * 67ee46864SHemant Agrawal */ 77ee46864SHemant Agrawal #ifndef _FSL_DPBP_CMD_H 87ee46864SHemant Agrawal #define _FSL_DPBP_CMD_H 97ee46864SHemant Agrawal 107ee46864SHemant Agrawal /* DPBP Version */ 117ee46864SHemant Agrawal #define DPBP_VER_MAJOR 3 12*b4a63e60SHemant Agrawal #define DPBP_VER_MINOR 4 1316bbc98aSShreyansh Jain 1416bbc98aSShreyansh Jain /* Command versioning */ 1516bbc98aSShreyansh Jain #define DPBP_CMD_BASE_VERSION 1 16*b4a63e60SHemant Agrawal #define DPBP_CMD_VERSION_2 2 1716bbc98aSShreyansh Jain #define DPBP_CMD_ID_OFFSET 4 1816bbc98aSShreyansh Jain 1916bbc98aSShreyansh Jain #define DPBP_CMD(id) ((id << DPBP_CMD_ID_OFFSET) | DPBP_CMD_BASE_VERSION) 20*b4a63e60SHemant Agrawal #define DPBP_CMD_V2(id) ((id << DPBP_CMD_ID_OFFSET) | DPBP_CMD_VERSION_2) 217ee46864SHemant Agrawal 227ee46864SHemant Agrawal /* Command IDs */ 2316bbc98aSShreyansh Jain #define DPBP_CMDID_CLOSE DPBP_CMD(0x800) 2416bbc98aSShreyansh Jain #define DPBP_CMDID_OPEN DPBP_CMD(0x804) 2516bbc98aSShreyansh Jain #define DPBP_CMDID_CREATE DPBP_CMD(0x904) 2616bbc98aSShreyansh Jain #define DPBP_CMDID_DESTROY DPBP_CMD(0x984) 2716bbc98aSShreyansh Jain #define DPBP_CMDID_GET_API_VERSION DPBP_CMD(0xa04) 287ee46864SHemant Agrawal 2916bbc98aSShreyansh Jain #define DPBP_CMDID_ENABLE DPBP_CMD(0x002) 3016bbc98aSShreyansh Jain #define DPBP_CMDID_DISABLE DPBP_CMD(0x003) 3116bbc98aSShreyansh Jain #define DPBP_CMDID_GET_ATTR DPBP_CMD(0x004) 3216bbc98aSShreyansh Jain #define DPBP_CMDID_RESET DPBP_CMD(0x005) 3316bbc98aSShreyansh Jain #define DPBP_CMDID_IS_ENABLED DPBP_CMD(0x006) 347ee46864SHemant Agrawal 3516bbc98aSShreyansh Jain #define DPBP_CMDID_SET_IRQ_ENABLE DPBP_CMD(0x012) 3616bbc98aSShreyansh Jain #define DPBP_CMDID_GET_IRQ_ENABLE DPBP_CMD(0x013) 3716bbc98aSShreyansh Jain #define DPBP_CMDID_SET_IRQ_MASK DPBP_CMD(0x014) 3816bbc98aSShreyansh Jain #define DPBP_CMDID_GET_IRQ_MASK DPBP_CMD(0x015) 3916bbc98aSShreyansh Jain #define DPBP_CMDID_GET_IRQ_STATUS DPBP_CMD(0x016) 4016bbc98aSShreyansh Jain #define DPBP_CMDID_CLEAR_IRQ_STATUS DPBP_CMD(0x017) 417ee46864SHemant Agrawal 42*b4a63e60SHemant Agrawal #define DPBP_CMDID_SET_NOTIFICATIONS DPBP_CMD_V2(0x1b0) 43*b4a63e60SHemant Agrawal #define DPBP_CMDID_GET_NOTIFICATIONS DPBP_CMD_V2(0x1b1) 447ee46864SHemant Agrawal 4516bbc98aSShreyansh Jain #define DPBP_CMDID_GET_FREE_BUFFERS_NUM DPBP_CMD(0x1b2) 467ee46864SHemant Agrawal 4716bbc98aSShreyansh Jain #pragma pack(push, 1) 4816bbc98aSShreyansh Jain struct dpbp_cmd_open { 4916bbc98aSShreyansh Jain uint32_t dpbp_id; 5016bbc98aSShreyansh Jain }; 517ee46864SHemant Agrawal 5216bbc98aSShreyansh Jain struct dpbp_cmd_destroy { 5316bbc98aSShreyansh Jain uint32_t object_id; 5416bbc98aSShreyansh Jain }; 557ee46864SHemant Agrawal 5616bbc98aSShreyansh Jain #define DPBP_ENABLE 0x1 577ee46864SHemant Agrawal 5816bbc98aSShreyansh Jain struct dpbp_rsp_is_enabled { 5916bbc98aSShreyansh Jain uint8_t enabled; 6016bbc98aSShreyansh Jain }; 6116bbc98aSShreyansh Jain 6216bbc98aSShreyansh Jain struct dpbp_rsp_get_attributes { 6316bbc98aSShreyansh Jain uint16_t pad; 6416bbc98aSShreyansh Jain uint16_t bpid; 6516bbc98aSShreyansh Jain uint32_t id; 6616bbc98aSShreyansh Jain }; 6716bbc98aSShreyansh Jain 6816bbc98aSShreyansh Jain struct dpbp_cmd_set_notifications { 6916bbc98aSShreyansh Jain uint32_t depletion_entry; 7016bbc98aSShreyansh Jain uint32_t depletion_exit; 7116bbc98aSShreyansh Jain uint32_t surplus_entry; 7216bbc98aSShreyansh Jain uint32_t surplus_exit; 73*b4a63e60SHemant Agrawal uint32_t options; 74*b4a63e60SHemant Agrawal uint16_t pad[2]; 7516bbc98aSShreyansh Jain uint64_t message_ctx; 7616bbc98aSShreyansh Jain uint64_t message_iova; 7716bbc98aSShreyansh Jain }; 7816bbc98aSShreyansh Jain 7916bbc98aSShreyansh Jain struct dpbp_rsp_get_notifications { 8016bbc98aSShreyansh Jain uint32_t depletion_entry; 8116bbc98aSShreyansh Jain uint32_t depletion_exit; 8216bbc98aSShreyansh Jain uint32_t surplus_entry; 8316bbc98aSShreyansh Jain uint32_t surplus_exit; 84*b4a63e60SHemant Agrawal uint32_t options; 85*b4a63e60SHemant Agrawal uint16_t pad[2]; 8616bbc98aSShreyansh Jain uint64_t message_ctx; 8716bbc98aSShreyansh Jain uint64_t message_iova; 8816bbc98aSShreyansh Jain }; 8916bbc98aSShreyansh Jain 9016bbc98aSShreyansh Jain struct dpbp_rsp_get_api_version { 9116bbc98aSShreyansh Jain uint16_t major; 9216bbc98aSShreyansh Jain uint16_t minor; 9316bbc98aSShreyansh Jain }; 9416bbc98aSShreyansh Jain 9516bbc98aSShreyansh Jain struct dpbp_rsp_get_num_free_bufs { 9616bbc98aSShreyansh Jain uint32_t num_free_bufs; 9716bbc98aSShreyansh Jain }; 9816bbc98aSShreyansh Jain 9916bbc98aSShreyansh Jain #pragma pack(pop) 1007ee46864SHemant Agrawal #endif /* _FSL_DPBP_CMD_H */ 101