summaryrefslogtreecommitdiff
path: root/include/reboot-mode
diff options
context:
space:
mode:
authorNandor Han <nandor.han@vaisala.com>2021-06-10 16:56:44 +0300
committerTom Rini <trini@konsulko.com>2021-07-23 10:16:39 -0400
commitf9db2f16cb6fc7b6d05b0e70de65881bc97ba5c2 (patch)
tree9058e40bb65185f1367697ce8cf33479a23362dc /include/reboot-mode
parent2541ce2c1af87f74a9feb35a1cbfc20ff8d04e4b (diff)
downloadu-boot-f9db2f16cb6fc7b6d05b0e70de65881bc97ba5c2.tar.gz
reboot-mode: read the boot mode from GPIOs status
A use case for controlling the boot mode is when the user wants to control the device boot by pushing a button without needing to go in user-space. Add a new backed for reboot mode where GPIOs are used to control the reboot-mode. The driver is able to scan a predefined list of GPIOs and return the magic value. Having the modes associated with the magic value generated based on the GPIO values, allows the reboot mode uclass to select the proper mode. Signed-off-by: Nandor Han <nandor.han@vaisala.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include/reboot-mode')
-rw-r--r--include/reboot-mode/reboot-mode-gpio.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/reboot-mode/reboot-mode-gpio.h b/include/reboot-mode/reboot-mode-gpio.h
new file mode 100644
index 0000000000..16b1185c69
--- /dev/null
+++ b/include/reboot-mode/reboot-mode-gpio.h
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (c) Vaisala Oyj.
+ */
+
+#ifndef REBOOT_MODE_REBOOT_MODE_GPIO_H_
+#define REBOOT_MODE_REBOOT_MODE_GPIO_H_
+
+#include <asm/gpio.h>
+
+/*
+ * In case of initializing the driver statically (using U_BOOT_DEVICE macro),
+ * we can use this struct to declare the pins used.
+ */
+
+#if !CONFIG_IS_ENABLED(OF_CONTROL)
+struct reboot_mode_gpio_config {
+ int gpio_dev_offset;
+ int gpio_offset;
+ int flags;
+};
+#endif
+
+struct reboot_mode_gpio_platdata {
+ struct gpio_desc *gpio_desc;
+#if !CONFIG_IS_ENABLED(OF_CONTROL)
+ struct reboot_mode_gpio_config *gpios_config;
+#endif
+ int gpio_count;
+};
+
+#endif /* REBOOT_MODE_REBOOT_MODE_GPIO_H_ */