mirror of
https://xff.cz/git/u-boot/
synced 2025-09-02 17:22:22 +02:00
sysreset: Add get_status method
It's useful to have the reset status of the SoC printed out during reset (e.g. to learn whether the reset was caused by software or a watchdog). As a first step to implement this, add a get_status method to the sysreset class, which enables the caller to get printable information about the reset status (akin to get_desc in the CPU uclass). Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Mario Six <mario.six@gdsys.cc>
This commit is contained in:
@@ -24,6 +24,16 @@ int sysreset_request(struct udevice *dev, enum sysreset_t type)
|
|||||||
return ops->request(dev, type);
|
return ops->request(dev, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sysreset_get_status(struct udevice *dev, char *buf, int size)
|
||||||
|
{
|
||||||
|
struct sysreset_ops *ops = sysreset_get_ops(dev);
|
||||||
|
|
||||||
|
if (!ops->get_status)
|
||||||
|
return -ENOSYS;
|
||||||
|
|
||||||
|
return ops->get_status(dev, buf, size);
|
||||||
|
}
|
||||||
|
|
||||||
int sysreset_walk(enum sysreset_t type)
|
int sysreset_walk(enum sysreset_t type)
|
||||||
{
|
{
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
|
@@ -28,6 +28,14 @@ struct sysreset_ops {
|
|||||||
* (in which case this method will not actually return)
|
* (in which case this method will not actually return)
|
||||||
*/
|
*/
|
||||||
int (*request)(struct udevice *dev, enum sysreset_t type);
|
int (*request)(struct udevice *dev, enum sysreset_t type);
|
||||||
|
/**
|
||||||
|
* get_status() - get printable reset status information
|
||||||
|
*
|
||||||
|
* @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);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define sysreset_get_ops(dev) ((struct sysreset_ops *)(dev)->driver->ops)
|
#define sysreset_get_ops(dev) ((struct sysreset_ops *)(dev)->driver->ops)
|
||||||
@@ -40,6 +48,15 @@ struct sysreset_ops {
|
|||||||
*/
|
*/
|
||||||
int sysreset_request(struct udevice *dev, enum sysreset_t type);
|
int sysreset_request(struct udevice *dev, enum sysreset_t type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get_status() - get printable reset status information
|
||||||
|
*
|
||||||
|
* @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_walk() - cause a system reset
|
* sysreset_walk() - cause a system reset
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user