Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  *  Copyright (C) 2016 Broadcom
0004  *
0005  * Common header for Broadcom mailbox messages which is shared across
0006  * Broadcom SoCs and Broadcom mailbox client drivers.
0007  */
0008 
0009 #ifndef _LINUX_BRCM_MESSAGE_H_
0010 #define _LINUX_BRCM_MESSAGE_H_
0011 
0012 #include <linux/scatterlist.h>
0013 
0014 enum brcm_message_type {
0015     BRCM_MESSAGE_UNKNOWN = 0,
0016     BRCM_MESSAGE_BATCH,
0017     BRCM_MESSAGE_SPU,
0018     BRCM_MESSAGE_SBA,
0019     BRCM_MESSAGE_MAX,
0020 };
0021 
0022 struct brcm_sba_command {
0023     u64 cmd;
0024     u64 *cmd_dma;
0025     dma_addr_t cmd_dma_addr;
0026 #define BRCM_SBA_CMD_TYPE_A     BIT(0)
0027 #define BRCM_SBA_CMD_TYPE_B     BIT(1)
0028 #define BRCM_SBA_CMD_TYPE_C     BIT(2)
0029 #define BRCM_SBA_CMD_HAS_RESP       BIT(3)
0030 #define BRCM_SBA_CMD_HAS_OUTPUT     BIT(4)
0031     u64 flags;
0032     dma_addr_t resp;
0033     size_t resp_len;
0034     dma_addr_t data;
0035     size_t data_len;
0036 };
0037 
0038 struct brcm_message {
0039     enum brcm_message_type type;
0040     union {
0041         struct {
0042             struct brcm_message *msgs;
0043             unsigned int msgs_queued;
0044             unsigned int msgs_count;
0045         } batch;
0046         struct {
0047             struct scatterlist *src;
0048             struct scatterlist *dst;
0049         } spu;
0050         struct {
0051             struct brcm_sba_command *cmds;
0052             unsigned int cmds_count;
0053         } sba;
0054     };
0055     void *ctx;
0056     int error;
0057 };
0058 
0059 #endif /* _LINUX_BRCM_MESSAGE_H_ */