summaryrefslogtreecommitdiff
path: root/include/fwu.h
diff options
context:
space:
mode:
authorJassi Brar <jaswinder.singh@linaro.org>2023-03-06 17:18:28 -0600
committerTom Rini <trini@konsulko.com>2023-06-09 13:49:55 -0400
commit167994f295e29de417bdb7b05e02fe5fd9b0d054 (patch)
treee9b37032867069a33c68f418207c96a9f90e2dd0 /include/fwu.h
parentb042c705548da5a78f4144071a88083be60d331d (diff)
downloadu-boot-167994f295e29de417bdb7b05e02fe5fd9b0d054.tar.gz
u-boot-167994f295e29de417bdb7b05e02fe5fd9b0d054.tar.bz2
u-boot-167994f295e29de417bdb7b05e02fe5fd9b0d054.zip
fwu: move meta-data management in core
Instead of each i/f having to implement their own meta-data verification and storage, move the logic in common code. This simplifies the i/f code much simpler and compact. Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Tested-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Diffstat (limited to 'include/fwu.h')
-rw-r--r--include/fwu.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/include/fwu.h b/include/fwu.h
index 0919ced812..e3bede1843 100644
--- a/include/fwu.h
+++ b/include/fwu.h
@@ -25,6 +25,26 @@ struct fwu_mdata_gpt_blk_priv {
*/
struct fwu_mdata_ops {
/**
+ * read_mdata() - Populate the asked FWU metadata copy
+ * @dev: FWU metadata device
+ * @mdata: Output FWU mdata read
+ * @primary: If primary or secondary copy of metadata is to be read
+ *
+ * Return: 0 if OK, -ve on error
+ */
+ int (*read_mdata)(struct udevice *dev, struct fwu_mdata *mdata, bool primary);
+
+ /**
+ * write_mdata() - Write the given FWU metadata copy
+ * @dev: FWU metadata device
+ * @mdata: Copy of the FWU metadata to write
+ * @primary: If primary or secondary copy of metadata is to be written
+ *
+ * Return: 0 if OK, -ve on error
+ */
+ int (*write_mdata)(struct udevice *dev, struct fwu_mdata *mdata, bool primary);
+
+ /**
* check_mdata() - Check if the FWU metadata is valid
* @dev: FWU device
*
@@ -127,6 +147,27 @@ struct fwu_mdata_ops {
0xe1, 0xfc, 0xed, 0xf1, 0xc6, 0xf8)
/**
+ * fwu_read_mdata() - Wrapper around fwu_mdata_ops.read_mdata()
+ */
+int fwu_read_mdata(struct udevice *dev, struct fwu_mdata *mdata, bool primary);
+
+/**
+ * fwu_write_mdata() - Wrapper around fwu_mdata_ops.write_mdata()
+ */
+int fwu_write_mdata(struct udevice *dev, struct fwu_mdata *mdata, bool primary);
+
+/**
+ * fwu_get_verified_mdata() - Read, verify and return the FWU metadata
+ *
+ * Read both the metadata copies from the storage media, verify their checksum,
+ * and ascertain that both copies match. If one of the copies has gone bad,
+ * restore it from the good copy.
+ *
+ * Return: 0 if OK, -ve on error
+ */
+int fwu_get_verified_mdata(struct fwu_mdata *mdata);
+
+/**
* fwu_check_mdata_validity() - Check for validity of the FWU metadata copies
*
* Read both the metadata copies from the storage media, verify their