Merge changes from topic "bancha-soundstream"
* changes:
bancha: package the soundstream model for loading from SPI
bancha: generate regs.h files for loading model from spi
diff --git a/platforms/bancha/cantrip_builtins.mk b/platforms/bancha/cantrip_builtins.mk
index f85e941..40b8afa 100644
--- a/platforms/bancha/cantrip_builtins.mk
+++ b/platforms/bancha/cantrip_builtins.mk
@@ -15,7 +15,13 @@
# Placeholder until the top-level cantrip_builtins.mk is cleaned up.
CANTRIP_APPS_RELEASE :=
+# Builtins are loaded from SPI flash which is 16M by default
+ifneq ("$(wildcard $(ROOTDIR)/ml/ml-models)", "")
+CANTRIP_MODEL_RELEASE := $(OUT)/kelvin/sw/bazel_out/soundstream_encoder_non_streaming.elf
+else
+# TODO(sleffler): fallback to IREE version
CANTRIP_MODEL_RELEASE :=
+endif
CANTRIP_APPS_DEBUG :=
CANTRIP_MODEL_DEBUG :=
diff --git a/platforms/bancha/platform.mk b/platforms/bancha/platform.mk
index 8eac493..1b98b32 100644
--- a/platforms/bancha/platform.mk
+++ b/platforms/bancha/platform.mk
@@ -61,14 +61,23 @@
# Matcha hw config #defines generated from RTL
I2S_HEADER=$(OPENTITAN_GEN_DIR)/i2s_regs.h
+FLASH_CTRL_HEADER=$(OPENTITAN_GEN_DIR)/flash_ctrl_regs.h
ML_TOP_HEADER=$(OPENTITAN_GEN_DIR)/ml_top_regs.h
+OTP_CTRL_HEADER=$(OPENTITAN_GEN_DIR)/otp_ctrl_regs.h
+SPI_HOST_HEADER=$(OPENTITAN_GEN_DIR)/spi_host_regs.h
TLUL_MAILBOX_HEADER=$(OPENTITAN_GEN_DIR)/tlul_mailbox_regs.h
UART_HEADER=$(OPENTITAN_GEN_DIR)/uart_regs.h
$(I2S_HEADER): $(REGTOOL) $(I2S_HJSON) | $(OPENTITAN_GEN_DIR)
$(REGTOOL) -D -o $@ $(I2S_HJSON)
+$(FLASH_CTRL_HEADER): $(REGTOOL) $(FLASH_CTRL_HJSON) | $(OPENTITAN_GEN_DIR)
+ $(REGTOOL) -D -o $@ $(FLASH_CTRL_HJSON)
$(ML_TOP_HEADER): $(REGTOOL) $(ML_TOP_HJSON) | $(OPENTITAN_GEN_DIR)
$(REGTOOL) -D -o $@ $(ML_TOP_HJSON)
+$(OTP_CTRL_HEADER): $(REGTOOL) $(OTP_CTRL_HJSON) | $(OPENTITAN_GEN_DIR)
+ $(REGTOOL) -D -o $@ $(OTP_CTRL_HJSON)
+$(SPI_HOST_HEADER): $(REGTOOL) $(SPI_HOST_HJSON) | $(OPENTITAN_GEN_DIR)
+ $(REGTOOL) -D -o $@ $(SPI_HOST_HJSON)
$(TLUL_MAILBOX_HEADER): $(REGTOOL) $(MBOX_HJSON) | $(OPENTITAN_GEN_DIR)
$(REGTOOL) -D -o $@ $(MBOX_HJSON)
$(UART_HEADER): $(REGTOOL) $(UART_HJSON) | $(OPENTITAN_GEN_DIR)
@@ -99,7 +108,10 @@
CHERIOT_GEN_HEADERS=\
$(I2S_HEADER) \
+ $(FLASH_CTRL_HEADER) \
$(ML_TOP_HEADER) \
+ $(OTP_CTRL_HEADER) \
+ $(SPI_HOST_HEADER) \
$(TLUL_MAILBOX_HEADER) \
$(UART_HEADER) \
$(TOP_MATCHA_IRQ_HEADER) \
diff --git a/platforms/bancha/setup.sh b/platforms/bancha/setup.sh
index 7845a2a..f9d2ea3 100644
--- a/platforms/bancha/setup.sh
+++ b/platforms/bancha/setup.sh
@@ -16,6 +16,11 @@
source "${ROOTDIR}/build/platforms/sencha/setup.sh"
+# The following files are the input to regtool.py
+export FLASH_CTRL_HJSON="${ROOTDIR}/hw/opentitan-upstream/hw/ip/flash_ctrl/data/flash_ctrl.hjson"
+export OTP_CTRL_HJSON="${ROOTDIR}/hw/opentitan-upstream/hw/ip/otp_ctrl/data/otp_ctrl.hjson"
+export SPI_HOST_HJSON="${ROOTDIR}/hw/opentitan-upstream/hw/ip/spi_host/data/spi_host.hjson"
+
# Firmware image to build & load at boot.
# NB: the pathname to the source directory is formulated in platform.mk
export CHERIOT_FIRMWARE="soundstream"
diff --git a/platforms/bancha/sim.mk b/platforms/bancha/sim.mk
index 5da3432..5c0dab2 100644
--- a/platforms/bancha/sim.mk
+++ b/platforms/bancha/sim.mk
@@ -65,11 +65,15 @@
tar -C $(TMP_DEBUG) -cvhf $@ matcha-tock-bundle.bin kernel
ext_flash_debug: $(EXT_FLASH_DEBUG)
-$(EXT_FLASH_RELEASE): $(CHERIOT_FIRMWARE_RELEASE) | $(TMP_RELEASE)
+$(EXT_FLASH_RELEASE): $(CHERIOT_FIRMWARE_RELEASE) ${CANTRIP_MODEL_RELEASE} | $(TMP_RELEASE)
cp -f $(CHERIOT_FIRMWARE_RELEASE) $(TMP_RELEASE)/cheriot-firmware
${C_PREFIX}strip $(TMP_RELEASE)/cheriot-firmware
${C_PREFIX}objcopy -O binary -g $(TMP_RELEASE)/cheriot-firmware $(TMP_RELEASE)/cheriot-firmware.bin
tar -C $(TMP_RELEASE) -cvhf $@ cheriot-firmware.bin
+ if [[ -f "${CANTRIP_MODEL_RELEASE}" ]]; then \
+ ${C_PREFIX}objcopy -O binary -g ${CANTRIP_MODEL_RELEASE} $(TMP_RELEASE)/kelvin.bin; \
+ tar -C $(TMP_RELEASE) -uvf $@ kelvin.bin; \
+ fi
ext_flash_release: $(EXT_FLASH_RELEASE)
# Renode commands to issue before the initial start of a simulation.