summaryrefslogtreecommitdiff
path: root/chip/stm32/otp-stm32f4.c
diff options
context:
space:
mode:
authorJack Rosenthal <jrosenth@chromium.org>2021-11-04 12:11:58 -0600
committerCommit Bot <commit-bot@chromium.org>2021-11-05 04:22:34 +0000
commit252457d4b21f46889eebad61d4c0a65331919cec (patch)
tree01856c4d31d710b20e85a74c8d7b5836e35c3b98 /chip/stm32/otp-stm32f4.c
parent08f5a1e6fc2c9467230444ac9b582dcf4d9f0068 (diff)
downloadchrome-ec-firmware-brya-14505.B-ish.tar.gz
In the interest of making long-term branch maintenance incur as little technical debt on us as possible, we should not maintain any files on the branch we are not actually using. This has the added effect of making it extremely clear when merging CLs from the main branch when changes have the possibility to affect us. The follow-on CL adds a convenience script to actually pull updates from the main branch and generate a CL for the update. BUG=b:204206272 BRANCH=ish TEST=make BOARD=arcada_ish && make BOARD=drallion_ish Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: I17e4694c38219b5a0823e0a3e55a28d1348f4b18 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3262038 Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Tom Hughes <tomhughes@chromium.org>
Diffstat (limited to 'chip/stm32/otp-stm32f4.c')
-rw-r--r--chip/stm32/otp-stm32f4.c119
1 files changed, 0 insertions, 119 deletions
diff --git a/chip/stm32/otp-stm32f4.c b/chip/stm32/otp-stm32f4.c
deleted file mode 100644
index 45ce38d159..0000000000
--- a/chip/stm32/otp-stm32f4.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Copyright 2017 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* OTP implementation for STM32F411 */
-
-#include "common.h"
-#include "console.h"
-#include "flash.h"
-#include "otp.h"
-#include "registers.h"
-#include "util.h"
-
-/*
- * OTP is only used for saving the USB serial number.
- */
-#ifdef CONFIG_SERIALNO_LEN
-/* Which block to use */
-#define OTP_SERIAL_BLOCK 0
-#define OTP_SERIAL_ADDR \
- REG32_ADDR(STM32_OTP_BLOCK_DATA(OTP_SERIAL_BLOCK, 0))
-
-/* Number of word used in the block */
-#define OTP_SERIAL_BLOCK_SIZE (CONFIG_SERIALNO_LEN / sizeof(uint32_t))
-BUILD_ASSERT(CONFIG_SERIALNO_LEN % sizeof(uint32_t) == 0);
-BUILD_ASSERT(OTP_SERIAL_BLOCK_SIZE < STM32_OTP_BLOCK_SIZE);
-
-/*
- * Write an OTP block
- *
- * @param block block to write.
- * @param size Number of words to write.
- * @param data Destination buffer for data.
- */
-static int otp_write(uint8_t block, int size, const char *data)
-{
- if (block >= STM32_OTP_BLOCK_NB)
- return EC_ERROR_PARAM1;
- if (size >= STM32_OTP_BLOCK_SIZE)
- return EC_ERROR_PARAM2;
- return crec_flash_physical_write(STM32_OTP_BLOCK_DATA(block, 0) -
- CONFIG_PROGRAM_MEMORY_BASE,
- size * sizeof(uint32_t), data);
-}
-
-/*
- * Check if an OTP block is protected.
- *
- * @param block protected block.
- * @return non-zero if that block is read only.
- */
-static int otp_get_protect(uint8_t block)
-{
- uint32_t lock;
-
- lock = REG32(STM32_OTP_LOCK(block));
- return ((lock & STM32_OPT_LOCK_MASK(block)) == 0);
-}
-
-/*
- * Set a particular OTP block as read only.
- *
- * @param block block to protect.
- */
-static int otp_set_protect(uint8_t block)
-{
- int rv;
- uint32_t lock;
-
- if (otp_get_protect(block))
- return EC_SUCCESS;
-
- lock = REG32(STM32_OTP_LOCK(block));
- lock &= ~STM32_OPT_LOCK_MASK(block);
- rv = crec_flash_physical_write(STM32_OTP_LOCK(block) -
- CONFIG_PROGRAM_MEMORY_BASE,
- sizeof(uint32_t), (char *)&lock);
- if (rv)
- return rv;
- else
- return EC_SUCCESS;
-}
-
-const char *otp_read_serial(void)
-{
- int i;
-
- for (i = 0; i < OTP_SERIAL_BLOCK_SIZE; i++) {
- if (OTP_SERIAL_ADDR[i] != -1)
- return (char *)OTP_SERIAL_ADDR;
- }
- return NULL;
-}
-
-int otp_write_serial(const char *serialno)
-{
- int i, ret;
- char otp_serial[CONFIG_SERIALNO_LEN];
-
- if (otp_get_protect(OTP_SERIAL_BLOCK))
- return EC_ERROR_ACCESS_DENIED;
-
- /* Copy in serialno. */
- for (i = 0; i < CONFIG_SERIALNO_LEN - 1; i++) {
- otp_serial[i] = serialno[i];
- if (serialno[i] == 0)
- break;
- }
- for (; i < CONFIG_SERIALNO_LEN; i++)
- otp_serial[i] = 0;
-
- ret = otp_write(OTP_SERIAL_BLOCK, OTP_SERIAL_BLOCK_SIZE, otp_serial);
- if (ret == EC_SUCCESS)
- return otp_set_protect(OTP_SERIAL_BLOCK);
- else
- return ret;
-}
-#endif