MX50: transferring data error -84 when writing eMMC at SD3 port -blog archive

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MX50: transferring data error -84 when writing eMMC at SD3 port -blog archive

3,221 Views
PeterChan
NXP Employee
NXP Employee

Error code -84 is -EILSEQ error and is reported by the sdhci_data_irq() function from MX50 mmc host driver. If you see this error, probably a data CRC error or an end bit error has been detected by the eSDHCv3 port. I observed this error on certain eMMC parts such as Micron N2M400ED0315J60F and MTFC2GMTEA-WT. To resolve this problem, I disable the DDR mode support in SD3 and change the mmc3_data.dll_delay_cells from 0xc to 0 in mx50_arm2.c. The field dll_delay_cells adjusts the SD delay line in read path and only exists in eSDHCv3. i.e. SD3 port in MX50.

 

From

static struct mxc_mmc_platform_data mmc3_data = {
    .ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29 | MMC_VDD_29_30
        | MMC_VDD_31_32,
    .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA | MMC_CAP_DATA_DDR,
    .min_clk = 400000,
    .max_clk = 40000000,
    .dll_override_en = 1,
    .dll_delay_cells = 0xc,
    .card_inserted_state = 0,
    .status = sdhc_get_card_det_status,
    .wp_status = sdhc_write_protect,
    .clock_mmc = "esdhc_clk",
};

 

To

static struct mxc_mmc_platform_data mmc3_data = {
    .ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29 | MMC_VDD_29_30
        | MMC_VDD_31_32,
    .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
    .min_clk = 400000,
    .max_clk = 40000000,
    .dll_override_en = 1,
    .dll_delay_cells = 0,
    .card_inserted_state = 0,
    .status = sdhc_get_card_det_status,
    .wp_status = sdhc_write_protect,
    .clock_mmc = "esdhc_clk",
};

Tags (1)
0 Kudos
2 Replies

1,175 Views
PeterChan
NXP Employee
NXP Employee

Hello Suvir,

I am not familiar with MX53 platform and I am not sure about the root cause of this MX53 problem. Please check MX53 development tool resources for any new release or patches. Apart from changing the delay line, you may also try to use 4 bit bus and decrease the maximum clock rate. If they do not work, please create a service request to Freescale technical support for resolving this issue.

0 Kudos

1,175 Views
hitlin37
Contributor I

I'm working on mx53 based platform.I'm using samsung KLM8G2FEJA-A002 emmc(8GB).

i have my .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,

emmc is on mmc2(out of 1,2,3) line.

when i do mkfs.vfat -F 32 /dev/mmcblk0p1....i get transfer error like:


root@freescale /home$ mkfs.vfat_new -F 32 /dev/mmcblk0p1
mkfs.vfat_new 3.0.12 (29 Oct 2011)
mmcblk0: error -84 transferring data, sector 1601, nr 128, card status 0x900
root@freescale /home$ mkfs.vfat_new -F 32 /dev/mmcblk0p1
mkfs.vfat_new 3.0.12 (29 Oct 2011)
mmcblk0: error -84 transferring data, sector 12785, nr 128, card status 0xe00
root@freescale /home$ mkfs.vfat_new -F 32 /dev/mmcblk0p1
mkfs.vfat_new 3.0.12 (29 Oct 2011)
mmcblk0: error -84 transferring data, sector 481, nr 128, card status 0x900
mmc1: Timeout waiting for hardware interrupt.
mxsdhci: ============== REGISTER DUMP ==============
mxsdhci: Sys addr: 0xb33f0000 | Version: 0x00001201
mxsdhci: Blk size: 0x00000200 | Blk cnt: 0x00000080
mxsdhci: Argument: 0x00000001 | Trn mode: 0x193a0023
mxsdhci: Present: 0xff88050e | Host ctl: 0x00000025
mxsdhci: Clock: 0x000e011f
mxsdhci: Int stat: 0x00000000
mxsdhci: Int enab: 0x117f010f | Sig enab: 0x117f000f
mxsdhci: Caps: 0x07f30000
mxsdhci: ===========================================
mmcblk0: error -110 transferring data, sector 1, nr 128, card status 0xd00
^C^C^C^C^Cmmc1: Timeout waiting for hardware interrupt.
mxsdhci: ============== REGISTER DUMP ==============
mxsdhci: Sys addr: 0xb33f0000 | Version: 0x00001201
mxsdhci: Blk size: 0x00000200 | Blk cnt: 0x00000080
mxsdhci: Argument: 0x00000261 | Trn mode: 0x193a0023
mxsdhci: Present: 0xff88050e | Host ctl: 0x00000025
mxsdhci: Clock: 0x000e011f
mxsdhci: Int stat: 0x00000000
mxsdhci: Int enab: 0x117f010f | Sig enab: 0x117f000f
mxsdhci: Caps: 0x07f30000
mxsdhci: ===========================================
mmcblk0: error -110 transferring data, sector 609, nr 128, card status 0xd00


And after that ....it remains into this state and board hangs.

How do i make it work?

Regards

Suvir


0 Kudos