From 2ea07afced858b3e5e8e718437b2c1987c8650e2 Mon Sep 17 00:00:00 2001 From: Michael Rogenmoser Date: Fri, 10 Dec 2021 16:43:56 +0100 Subject: [PATCH] Add initial iDMA drivers --- include/archi/chips/pulp/memory_map.h | 4 ++++ include/archi/chips/pulp/properties.h | 4 ++++ include/archi/chips/pulp/pulp.h | 3 +++ include/hal/chips/pulp/pulp.h | 3 +++ 4 files changed, 14 insertions(+) diff --git a/include/archi/chips/pulp/memory_map.h b/include/archi/chips/pulp/memory_map.h index 8c12def..999f5f9 100644 --- a/include/archi/chips/pulp/memory_map.h +++ b/include/archi/chips/pulp/memory_map.h @@ -98,6 +98,7 @@ #define ARCHI_HWCE_OFFSET 0x00001000 #define ARCHI_ICACHE_CTRL_OFFSET 0x00001400 #define ARCHI_MCHAN_EXT_OFFSET 0x00001800 +#define ARCHI_IDMA_EXT_OFFSET 0x00001800 #define ARCHI_CLUSTER_PERIPHERALS_ADDR ( ARCHI_CLUSTER_ADDR + ARCHI_CLUSTER_PERIPHERALS_OFFSET ) #define ARCHI_CLUSTER_PERIPHERALS_GLOBAL_ADDR(cid) ( ARCHI_CLUSTER_GLOBAL_ADDR(cid) + ARCHI_CLUSTER_PERIPHERALS_OFFSET ) @@ -107,6 +108,7 @@ #define ARCHI_EU_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_EU_OFFSET ) #define ARCHI_HWCE_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_HWCE_OFFSET ) #define ARCHI_MCHAN_EXT_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_MCHAN_EXT_OFFSET ) +#define ARCHI_IDMA_EXT_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_IDMA_EXT_OFFSET ) @@ -118,11 +120,13 @@ #define ARCHI_EU_DEMUX_OFFSET ( 0x00000 ) #define ARCHI_MCHAN_DEMUX_OFFSET ( 0x00400 ) +#define ARCHI_IDMA_DEMUX_OFFSET ( 0x00400 ) #define ARCHI_DEMUX_PERIPHERALS_ADDR ( ARCHI_CLUSTER_ADDR + ARCHI_DEMUX_PERIPHERALS_OFFSET ) #define ARCHI_EU_DEMUX_ADDR ( ARCHI_DEMUX_PERIPHERALS_ADDR + ARCHI_EU_DEMUX_OFFSET ) #define ARCHI_MCHAN_DEMUX_ADDR ( ARCHI_DEMUX_PERIPHERALS_ADDR + ARCHI_MCHAN_DEMUX_OFFSET ) +#define ARCHI_IDMA_DEMUX_ADDR ( ARCHI_DEMUX_PERIPHERALS_ADDR + ARCHI_IDMA_DEMUX_OFFSET ) #endif diff --git a/include/archi/chips/pulp/properties.h b/include/archi/chips/pulp/properties.h index 643ca73..4b15c32 100644 --- a/include/archi/chips/pulp/properties.h +++ b/include/archi/chips/pulp/properties.h @@ -78,8 +78,12 @@ #define FLL_VERSION 1 #define RISCV_VERSION 4 #define MCHAN_VERSION 7 +// #define IDMA_VERSION 1 #define PADS_VERSION 2 +#if defined(MCHAN_VERSION) && defined(IDMA_VERSION) +#error "MCHAN and IDMA not compatible" +#endif /* * CLUSTER diff --git a/include/archi/chips/pulp/pulp.h b/include/archi/chips/pulp/pulp.h index a6e0687..fd138c5 100644 --- a/include/archi/chips/pulp/pulp.h +++ b/include/archi/chips/pulp/pulp.h @@ -40,6 +40,9 @@ #if MCHAN_VERSION == 7 #include "archi/dma/mchan_v7.h" #endif +#if IDMA_VERSION == 1 +#include "archi/dma/idma_v1.h" +#endif #include "archi/udma/cpi/udma_cpi_v1.h" #include "archi/udma/i2c/udma_i2c_v2.h" diff --git a/include/hal/chips/pulp/pulp.h b/include/hal/chips/pulp/pulp.h index cc66332..7450d08 100644 --- a/include/hal/chips/pulp/pulp.h +++ b/include/hal/chips/pulp/pulp.h @@ -29,6 +29,9 @@ #if MCHAN_VERSION == 7 #include "hal/dma/mchan_v7.h" #endif +#if IDMA_VERSION == 1 +#include "hal/dma/idma_v1.h" +#endif #include "hal/timer/timer_v2.h" #include "hal/soc_eu/soc_eu_v2.h" #include "hal/cluster_ctrl/cluster_ctrl_v2.h"