X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fsysreset.h;h=8bb094d463b365d62542ac965f7ad15e7afb8f65;hb=401d1c4f5d2d29c4bc4beaec95402ca23eb63295;hp=393c7be3d8111692d35a2d8de108731b6a3c83ab;hpb=dc557e9a1fe00ca9d884bd88feef5bebf23fede4;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/sysreset.h b/include/sysreset.h index 393c7be..8bb094d 100644 --- a/include/sysreset.h +++ b/include/sysreset.h @@ -1,17 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (c) 2015 Google, Inc * Written by Simon Glass - * - * SPDX-License-Identifier: GPL-2.0+ */ #ifndef __SYSRESET_H #define __SYSRESET_H +struct udevice; + 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, }; @@ -29,6 +31,23 @@ struct sysreset_ops { * (in which case this method will not actually return) */ int (*request)(struct udevice *dev, enum sysreset_t type); + /** + * 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) @@ -42,6 +61,24 @@ struct sysreset_ops { int sysreset_request(struct udevice *dev, enum sysreset_t type); /** + * 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 * * This works through the available sysreset devices until it finds one that can @@ -56,6 +93,19 @@ int sysreset_request(struct udevice *dev, enum sysreset_t type); 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