colibri_imx6: fix video stdout in default environment
[oweals/u-boot.git] / include / sysreset.h
index a5c0b74a4736e387e14516bf8a424d5f621fa7d7..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,
 };
@@ -31,11 +32,20 @@ struct sysreset_ops {
        /**
         * get_status() - get printable reset status information
         *
+        * @dev:        Device to check
         * @buf:        Buffer to receive the textual reset information
         * @size:       Size of the passed buffer
         * @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)
@@ -49,14 +59,23 @@ struct sysreset_ops {
 int sysreset_request(struct udevice *dev, enum sysreset_t type);
 
 /**
- * get_status() - get printable reset status information
+ * sysreset_get_status() - get printable reset status information
  *
+ * @dev:       Device to check
  * @buf:       Buffer to receive the textual reset information
  * @size:      Size of the passed buffer
  * @return 0 if OK, -ve on error
  */
 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
  *
@@ -71,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
  *