summaryrefslogtreecommitdiffstats
path: root/drivers/power/reset/reboot-mode.h
diff options
context:
space:
mode:
authorAndy Yan2016-07-06 15:27:26 +0200
committerSebastian Reichel2016-07-06 17:16:27 +0200
commit4fcd504edbf7c793325511c2df8dcd083958e28a (patch)
treeab115927f14c80b50a006fde4fd2924df363fc47 /drivers/power/reset/reboot-mode.h
parentdt-bindings: power: reset: add document for reboot-mode driver (diff)
downloadkernel-qcow2-linux-4fcd504edbf7c793325511c2df8dcd083958e28a.tar.gz
kernel-qcow2-linux-4fcd504edbf7c793325511c2df8dcd083958e28a.tar.xz
kernel-qcow2-linux-4fcd504edbf7c793325511c2df8dcd083958e28a.zip
power: reset: add reboot mode driver
This driver parses the reboot commands like "reboot bootloader" and "reboot recovery" to get a boot mode described in the device tree , then call the write interfae to store the boot mode in some place like special register or sram, which can be read by the bootloader after system reboot, then the bootloader can take different action according to the mode stored. This is commonly used on Android based devices, in order to reboot the device into fastboot or recovery mode. Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> Reviewed-by: Moritz Fischer <moritz.fischer@ettus.com> Tested-by: John Stultz <john.stultz@linaro.org> Acked-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Andy Yan <andy.yan@rock-chips.com> Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
Diffstat (limited to 'drivers/power/reset/reboot-mode.h')
-rw-r--r--drivers/power/reset/reboot-mode.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/power/reset/reboot-mode.h b/drivers/power/reset/reboot-mode.h
new file mode 100644
index 000000000000..2491bb71f591
--- /dev/null
+++ b/drivers/power/reset/reboot-mode.h
@@ -0,0 +1,14 @@
+#ifndef __REBOOT_MODE_H__
+#define __REBOOT_MODE_H__
+
+struct reboot_mode_driver {
+ struct device *dev;
+ struct list_head head;
+ int (*write)(struct reboot_mode_driver *reboot, unsigned int magic);
+ struct notifier_block reboot_notifier;
+};
+
+int reboot_mode_register(struct reboot_mode_driver *reboot);
+int reboot_mode_unregister(struct reboot_mode_driver *reboot);
+
+#endif