brcm-message.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (C) 2016 Broadcom
  4. *
  5. * Common header for Broadcom mailbox messages which is shared across
  6. * Broadcom SoCs and Broadcom mailbox client drivers.
  7. */
  8. #ifndef _LINUX_BRCM_MESSAGE_H_
  9. #define _LINUX_BRCM_MESSAGE_H_
  10. #include <linux/scatterlist.h>
  11. enum brcm_message_type {
  12. BRCM_MESSAGE_UNKNOWN = 0,
  13. BRCM_MESSAGE_BATCH,
  14. BRCM_MESSAGE_SPU,
  15. BRCM_MESSAGE_SBA,
  16. BRCM_MESSAGE_MAX,
  17. };
  18. struct brcm_sba_command {
  19. u64 cmd;
  20. u64 *cmd_dma;
  21. dma_addr_t cmd_dma_addr;
  22. #define BRCM_SBA_CMD_TYPE_A BIT(0)
  23. #define BRCM_SBA_CMD_TYPE_B BIT(1)
  24. #define BRCM_SBA_CMD_TYPE_C BIT(2)
  25. #define BRCM_SBA_CMD_HAS_RESP BIT(3)
  26. #define BRCM_SBA_CMD_HAS_OUTPUT BIT(4)
  27. u64 flags;
  28. dma_addr_t resp;
  29. size_t resp_len;
  30. dma_addr_t data;
  31. size_t data_len;
  32. };
  33. struct brcm_message {
  34. enum brcm_message_type type;
  35. union {
  36. struct {
  37. struct brcm_message *msgs;
  38. unsigned int msgs_queued;
  39. unsigned int msgs_count;
  40. } batch;
  41. struct {
  42. struct scatterlist *src;
  43. struct scatterlist *dst;
  44. } spu;
  45. struct {
  46. struct brcm_sba_command *cmds;
  47. unsigned int cmds_count;
  48. } sba;
  49. };
  50. void *ctx;
  51. int error;
  52. };
  53. #endif /* _LINUX_BRCM_MESSAGE_H_ */