| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /* SPDX-License-Identifier: GPL-2.0-only OR MIT */
- /*
- * Apple mailbox message format
- *
- * Copyright The Asahi Linux Contributors
- */
- #ifndef _APPLE_MAILBOX_H_
- #define _APPLE_MAILBOX_H_
- #include <linux/device.h>
- #include <linux/types.h>
- /* encodes a single 96bit message sent over the single channel */
- struct apple_mbox_msg {
- u64 msg0;
- u32 msg1;
- };
- struct apple_mbox {
- struct device *dev;
- void __iomem *regs;
- const struct apple_mbox_hw *hw;
- bool active;
- int irq_recv_not_empty;
- int irq_send_empty;
- spinlock_t rx_lock;
- spinlock_t tx_lock;
- struct completion tx_empty;
- /** Receive callback for incoming messages */
- void (*rx)(struct apple_mbox *mbox, struct apple_mbox_msg msg, void *cookie);
- void *cookie;
- };
- struct apple_mbox *apple_mbox_get(struct device *dev, int index);
- struct apple_mbox *apple_mbox_get_byname(struct device *dev, const char *name);
- int apple_mbox_start(struct apple_mbox *mbox);
- void apple_mbox_stop(struct apple_mbox *mbox);
- int apple_mbox_poll(struct apple_mbox *mbox);
- int apple_mbox_send(struct apple_mbox *mbox, struct apple_mbox_msg msg,
- bool atomic);
- #endif
|