Error -110 initializing MMC on Linux 4.9

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

Error -110 initializing MMC on Linux 4.9

6,861 Views
WilliamDillon
Contributor I

I've just started switching to Linux kernel version 4.9.83 (via armv7-multiplatform from Robert C. Nelson).  I had been using the 4.4.80 kernel.  Updating the tag and patch set went well, and it started building right away.  But, when I load it onto my board and try to boot, I'm getting a new MMC error:

[ 1.356062] mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using DMA
[ 1.436059] mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using DMA
[ 1.468819] mmc0: power class selection to bus width 8 ddr 4 failed
[ 1.479870] mmc0: error -110 whilst initialising MMC card
[ 1.546064] mmc2: SDHCI controller on 2198000.usdhc [2198000.usdhc] using DMA
[ 1.698156] mmc2: queuing unknown CIS tuple 0x01 (3 bytes)
[ 1.725635] mmc2: queuing unknown CIS tuple 0x1a (5 bytes)
[ 1.767939] mmc2: queuing unknown CIS tuple 0x1b (8 bytes)
[ 1.778593] mmc0: power class selection to bus width 8 ddr 4 failed
[ 1.788570] mmc2: queuing unknown CIS tuple 0x14 (0 bytes)
[ 1.809067] mmc0: error -110 whilst initialising MMC card
[ 1.828199] mmc2: queuing unknown CIS tuple 0x80 (1 bytes)
[ 1.852984] mmc2: queuing unknown CIS tuple 0x81 (1 bytes)
[ 1.866895] mmc2: queuing unknown CIS tuple 0x82 (1 bytes)
[ 1.879443] mmc2: new high speed SDIO card at address 0001
[ 1.889723] Waiting for root device /dev/mmcblk0p7...
[ 2.021716] mmc0: power class selection to bus width 8 ddr 4 failed
[ 2.028137] mmc0: error -110 whilst initialising MMC card
[ 2.240301] mmc0: power class selection to bus width 8 ddr 4 failed
[ 2.246710] mmc0: error -110 whilst initialising MMC card

I'm using exactly the same DTS file that I had been using, and I've had no issues with the MMC to date.  The usdhc1 node in the device tree is attached:

&usdhc1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc1>;
bus-width = <8>;
non-removable;
no-1-8-v;
status = "okay";
};

based on the kernel output, it looks like it might be an issue with the bus width parameter, but I don't know why this would change between kernel versions.  Specifically, this message seems to be the smoking gun: 

[ 1.778593] mmc0: power class selection to bus width 8 ddr 4 failed

This is on a custom board with an 8-bit EMMC interface wired to the SD1 port.  Partial schematics are available if that helps.

Thanks in advance for any help!!

Labels (2)
Tags (2)
0 Kudos
7 Replies

3,799 Views
igorpadykov
NXP Employee
NXP Employee

Hi William

one can try with nxp official L4.9.11 described on below link as L4.9.83 is not supported by nxp:

i.MX Software|NXP 

Driver is described in sect.3.3 MMC/SD/SDIO Host attached Linux Manual

Also issues with L4.9.83 may be posted on meta-fsl-arm mailing list:
https://lists.yoctoproject.org/listinfo/meta-freescale

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

3,799 Views
WilliamDillon
Contributor I

Using the imx6 v7 defconfig (still no idea if it's the right one) and our same DTS I'm getting kernel errors:

Hardware name: Freescale i.MX6 SoloLite (Device Tree)
[<8010ec88>] (unwind_backtrace) from [<8010b27c>] (show_stack+0x10/0x14)
[<8010b27c>] (show_stack) from [<803bc918>] (dump_stack+0x78/0x8c)
[<803bc918>] (dump_stack) from [<807160d0>] (gckOS_ReadRegisterEx+0x100/0x128)
[<807160d0>] (gckOS_ReadRegisterEx) from [<807328ac>] (_GetHardwareSignature.constprop.7+0x20/0x158)
[<807328ac>] (_GetHardwareSignature.constprop.7) from [<80734bdc>] (gckHARDWARE_Construct+0xa4/0x9d0)
[<80734bdc>] (gckHARDWARE_Construct) from [<8071f264>] (gckKERNEL_Construct+0x160/0x584)
[<8071f264>] (gckKERNEL_Construct) from [<80720178>] (gckDEVICE_AddCore+0x48/0x160)
[<80720178>] (gckDEVICE_AddCore) from [<80714384>] (gckGALDEVICE_Construct+0x4f0/0x9dc)
[<80714384>] (gckGALDEVICE_Construct) from [<8071c324>] (drv_init+0x1cc/0x330)
[<8071c324>] (drv_init) from [<8071c6d0>] (gpu_probe+0x1f8/0x210)
[<8071c6d0>] (gpu_probe) from [<804c94f8>] (platform_drv_probe+0x50/0xb0)
[<804c94f8>] (platform_drv_probe) from [<804c7d30>] (driver_probe_device+0x204/0x2b0)
[<804c7d30>] (driver_probe_device) from [<804c7e94>] (__driver_attach+0xb8/0xbc)
[<804c7e94>] (__driver_attach) from [<804c6114>] (bus_for_each_dev+0x68/0x9c)
[<804c6114>] (bus_for_each_dev) from [<804c71a4>] (bus_add_driver+0x108/0x214)
[<804c71a4>] (bus_add_driver) from [<804c859c>] (driver_register+0x78/0xf4)
[<804c859c>] (driver_register) from [<80e4a770>] (gpu_init+0x124/0x160)
[<80e4a770>] (gpu_init) from [<801017fc>] (do_one_initcall+0x44/0x170)
[<801017fc>] (do_one_initcall) from [<80e00dbc>] (kernel_init_freeable+0x154/0x1e4)
[<80e00dbc>] (kernel_init_freeable) from [<809a4318>] (kernel_init+0x8/0x10c)
[<809a4318>] (kernel_init) from [<801077f8>] (ret_from_fork+0x14/0x3c)

It appears related to gpu_init.  I noticed that the nxp imx6sl.dtsi has a GPU section where the community linux does not.  

0 Kudos

3,799 Views
WilliamDillon
Contributor I

I can't seem to edit that last post.  Here's a slightly better example of the error:

random: fast init done
mmcblk1: p1 p2 p3 p4 < p5 p6 p7 p8 >
[galcore]: _AllowAccess(582) GPU[8] Internal clock off
[galcore]: BUG ON @ gckOS_ReadRegisterEx(1649) (0)
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.11-armv7-x6-02211-g427eb83-dirty #5
Hardware name: Freescale i.MX6 SoloLite (Device Tree)
[<8010ec88>] (unwind_backtrace) from [<8010b27c>] (show_stack+0x10/0x14)
[<8010b27c>] (show_stack) from [<803bc918>] (dump_stack+0x78/0x8c)
[<803bc918>] (dump_stack) from [<80723470>] (gckOS_ReadRegisterEx+0x100/0x128)
[<80723470>] (gckOS_ReadRegisterEx) from [<8073fe34>] (_GetHardwareSignature.constprop.7+0x20/0x158)
[<8073fe34>] (_GetHardwareSignature.constprop.7) from [<80742164>] (gckHARDWARE_Construct+0xa4/0x9d0)
[<80742164>] (gckHARDWARE_Construct) from [<8072c7ec>] (gckKERNEL_Construct+0x160/0x584)
[<8072c7ec>] (gckKERNEL_Construct) from [<8072d700>] (gckDEVICE_AddCore+0x48/0x160)
[<8072d700>] (gckDEVICE_AddCore) from [<807216f4>] (gckGALDEVICE_Construct+0x4f0/0x9dc)
[<807216f4>] (gckGALDEVICE_Construct) from [<80729704>] (drv_init+0x1cc/0x330)
[<80729704>] (drv_init) from [<80729ab0>] (gpu_probe+0x1f8/0x210)
[<80729ab0>] (gpu_probe) from [<804d6338>] (platform_drv_probe+0x50/0xb0)
[<804d6338>] (platform_drv_probe) from [<804d4b70>] (driver_probe_device+0x204/0x2b0)
[<804d4b70>] (driver_probe_device) from [<804d4cd4>] (__driver_attach+0xb8/0xbc)
[<804d4cd4>] (__driver_attach) from [<804d2f54>] (bus_for_each_dev+0x68/0x9c)
[<804d2f54>] (bus_for_each_dev) from [<804d3fe4>] (bus_add_driver+0x108/0x214)
[<804d3fe4>] (bus_add_driver) from [<804d53dc>] (driver_register+0x78/0xf4)
[<804d53dc>] (driver_register) from [<80e4a904>] (gpu_init+0x124/0x160)
[<80e4a904>] (gpu_init) from [<801017fc>] (do_one_initcall+0x44/0x170)
[<801017fc>] (do_one_initcall) from [<80e00dbc>] (kernel_init_freeable+0x154/0x1e4)
[<80e00dbc>] (kernel_init_freeable) from [<809b18a8>] (kernel_init+0x8/0x10c)
[<809b18a8>] (kernel_init) from [<801077f8>] (ret_from_fork+0x14/0x3c)
[galcore]: BUG ON @ gckOS_ReadRegisterEx(1649) (1)

0 Kudos

3,799 Views
igorpadykov
NXP Employee
NXP Employee

Hi William

please look at documentation in

https://www.nxp.com/webapp/Download?colCode=L4.9.11_1.0.0_LINUX_DOCS 

Best regards
igor

0 Kudos

3,799 Views
WilliamDillon
Contributor I

Hi Igor,

I've finally had time to get back to this problem.  I'm using the NXP 4.9.11 kernel, and my lightly-edited version of the imx6sl-evk.dts.  I'm still getting error -110 while trying to load the ath6kl driver.  It appears to be an issue with the emmc interrupts.

I reverted back to my community 4.4.80 driver, and tested to make sure there wasn't any hardware problem and there is not.  The device works perfectly in 4.4.80.  Re-loading the imx 4.9.11 kernel causes the problem to re-appear 100% of the time.

$ dmesg | grep ath6k

[ 0.000000] Kernel command line: console=ttymxc0,115200 mmcpart=5 root=/dev/mmcblk0p7 rootwait rw ath6kl_core.ath6kl_wifi_mac=00:e0:ee:00:05:2f bt_mac=00:e0:ee:00:05:2e sn=0001 pn=001-0611-00 mn=SAV-SST-W200-0 soft_s0
[ 7.595834] ath6kl: host only supports scatter of :1 entries, need: 16
[ 7.656850] ath6kl: ar6004 hw 3.0 sdio fw 3.5.0.349-1 api 5
[ 7.661135] ath6kl: firmware supports: 64bit-rates,map-lp-endpoint,ratetable-mcs15,no-ip-checksum
[ 7.772459] ath6kl: Firmware lacks RSN-CAP-OVERRIDE, so HT (802.11n) is disabled.
[ 10.196772] ath6kl: Failed to release sdio irq: -110
[ 10.229352] ath6kl: ath6kl_sdio_diag_write32: failed to write 0x100 to window data addr
[ 10.263894] ath6kl: failed to write 0x4000 during diagnose window to 0x100
[ 13.569209] ath6kl_sdio: probe of mmc2:0001:1 failed with error -110

The ath6kl driver itself doesn't have anything to do with the sdio irq; that's coming from usdhc, I think.

0 Kudos

3,799 Views
igorpadykov
NXP Employee
NXP Employee

Hi William

could you try with dts:

linux/arch/arm/boot/dts/imx6sl-evk.dts

imx6sl-evk.dts\dts\boot\arm\arch - linux-imx - i.MX Linux kernel 

and with Broadcom BCM4339 (unfortunately ath6kl driver is not officially supported

by nxp on this bsp release), description can be found in sect.4.12 Wi-FI BCM4339

attached Linux Manual.

Best regards
igor

0 Kudos

3,799 Views
WilliamDillon
Contributor I

Do you have documentation for building the NXP L4.9 from source, or a defconfig I can try?  The config I've been using results with linker errors with the NXP source code.

0 Kudos