1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2016 Broadcom 4 * 5 * Common header for Broadcom mailbox messages which is shared across 6 * Broadcom SoCs and Broadcom mailbox client drivers. 7 */ 8 9 #ifndef _LINUX_BRCM_MESSAGE_H_ 10 #define _LINUX_BRCM_MESSAGE_H_ 11 12 #include <linux/scatterlist.h> 13 14 enum brcm_message_type { 15 BRCM_MESSAGE_UNKNOWN = 0, 16 BRCM_MESSAGE_BATCH, 17 BRCM_MESSAGE_SPU, 18 BRCM_MESSAGE_SBA, 19 BRCM_MESSAGE_MAX, 20 }; 21 22 struct brcm_sba_command { 23 u64 cmd; 24 u64 *cmd_dma; 25 dma_addr_t cmd_dma_addr; 26 #define BRCM_SBA_CMD_TYPE_A BIT(0) 27 #define BRCM_SBA_CMD_TYPE_B BIT(1) 28 #define BRCM_SBA_CMD_TYPE_C BIT(2) 29 #define BRCM_SBA_CMD_HAS_RESP BIT(3) 30 #define BRCM_SBA_CMD_HAS_OUTPUT BIT(4) 31 u64 flags; 32 dma_addr_t resp; 33 size_t resp_len; 34 dma_addr_t data; 35 size_t data_len; 36 }; 37 38 struct brcm_message { 39 enum brcm_message_type type; 40 union { 41 struct { 42 struct brcm_message *msgs; 43 unsigned int msgs_queued; 44 unsigned int msgs_count; 45 } batch; 46 struct { 47 struct scatterlist *src; 48 struct scatterlist *dst; 49 } spu; 50 struct { 51 struct brcm_sba_command *cmds; 52 unsigned int cmds_count; 53 } sba; 54 }; 55 void *ctx; 56 int error; 57 }; 58 59 #endif /* _LINUX_BRCM_MESSAGE_H_ */ 60