Are there any SDIO Wifi modules that have already been used successfully with the TK1 running the OpenEmbedded Linux BSP?

I am using Apalis-TK1_LXDE-Image_2.7.5 and I am trying to get a Laird ST60-2230C module working. My problem is that I can’t get the SDIO to initialize properly. This is the job of the core mmc drivers so I’m not even to the point of using the backport drivers provided by Laird.

The module operates at 1.8V so I removed R46-R54 (I’m using the Apalis Evaluation Board) in order to use MMC1. After doing this, I was able to use at UHS-I card in MMC1. I was also able to use a UHS-I card in MMC2 which still has the pullups… Attempting to use the SDIO wifi modem on each of the mmc ports, I fail in slightly different ways:

MMC1 (3.3V pullups removed):

All tap values fail (Some of the debug statements are added by me):

[ 2250.835866] Selecting Voltage.

[ 2250.839716] About to detect and init the card.

[ 2250.844754] UHS mode

[ 2250.847454] Init the card.

[ 2250.965791] sdhci-tegra sdhci-tegra.0: Found T2T coeffs data

[ 2250.974404] sdhci-tegra sdhci-tegra.0: 200MHz tap hole coeffs found

[ 2254.057331] sdhci-tegra sdhci-tegra.0: All tap values(0-255) failed

[ 2254.064570] [sched_delayed] sched: RT throttling activated

[ 2254.071625] sdhci-tegra sdhci-tegra.0: Failed to get tap win -22

[ 2254.082651] Failed once.

[ 2254.086796] mmc1: error -22 whilst initialising SDIO card

Then I get an interrupt for Command CRC and END bit error when drivers/mmc/core/sdio.c calls
sdio_init_func (again some debug statements added by me in order to see how far the core mmc drivers were making it).:

[ 2254.160247] Entered mmc_attach_sdio.

[ 2254.164282] Calling mmc_attach_bus.

[ 2254.167811] Selecting Voltage.

[ 2254.170917] About to detect and init the card.

[ 2254.175361] UHS mode

[ 2254.177554] Init the card.

[ 2254.218974] Time to enable runtime PM.

[ 2254.222734] Initialize all present functions.

[ 2254.227293] Addding function.

[ 2254.230394] Addding function EMBEDDED_SDIO.

[ 2254.234595] Call sdio_init_func.

[ 2254.240986] sdhci: =========== REGISTER DUMP (mmc1)===========

[ 2254.246997] sdhci: Sys addr: 0x00000000 | Version: 0x00000303

[ 2254.252822] sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000

[ 2254.258647] sdhci: Argument: 0x00020000 | Trn mode: 0x00000000

[ 2254.264472] sdhci: Present: 0x01fb0000 | Host ctl: 0x00000003

[ 2254.270296] sdhci: Power: 0x0000000d | Blk gap: 0x00000000

[ 2254.276120] sdhci: Wake-up: 0x00000000 | Clock: 0x00000007

[ 2254.281944] sdhci: Timeout: 0x00000000 | Int stat: 0x00000000

[ 2254.287769] sdhci: Int enab: 0x00ff0003 | Sig enab: 0x00fc0003

[ 2254.293594] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000

[ 2254.299419] sdhci: Caps: 0x376fd080 | Caps_1: 0x10002f73

[ 2254.305243] sdhci: Cmd: 0x0000341a | Max curr: 0x00000000

[ 2254.311067] sdhci: Host ctl2: 0x0000300b

[ 2254.314984] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0xae842020

[ 2254.320806] sdhci: ===========================================

[ 2254.326630] mmc1: Command CRC or END bit error, intmask: e0001

[ 2254.332881] mmc1: error -84 whilst initialising SDIO card

MMC2 (3.3V pullups still in place):

On MMC2, it succeeds in finding a best tap value but then still fails with the same interrupt when calling sdio_init_func

Do you know what might be the reason that the best tap value search is succeeding on the port that is out of spec (still has the 3.3V pull-ups) and not on the port with the pull-ups removed? Again, both ports work with a UHS-I card.

Any other insights into debugging this issue? I asked the questions about whether or not other SDIO wifi modules are known to work because I fear that this could take a lot of time to debug and dive fairly deep…

Yes, we’ve tested multiple SDIO WiFi devices with Apalis TK1 and our other modules.
We’ve tested devices based on this chipsets:
Marvell 88W8897, 88W8787
Qualcomm Ath10k

It turned out that my problem was the length of the ribbon cable provided with the wifi dev kit. When I soldered and SD connected directly to the dev kit in order to eliminate this distance, SDIO initialization completed successfully.