|  | /* | 
|  | *  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_ */ |