blob: f7eac74d7ade99ae95ed688e00914a7f393193a8 [file]
/*
* Copyright (c) 2024-2025 Renesas Electronics Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/device.h>
/* Used to store interrupt and priority for channels */
#define RZ_DMA_CHANNEL_DECLARE(n, inst) \
{ \
.fsp_ctrl = (transfer_ctrl_t *)&g_transfer_ctrl[n], \
.fsp_cfg = \
{ \
.p_info = &g_transfer_info[n], \
.p_extend = &g_transfer_extend[n], \
}, \
.irq = DT_INST_IRQ_BY_IDX(inst, n, irq), \
.irq_ipl = DT_INST_IRQ_BY_IDX(inst, n, priority), \
}
/* Generate an array of DMA channel data structures */
#define RZ_DMA_CHANNEL_DATA_ARRAY(inst) \
{LISTIFY(DT_INST_PROP(inst, dma_channels), RZ_DMA_CHANNEL_DECLARE, (,), inst)}
#ifdef CONFIG_CPU_CORTEX_A
#define RZ_DMA_EXTERN_INFO_DECLARATION(size) static dma_extended_info_t g_dma_extended_info[size];
#define RZ_DMA_EXTEND_INFO_DECLARE(n, inst) \
{ \
.p_extend_info = &g_dma_extended_info[n], \
}
#define RZ_DMA_TRANSFER_INFO_ARRAY(inst) \
{LISTIFY(DT_INST_PROP(inst, dma_channels), RZ_DMA_EXTEND_INFO_DECLARE, (,), inst)}
#else /* CONFIG_CPU_CORTEX_M || CONFIG_CPU_AARCH32_CORTEX_R */
#define RZ_DMA_EXTERN_INFO_DECLARATION(size)
#define RZ_DMA_TRANSFER_INFO_ARRAY(inst) \
{ \
}
#endif /* CONFIG_CPU_CORTEX_A */
#if defined(CONFIG_CPU_CORTEX_M) || defined(CONFIG_CPU_CORTEX_A)
#define RZ_DMA_DATA_STRUCT_GET_ERR_IRQ(inst, err_name) \
.err_irq = DT_INST_IRQ_BY_NAME(inst, err_name, irq),
#else /* CONFIG_CPU_AARCH32_CORTEX_R */
#define RZ_DMA_DATA_STRUCT_GET_ERR_IRQ(inst, err_name)
#endif /* defined(CONFIG_CPU_CORTEX_M) || defined(CONFIG_CPU_CORTEX_A) */
#define RZ_DMA_PRV_CHANNEL(channel) (channel % 8)
#define RZ_DMA_PRV_GROUP(channel) (channel / 8)