phy: atheros: Clarify the intention of ar8021_config
[oweals/u-boot.git] / include / bootcount.h
index 671adcc4101adb7c192fb0cb2ab7898f60e25b31..cd304039849ba66e16f62656568aedd1e3772741 100644 (file)
@@ -9,6 +9,65 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/byteorder.h>
+#include <env.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
+
+/** bootcount_store() - store the current bootcount */
+void bootcount_store(ulong);
+
+/**
+ * bootcount_load() - load the current bootcount
+ *
+ * @return bootcount, read from the appropriate location
+ */
+ulong bootcount_load(void);
 
 #if defined(CONFIG_SPL_BOOTCOUNT_LIMIT) || defined(CONFIG_BOOTCOUNT_LIMIT)
 
@@ -78,10 +137,6 @@ static inline void bootcount_inc(void)
 #endif /* !CONFIG_SPL_BUILD */
 }
 
-#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_BOOTCOUNT_LIMIT)
-void bootcount_store(ulong a) {};
-ulong bootcount_load(void) { return 0; }
-#endif /* CONFIG_SPL_BUILD && !CONFIG_SPL_BOOTCOUNT_LIMIT */
 #else
 static inline int bootcount_error(void) { return 0; }
 static inline void bootcount_inc(void) {}