diff options
Diffstat (limited to 'package/boot/uboot-mediatek/patches/301-mt7623-generic-reset-button-ignore-env.patch')
-rw-r--r-- | package/boot/uboot-mediatek/patches/301-mt7623-generic-reset-button-ignore-env.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/package/boot/uboot-mediatek/patches/301-mt7623-generic-reset-button-ignore-env.patch b/package/boot/uboot-mediatek/patches/301-mt7623-generic-reset-button-ignore-env.patch new file mode 100644 index 0000000000..d082155f14 --- /dev/null +++ b/package/boot/uboot-mediatek/patches/301-mt7623-generic-reset-button-ignore-env.patch @@ -0,0 +1,54 @@ +--- a/board/mediatek/mt7623/Kconfig ++++ b/board/mediatek/mt7623/Kconfig +@@ -10,4 +10,8 @@ config MTK_BROM_HEADER_INFO + string + default "lk=1" + ++config RESET_BUTTON_LABEL ++ string "Button to trigger factory reset" ++ default "reset" ++ + endif +--- a/board/mediatek/mt7623/mt7623_rfb.c ++++ b/board/mediatek/mt7623/mt7623_rfb.c +@@ -4,8 +4,17 @@ + */ + + #include <common.h> ++#include <dm.h> ++#include <button.h> ++#include <env.h> ++#include <init.h> + #include <mmc.h> + #include <asm/global_data.h> ++#include <linux/delay.h> ++ ++#ifndef CONFIG_RESET_BUTTON_LABEL ++#define CONFIG_RESET_BUTTON_LABEL "reset" ++#endif + + DECLARE_GLOBAL_DATA_PTR; + +@@ -41,3 +50,22 @@ int mmc_get_env_dev(void) + return mmc_get_boot_dev(); + } + #endif ++ ++int board_late_init(void) ++{ ++ struct udevice *dev; ++ ++ if (!button_get_by_label(CONFIG_RESET_BUTTON_LABEL, &dev)) { ++ puts("reset button found\n"); ++#ifdef CONFIG_RESET_BUTTON_SETTLE_DELAY ++ mdelay(CONFIG_RESET_BUTTON_SETTLE_DELAY); ++#endif ++ if (button_get_state(dev) == BUTTON_ON) { ++ puts("button pushed, resetting environment\n"); ++ gd->env_valid = ENV_INVALID; ++ } ++ } ++ ++ env_relocate(); ++ return 0; ++} |