lib: enable lzma decompression support for SPL build
[oweals/u-boot.git] / include / sysreset.h
index 343e46f1aa55081ec76b642b335686e011748987..61295e3fcbb7850bc289dd4349ccda38d7410e22 100644 (file)
@@ -11,6 +11,7 @@ enum sysreset_t {
        SYSRESET_WARM,  /* Reset CPU, keep GPIOs active */
        SYSRESET_COLD,  /* Reset CPU and GPIOs */
        SYSRESET_POWER, /* Reset PMIC (remove and restore power) */
+       SYSRESET_POWER_OFF,     /* Turn off power */
 
        SYSRESET_COUNT,
 };
@@ -37,6 +38,14 @@ struct sysreset_ops {
         * @return 0 if OK, -ve on error
         */
        int (*get_status)(struct udevice *dev, char *buf, int size);
+
+       /**
+        * get_last() - get information on the last reset
+        *
+        * @dev:        Device to check
+        * @return last reset state (enum sysreset_t) or -ve error
+        */
+       int (*get_last)(struct udevice *dev);
 };
 
 #define sysreset_get_ops(dev)        ((struct sysreset_ops *)(dev)->driver->ops)
@@ -59,6 +68,14 @@ int sysreset_request(struct udevice *dev, enum sysreset_t type);
  */
 int sysreset_get_status(struct udevice *dev, char *buf, int size);
 
+/**
+ * sysreset_get_last() - get information on the last reset
+ *
+ * @dev:       Device to check
+ * @return last reset state (enum sysreset_t) or -ve error
+ */
+int sysreset_get_last(struct udevice *dev);
+
 /**
  * sysreset_walk() - cause a system reset
  *
@@ -73,6 +90,19 @@ int sysreset_get_status(struct udevice *dev, char *buf, int size);
  */
 int sysreset_walk(enum sysreset_t type);
 
+/**
+ * sysreset_get_last_walk() - get information on the last reset
+ *
+ * This works through the available sysreset devices until it finds one that can
+ * perform a reset. If the provided sysreset type is not available, the next one
+ * will be tried.
+ *
+ * If no device prives the information, this function returns -ENOENT
+ *
+ * @return last reset state (enum sysreset_t) or -ve error
+ */
+int sysreset_get_last_walk(void);
+
 /**
  * sysreset_walk_halt() - try to reset, otherwise halt
  *