summaryrefslogtreecommitdiff
path: root/chip
diff options
context:
space:
mode:
Diffstat (limited to 'chip')
-rw-r--r--chip/stm32/flash-stm32f100.c31
-rw-r--r--chip/stm32/system.c34
2 files changed, 17 insertions, 48 deletions
diff --git a/chip/stm32/flash-stm32f100.c b/chip/stm32/flash-stm32f100.c
index 7932a85df4..45ce7e4bfc 100644
--- a/chip/stm32/flash-stm32f100.c
+++ b/chip/stm32/flash-stm32f100.c
@@ -81,10 +81,6 @@ struct flash_wp_state {
int entire_flash_locked;
};
-/* Functions defined in system.c to access backup registers */
-int system_set_fake_wp(int val);
-int system_get_fake_wp(void);
-
static int write_optb(int byte, uint8_t value);
static int wait_busy(void)
@@ -604,7 +600,7 @@ uint32_t flash_get_protect(void)
int i;
int not_protected[2] = {0};
- if (system_get_fake_wp() || !gpio_get_level(GPIO_WRITE_PROTECTn))
+ if (!gpio_get_level(GPIO_WRITE_PROTECTn))
flags |= EC_FLASH_PROTECT_GPIO_ASSERTED;
/* Read the current persist state from flash */
@@ -677,31 +673,6 @@ int flash_set_protect(uint32_t mask, uint32_t flags)
}
/*****************************************************************************/
-/* Console commands */
-
-static int command_set_fake_wp(int argc, char **argv)
-{
- int val;
- char *e;
-
- if (argc < 2)
- return EC_ERROR_PARAM_COUNT;
-
- val = strtoi(argv[1], &e, 0);
- if (*e)
- return EC_ERROR_PARAM1;
-
- system_set_fake_wp(val);
- ccprintf("Fake write protect = %d\n", val);
-
- return EC_SUCCESS;
-}
-DECLARE_CONSOLE_COMMAND(fakewp, command_set_fake_wp,
- "<0 | 1>",
- "Set fake write protect pin",
- NULL);
-
-/*****************************************************************************/
/* Hooks */
static void flash_preserve_state(void)
diff --git a/chip/stm32/system.c b/chip/stm32/system.c
index 56028ee923..b973a9592f 100644
--- a/chip/stm32/system.c
+++ b/chip/stm32/system.c
@@ -13,10 +13,7 @@
#include "version.h"
#include "watchdog.h"
-/*
- * TODO: Fake WP is stored at most significant bit of saved reset flags to save
- * space. Remove it when we have real write protect pin
- */
+#define CONSOLE_BIT_MASK 0x8000
enum bkpdata_index {
BKPDATA_INDEX_SCRATCHPAD, /* General-purpose scratchpad */
@@ -64,15 +61,15 @@ static void check_reset_cause(void)
uint32_t raw_cause = STM32_RCC_CSR;
uint32_t pwr_status = STM32_PWR_CSR;
- uint32_t fake_wp = flags & 0x8000;
- flags &= ~0x8000;
+ uint32_t console_en = flags & CONSOLE_BIT_MASK;
+ flags &= ~CONSOLE_BIT_MASK;
/* Clear the hardware reset cause by setting the RMVF bit */
STM32_RCC_CSR |= 1 << 24;
/* Clear SBF in PWR_CSR */
STM32_PWR_CR |= 1 << 3;
/* Clear saved reset flags */
- bkpdata_write(BKPDATA_INDEX_SAVED_RESET_FLAGS, 0 | fake_wp);
+ bkpdata_write(BKPDATA_INDEX_SAVED_RESET_FLAGS, 0 | console_en);
if (raw_cause & 0x60000000) {
/*
@@ -148,8 +145,8 @@ void system_reset(int flags)
{
uint32_t save_flags = 0;
- uint32_t fake_wp =
- bkpdata_read(BKPDATA_INDEX_SAVED_RESET_FLAGS) & 0x8000;
+ uint32_t console_en = bkpdata_read(BKPDATA_INDEX_SAVED_RESET_FLAGS) &
+ CONSOLE_BIT_MASK;
/* Disable interrupts to avoid task swaps during reboot */
interrupt_disable();
@@ -171,7 +168,7 @@ void system_reset(int flags)
if (flags & SYSTEM_RESET_HARD)
save_flags |= RESET_FLAG_HARD;
- bkpdata_write(BKPDATA_INDEX_SAVED_RESET_FLAGS, save_flags | fake_wp);
+ bkpdata_write(BKPDATA_INDEX_SAVED_RESET_FLAGS, save_flags | console_en);
if (flags & SYSTEM_RESET_HARD) {
/* Ask the watchdog to trigger a hard reboot */
@@ -210,7 +207,10 @@ const char *system_get_chip_vendor(void)
const char *system_get_chip_name(void)
{
- return STRINGIFY(CHIP_VARIANT);
+ if (system_get_console_force_enabled())
+ return STRINGIFY(CHIP_VARIANT-unsafe);
+ else
+ return STRINGIFY(CHIP_VARIANT);
}
const char *system_get_chip_revision(void)
@@ -251,23 +251,21 @@ int system_set_vbnvcontext(const uint8_t *block)
return EC_SUCCESS;
}
-/* TODO: crosbug.com/p/12036 */
-int system_set_fake_wp(int val)
+int system_set_console_force_enabled(int val)
{
uint16_t flags = bkpdata_read(BKPDATA_INDEX_SAVED_RESET_FLAGS);
if (val)
- flags |= 0x8000;
+ flags |= CONSOLE_BIT_MASK;
else
- flags &= ~0x8000;
+ flags &= ~CONSOLE_BIT_MASK;
return bkpdata_write(BKPDATA_INDEX_SAVED_RESET_FLAGS, flags);
}
-/* TODO: crosbug.com/p/12036 */
-int system_get_fake_wp(void)
+int system_get_console_force_enabled(void)
{
- if (bkpdata_read(BKPDATA_INDEX_SAVED_RESET_FLAGS) & 0x8000)
+ if (bkpdata_read(BKPDATA_INDEX_SAVED_RESET_FLAGS) & CONSOLE_BIT_MASK)
return 1;
else
return 0;