mtd with AMD AM29LV800DB nor flash

Ole Reinhardt ole.reinhardt at
Mon Jan 2 11:30:36 EST 2006


I have a problem using 2.6.15-rc7'th mtd with an AMD AM29LV800DB nor
flash device.

The flash chip is connected to CS0 and is using 16bit bus width. It is
recognised as AM29LV800BB, which is fully software and pin compatible to
the AM29LV800DB device.

Everything works quite fine, except writing / erasing. I tracked down
the problem downto the following function:

finfo_uaddr() in drivers/mtd/chips/jedec_probe.c

I have a 16bit bus width, so I would expect it to return
MTD_UADDR_0x0555_0x02AA, but there are the following lines:

if (uaddr != MTD_UADDR_NOT_SUPPORTED ) {
	/* ASSERT("The unlock addresses for non-8-bit mode
	   are bollocks. We don't really need an array."); */
	uaddr = finfo->uaddr[0];

In other words: For my flash chip, always MTD_UADDR_0x0AAA_0x0555 is

This is definatly the wrong unlock address for 16bit mode and every
erase command will fail.

If I comment out the "if (uaddr != MTD_UADDR_NOT_SUPPORTED ) ..."
everything works fine.

Can anybody explain me what's going wrong or is this a bug in the mtd

Best regards,

Ole Reinhardt

kernel concepts    Tel: +49-271-771091-14
Dreisbachstr. 24   Fax: +49-271-771091-19
D-57250 Netphen    E+ : +49-177-7420433

More information about the linux-mtd mailing list