* [U-Boot] [PATCH v3] sf: Fix to compute proper sector_size
@ 2015-04-27 15:36 Jagannadha Sutradharudu Teki
2015-04-28 8:05 ` Jagan Teki
0 siblings, 1 reply; 2+ messages in thread
From: Jagannadha Sutradharudu Teki @ 2015-04-27 15:36 UTC (permalink / raw)
To: u-boot
Upto now flash sector_size is assigned from params which isn't
necessarily a sector size from vendor, so based on the SECT_*
flags from flash_params the erase_size will compute and it will
become the sector_size finally.
Bug report (from Bin Meng):
=> sf probe
SF: Detected SST25VF016B with page size 256 Bytes, erase size 4 KiB,
total 2 MiB, mapped at ffe00000
=> sf erase 0 +100
SF: 65536 bytes @ 0x0 Erased: OK
Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
Reported-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
---
Changes for v3:
- Updated comments
Changes for v2:
- Minimize the code logic
drivers/mtd/spi/sf_internal.h | 3 ++-
drivers/mtd/spi/sf_probe.c | 3 +++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/mtd/spi/sf_internal.h b/drivers/mtd/spi/sf_internal.h
index bd834dc..4158e13 100644
--- a/drivers/mtd/spi/sf_internal.h
+++ b/drivers/mtd/spi/sf_internal.h
@@ -119,7 +119,8 @@ int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
* @name: Device name ([MANUFLETTER][DEVTYPE][DENSITY][EXTRAINFO])
* @jedec: Device jedec ID (0x[1byte_manuf_id][2byte_dev_id])
* @ext_jedec: Device ext_jedec ID
- * @sector_size: Sector size of this device
+ * @sector_size: Isn't necessarily a sector size from vendor,
+ * the size listed here is what works with CMD_ERASE_64K
* @nr_sectors: No.of sectors on this device
* @e_rd_cmd: Enum list for read commands
* @flags: Important param, for flash specific behaviour
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
index de8d0b7..3f6b882 100644
--- a/drivers/mtd/spi/sf_probe.c
+++ b/drivers/mtd/spi/sf_probe.c
@@ -184,6 +184,9 @@ static int spi_flash_validate_params(struct spi_slave *spi, u8 *idcode,
flash->erase_size = flash->sector_size;
}
+ /* Now erase size becomes valid sector size */
+ flash->sector_size = flash->erase_size;
+
/* Look for the fastest read cmd */
cmd = fls(params->e_rd_cmd & flash->spi->op_mode_rx);
if (cmd) {
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [U-Boot] [PATCH v3] sf: Fix to compute proper sector_size
2015-04-27 15:36 [U-Boot] [PATCH v3] sf: Fix to compute proper sector_size Jagannadha Sutradharudu Teki
@ 2015-04-28 8:05 ` Jagan Teki
0 siblings, 0 replies; 2+ messages in thread
From: Jagan Teki @ 2015-04-28 8:05 UTC (permalink / raw)
To: u-boot
On 27 April 2015 at 21:06, Jagannadha Sutradharudu Teki
<jagannadh.teki@gmail.com> wrote:
> Upto now flash sector_size is assigned from params which isn't
> necessarily a sector size from vendor, so based on the SECT_*
> flags from flash_params the erase_size will compute and it will
> become the sector_size finally.
>
> Bug report (from Bin Meng):
> => sf probe
> SF: Detected SST25VF016B with page size 256 Bytes, erase size 4 KiB,
> total 2 MiB, mapped at ffe00000
>
> => sf erase 0 +100
> SF: 65536 bytes @ 0x0 Erased: OK
>
> Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
> Reported-by: Bin Meng <bmeng.cn@gmail.com>
> Tested-by: Bin Meng <bmeng.cn@gmail.com>
> ---
> Changes for v3:
> - Updated comments
> Changes for v2:
> - Minimize the code logic
>
> drivers/mtd/spi/sf_internal.h | 3 ++-
> drivers/mtd/spi/sf_probe.c | 3 +++
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/spi/sf_internal.h b/drivers/mtd/spi/sf_internal.h
> index bd834dc..4158e13 100644
> --- a/drivers/mtd/spi/sf_internal.h
> +++ b/drivers/mtd/spi/sf_internal.h
> @@ -119,7 +119,8 @@ int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
> * @name: Device name ([MANUFLETTER][DEVTYPE][DENSITY][EXTRAINFO])
> * @jedec: Device jedec ID (0x[1byte_manuf_id][2byte_dev_id])
> * @ext_jedec: Device ext_jedec ID
> - * @sector_size: Sector size of this device
> + * @sector_size: Isn't necessarily a sector size from vendor,
> + * the size listed here is what works with CMD_ERASE_64K
> * @nr_sectors: No.of sectors on this device
> * @e_rd_cmd: Enum list for read commands
> * @flags: Important param, for flash specific behaviour
> diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
> index de8d0b7..3f6b882 100644
> --- a/drivers/mtd/spi/sf_probe.c
> +++ b/drivers/mtd/spi/sf_probe.c
> @@ -184,6 +184,9 @@ static int spi_flash_validate_params(struct spi_slave *spi, u8 *idcode,
> flash->erase_size = flash->sector_size;
> }
>
> + /* Now erase size becomes valid sector size */
> + flash->sector_size = flash->erase_size;
> +
> /* Look for the fastest read cmd */
> cmd = fls(params->e_rd_cmd & flash->spi->op_mode_rx);
> if (cmd) {
> --
> 1.9.1
>
Applied to u-boot-spi/master
thanks!
--
Jagan.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-04-28 8:05 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-27 15:36 [U-Boot] [PATCH v3] sf: Fix to compute proper sector_size Jagannadha Sutradharudu Teki
2015-04-28 8:05 ` Jagan Teki
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.