mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
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>
This commit is contained in:
committed by
Jassi Brar
parent
af33bd58c2
commit
e4b1d67e71
@@ -178,6 +178,19 @@ config POLARFIRE_SOC_MAILBOX
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config MCHP_SBI_IPC_MBOX
|
||||
tristate "Microchip Inter-processor Communication (IPC) SBI driver"
|
||||
depends on RISCV_SBI || COMPILE_TEST
|
||||
depends on ARCH_MICROCHIP
|
||||
help
|
||||
Mailbox implementation for Microchip devices with an
|
||||
Inter-process communication (IPC) controller.
|
||||
|
||||
To compile this driver as a module, choose M here. the
|
||||
module will be called mailbox-mchp-ipc-sbi.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config QCOM_APCS_IPC
|
||||
tristate "Qualcomm APCS IPC driver"
|
||||
depends on ARCH_QCOM || COMPILE_TEST
|
||||
|
||||
@@ -45,6 +45,8 @@ obj-$(CONFIG_BCM_FLEXRM_MBOX) += bcm-flexrm-mailbox.o
|
||||
|
||||
obj-$(CONFIG_POLARFIRE_SOC_MAILBOX) += mailbox-mpfs.o
|
||||
|
||||
obj-$(CONFIG_MCHP_SBI_IPC_MBOX) += mailbox-mchp-ipc-sbi.o
|
||||
|
||||
obj-$(CONFIG_QCOM_APCS_IPC) += qcom-apcs-ipc-mailbox.o
|
||||
|
||||
obj-$(CONFIG_TEGRA_HSP_MBOX) += tegra-hsp.o
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
/* 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_ */
|
||||
Reference in New Issue
Block a user