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