blob: c20b4843fc2d60ab9a0249ff7d08799a6bcab1d8 [file] [log] [blame]
Rob Ricea24532f2016-06-30 15:59:23 -04001/*
2 * Copyright (C) 2016 Broadcom
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * Common header for Broadcom mailbox messages which is shared across
9 * Broadcom SoCs and Broadcom mailbox client drivers.
10 */
11
12#ifndef _LINUX_BRCM_MESSAGE_H_
13#define _LINUX_BRCM_MESSAGE_H_
14
15#include <linux/scatterlist.h>
16
17enum brcm_message_type {
18 BRCM_MESSAGE_UNKNOWN = 0,
Anup Pateldbc049e2017-03-15 12:10:00 +053019 BRCM_MESSAGE_BATCH,
Rob Ricea24532f2016-06-30 15:59:23 -040020 BRCM_MESSAGE_SPU,
21 BRCM_MESSAGE_SBA,
22 BRCM_MESSAGE_MAX,
23};
24
25struct brcm_sba_command {
26 u64 cmd;
Anup Pateldbc049e2017-03-15 12:10:00 +053027 u64 *cmd_dma;
28 dma_addr_t cmd_dma_addr;
Rob Ricea24532f2016-06-30 15:59:23 -040029#define BRCM_SBA_CMD_TYPE_A BIT(0)
30#define BRCM_SBA_CMD_TYPE_B BIT(1)
31#define BRCM_SBA_CMD_TYPE_C BIT(2)
32#define BRCM_SBA_CMD_HAS_RESP BIT(3)
33#define BRCM_SBA_CMD_HAS_OUTPUT BIT(4)
34 u64 flags;
Rob Ricea24532f2016-06-30 15:59:23 -040035 dma_addr_t resp;
36 size_t resp_len;
Anup Pateldbc049e2017-03-15 12:10:00 +053037 dma_addr_t data;
38 size_t data_len;
Rob Ricea24532f2016-06-30 15:59:23 -040039};
40
41struct brcm_message {
42 enum brcm_message_type type;
43 union {
44 struct {
Anup Pateldbc049e2017-03-15 12:10:00 +053045 struct brcm_message *msgs;
46 unsigned int msgs_queued;
47 unsigned int msgs_count;
48 } batch;
49 struct {
Rob Ricea24532f2016-06-30 15:59:23 -040050 struct scatterlist *src;
51 struct scatterlist *dst;
52 } spu;
53 struct {
54 struct brcm_sba_command *cmds;
55 unsigned int cmds_count;
56 } sba;
57 };
58 void *ctx;
59 int error;
60};
61
62#endif /* _LINUX_BRCM_MESSAGE_H_ */