From 23c3379617df214037ad9d1f8859c7c50ab1b8f1 Mon Sep 17 00:00:00 2001 From: Jake Carter Date: Mon, 5 Aug 2024 11:41:22 -0600 Subject: [PATCH] Left shift clc value if MAA size >= 1024 --- Libraries/PeriphDrivers/Source/TPU/tpu_reva.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Libraries/PeriphDrivers/Source/TPU/tpu_reva.c b/Libraries/PeriphDrivers/Source/TPU/tpu_reva.c index 81ee04cf30..0d3b447234 100644 --- a/Libraries/PeriphDrivers/Source/TPU/tpu_reva.c +++ b/Libraries/PeriphDrivers/Source/TPU/tpu_reva.c @@ -717,7 +717,13 @@ int MXC_TPU_RevA_MAA_Compute(mxc_tpu_reva_regs_t *tpu, mxc_tpu_maa_clcsel_t clc, memcpy((void *)MAA_M, (uint32_t *)mod, len); // Start MAA - MXC_SETFIELD(tpu->maa_ctrl, MXC_F_TPU_REVA_MAA_CTRL_CLC, clc << MXC_F_TPU_REVA_MAA_CTRL_CLC); + uint8_t clc_val = (uint8_t)clc; + if (((tpu->maa_maws & MXC_F_TPU_MAA_MAWS_MSGSZ) >> MXC_F_TPU_MAA_MAWS_MSGSZ_POS) >= 1024) { + // The actual value of the field must be left shifted by 1 if MAWS >= 1024 + clc_val <<= 1; + } + MXC_SETFIELD(tpu->maa_ctrl, MXC_F_TPU_REVA_MAA_CTRL_CLC, + clc_val << MXC_F_TPU_REVA_MAA_CTRL_CLC_POS); tpu->maa_ctrl |= MXC_F_TPU_REVA_MAA_CTRL_STC; // Check if MAA Error occurs