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!!
Hi William
one can try with nxp official L4.9.11 described on below link as L4.9.83 is not supported by 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!
-----------------------------------------------------------------------------------------------------------------------
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.
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)
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
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.
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
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.