mtd: mtd_blk: add mtd_blk_map_fit() to create map for fit image

Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
Change-Id: I0d0195f455ee9afb32676510fc077fe63ae5c7ad
This commit is contained in:
Jason Zhu 2020-08-25 21:14:14 +08:00 committed by Jianhong Chen
parent bccbe93430
commit 661bcdfeff
2 changed files with 30 additions and 0 deletions

View File

@ -9,6 +9,7 @@
#include <boot_rkimg.h> #include <boot_rkimg.h>
#include <dm.h> #include <dm.h>
#include <errno.h> #include <errno.h>
#include <image.h>
#include <malloc.h> #include <malloc.h>
#include <nand.h> #include <nand.h>
#include <part.h> #include <part.h>
@ -140,6 +141,34 @@ void mtd_blk_map_partitions(struct blk_desc *desc)
} }
} }
void mtd_blk_map_fit(struct blk_desc *desc, ulong sector, void *fit)
{
struct mtd_info *mtd = NULL;
int totalsize = 0;
if (desc->if_type != IF_TYPE_MTD)
return;
if (desc->devnum == BLK_MTD_NAND) {
#if defined(CONFIG_NAND)
mtd = dev_get_priv(desc->bdev->parent);
#endif
} else if (desc->devnum == BLK_MTD_SPI_NAND) {
#if defined(CONFIG_MTD_SPI_NAND)
mtd = desc->bdev->priv;
#endif
}
#ifdef CONFIG_SPL_FIT
if (fit_get_totalsize(fit, &totalsize))
debug("Can not find /totalsize node.\n");
#endif
if (mtd && totalsize) {
if (mtd_blk_map_table_init(desc, sector << 9, totalsize + (size_t)mtd->erasesize))
debug("Map block table fail.\n");
}
}
static __maybe_unused int mtd_map_read(struct mtd_info *mtd, loff_t offset, static __maybe_unused int mtd_map_read(struct mtd_info *mtd, loff_t offset,
size_t *length, size_t *actual, size_t *length, size_t *actual,
loff_t lim, u_char *buffer) loff_t lim, u_char *buffer)

View File

@ -16,5 +16,6 @@ int mtd_blk_map_table_init(struct blk_desc *desc,
loff_t offset, loff_t offset,
size_t length); size_t length);
void mtd_blk_map_partitions(struct blk_desc *desc); void mtd_blk_map_partitions(struct blk_desc *desc);
void mtd_blk_map_fit(struct blk_desc *desc, ulong sector, void *fit);
#endif #endif