linux-loongson/include/linux/mailbox/mchp-ipc.h
Valentina Fernandez e4b1d67e71 mailbox: add Microchip IPC support
Add a mailbox controller driver for the Microchip Inter-processor
Communication (IPC), which is used to send and receive data between
processors.

The driver uses the RISC-V Supervisor Binary Interface (SBI) to
communicate with software running in machine mode (M-mode) to access
the IPC hardware block.

Additional details on the Microchip vendor extension and the IPC
function IDs described in the driver can be found in the following
documentation:

https://github.com/linux4microchip/microchip-sbi-ecall-extension

This SBI interface in this driver is compatible with the Mi-V Inter-hart
Communication (IHC) IP.

Transmitting and receiving data through the mailbox framework is done
through struct mchp_ipc_msg.

Signed-off-by: Valentina Fernandez <valentina.fernandezalanis@microchip.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2025-01-18 16:09:48 -06:00

34 lines
625 B
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
*Copyright (c) 2024 Microchip Technology Inc. All rights reserved.
*/
#ifndef _LINUX_MCHP_IPC_H_
#define _LINUX_MCHP_IPC_H_
#include <linux/mailbox_controller.h>
#include <linux/types.h>
struct mchp_ipc_msg {
u32 *buf;
u16 size;
};
struct mchp_ipc_sbi_chan {
void *buf_base_tx;
void *buf_base_rx;
void *msg_buf_tx;
void *msg_buf_rx;
phys_addr_t buf_base_tx_addr;
phys_addr_t buf_base_rx_addr;
phys_addr_t msg_buf_tx_addr;
phys_addr_t msg_buf_rx_addr;
int chan_aggregated_irq;
int mp_irq;
int mc_irq;
u32 id;
u32 max_msg_size;
};
#endif /* _LINUX_MCHP_IPC_H_ */