IMX8M - MMC1 Hardware interrupt L5.4.47

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

IMX8M - MMC1 Hardware interrupt L5.4.47

1,001 Views
darsh_dev
Contributor V

Hi Support Team,

I am facing the error "mmc1: Timeout waiting for hardware interrupt" and kernel gets hang with below message.

 

[    3.845655] Waiting for root device /dev/mmcblk1p2...
[    3.893306] mmc1: Tuning failed, falling back to fixed sampling clock
[    3.899786] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
[    3.907202] mmcblk1: mmc1:aaaa JULIE 14.8 GiB 
[    3.927085] hub 1-1:1.0: USB hub found
[    3.930904] hub 1-1:1.0: 4 ports detected
[    3.960927] mmc1: Tuning failed, falling back to fixed sampling clock
[    3.992582] usb 2-1: new SuperSpeed Gen 1 USB device number 2 using xhci-hcd
[    4.005626] imx-ak4458 sound-ak4458: ASoC: failed to init link ak4458: -517
[    4.012602] imx-ak4458 sound-ak4458: snd_soc_register_card failed (-517)
[    4.040126] hub 2-1:1.0: USB hub found
[    4.044521] hub 2-1:1.0: 4 ports detected
[    4.061205] imx-ak4458 sound-ak4458: ASoC: failed to init link ak4458: -517
[    4.068195] imx-ak4458 sound-ak4458: snd_soc_register_card failed (-517)
[    4.277045] usb 1-1.4: new full-speed USB device number 3 using xhci-hcd
[    4.326045] mmc1: Tuning failed, falling back to fixed sampling clock
[    4.378681] mmc1: Tuning failed, falling back to fixed sampling clock
[    4.385169] blk_update_request: I/O error, dev mmcblk1, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[    4.399544] Buffer I/O error on dev mmcblk1, logical block 0, async page read
[    4.410548] cp210x 1-1.4:1.0: cp210x converter detected
[    4.418216] usb 1-1.4: cp210x converter now attached to ttyUSB0
[    4.430111] imx-ak4458 sound-ak4458: ASoC: failed to init link ak4458: -517
[    4.437098] imx-ak4458 sound-ak4458: snd_soc_register_card failed (-517)
[    4.451428] mmc1: Tuning failed, falling back to fixed sampling clock
[   14.560509] mmc1: Timeout waiting for hardware interrupt.
[   14.565910] mmc1: sdhci: ============ SDHCI REGISTER DUMP ===========
[   14.572352] mmc1: sdhci: Sys addr:  0xf94d4400 | Version:  0x00000002
[   14.578791] mmc1: sdhci: Blk size:  0x00000200 | Blk cnt:  0x00000001
[   14.585231] mmc1: sdhci: Argument:  0x00000001 | Trn mode: 0x00000013
[   14.591668] mmc1: sdhci: Present:   0x01f88008 | Host ctl: 0x00000013
[   14.598106] mmc1: sdhci: Power:     0x00000002 | Blk gap:  0x00000080
[   14.604544] mmc1: sdhci: Wake-up:   0x00000008 | Clock:    0x0000001f
[   14.610981] mmc1: sdhci: Timeout:   0x0000008f | Int stat: 0x00000000
[   14.617418] mmc1: sdhci: Int enab:  0x117f100b | Sig enab: 0x117f100b
[   14.623856] mmc1: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00008402
[   14.630294] mmc1: sdhci: Caps:      0x07eb0000 | Caps_1:   0x8000b407
[   14.636732] mmc1: sdhci: Cmd:       0x0000113a | Max curr: 0x00ffffff
[   14.643169] mmc1: sdhci: Resp[0]:   0x00000900 | Resp[1]:  0x45809be2
[   14.649607] mmc1: sdhci: Resp[2]:   0x4a554c49 | Resp[3]:  0x00000900
[   14.656045] mmc1: sdhci: Host ctl2: 0x00000008
[   14.660487] mmc1: sdhci: ADMA Err:  0x00000000 | ADMA Ptr: 0xf910f208
[   14.666924] mmc1: sdhci-esdhc-imx: ========= ESDHC IMX DEBUG STATUS DUMP =========
[   14.674492] mmc1: sdhci-esdhc-imx: cmd debug status:  0x2100
[   14.680148] mmc1: sdhci-esdhc-imx: data debug status:  0x2200
[   14.685892] mmc1: sdhci-esdhc-imx: trans debug status:  0x2300
[   14.691722] mmc1: sdhci-esdhc-imx: dma debug status:  0x24e0
[   14.697377] mmc1: sdhci-esdhc-imx: adma debug status:  0x2510
[   14.703121] mmc1: sdhci-esdhc-imx: fifo debug status:  0x2680
[   14.708864] mmc1: sdhci-esdhc-imx: async fifo debug status:  0x2750
[   14.715127] mmc1: sdhci: ============================================
[   14.723721] blk_update_request: I/O error, dev mmcblk1, sector 1 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0

 

 

DTS configuration is:

 

&usdhc2 {
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
        pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
        pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
        bus-width = <4>;
        cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
        vmmc-supply = <&reg_usdhc2_vmmc>;
        status = "okay";
};
      pinctrl_usdhc2_gpio: usdhc2grpgpio {
            fsl,pins = <
                MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12                        0x41
                MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19                     0x41
            >;
        };
        pinctrl_usdhc2: usdhc2grp {
                fsl,pins = <
                        MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK                 0x83
                        MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD                 0xc3
                        MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0             0xc3
                        MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1             0xc3
                        MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2             0xc3
                        MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3             0xc3
                        MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0xc1
                >;
        };
        pinctrl_usdhc2_100mhz: usdhc2-100grp {
                fsl,pins = <
                        MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK                 0x85
                        MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD                 0xc5
                        MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0             0xc5
                        MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1             0xc5
                        MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2             0xc5
                        MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3             0xc5
                        MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0xc1
                >;
        };
        pinctrl_usdhc2_200mhz: usdhc2-200grp {
                fsl,pins = <
                        MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK                 0x87
                        MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD                 0xc7
                        MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0             0xc7
                        MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1             0xc7
                        MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2             0xc7
                        MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3             0xc7
                        MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0xc1
                >;
    };

 

 

What could be the issue of

 

[    4.451428] mmc1: Tuning failed, falling back to fixed sampling clock
[   14.560509] mmc1: Timeout waiting for hardware interrupt.
[   14.565910] mmc1: sdhci: ============ SDHCI REGISTER DUMP ===========

 

 

Please help me to resolve the issue.

Labels (1)
Tags (1)
0 Kudos
1 Reply

993 Views
igorpadykov
NXP Employee
NXP Employee

Hi darshak_patel

 

reason for "SDR104 SDHC card mmc1: Tuning failed" may be layout of sd signals

so SDR104 timings could not be satisfied, as described in sect.3.9.2.5 SDR50/SDR104 AC timing

i.MX 8M Dual / 8M QuadLite / 8M Quad Applications Processors Data Sheet for Consumer Products

This also may be caused by signal integrity issues (noisy signal), one can try to tweak it using

DSE, SRE fields as for example in sect.8.2.5.203 SW_PAD_CTL_PAD_SD2_CLK SW PAD

Control Register (IOMUXC_SW_PAD_CTL_PAD_SD2_CLK) 

i.MX 8M Dual/8M QuadLite/8M Quad Applications Processors Reference Manual

pinctrl_usdhc2: usdhc2grp {
fsl,pins = <
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83

 

Best regards
igor

0 Kudos