"block erase failed: Input/output error" with SMART PCMCIA linear flash

Miernik <[email protected]> Mon, 3 Nov 2003 20:16:47 +0100
Newsgroups gmane.linux.drivers.wireless.access-point
Message-ID <[email protected]>
I'm trying to get a "SMART Modular Technologies 4MB FAST FLASH CARD 
SM9FA2043IP280" PCMCIA linear flash Intel Series 2+ card working.
I mean being able to write it on my Debian GNU/Linux machine. 

The explanation of SM9FA2043IP280:

SM      Smart Modular
9       Product Category:       Memory Card
F       Technology:             Flash
A       Attribute:              With Attribute (2kB)
2       Nop. of banks:          2 Bank
04      Card Density:           4 MB
3       Component Data Width:   x16
I       Device Manufacturer:    Intel
P       Pinout:                 68 Pin PC Card (Type I)
2       Interface:              x16 only
80      Card Speed:             80ns


FLA16MPX16ICB REV.A

To know what I'm working with, I have opened the card, and found these 
4 chips:

2 * chip:
---------
Intel

E28F016SA
70   5.0V
120  3.3V
U84433T1C
1993

Flash
---------

---------
ATMEL
AT28C16
15TC
9837
---------

---------
IDT 74FCT
108CTQ
KP84ST
---------

I have accidentally erased attribute memory of this card, so it is 
detected only as anonymous memory. I fix it like this:

card "Anonymous Memory"
  anonymous
  cis "cis/smartm-4mb-flash.dat"
  bind "memory_cs", "ftl_cs"


I am using 2.4.22-3 kernel from Debian, self-compiled, not compiling 
pcmcia-modules from the kernel, but separately. 
I compiled pcmcia-modules_3.2.2-1.4.

I have compiled pcmcia-modules with debug=8 and I have very detailed
debug logs. Can someone take a look at them? It's 5559 byes gziped,
but 149368 bytes ungizped. It's avialable at 
http://www.miernik.ctnet.pl/mtd/6-with-debug/testlog
http://www.miernik.ctnet.pl/mtd/6-with-debug/testlog.gz

You can see the contents of my /etc/pcmcia at 
http://www.miernik.ctnet.pl/mtd/6-with-debug/pcmcia/

My logs when the system boots with the card:
http://www.miernik.ctnet.pl/mtd/6-with-debug/log/

Output of 'cardctl *', 'cat /proc/*', 'lsmod' and 'ls -l /dev/mem0*' are
here: http://www.miernik.ctnet.pl/mtd/6-with-debug/

And the used kernel and modules:
http://www.miernik.ctnet.pl/debian/pool/kernel-image-2.4.22_tarnica.1.0_i386.deb
http://www.miernik.ctnet.pl/debian/pool/pcmcia-modules-2.4.22_3.2.2-1.4+tarnica+debug.1.0_i386.deb

In short words: 

When trying to do 'ftl_format -i /dev/mem0c0c' I get:
block erase failed: Input/output error
format failed.

and in my /var/log/messages:

Nov  3 19:15:51 tarnica kernel: memory_erase(0, 0x0, 65536)
Nov  3 19:15:51 tarnica kernel: cs: CardServices(CheckEraseQueue, 0xcea7a700, 0x00000000)
Nov  3 19:15:51 tarnica kernel: cs: trying erase request 0xcdfee260...
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: flash_event(0x020000)
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: flash_erase(0xced86a80, 0xcee81800, 0x0, 0x10000)
Nov  3 19:15:51 tarnica kernel: cs: CardServices(GetStatus, 0xced86880, 0xcd965de4)
Nov  3 19:15:51 tarnica kernel: i82365: GetStatus(0) = 0x01c0
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: raising Vpp...
Nov  3 19:15:51 tarnica kernel: i82365: SetSocket(0, flags 0x200, Vcc 50, Vpp 120, io_irq 0, csc_mask 0x80)
Nov  3 19:15:51 tarnica kernel: Status = 1, requeueing.
Nov  3 19:15:51 tarnica kernel: cs: erase timeout for entry 0xcdfee260
Nov  3 19:15:51 tarnica kernel: cs: trying erase request 0xcdfee260...
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: flash_event(0x020000)
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: flash_erase(0xced86a80, 0xcee81800, 0x0, 0x10000)
Nov  3 19:15:51 tarnica kernel: i82365: SetMemMap(0, 1, 0x03, 80 ns, 0xe1000-0xe1fff, 0x00000)
Nov  3 19:15:51 tarnica kernel: i82365: SetMemMap(0, 2, 0x23, 250 ns, 0xe2000-0xe2fff, 0x04000)
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: set_rdy_mode(0404)
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: set_rdy_mode failed!
Nov  3 19:15:51 tarnica kernel: CSR = 0xffff, BSR = 0xffff, GSR = 0xffff
Nov  3 19:15:51 tarnica kernel: Status = 1, requeueing.
Nov  3 19:15:51 tarnica kernel: cs: erase timeout for entry 0xcdfee260
Nov  3 19:15:51 tarnica kernel: cs: trying erase request 0xcdfee260...
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: flash_event(0x020000)
Nov  3 19:15:51 tarnica kernel: iflash2+_mtd: flash_erase(0xced86a80, 0xcee81800, 0x0, 0x10000)
Nov  3 19:15:51 tarnica kernel: i82365: SetMemMap(0, 1, 0x03, 80 ns, 0xe1000-0xe1fff, 0x00000)
Nov  3 19:15:51 tarnica kernel: erase error: CSR = 0xffff, BSR = 0xffff, GSR = 0xffff
Nov  3 19:15:51 tarnica kernel: Status = 1, requeueing.


And while trying to do 'wrflash -ef test1 /dev/mem0c0c' (where test1 
is a sample 8kByte file) I get:

Partition size = 4 mb, erase unit size = 64 kb, start address 0x0


erasing block 1 of 64 (0x0-0xFFFF)
This will destroy data on the target device.  Confirm (y/n): y
block erase failed: Input/output error
---> failure.

And more or less the same thing as above in /var/log/messages. 

Reading from the card with dd looks OK, at least it doesn't say 
"error" anywhere :)

While reading I get about 60 kB/s from the block device and 200 kB/s 
from the character device. I get a file with all bits set to 1 
(FFFFFFFF etc), but maybe it is just what is on the card.

One more thing: I do it all through a Intel i82365sl B step rev 00 
ISA-to-PCMCIA card. It has a big chip "OMEGA MICRO 82C365G".

While I try to write to the card, I get Vpp 12.0V in cardctl config.

-- 
    Miernik         ________________________ jabber:[email protected]
___________________/__ tel: +48608233394 __/      mailto:[email protected]
Save Europe from Software Patents 
http://www.gnu.org/philosophy/savingeurope.html