Hi,
I'm using the i.MX503 along with the 2.6.35.3 kernel, and I'm having issues with the GPMI NAND controller. It appears to detect the chip properly, but when I attempt to read/write from it I get an error in gpmi_nfc_dma_go. It looks like it's failing to get a DMA Completion interrupt, causing gpmi_nfc_dma_go to timeout. Has anyone experienced this before, or know where I might begin looking?
boot log:
MXC MTD nand Driver 3.0 | |
i.MX GPMI NFC |
NFC: Version 2, 8-chip GPMI and BCH
Boot ROM: Version 1, Single-chip boot area, block mark swapping supported
Scanning for NAND Flash chips... |
-----------------------------
NAND Flash Device Information
-----------------------------
Manufacturer | : Micron (0x2c) | |
Device Code | : 0x88 |
Cell Technology : MLC
Chip Size | : 8 GiB |
Pages per Block : 256
Page Geometry | : 8192+448 |
ECC Strength | : 24 bits |
ECC Size | : 1024 B |
Data Setup Time : 15 ns
Data Hold Time | : 10 ns |
Address Setup Time: 20 ns
GPMI Sample Delay : 6 ns
tREA | : 20 ns |
tRLOH | : 5 ns |
tRHOH | : 15 ns |
Description | : MT29F64G08CBAAA(8GB, 2CE) |
------------ |
NFC Geometry
------------
ECC Algorithm | : BCH |
ECC Strength | : 24 |
Page Size in Bytes | : 8640 |
Metadata Size in Bytes : 10
ECC Chunk Size in Bytes: 512
ECC Chunk Count | : 16 |
Payload Size in Bytes : 8192
Auxiliary Size in Bytes: 28
Auxiliary Status Offset: 12
Block Mark Byte Offset : 7636
Block Mark Bit Offset : 0
NAND device: Manufacturer ID: 0x2c, Chip ID: 0x88 (Micron ONFI NAND 3,3V 8-bit)
----------------- |
Boot ROM Geometry
-----------------
Boot Area Count | : 0 | |
Boot Area Size in Bytes | : 0 (0x0) | |
Stride Size in Pages | : 64 |
Search Area Stride Exponent: 2
Scanning device for bad blocks
Bad eraseblock 90 at 0x00000b400000
Bad eraseblock 91 at 0x00000b600000
Creating 2 MTD partitions on "gpmi-nfc-main":
0x000000000000-0x000004000000 : "kernel" |
0x000004000000-0x000200000000 : "filesystem"
Error details:
root@snapper:~$ cat /proc/mtd
dev: size erasesize name
mtd0: 04000000 00200000 "kernel"
mtd1: 1fc000000 00200000 "filesystem"
root@snapper:~$ mtdtool --eraseall kernel
100% 64M (646.46M/s)
gpmi-nfc gpmi-nfc.0: [gpmi_nfc_dma_go] Chip: 0, DMA Channel: 0, Error -110
[ start_dma_with_bch_irq ] DMA error
[ start_dma_with_bch_irq ] bch timeout!!!
gpmi-nfc gpmi-nfc.0: [mil_ecc_write_page] Error in ECC-based write: -110
gpmi-nfc gpmi-nfc.0: [gpmi_nfc_dma_go] Chip: 0, DMA Channel: 0, Error -110
[ start_dma_without_bch_irq ] DMA error
gpmi-nfc gpmi-nfc.0: [mil_cmd_ctrl] Chip: 0, Error -110
Command Bytes: 10
gpmi-nfc gpmi-nfc.0: [gpmi_nfc_dma_go] Chip: 0, DMA Channel: 0, Error -110
[ start_dma_without_bch_irq ] DMA error
gpmi-nfc gpmi-nfc.0: [mil_cmd_ctrl] Chip: 0, Error -110
Command Bytes: 70
1.
If the problem happens only on one NAND chip, it may be a block that has lost its factory bad block marking,
but should really be a bad block. You could try to figure out how to force the block to be marked bad, or just discard
the NAND chip. If the same problem happens on multiple NAND chips of the same family, the BSP may not be correctly
supporting the chip.
2.
The next Community thread may be useful.
Am I correct that Linux BSP (for i.MX50) from the Freescale Web was used ?
And all patches (from the Web) have been applied ?
Are you using the iMX50 EVK board or your own hardware?
Perhaps the problem concerns with improper IOMUX settings for GPMI pins under specific hardware.
Please compare Your schematics with mx50 EVK to define if IOMUX changes are necessary.