[PATCH v12 0/3] add the GPMI controller driver for IMX23/IMX28
Lothar Waßmann
LW at KARO-electronics.de
Thu Sep 15 03:55:57 EDT 2011
Hi,
Huang Shijie writes:
> The patch set is based on Artem's tree:
> http://git.infradead.org/users/dedekind/l2-mtd-2.6.git
>
> The general-purpose media interface(GPMI) controller is a flexible interface
> to up to several NAND flashs.
>
> The Bose Ray-Choudhury Hocquenghem(BCH) module is a hardware ECC accelerator.
>
> With the help of BCH, the GPMI controller can choose to do the hardware ECC or
> not.
>
> This driver is a _pure_ MTD NAND controller driver now.
>
>
> The driver depends on another GPMI-NAND device patch set, you can find them at :
> [1] http://marc.info/?l=linux-arm-kernel&m=131416901319573&w=2
> [2] http://marc.info/?l=linux-arm-kernel&m=131416912319668&w=2
> [3] http://marc.info/?l=linux-arm-kernel&m=131416891119504&w=2
> [4] http://marc.info/?l=linux-arm-kernel&m=131416896219539&w=2
>
> Test environment:
> Using imx23 and imx28 boards for test.
>
> imx23 :
> console=ttyAMA0,115200 mtdparts=gpmi-nfc:20m(boot),-(user)
> Tested by USB boot and NAND boot.
>
> imx28 :
> #console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait
> Tested by SD card boot mode.
>
How did you perform your tests?
I tried this driver on our TX28 board with the result that with
concurrent access of the SD card and the NAND flash, I still get the
dreaded DMA timeouts within seconds:
DMA timeout, last DMA :1
GPMI regs:
HW_GPMI_CTRL0[000]=21800001
HW_GPMI_COMPARE[010]=00000000
HW_GPMI_ECCCTRL[020]=00000000
HW_GPMI_ECCCOUNT[030]=00000840
HW_GPMI_PAYLOAD[040]=46578000
HW_GPMI_AUXILIARY[050]=46578800
HW_GPMI_CTRL1[060]=0004000c
HW_GPMI_TIMING0[070]=00010203
HW_GPMI_TIMING1[080]=05000000
HW_GPMI_TIMING2[090]=09020101
HW_GPMI_STAT[0b0]=0d000003
HW_GPMI_DEBUG[0c0]=01000000
BCH regs:
HW_BCH_CTRL[000]=00000100
HW_BCH_STATUS0[010]=00000010
HW_BCH_MODE[020]=00000000
HW_BCH_ENCODEPTR[030]=00000000
HW_BCH_DATAPTR[040]=00000000
HW_BCH_METAPTR[050]=00000000
HW_BCH_LAYOUTSELECT[070]=00000000
HW_BCH_FLASH0LAYOUT0[080]=030a4200
HW_BCH_FLASH0LAYOUT1[090]=08404200
HW_BCH_DEBUG0[100]=00000000
DMA regs:
HW_APBHX_CTRL0[000]=30000000
HW_APBHX_CTRL1[010]=ffff0000
HW_APBHX_CTRL2[020]=00000000
HW_APBHX_CHANNEL_CTRL[030]=00000000
HW_APBHX_CHn_CURCMDAR(0)[100]=46e1c000
HW_APBHX_CHn_NXTCMDAR(0)[110]=46e1c04c
HW_APBHX_CHn_CMD(0)[120]=000001c8
HW_APBHX_CHn_BAR(0)[130]=00000000
HW_APBHX_CHn_SEMA(0)[140]=00000000
HW_APBHX_CHn_DEBUG1(0)[150]=00a0001e
HW_APBHX_CHn_DEBUG2(0)[160]=00000000
HW_APBHX_CHn_CURCMDAR(4)[2c0]=4652c098
HW_APBHX_CHn_NXTCMDAR(4)[2d0]=4652c0e4
HW_APBHX_CHn_CMD(4)[2e0]=000001c9
HW_APBHX_CHn_BAR(4)[2f0]=46553241
HW_APBHX_CHn_SEMA(4)[300]=00010000
HW_APBHX_CHn_DEBUG1(4)[310]=27a00015
HW_APBHX_CHn_DEBUG2(4)[320]=00000000
BCH Geometry :
GF length : 13
ECC Strength : 8
Page Size in Bytes : 2112
Metadata Size in Bytes : 10
ECC Chunk Size in Bytes: 512
ECC Chunk Count : 4
Payload Size in Bytes : 2048
Auxiliary Size in Bytes: 16
Auxiliary Status Offset: 12
Block Mark Byte Offset : 1999
Block Mark Bit Offset : 0
I'm doing a:
dd if=/dev/mtd0 > /dev/null & dd if=/dev/mmcblk0 > /dev/null
Sometimes the 'dd' accessing the SD card will stall indefinitely.
Also copying data from SD card to flash will produce the error, though
less likely.
This looks like the problem arises in the DMA driver when multiple
channels are being used concurrently. The GPMI driver will bail out
with the timeout error while the MMC driver obviously has no timeout
check for this situation.
I can mostly rule out HW problems, because the same board works
perfectly well with WindowsCE (tested with a copy operation between
flash and SD card).
Lothar Waßmann
--
___________________________________________________________
Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996
www.karo-electronics.de | info at karo-electronics.de
___________________________________________________________
More information about the linux-arm-kernel
mailing list