mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-02 16:44:59 +00:00

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>
34 lines
625 B
C
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_ */
|