1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) 2 * 3 * Copyright 2013-2016 Freescale Semiconductor Inc. 4 * Copyright 2016-2017 NXP 5 * 6 */ 7 #ifndef _FSL_DPBP_CMD_H 8 #define _FSL_DPBP_CMD_H 9 10 /* DPBP Version */ 11 #define DPBP_VER_MAJOR 3 12 #define DPBP_VER_MINOR 4 13 14 /* Command versioning */ 15 #define DPBP_CMD_BASE_VERSION 1 16 #define DPBP_CMD_VERSION_2 2 17 #define DPBP_CMD_ID_OFFSET 4 18 19 #define DPBP_CMD(id) ((id << DPBP_CMD_ID_OFFSET) | DPBP_CMD_BASE_VERSION) 20 #define DPBP_CMD_V2(id) ((id << DPBP_CMD_ID_OFFSET) | DPBP_CMD_VERSION_2) 21 22 /* Command IDs */ 23 #define DPBP_CMDID_CLOSE DPBP_CMD(0x800) 24 #define DPBP_CMDID_OPEN DPBP_CMD(0x804) 25 #define DPBP_CMDID_CREATE DPBP_CMD(0x904) 26 #define DPBP_CMDID_DESTROY DPBP_CMD(0x984) 27 #define DPBP_CMDID_GET_API_VERSION DPBP_CMD(0xa04) 28 29 #define DPBP_CMDID_ENABLE DPBP_CMD(0x002) 30 #define DPBP_CMDID_DISABLE DPBP_CMD(0x003) 31 #define DPBP_CMDID_GET_ATTR DPBP_CMD(0x004) 32 #define DPBP_CMDID_RESET DPBP_CMD(0x005) 33 #define DPBP_CMDID_IS_ENABLED DPBP_CMD(0x006) 34 35 #define DPBP_CMDID_SET_IRQ_ENABLE DPBP_CMD(0x012) 36 #define DPBP_CMDID_GET_IRQ_ENABLE DPBP_CMD(0x013) 37 #define DPBP_CMDID_SET_IRQ_MASK DPBP_CMD(0x014) 38 #define DPBP_CMDID_GET_IRQ_MASK DPBP_CMD(0x015) 39 #define DPBP_CMDID_GET_IRQ_STATUS DPBP_CMD(0x016) 40 #define DPBP_CMDID_CLEAR_IRQ_STATUS DPBP_CMD(0x017) 41 42 #define DPBP_CMDID_SET_NOTIFICATIONS DPBP_CMD_V2(0x1b0) 43 #define DPBP_CMDID_GET_NOTIFICATIONS DPBP_CMD_V2(0x1b1) 44 45 #define DPBP_CMDID_GET_FREE_BUFFERS_NUM DPBP_CMD(0x1b2) 46 47 #pragma pack(push, 1) 48 struct dpbp_cmd_open { 49 uint32_t dpbp_id; 50 }; 51 52 struct dpbp_cmd_destroy { 53 uint32_t object_id; 54 }; 55 56 #define DPBP_ENABLE 0x1 57 58 struct dpbp_rsp_is_enabled { 59 uint8_t enabled; 60 }; 61 62 struct dpbp_rsp_get_attributes { 63 uint16_t pad; 64 uint16_t bpid; 65 uint32_t id; 66 }; 67 68 struct dpbp_cmd_set_notifications { 69 uint32_t depletion_entry; 70 uint32_t depletion_exit; 71 uint32_t surplus_entry; 72 uint32_t surplus_exit; 73 uint32_t options; 74 uint16_t pad[2]; 75 uint64_t message_ctx; 76 uint64_t message_iova; 77 }; 78 79 struct dpbp_rsp_get_notifications { 80 uint32_t depletion_entry; 81 uint32_t depletion_exit; 82 uint32_t surplus_entry; 83 uint32_t surplus_exit; 84 uint32_t options; 85 uint16_t pad[2]; 86 uint64_t message_ctx; 87 uint64_t message_iova; 88 }; 89 90 struct dpbp_rsp_get_api_version { 91 uint16_t major; 92 uint16_t minor; 93 }; 94 95 struct dpbp_rsp_get_num_free_bufs { 96 uint32_t num_free_bufs; 97 }; 98 99 #pragma pack(pop) 100 #endif /* _FSL_DPBP_CMD_H */ 101