Weird chip/mtd behavior???

Patrick Hilt philt at pioneer-pdt.com
Mon Dec 22 15:45:11 EST 2003


Hi everybody!
I'm seeing some weird mtd/flash behavior... I guess I should be a little more 
specific ;-)...

I'm working on Broadcom MIPS CPU based board with a 16 MB Micron flash CFI 
flash chip (MT28F640J3... seems it's pretty new on the market). Linux-wise 
I'm using a 2.4.18 Linux-mips kernel with a backported mtd subsystem (CVS 
snapshot from 12/17/03). After some smaller modifications, the kernel incl. 
the new mtd subsys compiled just fine. I configured mtd to access my chip and 
to create the partitions I need, which I think succeeded based on the boot 
output quoted below:

>physmap flash device: 1000000 at 1a000000
>phys_mapped_flash: Found 1 x16 devices at 0x0 in 16-bit mode
> Intel/Sharp Extended Query Table at 0x0031
>cfi_cmdset_0001: Erase suspend on write enabled
>Using buffer write method
>request_module[cmdlinepart]: Root fs not mounted
>cmdlinepart partition parsing not available
>request_module[RedBoot]: Root fs not mounted
>RedBoot partition parsing not available
>Using physmap partition definition
>Creating 4 MTD partitions on "phys_mapped_flash":
>0x00000000-0x00500000 : "boot"
>mtd: Giving out device 0 to boot
>0x00500000-0x00800000 : "root"
>mtd: Giving out device 1 to root
>0x00800000-0x00f00000 : "pioneer"
>mtd: Giving out device 2 to pioneer
>0x00f00000-0x01000000 : "fonts"
>mtd: Giving out device 3 to fonts

So far, so good. But now the weird stuff: when I erase or write the lower 2 
partitions (lower 8 MEGS) everything works just fine. Erase on the upper two 
partitions seems to be OK but as soon as I try to write to one of the upper 
two partitions (upper 8 MEGS), I get input/output errors and the following 
messages on the console.

Sometimes, I get
>MTD_open
>MTD_ioctl
>Invalid ioctl 540d (MEMGETINFO = 40204d01)
>MTD_write
>Waiting for chip to be ready timed out. Status 3d45
>MTD_close

Other times I get
>MTD_open
>MTD_ioctl
>Invalid ioctl 540d (MEMGETINFO = 40204d01)
>MTD_write
>SR.4 or SR.5 bits set in buffer write (status ffff). Clearing.
>Waiting for chip to be ready timed out in bufwrite.
>MTD_close

Even weirder is that, when I had not partitioned the chip, and I erased the 
whole thing, it seemed that the speed of erase clearly slowed (by a factor of 
two or so) when the erase hit 50%/the 8MB boundary.

Has anybody in this list ever seen anything like this? (I haven't... searched 
the web and mailing list archives but did not find anything that would help.)
Any suggestions / comments??

Thanks a lot for any help in advance and sorry for the lengthy email ;-)

Patrick





More information about the linux-mtd mailing list