| /* SPDX-License-Identifier: GPL-2.0-only */ | 
 | /* | 
 |  *  Copyright (C) 2016 Broadcom | 
 |  * | 
 |  * Common header for Broadcom mailbox messages which is shared across | 
 |  * Broadcom SoCs and Broadcom mailbox client drivers. | 
 |  */ | 
 |  | 
 | #ifndef _LINUX_BRCM_MESSAGE_H_ | 
 | #define _LINUX_BRCM_MESSAGE_H_ | 
 |  | 
 | #include <linux/scatterlist.h> | 
 |  | 
 | enum brcm_message_type { | 
 | 	BRCM_MESSAGE_UNKNOWN = 0, | 
 | 	BRCM_MESSAGE_BATCH, | 
 | 	BRCM_MESSAGE_SPU, | 
 | 	BRCM_MESSAGE_SBA, | 
 | 	BRCM_MESSAGE_MAX, | 
 | }; | 
 |  | 
 | struct brcm_sba_command { | 
 | 	u64 cmd; | 
 | 	u64 *cmd_dma; | 
 | 	dma_addr_t cmd_dma_addr; | 
 | #define BRCM_SBA_CMD_TYPE_A		BIT(0) | 
 | #define BRCM_SBA_CMD_TYPE_B		BIT(1) | 
 | #define BRCM_SBA_CMD_TYPE_C		BIT(2) | 
 | #define BRCM_SBA_CMD_HAS_RESP		BIT(3) | 
 | #define BRCM_SBA_CMD_HAS_OUTPUT		BIT(4) | 
 | 	u64 flags; | 
 | 	dma_addr_t resp; | 
 | 	size_t resp_len; | 
 | 	dma_addr_t data; | 
 | 	size_t data_len; | 
 | }; | 
 |  | 
 | struct brcm_message { | 
 | 	enum brcm_message_type type; | 
 | 	union { | 
 | 		struct { | 
 | 			struct brcm_message *msgs; | 
 | 			unsigned int msgs_queued; | 
 | 			unsigned int msgs_count; | 
 | 		} batch; | 
 | 		struct { | 
 | 			struct scatterlist *src; | 
 | 			struct scatterlist *dst; | 
 | 		} spu; | 
 | 		struct { | 
 | 			struct brcm_sba_command *cmds; | 
 | 			unsigned int cmds_count; | 
 | 		} sba; | 
 | 	}; | 
 | 	void *ctx; | 
 | 	int error; | 
 | }; | 
 |  | 
 | #endif /* _LINUX_BRCM_MESSAGE_H_ */ |