linux/include/linux/mailbox/brcm-message.h
<<
>>
Prefs
   1/*
   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,
  19        BRCM_MESSAGE_BATCH,
  20        BRCM_MESSAGE_SPU,
  21        BRCM_MESSAGE_SBA,
  22        BRCM_MESSAGE_MAX,
  23};
  24
  25struct brcm_sba_command {
  26        u64 cmd;
  27        u64 *cmd_dma;
  28        dma_addr_t cmd_dma_addr;
  29#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;
  35        dma_addr_t resp;
  36        size_t resp_len;
  37        dma_addr_t data;
  38        size_t data_len;
  39};
  40
  41struct brcm_message {
  42        enum brcm_message_type type;
  43        union {
  44                struct {
  45                        struct brcm_message *msgs;
  46                        unsigned int msgs_queued;
  47                        unsigned int msgs_count;
  48                } batch;
  49                struct {
  50                        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_ */
  63