mailbox.h 885 B

12345678910111213141516171819202122232425262728
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /* Copyright(c) 2024 Intel Corporation. */
  3. #ifndef __CXL_MBOX_H__
  4. #define __CXL_MBOX_H__
  5. #include <linux/rcuwait.h>
  6. struct cxl_mbox_cmd;
  7. /**
  8. * struct cxl_mailbox - context for CXL mailbox operations
  9. * @host: device that hosts the mailbox
  10. * @payload_size: Size of space for payload
  11. * (CXL 3.1 8.2.8.4.3 Mailbox Capabilities Register)
  12. * @mbox_mutex: mutex protects device mailbox and firmware
  13. * @mbox_wait: rcuwait for mailbox
  14. * @mbox_send: @dev specific transport for transmitting mailbox commands
  15. */
  16. struct cxl_mailbox {
  17. struct device *host;
  18. size_t payload_size;
  19. struct mutex mbox_mutex; /* lock to protect mailbox context */
  20. struct rcuwait mbox_wait;
  21. int (*mbox_send)(struct cxl_mailbox *cxl_mbox, struct cxl_mbox_cmd *cmd);
  22. };
  23. int cxl_mailbox_init(struct cxl_mailbox *cxl_mbox, struct device *host);
  24. #endif