aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2018-12-10 10:19:09 -0500
committerTom Rini <trini@konsulko.com>2018-12-10 10:19:09 -0500
commit8bf3c2442b59aedd1e58b7013fc12180cab0b541 (patch)
tree40aa7037d11543969c05a5fbd187b1ca4a3af050 /include
parent7ff485c68b7e5573e5a4a877066e98398283a24f (diff)
parenteff43904b7f0c05ed316755e83b5474792059a5c (diff)
downloadu-boot-8bf3c2442b59aedd1e58b7013fc12180cab0b541.zip
u-boot-8bf3c2442b59aedd1e58b7013fc12180cab0b541.tar.gz
u-boot-8bf3c2442b59aedd1e58b7013fc12180cab0b541.tar.bz2
Merge tag 'for-master-20181210' of git://git.denx.de/u-boot-rockchip
Improvements: - init DRAM for RK322x in SPL - add FAN53555 PMIC/regulator driver - update MicroCrystal RV3029 driver to Kconfig and sync from Linux - add bootcount uclass and first DM-driver for bootcount
Diffstat (limited to 'include')
-rw-r--r--include/bootcount.h48
-rw-r--r--include/dm/uclass-id.h1
2 files changed, 49 insertions, 0 deletions
diff --git a/include/bootcount.h b/include/bootcount.h
index 671adcc..daee843 100644
--- a/include/bootcount.h
+++ b/include/bootcount.h
@@ -10,6 +10,54 @@
#include <asm/io.h>
#include <asm/byteorder.h>
+#ifdef CONFIG_DM_BOOTCOUNT
+
+struct bootcount_ops {
+ /**
+ * get() - get the current bootcount value
+ *
+ * Returns the current counter value of the bootcount backing
+ * store.
+ *
+ * @dev: Device to read from
+ * @bootcount: Address to put the current bootcount value
+ */
+ int (*get)(struct udevice *dev, u32 *bootcount);
+
+ /**
+ * set() - set a bootcount value (e.g. to reset or increment)
+ *
+ * Sets the value in the bootcount backing store.
+ *
+ * @dev: Device to read from
+ * @bootcount: New bootcount value to store
+ */
+ int (*set)(struct udevice *dev, const u32 bootcount);
+};
+
+/* Access the operations for a bootcount device */
+#define bootcount_get_ops(dev) ((struct bootcount_ops *)(dev)->driver->ops)
+
+/**
+ * dm_bootcount_get() - Read the current value from a bootcount storage
+ *
+ * @dev: Device to read from
+ * @bootcount: Place to put the current bootcount
+ * @return 0 if OK, -ve on error
+ */
+int dm_bootcount_get(struct udevice *dev, u32 *bootcount);
+
+/**
+ * dm_bootcount_set() - Write a value to a bootcount storage
+ *
+ * @dev: Device to read from
+ * @bootcount: Value to be written to the backing storage
+ * @return 0 if OK, -ve on error
+ */
+int dm_bootcount_set(struct udevice *dev, u32 bootcount);
+
+#endif
+
#if defined(CONFIG_SPL_BOOTCOUNT_LIMIT) || defined(CONFIG_BOOTCOUNT_LIMIT)
#if !defined(CONFIG_SYS_BOOTCOUNT_LE) && !defined(CONFIG_SYS_BOOTCOUNT_BE)
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index 5d4e207..e960e48 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -32,6 +32,7 @@ enum uclass_id {
UCLASS_AXI, /* AXI bus */
UCLASS_BLK, /* Block device */
UCLASS_BOARD, /* Device information from hardware */
+ UCLASS_BOOTCOUNT, /* Bootcount backing store */
UCLASS_CLK, /* Clock source, e.g. used by peripherals */
UCLASS_CPU, /* CPU, typically part of an SoC */
UCLASS_CROS_EC, /* Chrome OS EC */