Add information about the type of blkmap slice in the corresponding
slice structure. Put information in the blkmap slice structure to
identify if it is associated with a memory or linear mapped
device. Which can then be used to take specific action based on the
type of the blkmap slice.

Signed-off-by: Sughosh Ganu <sughosh.g...@linaro.org>
---
Changes since V3:
* Add the map type to the blkmap slice instead of the entire blkmap
  device

 drivers/block/blkmap.c | 4 ++++
 include/blkmap.h       | 6 ++++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/block/blkmap.c b/drivers/block/blkmap.c
index 34eed1380dc..4c71ec784e0 100644
--- a/drivers/block/blkmap.c
+++ b/drivers/block/blkmap.c
@@ -25,12 +25,14 @@ struct blkmap;
  * @node: List node used to associate this slice with a blkmap
  * @blknr: Start block number of the mapping
  * @blkcnt: Number of blocks covered by this mapping
+ * @type: Type of blkmap slice
  */
 struct blkmap_slice {
        struct list_head node;
 
        lbaint_t blknr;
        lbaint_t blkcnt;
+       enum blkmap_slice_type type;
 
        /**
         * @read: - Read from slice
@@ -169,6 +171,7 @@ int blkmap_map_linear(struct udevice *dev, lbaint_t blknr, 
lbaint_t blkcnt,
                .slice = {
                        .blknr = blknr,
                        .blkcnt = blkcnt,
+                       .type = BLKMAP_SLICE_LINEAR,
 
                        .read = blkmap_linear_read,
                        .write = blkmap_linear_write,
@@ -248,6 +251,7 @@ int __blkmap_map_mem(struct udevice *dev, lbaint_t blknr, 
lbaint_t blkcnt,
                .slice = {
                        .blknr = blknr,
                        .blkcnt = blkcnt,
+                       .type = BLKMAP_SLICE_MEM,
 
                        .read = blkmap_mem_read,
                        .write = blkmap_mem_write,
diff --git a/include/blkmap.h b/include/blkmap.h
index d53095437fa..c7b4bf13c4e 100644
--- a/include/blkmap.h
+++ b/include/blkmap.h
@@ -9,6 +9,12 @@
 
 #include <dm/lists.h>
 
+/* Type of blkmap slice, Linear or Memory */
+enum blkmap_slice_type {
+       BLKMAP_SLICE_LINEAR = 1,
+       BLKMAP_SLICE_MEM,
+};
+
 /**
  * struct blkmap - Block map
  *
-- 
2.34.1

Reply via email to