Issues with raw write using MTD Char Driver

Raghav K raghavk at myw.ltindia.com
Wed Aug 18 23:29:21 EST 2004


Greetings all,

Hi, I  have 8MB AMD29FXX flash organized as  16 chips of 0.5 MB each as DIMM package on a
MPC885 board. The same is accessed as a 4 x 2MB interleaved flash, of effective sector size
256k. I'm using the  MTD concatation option to interleave thes chips. I'm using Arabella Linux,
kernel 2.4.25.

When I attempt to write a 256k chunk of data to an erased sector the kerel crashes
with the followng dump

Waitin c03b2000[25] 'driv_mtd' Last syscall: 4
last math 00000000 last altivec 00000000
GPR00: 00040000 7FFFFDC0 00000000 0000000A 00000001 00000008 3006C2A4 00000001
GPR08: 7FFFFCD0 00000190 00000001 10010EAC 300052EC 00000000 30005140 30005000
GPR16: 00000002 000000CC riv_mtd' Last syscall: 4
last math 00000000 last altivec 00000000
GPR00: 00040000 7FFFFDC0 00000000 0000000A 00000001 00000008 3006C2A4 00000001
GPR08: 7FFFFCD0 00000190 00000001 10010EAC 300052EC 00000000 30005140 30005000
GPR16: 00000002 000000CC 300050A0 000000CC 30002D6C 30000C1C 00003915 30005154
GPR24: 30000130 30000000 10000000 10000000 00000003 10014000 00000000 00000000
Call backtrace:
100008A0 30026FE0 30026FFC 10000780 00000000 7FFFFF74
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
 <0>Rebooting in 180 seconds..

However when I try to write to the same sector in smaller chunks of 512 bytes,
with a sleep of a few microseconds, the write operation to entire sector is successful,
however a warning is raised.

Warning: DQ5 raised while program operation was in progress, however operation completed OK

I have the following is  my  kernel configuration :

CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CONCAT=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y

CONFIG_MTD_CFI=y
CONFIG_MTD_JEDECPROBE=y
CONFIG_MTD_GEN_PROBE=y
CONFIG_MTD_CFI_ADV_OPTIONS=y
CONFIG_MTD_CFI_BE_BYTE_SWAP=y
CONFIG_MTD_CFI_GEOMETRY=y
CONFIG_MTD_CFI_B4=y
CONFIG_MTD_CFI_I4=y
CONFIG_MTD_CFI_AMDSTD=y

CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=2800000
CONFIG_MTD_PHYSMAP_LEN=800000
CONFIG_MTD_PHYSMAP_BUSWIDTH=4


Is there a maximum chunk that be written to a sector a one shot?
What am I doing wrong?

TIA,
-raghav-


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list