* [U-Boot] [PATCH] [PATCH v2] issue write command to base for JEDEC flash
@ 2009-07-10 10:03 ratbert.chuang at gmail.com
2009-07-13 9:03 ` Stefan Roese
0 siblings, 1 reply; 2+ messages in thread
From: ratbert.chuang at gmail.com @ 2009-07-10 10:03 UTC (permalink / raw)
To: u-boot
From: Po-Yu Chuang <ratbert@faraday-tech.com>
For JEDEC flash, we should issue word programming command relative to
base address rather than sector base address. Original source makes
SST Flash fails to program sectors which are not on the 0x10000 boundaries.
e.g.
SST39LF040 uses addr1=0x5555 and addr2=0x2AAA, however, each sector
is 0x1000 bytes.
Thus, if we issue command to "sector base (0x41000) + offset(0x5555)",
it sends to 0x46555 and the chip fails to recognize that address.
This patch is tested with SST39LF040.
Signed-off-by: Po-Yu Chuang <ratbert@faraday-tech.com>
---
drivers/mtd/cfi_flash.c | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index d0732f5..81ac5d3 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -835,14 +835,19 @@ static int flash_write_cfiword (flash_info_t * info, ulong dest,
break;
case CFI_CMDSET_AMD_EXTENDED:
case CFI_CMDSET_AMD_STANDARD:
-#ifdef CONFIG_FLASH_CFI_LEGACY
- case CFI_CMDSET_AMD_LEGACY:
-#endif
sect = find_sector(info, dest);
flash_unlock_seq (info, sect);
flash_write_cmd (info, sect, info->addr_unlock1, AMD_CMD_WRITE);
sect_found = 1;
break;
+#ifdef CONFIG_FLASH_CFI_LEGACY
+ case CFI_CMDSET_AMD_LEGACY:
+ sect = find_sector(info, dest);
+ flash_unlock_seq (info, 0);
+ flash_write_cmd (info, 0, info->addr_unlock1, AMD_CMD_WRITE);
+ sect_found = 1;
+ break;
+#endif
}
switch (info->portwidth) {
--
1.6.3.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [U-Boot] [PATCH] [PATCH v2] issue write command to base for JEDEC flash
2009-07-10 10:03 [U-Boot] [PATCH] [PATCH v2] issue write command to base for JEDEC flash ratbert.chuang at gmail.com
@ 2009-07-13 9:03 ` Stefan Roese
0 siblings, 0 replies; 2+ messages in thread
From: Stefan Roese @ 2009-07-13 9:03 UTC (permalink / raw)
To: u-boot
On Friday 10 July 2009 12:03:57 ratbert.chuang at gmail.com wrote:
> From: Po-Yu Chuang <ratbert@faraday-tech.com>
>
> For JEDEC flash, we should issue word programming command relative to
> base address rather than sector base address. Original source makes
> SST Flash fails to program sectors which are not on the 0x10000 boundaries.
>
> e.g.
> SST39LF040 uses addr1=0x5555 and addr2=0x2AAA, however, each sector
> is 0x1000 bytes.
>
> Thus, if we issue command to "sector base (0x41000) + offset(0x5555)",
> it sends to 0x46555 and the chip fails to recognize that address.
>
> This patch is tested with SST39LF040.
Applied to u-boot-cfi. Thanks.
Best regards,
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 at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-07-13 9:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-10 10:03 [U-Boot] [PATCH] [PATCH v2] issue write command to base for JEDEC flash ratbert.chuang at gmail.com
2009-07-13 9:03 ` Stefan Roese
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox