public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* mtd with AMD AM29LV800DB nor flash
@ 2006-01-02 16:30 Ole Reinhardt
  2006-01-02 21:17 ` Vitaly Wool
  0 siblings, 1 reply; 2+ messages in thread
From: Ole Reinhardt @ 2006-01-02 16:30 UTC (permalink / raw)
  To: linux-mtd

Hello,

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
returned.

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
code?

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
--

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

* Re: mtd with AMD AM29LV800DB nor flash
  2006-01-02 16:30 mtd with AMD AM29LV800DB nor flash Ole Reinhardt
@ 2006-01-02 21:17 ` Vitaly Wool
  0 siblings, 0 replies; 2+ messages in thread
From: Vitaly Wool @ 2006-01-02 21:17 UTC (permalink / raw)
  To: Ole Reinhardt; +Cc: linux-mtd

Hi,

you might want to try patch from Todd Poynor sent to this list 
16.11.2005. If you wish, I can provide you the direct link to this email 
in the linux-mts mailing list archive.

Hope that helps,

Best regards,
   Vitaly

Ole Reinhardt wrote:

>Hello,
>
>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
>returned.
>
>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
>code?
>
>Best regards,
>
>Ole Reinhardt
>
>  
>

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

end of thread, other threads:[~2006-01-02 21:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-02 16:30 mtd with AMD AM29LV800DB nor flash Ole Reinhardt
2006-01-02 21:17 ` Vitaly Wool

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