AnsweredAssumed Answered

NAND DMA problems with i.MX50/2.6.35.3

Question asked by Andre Renaud on Dec 5, 2013
Latest reply on Mar 21, 2014 by Yuri Muhin

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                                 

Outcomes