uboot-mediatek: mt7986: add generic reset button support
Allow resetting environment to default values when defined button exists in device tree. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
		| @@ -0,0 +1,40 @@ | |||||||
|  | --- a/board/mediatek/mt7986/mt7986_rfb.c | ||||||
|  | +++ b/board/mediatek/mt7986/mt7986_rfb.c | ||||||
|  | @@ -6,9 +6,16 @@ | ||||||
|  |   | ||||||
|  |  #include <common.h> | ||||||
|  |  #include <config.h> | ||||||
|  | +#include <dm.h> | ||||||
|  | +#include <button.h> | ||||||
|  |  #include <env.h> | ||||||
|  |  #include <init.h> | ||||||
|  |  #include <asm/global_data.h> | ||||||
|  | +#include <linux/delay.h> | ||||||
|  | + | ||||||
|  | +#ifndef CONFIG_RESET_BUTTON_LABEL | ||||||
|  | +#define CONFIG_RESET_BUTTON_LABEL "reset" | ||||||
|  | +#endif | ||||||
|  |   | ||||||
|  |  #include <mtd.h> | ||||||
|  |  #include <linux/mtd/mtd.h> | ||||||
|  | @@ -25,7 +32,19 @@ int board_init(void) | ||||||
|  |   | ||||||
|  |  int board_late_init(void) | ||||||
|  |  { | ||||||
|  | -	gd->env_valid = 1; //to load environment variable from persistent store | ||||||
|  | +	struct udevice *dev; | ||||||
|  | + | ||||||
|  | +	gd->env_valid = ENV_VALID; | ||||||
|  | +	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; | ||||||
|  |  } | ||||||
		Reference in New Issue
	
	Block a user
	 Daniel Golle
					Daniel Golle