diff mbox

[U-Boot] cfi_flash: reverse geometry for M29W800DT parts

Message ID 1302465989-23952-1-git-send-email-vapier@gentoo.org
State Accepted
Commit 6a011ce851a0ba23ad50f9bac06dc323a863d0c5
Delegated to: Stefan Roese
Headers show

Commit Message

Mike Frysinger April 10, 2011, 8:06 p.m. UTC
The M29W800DT parts also report their geometry with the sector layout
reversed.  So add that ID to the flash_fixup_stm function.

Otherwise, we get:
bfin> flinfo

Bank # 1: CFI conformant FLASH (16 x 16)  Size: 1 MB in 19 Sectors
  AMD Standard command set, Manufacturer ID: 0x20, Device ID: 0x22D7
  Erase timeout: 8192 ms, write timeout: 1 ms

  Sector Start Addresses:
  20000000        20004000        20006000        20008000        20010000
  20020000        20030000        20040000        20050000        20060000
  20070000        20080000        20090000        200A0000        200B0000
  200C0000        200D0000        200E0000        200F0000

Reported-by: Jianxi Fu <fujianxi@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/cfi_flash.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

Comments

Marek Vasut April 11, 2011, 12:01 a.m. UTC | #1
On Sunday 10 April 2011 22:06:29 Mike Frysinger wrote:
> The M29W800DT parts also report their geometry with the sector layout
> reversed.  So add that ID to the flash_fixup_stm function.

Maybe rework the stuff below into some table or it'll be a mess soon?

Cheers

> 
> Otherwise, we get:
> bfin> flinfo
> 
> Bank # 1: CFI conformant FLASH (16 x 16)  Size: 1 MB in 19 Sectors
>   AMD Standard command set, Manufacturer ID: 0x20, Device ID: 0x22D7
>   Erase timeout: 8192 ms, write timeout: 1 ms
> 
>   Sector Start Addresses:
>   20000000        20004000        20006000        20008000        20010000
>   20020000        20030000        20040000        20050000        20060000
>   20070000        20080000        20090000        200A0000        200B0000
>   200C0000        200D0000        200E0000        200F0000
> 
> Reported-by: Jianxi Fu <fujianxi@gmail.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> ---
>  drivers/mtd/cfi_flash.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
> index 0909fe7..69f12d3 100644
> --- a/drivers/mtd/cfi_flash.c
> +++ b/drivers/mtd/cfi_flash.c
> @@ -1852,9 +1852,10 @@ static void flash_fixup_stm(flash_info_t *info,
> struct cfi_qry *qry) if (qry->num_erase_regions > 1) {
>  		/* reverse geometry if top boot part */
>  		if (info->cfi_version < 0x3131) {
> -			/* CFI < 1.1, guess by device id (M29W320{DT,ET} only) */
> -			if (info->device_id == 0x22CA ||
> -			    info->device_id == 0x2256) {
> +			/* CFI < 1.1, guess by device id */
> +			if (info->device_id == 0x22CA || /* M29W320DT */
> +			    info->device_id == 0x2256 || /* M29W320ET */
> +			    info->device_id == 0x22D7) { /* M29W800DT */
>  				cfi_reverse_geometry(qry);
>  			}
>  		}
Stefan Roese April 21, 2011, 1:54 p.m. UTC | #2
On Sunday 10 April 2011 22:06:29 Mike Frysinger wrote:
> The M29W800DT parts also report their geometry with the sector layout
> reversed.  So add that ID to the flash_fixup_stm function.
> 
> Otherwise, we get:
> bfin> flinfo
> 
> Bank # 1: CFI conformant FLASH (16 x 16)  Size: 1 MB in 19 Sectors
>   AMD Standard command set, Manufacturer ID: 0x20, Device ID: 0x22D7
>   Erase timeout: 8192 ms, write timeout: 1 ms
> 
>   Sector Start Addresses:
>   20000000        20004000        20006000        20008000        20010000
>   20020000        20030000        20040000        20050000        20060000
>   20070000        20080000        20090000        200A0000        200B0000
>   200C0000        200D0000        200E0000        200F0000

Applied to u-boot-cfi-flash/master. Thanks.
 
Cheers,
Stefan

--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office@denx.de
diff mbox

Patch

diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index 0909fe7..69f12d3 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -1852,9 +1852,10 @@  static void flash_fixup_stm(flash_info_t *info, struct cfi_qry *qry)
 	if (qry->num_erase_regions > 1) {
 		/* reverse geometry if top boot part */
 		if (info->cfi_version < 0x3131) {
-			/* CFI < 1.1, guess by device id (M29W320{DT,ET} only) */
-			if (info->device_id == 0x22CA ||
-			    info->device_id == 0x2256) {
+			/* CFI < 1.1, guess by device id */
+			if (info->device_id == 0x22CA || /* M29W320DT */
+			    info->device_id == 0x2256 || /* M29W320ET */
+			    info->device_id == 0x22D7) { /* M29W800DT */
 				cfi_reverse_geometry(qry);
 			}
 		}