@ -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)
@ -60,6 +69,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
*
* This works through the available sysreset devices until it finds one that can
@ -74,6 +91,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
*
* This calls sysreset_walk ( ) . If it returns , indicating that reset is not