mailbox: Add driver for Broadcom FlexRM ring manager
Some of the Broadcom iProc SoCs have FlexRM ring manager which provides a ring-based programming interface to various offload engines (e.g. RAID, Crypto, etc). This patch adds a common mailbox driver for Broadcom FlexRM ring manager which can be shared by various offload engine drivers (implemented as mailbox clients). Reviewed-by: Ray Jui <ray.jui@broadcom.com> Reviewed-by: Scott Branden <scott.branden@broadcom.com> Reviewed-by: Pramod KUMAR <pramod.kumar@broadcom.com> Signed-off-by: Anup Patel <anup.patel@broadcom.com> Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
This commit is contained in:
parent
52e2dadd2b
commit
dbc049eee7
|
@ -151,4 +151,15 @@ config BCM_PDC_MBOX
|
|||
Mailbox implementation for the Broadcom FlexSparx DMA ring manager,
|
||||
which provides access to various offload engines on Broadcom
|
||||
SoCs, including FA2/FA+ on Northstar Plus and PDC on Northstar 2.
|
||||
|
||||
config BCM_FLEXRM_MBOX
|
||||
tristate "Broadcom FlexRM Mailbox"
|
||||
depends on ARM64 || COMPILE_TEST
|
||||
depends on HAS_DMA
|
||||
select GENERIC_MSI_IRQ_DOMAIN
|
||||
default ARCH_BCM_IPROC
|
||||
help
|
||||
Mailbox implementation of the Broadcom FlexRM ring manager,
|
||||
which provides access to various offload engines on Broadcom
|
||||
SoCs. Say Y here if you want to use the Broadcom FlexRM.
|
||||
endif
|
||||
|
|
|
@ -30,4 +30,6 @@ obj-$(CONFIG_HI6220_MBOX) += hi6220-mailbox.o
|
|||
|
||||
obj-$(CONFIG_BCM_PDC_MBOX) += bcm-pdc-mailbox.o
|
||||
|
||||
obj-$(CONFIG_BCM_FLEXRM_MBOX) += bcm-flexrm-mailbox.o
|
||||
|
||||
obj-$(CONFIG_TEGRA_HSP_MBOX) += tegra-hsp.o
|
||||
|
|
1595
drivers/mailbox/bcm-flexrm-mailbox.c
Normal file
1595
drivers/mailbox/bcm-flexrm-mailbox.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -16,6 +16,7 @@
|
|||
|
||||
enum brcm_message_type {
|
||||
BRCM_MESSAGE_UNKNOWN = 0,
|
||||
BRCM_MESSAGE_BATCH,
|
||||
BRCM_MESSAGE_SPU,
|
||||
BRCM_MESSAGE_SBA,
|
||||
BRCM_MESSAGE_MAX,
|
||||
|
@ -23,23 +24,28 @@ enum brcm_message_type {
|
|||
|
||||
struct brcm_sba_command {
|
||||
u64 cmd;
|
||||
u64 *cmd_dma;
|
||||
dma_addr_t cmd_dma_addr;
|
||||
#define BRCM_SBA_CMD_TYPE_A BIT(0)
|
||||
#define BRCM_SBA_CMD_TYPE_B BIT(1)
|
||||
#define BRCM_SBA_CMD_TYPE_C BIT(2)
|
||||
#define BRCM_SBA_CMD_HAS_RESP BIT(3)
|
||||
#define BRCM_SBA_CMD_HAS_OUTPUT BIT(4)
|
||||
u64 flags;
|
||||
dma_addr_t input;
|
||||
size_t input_len;
|
||||
dma_addr_t resp;
|
||||
size_t resp_len;
|
||||
dma_addr_t output;
|
||||
size_t output_len;
|
||||
dma_addr_t data;
|
||||
size_t data_len;
|
||||
};
|
||||
|
||||
struct brcm_message {
|
||||
enum brcm_message_type type;
|
||||
union {
|
||||
struct {
|
||||
struct brcm_message *msgs;
|
||||
unsigned int msgs_queued;
|
||||
unsigned int msgs_count;
|
||||
} batch;
|
||||
struct {
|
||||
struct scatterlist *src;
|
||||
struct scatterlist *dst;
|
||||
|
|
Loading…
Reference in a new issue