[U-Boot] [PATCH v7 18/34] cmd_sf: Use mtd->size instead of flash->size

Jagan Teki jteki at openedev.com
Thu Nov 26 13:04:02 CET 2015


Since mtd got added, replace flash->size with mtd->size.

Reviewed-by: Heiko Schocher <hs at denx.de>
Signed-off-by: Jagan Teki <jteki at openedev.com>
---
 common/cmd_sf.c          | 16 ++++++++--------
 drivers/mtd/spi/sf_ops.c | 23 +++++++++++++----------
 include/spi_flash.h      |  2 --
 3 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/common/cmd_sf.c b/common/cmd_sf.c
index 42862d9..d9f1bd1 100644
--- a/common/cmd_sf.c
+++ b/common/cmd_sf.c
@@ -275,13 +275,13 @@ static int do_spi_flash_read_write(int argc, char * const argv[])
 		return -1;
 
 	if (mtd_arg_off_size(argc - 2, &argv[2], &dev, &offset, &len,
-			     &maxsize, MTD_DEV_TYPE_NOR, flash->size))
+			     &maxsize, MTD_DEV_TYPE_NOR, flash->mtd->size))
 		return -1;
 
 	/* Consistency checking */
-	if (offset + len > flash->size) {
-		printf("ERROR: attempting %s past flash size (%#x)\n",
-		       argv[0], flash->size);
+	if (offset + len > flash->mtd->size) {
+		printf("ERROR: attempting %s past flash size (0x%llx)\n",
+		       argv[0], flash->mtd->size);
 		return 1;
 	}
 
@@ -327,7 +327,7 @@ static int do_spi_flash_erase(int argc, char * const argv[])
 		return -1;
 
 	if (mtd_arg_off(argv[1], &dev, &offset, &len, &maxsize,
-			MTD_DEV_TYPE_NOR, flash->size))
+			MTD_DEV_TYPE_NOR, flash->mtd->size))
 		return -1;
 
 	ret = sf_parse_len_arg(argv[2], &size);
@@ -335,9 +335,9 @@ static int do_spi_flash_erase(int argc, char * const argv[])
 		return -1;
 
 	/* Consistency checking */
-	if (offset + size > flash->size) {
-		printf("ERROR: attempting %s past flash size (%#x)\n",
-		       argv[0], flash->size);
+	if (offset + size > flash->mtd->size) {
+		printf("ERROR: attempting %s past flash size (0x%llx)\n",
+		       argv[0], flash->mtd->size);
 		return 1;
 	}
 
diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c
index 1356161..5a7f5d5 100644
--- a/drivers/mtd/spi/sf_ops.c
+++ b/drivers/mtd/spi/sf_ops.c
@@ -149,7 +149,7 @@ static int spi_flash_read_bar(struct spi_flash *flash, u8 idcode0)
 	u8 curr_bank = 0;
 	int ret;
 
-	if (flash->size <= SPI_FLASH_16MB_BOUN)
+	if (flash->mtd->size <= SPI_FLASH_16MB_BOUN)
 		goto bank_end;
 
 	switch (idcode0) {
@@ -651,6 +651,7 @@ static int sst_write_bp(struct mtd_info *mtd, loff_t offset, size_t len,
 static void stm_get_locked_range(struct spi_flash *flash, u8 sr, loff_t *ofs,
 				 u32 *len)
 {
+	struct mtd_info *mtd = flash->mtd;
 	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
 	int shift = ffs(mask) - 1;
 	int pow;
@@ -661,8 +662,8 @@ static void stm_get_locked_range(struct spi_flash *flash, u8 sr, loff_t *ofs,
 		*len = 0;
 	} else {
 		pow = ((sr & mask) ^ mask) >> shift;
-		*len = flash->size >> pow;
-		*ofs = flash->size - *len;
+		*len = mtd->size >> pow;
+		*ofs = mtd->size - *len;
 	}
 }
 
@@ -724,6 +725,7 @@ int stm_is_locked(struct spi_flash *flash, u32 ofs, size_t len)
  */
 int stm_lock(struct spi_flash *flash, u32 ofs, size_t len)
 {
+	struct mtd_info *mtd = flash->mtd;
 	u8 status_old, status_new;
 	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
 	u8 shift = ffs(mask) - 1, pow, val;
@@ -734,12 +736,12 @@ int stm_lock(struct spi_flash *flash, u32 ofs, size_t len)
 		return ret;
 
 	/* SPI NOR always locks to the end */
-	if (ofs + len != flash->size) {
+	if (ofs + len != mtd->size) {
 		/* Does combined region extend to end? */
-		if (!stm_is_locked_sr(flash, ofs + len, flash->size - ofs - len,
+		if (!stm_is_locked_sr(flash, ofs + len, mtd->size - ofs - len,
 				      status_old))
 			return -EINVAL;
-		len = flash->size - ofs;
+		len = mtd->size - ofs;
 	}
 
 	/*
@@ -751,7 +753,7 @@ int stm_lock(struct spi_flash *flash, u32 ofs, size_t len)
 	 *
 	 *   pow = ceil(log2(size / len)) = log2(size) - floor(log2(len))
 	 */
-	pow = ilog2(flash->size) - ilog2(len);
+	pow = ilog2(mtd->size) - ilog2(len);
 	val = mask - (pow << shift);
 	if (val & ~mask)
 		return -EINVAL;
@@ -778,6 +780,7 @@ int stm_lock(struct spi_flash *flash, u32 ofs, size_t len)
  */
 int stm_unlock(struct spi_flash *flash, u32 ofs, size_t len)
 {
+	struct mtd_info *mtd = flash->mtd;
 	uint8_t status_old, status_new;
 	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
 	u8 shift = ffs(mask) - 1, pow, val;
@@ -800,8 +803,8 @@ int stm_unlock(struct spi_flash *flash, u32 ofs, size_t len)
 	 *
 	 *   pow = floor(log2(size / len)) = log2(size) - ceil(log2(len))
 	 */
-	pow = ilog2(flash->size) - order_base_2(flash->size - (ofs + len));
-	if (ofs + len == flash->size) {
+	pow = ilog2(mtd->size) - order_base_2(mtd->size - (ofs + len));
+	if (ofs + len == mtd->size) {
 		val = 0; /* fully unlocked */
 	} else {
 		val = mask - (pow << shift);
@@ -908,7 +911,7 @@ int spi_flash_decode_fdt(const void *blob, struct spi_flash *flash)
 		return 0;
 	}
 
-	if (flash->size != size) {
+	if (flash->mtd->size != size) {
 		debug("%s: Memory map must cover entire device\n", __func__);
 		return -1;
 	}
diff --git a/include/spi_flash.h b/include/spi_flash.h
index 2e81a14..0fee203 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -44,7 +44,6 @@ struct spi_slave;
  * @dual_flash:		Indicates dual flash memories - dual stacked, parallel
  * @shift:		Flash shift useful in dual parallel
  * @flags:		Indication of spi flash flags
- * @size:		Total flash size
  * @page_size:		Write (page) size
  * @sector_size:	Sector size
  * @erase_size:		Erase size
@@ -73,7 +72,6 @@ struct spi_flash {
 	u8 shift;
 	u16 flags;
 
-	u32 size;
 	u32 page_size;
 	u32 sector_size;
 	u32 erase_size;
-- 
1.9.1



More information about the U-Boot mailing list