public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* 4 x AMD29LV800B CFI?
       [not found] <E1669aI-0001iv-00@pentafluge.infradead.org>
@ 2001-11-23 21:01 ` Geoffrey Espin
  2001-11-27 11:05   ` David Woodhouse
  0 siblings, 1 reply; 3+ messages in thread
From: Geoffrey Espin @ 2001-11-23 21:01 UTC (permalink / raw)
  To: linux-mtd

Is there a definitive URL to discover what chips are CFI and
which are not?  I've Googled the planet for the AMD29LV800B family.

The chip is appears in mtd/chips/amd_flash.c, not necessarily
CFI.  I found a nearly dead link on AMD site to source code:

    http://www.amd.com/us-en/assets/content_type/utilities/cfiflash.h.txt
    http://www.amd.com/us-en/assets/content_type/utilities/cfiflash.c.txt

which contains the part, yet the datasheet:

    http://www.amd.com/us-en/assets/content_type/DownloadableAssets/21531.pdf

doesn't list it as having CFI.

The NEC/MIPS "Korva" board I'm trying to get this working on has
4 x AMD29LV800B's byte interleaved for 4MB total.  I've tinkered
with cfi/jedec/amd_flash and not one of them will recognize the
part(s).  After sending the command code(s), it replies with the
contents at the particular offset, not the chip code.  Perhaps
my h/w setup is insisting that all 4 parts are programmed at
once?  I see ifdef SOMEONE_ACTUALLY... for width 4 type 32
interleave 4; maybe this means generate the right pattern?  I'm
now driven to more furious surgery, it seems.  :-(

Geoff
-- 
Geoffrey Espin
espin@idiom.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: 4 x AMD29LV800B CFI?
  2001-11-23 21:01 ` 4 x AMD29LV800B CFI? Geoffrey Espin
@ 2001-11-27 11:05   ` David Woodhouse
  2001-11-28  3:30     ` Geoffrey Espin
  0 siblings, 1 reply; 3+ messages in thread
From: David Woodhouse @ 2001-11-27 11:05 UTC (permalink / raw)
  To: Geoffrey Espin; +Cc: linux-mtd

espin@idiom.com said:
>  Perhaps my h/w setup is insisting that all 4 parts are programmed at
> once?  I see ifdef SOMEONE_ACTUALLY... for width 4 type 32 interleave
> 4; maybe this means generate the right pattern? 

That's around the code for 32-bit flash chips. You don't have 32-bit chips, 
you have 16-bit chips, in 8-bit mode.

I've used the 29LV160, and it's definitely CFI-compliant. Strangely, the 
29LV800 isn't. But the jedec_probe code doesn't yet recognise it. Try 
this...

Index: drivers/mtd/chips/jedec_probe.c
===================================================================
RCS file: /home/cvs/mtd/drivers/mtd/chips/jedec_probe.c,v
retrieving revision 1.6
diff -u -r1.6 jedec_probe.c
--- drivers/mtd/chips/jedec_probe.c	2001/10/22 10:16:08	1.6
+++ drivers/mtd/chips/jedec_probe.c	2001/11/27 11:04:56
@@ -35,6 +35,8 @@
 #define AM29LV800BT	0x22DA
 #define AM29LV160DT	0x22C4
 #define AM29LV160DB	0x2249
+#define AM29LV800BT	0x22DA
+#define AM29LV800BB	0x225B
 
 /* Atmel */
 #define AT49BV16X4	0x00c0
@@ -97,6 +99,30 @@
 #define SIZE_8MiB   23
 
 static const struct amd_flash_info jedec_table[] = {
+	{
+		mfr_id: MANUFACTURER_AMD,
+		dev_id: AM29LV800BT,
+		name: "AMD AM29LV800BT",
+		DevSize: SIZE_1MiB,
+		CmdSet:	P_ID_AMD_STD,
+		NumEraseRegions: 4,
+		regions: {ERASEINFO(0x10000,15),
+			  ERASEINFO(0x08000,1),
+			  ERASEINFO(0x02000,2),
+			  ERASEINFO(0x04000,1)
+		}
+	}, {
+		mfr_id: MANUFACTURER_AMD,
+		dev_id: AM29LV800BB,
+		name: "AMD AM29LV800BB",
+		DevSize: SIZE_1MiB,
+		CmdSet:	P_ID_AMD_STD,
+		NumEraseRegions: 4,
+		regions: {ERASEINFO(0x04000,1),
+			  ERASEINFO(0x02000,2),
+			  ERASEINFO(0x08000,1),
+			  ERASEINFO(0x10000,15)
+		}
 	{
 		mfr_id: MANUFACTURER_AMD,
 		dev_id: AM29LV160DT,



--
dwmw2

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: 4 x AMD29LV800B CFI?
  2001-11-27 11:05   ` David Woodhouse
@ 2001-11-28  3:30     ` Geoffrey Espin
  0 siblings, 0 replies; 3+ messages in thread
From: Geoffrey Espin @ 2001-11-28  3:30 UTC (permalink / raw)
  To: David Woodhouse; +Cc: linux-mtd

> >  Perhaps my h/w setup is insisting that all 4 parts are programmed at
> > once?  I see ifdef SOMEONE_ACTUALLY... for width 4 type 32 interleave
> > 4; maybe this means generate the right pattern? 
> That's around the code for 32-bit flash chips. You don't have 32-bit chips, 
> you have 16-bit chips, in 8-bit mode.
> I've used the 29LV160, and it's definitely CFI-compliant. Strangely, the 
> 29LV800 isn't. But the jedec_probe code doesn't yet recognise it. Try 
> this...
> Index: drivers/mtd/chips/jedec_probe.c
> ...

Thanks, David, ever so much for the patch.  I'd played with Jedec too.
I actually got amd_flash.c to seemingly work on its own -- just
tested with "mtd_debug read/write ..."  My hacked amd_flash.c prints:

    Physically mapped flash: Found 1 x 4MiB AMD AM29LV800BT (*4) at 0x0
                                                            ^^^^
Yeah!

I'd prefer to use your version, will give it a try...

Geoff
-- 
Geoffrey Espin
espin@idiom.com 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2001-11-28  3:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <E1669aI-0001iv-00@pentafluge.infradead.org>
2001-11-23 21:01 ` 4 x AMD29LV800B CFI? Geoffrey Espin
2001-11-27 11:05   ` David Woodhouse
2001-11-28  3:30     ` Geoffrey Espin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox