aboutsummaryrefslogtreecommitdiff
path: root/include/dfu.h
diff options
context:
space:
mode:
authorPatrick Delaunay <patrick.delaunay@st.com>2019-10-14 09:28:06 +0200
committerMarek Vasut <marek.vasut+renesas@gmail.com>2019-10-31 12:12:31 +0100
commitec44cace4b8d23556924550fe76bf2744eb91144 (patch)
treefa18cb82d82561fbf4790fd372e8ecd9b70522d6 /include/dfu.h
parentd5640f700d0413059b39cdd621c9401ef90d08fa (diff)
downloadu-boot-ec44cace4b8d23556924550fe76bf2744eb91144.zip
u-boot-ec44cace4b8d23556924550fe76bf2744eb91144.tar.gz
u-boot-ec44cace4b8d23556924550fe76bf2744eb91144.tar.bz2
dfu: add DFU virtual backend
Add a virtual DFU backend to allow board specific read and write (for OTP update for example). Acked-by: Lukasz Majewski <lukma@denx.de> Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Diffstat (limited to 'include/dfu.h')
-rw-r--r--include/dfu.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/dfu.h b/include/dfu.h
index a90732c..4de7d35 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -23,6 +23,7 @@ enum dfu_device_type {
DFU_DEV_RAM,
DFU_DEV_SF,
DFU_DEV_MTD,
+ DFU_DEV_VIRT,
};
enum dfu_layout {
@@ -92,6 +93,10 @@ struct sf_internal_data {
unsigned int ubi;
};
+struct virt_internal_data {
+ int dev_num;
+};
+
#define DFU_NAME_SIZE 32
#ifndef CONFIG_SYS_DFU_DATA_BUF_SIZE
#define CONFIG_SYS_DFU_DATA_BUF_SIZE (1024*1024*8) /* 8 MiB */
@@ -120,6 +125,7 @@ struct dfu_entity {
struct nand_internal_data nand;
struct ram_internal_data ram;
struct sf_internal_data sf;
+ struct virt_internal_data virt;
} data;
int (*get_medium_size)(struct dfu_entity *dfu, u64 *size);
@@ -272,6 +278,22 @@ static inline int dfu_fill_entity_mtd(struct dfu_entity *dfu, char *devstr,
}
#endif
+#ifdef CONFIG_DFU_VIRT
+int dfu_fill_entity_virt(struct dfu_entity *dfu, char *devstr, char *s);
+int dfu_write_medium_virt(struct dfu_entity *dfu, u64 offset,
+ void *buf, long *len);
+int dfu_get_medium_size_virt(struct dfu_entity *dfu, u64 *size);
+int dfu_read_medium_virt(struct dfu_entity *dfu, u64 offset,
+ void *buf, long *len);
+#else
+static inline int dfu_fill_entity_virt(struct dfu_entity *dfu, char *devstr,
+ char *s)
+{
+ puts("VIRT support not available!\n");
+ return -1;
+}
+#endif
+
/**
* dfu_tftp_write - Write TFTP data to DFU medium
*