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