From b45d16cdd241f132b415e8e7591a6eeb055c8d59 Mon Sep 17 00:00:00 2001 From: Michael Rogenmoser Date: Tue, 21 Sep 2021 16:51:02 +0200 Subject: [PATCH] Update UDMA configuration in line with pulp-open --- include/archi/chips/pulp/properties.h | 20 ++++++++++---------- include/archi/udma/i2c/udma_i2c_v2.h | 1 + include/hal/udma/i2c/udma_i2c_v2.h | 5 +++-- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/archi/chips/pulp/properties.h b/include/archi/chips/pulp/properties.h index eeb896f..3a19560 100644 --- a/include/archi/chips/pulp/properties.h +++ b/include/archi/chips/pulp/properties.h @@ -138,21 +138,21 @@ #define ARCHI_UDMA_NB_SPIM 1 #define ARCHI_UDMA_NB_UART 1 #define ARCHI_UDMA_NB_SDIO 1 -#define ARCHI_UDMA_NB_I2C 1 +#define ARCHI_UDMA_NB_I2C 2 #define ARCHI_UDMA_NB_I2S 1 #define ARCHI_UDMA_NB_CAM 1 #define ARCHI_UDMA_NB_TRACER 1 #define ARCHI_UDMA_NB_FILTER 1 -#define ARCHI_UDMA_UART_ID(id) 0 -#define ARCHI_UDMA_SPIM_ID(id) 1 -#define ARCHI_UDMA_I2C_ID(id) (2 + (id)) -#define ARCHI_UDMA_SDIO_ID(id) (4 + (id)) -#define ARCHI_UDMA_I2S_ID(id) 5 -#define ARCHI_UDMA_CAM_ID(id) 6 -#define ARCHI_UDMA_FILTER_ID(id) (7 + (id)) -#define ARCHI_UDMA_TRACER_ID(id) 8 -#define ARCHI_UDMA_TGEN_ID(id) 9 +#define ARCHI_UDMA_UART_ID(id) (0 + (id)) +#define ARCHI_UDMA_SPIM_ID(id) (ARCHI_UDMA_NB_UART + (id)) +#define ARCHI_UDMA_I2C_ID(id) (ARCHI_UDMA_SPIM_ID(ARCHI_UDMA_NB_SPIM) + (id)) +#define ARCHI_UDMA_SDIO_ID(id) (ARCHI_UDMA_I2C_ID(ARCHI_UDMA_NB_I2C) + (id)) +#define ARCHI_UDMA_I2S_ID(id) (ARCHI_UDMA_SDIO_ID(ARCHI_UDMA_NB_SDIO) + (id)) +#define ARCHI_UDMA_CAM_ID(id) (ARCHI_UDMA_I2S_ID(ARCHI_UDMA_NB_I2S) + (id)) +#define ARCHI_UDMA_FILTER_ID(id) (ARCHI_UDMA_CAM_ID(ARCHI_UDMA_NB_CAM) + (id)) +#define ARCHI_UDMA_TRACER_ID(id) (ARCHI_UDMA_FILTER_ID(ARCHI_UDMA_NB_FILTER) + (id)) +#define ARCHI_UDMA_TGEN_ID(id) (ARCHI_UDMA_TRACER_ID(ARCHI_UDMA_NB_TRACER) + (id)) #define ARCHI_NB_PERIPH 10 diff --git a/include/archi/udma/i2c/udma_i2c_v2.h b/include/archi/udma/i2c/udma_i2c_v2.h index f148255..dd8b53c 100644 --- a/include/archi/udma/i2c/udma_i2c_v2.h +++ b/include/archi/udma/i2c/udma_i2c_v2.h @@ -23,6 +23,7 @@ #define I2C_CMD_STOP (0x2 << I2C_CMD_OFFSET) #define I2C_CMD_RD_ACK (0x4 << I2C_CMD_OFFSET) #define I2C_CMD_RD_NACK (0x6 << I2C_CMD_OFFSET) +#define I2C_CMD_WRB (0x7 << I2C_CMD_OFFSET) #define I2C_CMD_WR (0x8 << I2C_CMD_OFFSET) #define I2C_CMD_WAIT (0xA << I2C_CMD_OFFSET) #define I2C_CMD_RPT (0xC << I2C_CMD_OFFSET) diff --git a/include/hal/udma/i2c/udma_i2c_v2.h b/include/hal/udma/i2c/udma_i2c_v2.h index eb4fed0..880727e 100644 --- a/include/hal/udma/i2c/udma_i2c_v2.h +++ b/include/hal/udma/i2c/udma_i2c_v2.h @@ -22,8 +22,9 @@ #define UDMA_I2C_OFFSET(id) UDMA_PERIPH_OFFSET(ARCHI_UDMA_I2C_ID(id)) #define UDMA_I2C_DATA_ADDR(id) (ARCHI_UDMA_ADDR + UDMA_I2C_OFFSET(id) + UDMA_CHANNEL_RX_OFFSET) -#define UDMA_I2C_CMD_ADDR(id) (ARCHI_UDMA_ADDR + UDMA_I2C_OFFSET(id) + UDMA_CHANNEL_TX_OFFSET) -#define UDMA_I2C_CUSTOM_ADDR(id) (ARCHI_UDMA_ADDR + UDMA_I2C_OFFSET(id) + UDMA_CHANNEL_CUSTOM_OFFSET) +#define UDMA_I2C_TX_ADDR(id) (ARCHI_UDMA_ADDR + UDMA_I2C_OFFSET(id) + UDMA_CHANNEL_TX_OFFSET) +#define UDMA_I2C_CMD_ADDR(id) (ARCHI_UDMA_ADDR + UDMA_I2C_OFFSET(id) + UDMA_CHANNEL_CUSTOM_OFFSET) +#define UDMA_I2C_CUSTOM_ADDR(id) (ARCHI_UDMA_ADDR + UDMA_I2C_OFFSET(id) + 0x30) // This is probably not correct but works for now. @adimauro-iis please check #define ARCHI_SOC_EVENT_I2C_DATA(id) (ARCHI_SOC_EVENT_PERIPH_FIRST_EVT(ARCHI_UDMA_I2C_ID(id)) + 0) #define ARCHI_SOC_EVENT_I2C_CMD(id) (ARCHI_SOC_EVENT_PERIPH_FIRST_EVT(ARCHI_UDMA_I2C_ID(id)) + 1)