This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

wl1271: ERROR sdio read failed (-110)

Other Parts Discussed in Thread: WL1271, AM3352

I'm bringing up a custom AM3352 board with wl1271 Wifi module.

I can bring up the interface initially and transfer data, but after a few minutes I start seeing " wl1271: ERROR sdio read failed (-110)" messages, then just now got the stack dump below.  I am using the 5.06 PSP.  How can I fix this?

[  621.299377] wl1271: ERROR sdio read failed (-110)
[  621.304443] wl1271: ERROR command complete timeout
[  621.312438] ------------[ cut here ]------------
[  621.319549] WARNING: at drivers/net/wireless/wl12xx/cmd.c:107 wl1271_cmd_send+0x36c/0x3c8 [wl12xx]()
[  621.331359] Modules linked in: wl12xx_sdio wl12xx mac80211 cfg80211
[  621.339172] Backtrace:
[  621.342315] [<c001bac4>] (dump_backtrace+0x0/0x10c) from [<c03ba4e4>] (dump_stack+0x18/0x1c)
[  621.352691]  r6:0000006b r5:bf0ffca8 r4:00000000 r3:00000002
[  621.359130] [<c03ba4cc>] (dump_stack+0x0/0x1c) from [<c0044024>] (warn_slowpath_common+0x54/0x6c)
[  621.369476] [<c0043fd0>] (warn_slowpath_common+0x0/0x6c) from [<c0044060>] (warn_slowpath_null+0x24/0x2c)
[  621.380371]  r8:00007bd2 r7:cf135e08 r6:00007b0a r5:ffffff92 r4:cf135760
[  621.387756] r3:00000009
[  621.390563] [<c004403c>] (warn_slowpath_null+0x0/0x2c) from [<bf0ffca8>] (wl1271_cmd_send+0x36c/0x3c8 [wl12xx])
[  621.402191] [<bf0ff93c>] (wl1271_cmd_send+0x0/0x3c8 [wl12xx]) from [<bf101dec>] (wl12xx_cmd_stop_fwlog+0x4c/0x78 [wl12xx])
[  621.414581] [<bf101da0>] (wl12xx_cmd_stop_fwlog+0x0/0x78 [wl12xx]) from [<bf0fef14>] (wl1271_recovery_work+0x1c8/0x2c8 [wl12xx])
[  621.427429]  r5:cf1357ac r4:cf135b50
[  621.431243] [<bf0fed4c>] (wl1271_recovery_work+0x0/0x2c8 [wl12xx]) from [<c00596b0>] (process_one_work+0x190/0x448)
[  621.443023] [<c0059520>] (process_one_work+0x0/0x448) from [<c005a2dc>] (worker_thread+0x15c/0x350)
[  621.453186] [<c005a180>] (worker_thread+0x0/0x350) from [<c005e2a0>] (kthread+0x8c/0x94)
[  621.462310] [<c005e214>] (kthread+0x0/0x94) from [<c0047368>] (do_exit+0x0/0x6a8)
[  621.470794]  r6:c0047368 r5:c005e214 r4:cf815eb0
[  621.475830] ---[ end trace ce100cd8b4228f17 ]---
[  621.480651] wl1271: ERROR failed to send stop firmware logger command
[  627.081024] wl1271: ERROR sdio read failed (-110)
[  632.680267] wl1271: ERROR sdio read failed (-110)
[  638.281677] wl1271: ERROR sdio read failed (-110)
[  638.288452] wl1271: Hardware recovery in progress. FW ver: Rev 6.3.0.0.77 pc: 0x1
[  638.298187] wl1271: down
[  638.301452] setting wifi radio off
[  638.309906] ieee80211 phy0: Hardware restart was requested
[  638.344757] setting wifi radio on
[  639.046203] wl1271: firmware booted (Rev 6.3.0.0.77)
[  639.155120] wl1271: Association completed.
[  846.551544] wl1271: ERROR sdio read failed (-110)
[  852.149261] wl1271: ERROR sdio read failed (-110)
[  857.746826] wl1271: ERROR sdio write failed (-110)
[  857.758728] wl1271: ERROR sdio write failed (-22)

  • Hi Sean,

    Can you provide the boot log? It seems like the WL1271 device is simply not being detected.

  • The wlan0 device definitely is being detected, as that was the problem I was battling over the last few days.  I can scan, see access points and associate with one, then things are good for a couple of minutes, then the errors start.

    Here's the bottom 2/3rds of my bootup log (had MMC_DEBUG on)

    ce omap4_rng
    [    2.663757] omap4_rng omap4_rng: OMAP4 Random Number Generator ver. 2.00
    [    2.670959] driver: 'omap4_rng': driver_bound: bound to device 'omap4_rng'
    [    2.678253] bus: 'platform': really_probe: bound device omap4_rng to driver omap4_rng
    [    2.805084] brd: module loaded
    [    2.880859] loop: module loaded
    [    2.886810] i2c-core: driver [tsl2550] using legacy suspend method
    [    2.893249] i2c-core: driver [tsl2550] using legacy resume method
    [    2.899841] bus: 'i2c': driver_probe_device: matched device 1-0051 with driver at24
    [    2.907897] bus: 'i2c': really_probe: probing driver at24 with device 1-0051
    [    2.915344] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
    [    2.975433] No daughter card found
    [    2.979003] driver: '1-0051': driver_bound: bound to device 'at24'
    [    2.985473] bus: 'i2c': really_probe: bound device 1-0051 to driver at24
    [    2.992492] bus: 'i2c': driver_probe_device: matched device 1-0050 with driver at24
    [    3.000518] bus: 'i2c': really_probe: probing driver at24 with device 1-0050
    [    3.007995] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
    [    3.023498] board is a SunDAC, emulating eeprom read
    [    3.028717] Board name: SUNDAC
    [    3.031890] Board version: 00A1
    [    3.035278] ********************************************* set u4 buffer enabled ***********************
    [    3.053497]  omap_hsmmc.0: alias fck already exists
    [    3.061492]  omap_hsmmc.2: alias fck already exists
    [    3.068115] configuring SunDAC wifi
    [    3.071807] Configure Bluetooth Enable pin...
    [    3.086639] registered am33xx_sr device
    [    3.090667] driver: '1-0050': driver_bound: bound to device 'at24'
    [    3.097320] bus: 'i2c': really_probe: bound device 1-0050 to driver at24
    [    3.127929] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    3.136627] omap2-nand driver initializing
    [    3.143310] OneNAND driver initializing
    [    3.169281] bus: 'platform': driver_probe_device: matched device davinci_mdio.0 with driver davinci_mdio
    [    3.179595] bus: 'platform': really_probe: probing driver davinci_mdio with device davinci_mdio.0
    [    3.235382] davinci_mdio davinci_mdio.0: davinci mdio revision 1.6
    [    3.241851] davinci_mdio davinci_mdio.0: detected phy mask 7ffffffe
    [    3.251800] bus: 'mdio_bus': driver_probe_device: matched device 0:00 with driver SMSC LAN8710/LAN8720
    [    3.261871] bus: 'mdio_bus': really_probe: probing driver SMSC LAN8710/LAN8720 with device 0:00
    [    3.271270] driver: '0:00': driver_bound: bound to device 'SMSC LAN8710/LAN8720'
    [    3.279052] bus: 'mdio_bus': really_probe: bound device 0:00 to driver SMSC LAN8710/LAN8720
    [    3.292877] davinci_mdio.0: probed
    [    3.296752] davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver SMSC LAN8710/LAN8720
    [    3.305297] davinci_mdio davinci_mdio.0: phy[31]: device 0:1f, driver unknown
    [    3.312835] driver: 'davinci_mdio.0': driver_bound: bound to device 'davinci_mdio'
    [    3.320770] bus: 'platform': really_probe: bound device davinci_mdio.0 to driver davinci_mdio
    [    3.335937] usbcore: registered new interface driver cdc_ether
    [    3.344451] usbcore: registered new interface driver cdc_eem
    [    3.351257] usbcore: registered new interface driver dm9601
    [    3.357330] cdc_ncm: 04-Aug-2011
    [    3.362823] usbcore: registered new interface driver cdc_ncm
    [    3.369079] Initializing USB Mass Storage driver...
    [    3.375091] usbcore: registered new interface driver usb-storage
    [    3.381561] USB Mass Storage support registered.
    [    3.393493] mousedev: PS/2 mouse device common for all mice
    [    3.407043] bus: 'platform': driver_probe_device: matched device am33xx-rtc with driver omap_rtc
    [    3.416625] bus: 'platform': really_probe: probing driver omap_rtc with device am33xx-rtc
    [    3.428466] omap_rtc am33xx-rtc: rtc core: registered am33xx-rtc as rtc0
    [    3.435791] am33xx-rtc: already running
    [    3.439788] driver: 'am33xx-rtc': driver_bound: bound to device 'omap_rtc'
    [    3.447082] bus: 'platform': really_probe: bound device am33xx-rtc to driver omap_rtc
    [    3.455841] i2c /dev entries driver
    [    3.471069] bus: 'platform': driver_probe_device: matched device omap_wdt with driver omap_wdt
    [    3.480377] bus: 'platform': really_probe: probing driver omap_wdt with device omap_wdt
    [    3.491943] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    3.498504] driver: 'omap_wdt': driver_bound: bound to device 'omap_wdt'
    [    3.505584] bus: 'platform': really_probe: bound device omap_wdt to driver omap_wdt
    [    3.526489] cpuidle: using governor ladder
    [    3.538604] cpuidle: using governor menu
    [    3.547210] bus: 'platform': driver_probe_device: matched device omap_hsmmc.0 with driver omap_hsmmc
    [    3.557037] bus: 'platform': really_probe: probing driver omap_hsmmc with device omap_hsmmc.0
    [    3.569183] omap_hsmmc_card_detect returning 1
    [    3.573883] driver: 'omap_hsmmc.0': driver_bound: bound to device 'omap_hsmmc'
    [    3.581817] bus: 'platform': really_probe: bound device omap_hsmmc.0 to driver omap_hsmmc
    [    3.590728] bus: 'platform': driver_probe_device: matched device omap_hsmmc.2 with driver omap_hsmmc
    [    3.600311] bus: 'platform': really_probe: probing driver omap_hsmmc with device omap_hsmmc.2
    [    3.619171] driver: 'omap_hsmmc.2': driver_bound: bound to device 'omap_hsmmc'
    [    3.627044] bus: 'platform': really_probe: bound device omap_hsmmc.2 to driver omap_hsmmc
    [    3.636627] omap4_aes_mod_init: loading AM33X AES driver
    [    3.645629] bus: 'platform': driver_probe_device: matched device omap4-aes with driver omap4-aes
    [    3.654876] bus: 'platform': really_probe: probing driver omap4-aes with device omap4-aes
    [    3.663665] omap4-aes omap4-aes: AM33X AES hw accel rev: 3.02
    [    3.671752] omap4_aes_probe: probe() done
    [    3.676147] driver: 'omap4-aes': driver_bound: bound to device 'omap4-aes'
    [    3.683319] bus: 'platform': really_probe: bound device omap4-aes to driver omap4-aes
    [    3.694366] omap4_sham_mod_init: loading AM33X SHA/MD5 driver
    [    3.700805] bus: 'platform': driver_probe_device: matched device omap4-sham with driver omap4-sham
    [    3.710327] bus: 'platform': really_probe: probing driver omap4-sham with device omap4-sham
    [    3.719390] omap4-sham omap4-sham: AM33X SHA/MD5 hw accel rev: 4.03
    [    3.732330] mmc0: host does not support reading read-only switch. assuming write-enable.
    [    3.747344] mmc0: new high speed SD card at address b368
    [    3.760467] bus: 'mmc': driver_probe_device: matched device mmc0:b368 with driver mmcblk
    [    3.772857] bus: 'mmc': really_probe: probing driver mmcblk with device mmc0:b368
    [    3.782470] omap4_sham_probe: probe() done
    [    3.787017] driver: 'omap4-sham': driver_bound: bound to device 'omap4-sham'
    [    3.794403] bus: 'platform': really_probe: bound device omap4-sham to driver omap4-sham
    [    3.805786] mmcblk0: mmc0:b368       1.91 GiB
    [    3.819641]  mmcblk0: p1 p2
    [    3.843597] usbcore: registered new interface driver usbhid
    [    3.850921] driver: 'mmc0:b368': driver_bound: bound to device 'mmcblk'
    [    3.858093] usbhid: USB HID core driver
    [    3.862152] nf_conntrack version 0.5.0 (3877 buckets, 15508 max)
    [    3.868530] bus: 'mmc': really_probe: bound device mmc0:b368 to driver mmcblk
    [    3.876220] setting wifi radio on
    [    3.886657] ip_tables: (C) 2000-2006 Netfilter Core Team
    [    3.892547] TCP cubic registered
    [    3.905426] NET: Registered protocol family 10
    [    3.926239] IPv6 over IPv4 tunneling driver
    [    3.948822] NET: Registered protocol family 17
    [    3.953552] Registering the dns_resolver key type
    [    3.975891] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    3.983947] ThumbEE CPU extension supported.
    [    4.005340] mux: Failed to setup hwmod io irq -22
    [    4.029083] Power Management for AM33XX family
    [    4.033996] bus: 'platform': driver_probe_device: matched device smartreflex with driver smartreflex
    [    4.043945] bus: 'platform': really_probe: probing driver smartreflex with device smartreflex
    [    4.052978] Compensating OPP0 for 0mV Orig nvalue:0x999584 New nvalue:0x999584
    [    4.060699] Compensating OPP1 for 0mV Orig nvalue:0x999584 New nvalue:0x999584
    [    4.072906] mmc1: card claims to support voltages below the defined range. These will be ignored.
    [    4.083343] Compensating OPP0 for 0mV Orig nvalue:0x99a499 New nvalue:0x99a499
    [    4.091094] Compensating OPP1 for 0mV Orig nvalue:0x999386 New nvalue:0x999386
    [    4.098815] Compensating OPP2 for 0mV Orig nvalue:0x9a84ee New nvalue:0x9a84ee
    [    4.106506] Compensating OPP3 for 0mV Orig nvalue:0xaae4ce New nvalue:0xaae4ce
    [    4.118072] create_regulator: VDD1: Failed to create debugfs directory
    [    4.131286] smartreflex smartreflex: am33xx_sr_probe: Driver initialized
    [    4.143096] mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
    [    4.150482] driver: 'smartreflex': driver_bound: bound to device 'smartreflex'
    [    4.159240] mmc1: new SDIO card at address 0001
    [    4.166076] bus: 'platform': really_probe: bound device smartreflex to driver smartreflex
    [    4.177246] bus: 'mmc': driver_probe_device: matched device mmc1:0001 with driver mmcblk
    [    4.186431] clock: disabling unused clocks to save power
    [    4.192993] bus: 'mmc': really_probe: probing driver mmcblk with device mmc1:0001
    [    4.205718] mmcblk: probe of mmc1:0001 rejects match -19
    [    4.211303] setting wifi radio off
    [    4.222198] bus: 'platform': driver_probe_device: matched device cpsw with driver cpsw
    [    4.236389] bus: 'platform': really_probe: probing driver cpsw with device cpsw
    [    4.247009] Detected MACID=bc:6a:29:57:d0:46
    [    4.261779] cpsw: Detected MACID = bc:6a:29:57:d0:47
    [    4.274597] driver: 'cpsw': driver_bound: bound to device 'cpsw'
    [    4.281219] bus: 'platform': really_probe: bound device cpsw to driver cpsw
    [    4.295684] omap_rtc am33xx-rtc: setting system clock to 2000-01-01 01:04:58 UTC (946688698)
    [    4.309295] EXT4-fs (mmcblk0p2): mounting ext3 file system using the ext4 subsystem
    [    4.356140] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    4.365081] VFS: Mounted root (ext3 filesystem) readonly on device 179:2.
    [    4.372741] Freeing init memory: 216K
    [    9.053741] cfg80211: Calling CRDA to update world regulatory domain
    [    9.618469] bus: 'sdio': driver_probe_device: matched device mmc1:0001:1 with driver wl1271_sdio
    [    9.766845] bus: 'sdio': really_probe: probing driver wl1271_sdio with device mmc1:0001:1
    [    9.775604] setting wifi radio on
    [   11.009643] wl1271_sdio: probe of mmc1:0001:1 rejects match -19
    [   11.015930] setting wifi radio off
    [   11.060058] bus: 'sdio': driver_probe_device: matched device mmc1:0001:2 with driver wl1271_sdio
    [   11.129913] bus: 'sdio': really_probe: probing driver wl1271_sdio with device mmc1:0001:2
    [   11.166839] setting wifi radio on
    [   11.844818] wl1271: loaded
    [   11.858032] driver: 'mmc1:0001:2': driver_bound: bound to device 'wl1271_sdio'
    [   11.865631] bus: 'sdio': really_probe: bound device mmc1:0001:2 to driver wl1271_sdio
    [   11.892761] setting wifi radio off
    [   13.654693] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
    [   22.675231] net eth0: CPSW phy found : id is : 0x7c0f1
    [   22.689880] ADDRCONF(NETDEV_UP): eth0: link is not ready
    [   25.667083] PHY: 0:00 - Link is Up - 10/Full
    [   25.671813] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    [   36.526519] eth0: no IPv6 routers present

  • Sean,

    I remember now. You were asking about the mmc issue in a previous thread.

    What is the driver version you are using? What messages do you see after loading wl12xx.ko and wl12xx_sdio.ko modules?
    The strange thing I got from your log is that the drivers were not initialized properly, but you somehow got it working for a while before see this crash message.

  • I am using whatever drivers are included in the 5.06 PSP.

    After inserting the Wifi kernel modules I see:

    root@arm:~# modprobe wl12xx_sdio
    [ 1507.708435] cfg80211: Calling CRDA to update world regulatory domain
    [ 1507.925659] bus: 'sdio': driver_probe_device: matched device mmc1:0001:1 with driver wl1271_sdio
    [ 1507.935058] bus: 'sdio': really_probe: probing driver wl1271_sdio with device mmc1:0001:1
    [ 1508.072692] wl1271_sdio: probe of mmc1:0001:1 rejects match -19
    [ 1508.082031] bus: 'sdio': driver_probe_device: matched device mmc1:0001:2 with driver wl1271_sdio
    [ 1508.093109] bus: 'sdio': really_probe: probing driver wl1271_sdio with device mmc1:0001:2
    [ 1508.507873] wl1271: loaded
    [ 1508.510833] driver: 'mmc1:0001:2': driver_bound: bound to device 'wl1271_sdio'
    [ 1508.535949] bus: 'sdio': really_probe: bound device mmc1:0001:2 to driver wl1271_sdio
    root@arm:~#

    which parts of the bootup log indicate the drivers not being initialized correctly?

  • Hi Sean,

    Can you double check if your hardware is all properly functioning? We've never seen this issue before either.

    We'll see what we can do.

  • I''m not sure how to test the Wifi beyond bringing up the interface, associating and transferring data.  However this is what exposes the problem.  Can you suggest any lower level tests to run or any other way of further diagnosing the problem?  I am seeing occasional errors on my MMC0 SD card interface too, not sure if that's related.

  • This issue has been resolved.  The massive amount of SDIO read failures were caused by overdriving the 1.8V enable pin with a 3.3V GPIO. The AM335x was unable to establish communication with a powered down WiLink chip.

  • Thanks Michael,

    Good to know that the issue is solved.
    I'm sorry I wasn't able to provide much help. Will certainly make a note of this thread for future reference.