xref: /dpdk/drivers/bus/fslmc/mc/fsl_dpbp_cmd.h (revision b4a63e605df40be963e11f1c2f23dfca4c5c4929)
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