Correction: occasionally wl1271_sdio initialization still fails with
error messages such as
[ 46.961364] wl1271_sdio: probe of mmc1:0001:1 failed with error -16
[ 46.967834] wl1271_sdio: probe of mmc1:0001:2 failed with error -16
other times
[ 27.302215][ T903] wl1271_sdio mmc1:0001:2: wl12xx_sdio_power_on:
failed to get_sync(-22)
or
root@pte2000:~# ifup wlan0
[ 53.799468][ T2420] wl1271_sdio mmc1:0001:2: wl12xx_sdio_power_on:
failed to get_sync(-110)
[ 53.840118][ T2420] wl1271_sdio mmc1:0001:2: wl12xx_sdio_power_on:
failed to get_sync(-22)
[ 53.879882][ T2420] wl1271_sdio mmc1:0001:2: wl12xx_sdio_power_on:
failed to get_sync(-22)
[ 53.888610][ T2420] wlcore: ERROR firmware boot failed despite 3 retries
RTNETLINK answers: Invalid argument
ifup: failed to bring up wlan0
On 6/21/20 11:23 AM, Oskar Enoksson wrote:
Yes, it turned out that when I use the omap3-sbc-3730 devicetree then
wifi starts up ok.
I used omap3-cm-t3730 devicetree since I just use the CM T3730 on a
custom carrier board which does not have any of the stuff on the T35 board
(Actually I wrote a custom device tree inheriting from
omap3-cm-t3730.dts adding a few things needed for my carrier board).
After some experiments I deduce that the only thing missing in
omap3-cm-t3730.dts is the compatible line needs to start with
"compulab,omap3-sbc-t3730".
There is a function "omap3_sbc_t3730_legacy_init" in
arch/arm/mach-omap2/pdata-quirks.c which seems to be triggered by the
string "compulab,omap3-sbc-t3730". My guess is that this is needed for
wifi to be initialized.
Maybe this should better be triggered by "compulab,omap3-cm-t3730"
instead, since the wifi functionality has nothing to do with the t35 board?
On 6/19/20 9:55 AM, H. Nikolaus Schaller wrote:
Hi,
Am 15.06.2020 um 23:04 schrieb Oskar Enoksson <enok@xxxxxxxxxxxxxx>:
Hello all, sorry to bother, I'm urgently in need of some help/hints.
I'm trying to make wifi work on an Compulab CM-T3730, an old OMAP3
board with WL1271 Wifi chip connected to an mmc via SDIO.
I managed to boot the PandaBoard ES with v5.8-rc1 and there, the
wl1271 works.
So it may be an omap3 or board specific issue.
BR,
Nikolaus
Everything works with the kernel supported by Texas Instruments
3.0.87 but I need a newer kernel. There is a device tree file
omap3-cm-t3730.dts in the Linux mainline sourcees, but it doesn't
work for me, the Wifi chip is not detected on the SDIO bus. I'm using
mainline linux 5.6.18, but I also tried 4.14, 4.9 and 3.16 with
similar results.
What could be the problem?
When I boot I can see (by enabling various verbose printouts) that
the appropriate mmc is bound to the right driver omap_hsmmc, but no
device is detected on the SDIO bus. Some power pin messages look
worrying but maybe it's ok?:
[ 4.584228] platform 480b4000.mmc: Retrying from deferred list
[ 4.584808] bus: 'platform': driver_probe_device: matched device
480b4000.mmc with driver omap_hsmmc
[ 4.584838] bus: 'platform': really_probe: probing driver
omap_hsmmc with device 480b4000.mmc
[ 4.585083] omap_hsmmc 480b4000.mmc: no init pinctrl state
[ 4.585144] omap_hsmmc 480b4000.mmc: no sleep pinctrl state
[ 4.585174] omap_hsmmc 480b4000.mmc: no idle pinctrl state
[ 4.585571] omap_hsmmc 480b4000.mmc: GPIO lookup for consumer wp
[ 4.585571] omap_hsmmc 480b4000.mmc: using device tree for GPIO
lookup
[ 4.585662] of_get_named_gpiod_flags: can't parse 'wp-gpios'
property of node '/ocp@68000000/mmc@480b4000[0]'
[ 4.585723] of_get_named_gpiod_flags: can't parse 'wp-gpio'
property of node '/ocp@68000000/mmc@480b4000[0]'
[ 4.585754] omap_hsmmc 480b4000.mmc: using lookup tables for GPIO
lookup
[ 4.585784] omap_hsmmc 480b4000.mmc: No GPIO consumer wp found
[ 4.586669] omap_hsmmc 480b4000.mmc: Looking up vmmc-supply from
device tree
[ 4.587097] devices_kset: Moving 480b4000.mmc to end of list
[ 4.587127] omap_hsmmc 480b4000.mmc: Linked as a consumer to
regulator.9
[ 4.587158] omap_hsmmc 480b4000.mmc: Looking up vqmmc-supply from
device tree
[ 4.587615] devices_kset: Moving 480b4000.mmc to end of list
[ 4.587646] omap_hsmmc 480b4000.mmc: Linked as a consumer to
regulator.6
[ 4.587677] omap_hsmmc 480b4000.mmc: Looking up pbias-supply from
device tree
[ 4.587738] omap_hsmmc 480b4000.mmc: Looking up pbias-supply
property in node /ocp@68000000/mmc@480b4000 failed
[ 4.587860] device: 'mmc1': device_add
[ 4.613861] driver: 'omap_hsmmc': driver_bound: bound to device
'480b4000.mmc'
[ 4.614105] bus: 'platform': really_probe: bound device
480b4000.mmc to driver omap_hsmmc
When I manually modprobe wlcore, then wlcore_sdio, then wl12xx, dmesg
shows:
[ 49.467132] device class 'rfkill': registering
[ 49.467376] device: 'rfkill': device_add
[ 50.070983] device class 'ieee80211': registering
[ 50.072143] Registering platform device 'regulatory.0'. Parent at
platform
[ 50.072174] device: 'regulatory.0': device_add
[ 50.072235] bus: 'platform': add device regulatory.0
[ 50.072906] cfg80211: Loading compiled-in X.509 certificates for
regulatory database
[ 50.173675] cfg80211: Loaded X.509 cert 'sforshee:
00b28ddf47aef9cea7'
[ 54.470794] bus: 'sdio': add driver wl1271_sdio
[ 59.017272] bus: 'platform': add driver wl12xx_driver
Still, no wlan0 interface visible with "ifconfig -a"
Is something wrong/missing in the devicetree? cap-sdio-irq?
mmc-pwrseq? Or is the pin configuration in the device tree wrong? Did
anyone ever try the device tree on a board with wl1271 wifi (it is
optional)? I don't even have a schematic so I can't double check the
pins.
Hints much appreciated!! Device tree file is attached (from mainline
kernel 5.6.18)
<omap3-cm-t3730.dts>