/* * Copyright (C) 2016 Broadcom * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * 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_ */