From f1892190deb701c41b5727da5250f4a4ddbb6483 Mon Sep 17 00:00:00 2001 From: Jason Zhu Date: Tue, 18 Jun 2019 17:24:58 +0800 Subject: [PATCH] mtd: add desc->lba to mtd block device The desc->lba is based on mtd->size: desc->lba = mtd->size >> 9; If the mtd storage is spi nand or nand flash, reserve 4 blocks for BBT(Bad Block Table). Then desc->lba is desc->lba = (mtd->size >> 9) - (mtd->erasesize >> 9) * 4; Change-Id: I70702623895fe05cec614c4c3ca5f3f6c41d26ca Signed-off-by: Jason Zhu --- drivers/mtd/mtd_blk.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/mtd/mtd_blk.c b/drivers/mtd/mtd_blk.c index 1b23cee92f..0d2bd247b2 100644 --- a/drivers/mtd/mtd_blk.c +++ b/drivers/mtd/mtd_blk.c @@ -73,10 +73,17 @@ ulong mtd_derase(struct udevice *udev, lbaint_t start, static int mtd_blk_probe(struct udevice *udev) { struct blk_desc *desc = dev_get_uclass_platdata(udev); + struct mtd_info *mtd = dev_get_priv(udev->parent); sprintf(desc->vendor, "0x%.4x", 0x2207); memcpy(desc->product, "MTD", sizeof("MTD")); memcpy(desc->revision, "V1.00", sizeof("V1.00")); + if (mtd->type == MTD_NANDFLASH) { + /* Reserve 4 blocks for BBT(Bad Block Table) */ + desc->lba = (mtd->size >> 9) - (mtd->erasesize >> 9) * 4; + } else { + desc->lba = mtd->size >> 9; + } return 0; }