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 read/write fail

Other Parts Discussed in Thread: WL1271, TPS65910

Hello,

I am having trouble bringing up my Wi-Fi interface with AM335x. Below is issue summary:

Hardware and Software Setup Information: 

AM335x connected with LSR's TiWi-BLE on MMC1 interface (WL EN on GPIO1.15, WLAN_IRQ on GPIO3.4).

I am not using Bluetooth interface of the chip.

I am using WL12xx driver package as described in  http://processors.wiki.ti.com/index.php/WL12xx_NLCP_Build_Instructions. Board file is changes as described in http://processors.wiki.ti.com/index.php/WL127x_Porting_Guide

Issue Description:

WL1271 driver is not able to perform read / write with the chipset. Driver stalls at the point where it wants to read hardware information from the chipset. 

Boot log:

Booting from mmc ...
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Linux-3.2.0
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3196120 Bytes = 3 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[ 0.000000] Linux version 3.2.0 (user@ubuntu) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-2013031C 2013.03) ) #0 Wed Aug 27 10:35:17 EDT 2014
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: am335xevm
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] AM335X ES2.1 (neon )
[ 0.000000] ------------[ cut here ]------------
[ 0.000000] WARNING: at arch/arm/mach-omap2/clkt_clksel.c:196 omap2_clksel_recalc+0xe8/0x18c()
[ 0.000000] clock: Could not find fieldval 0 for clock dpll_core_m6_ck parent dpll_core_x2_ck
[ 0.000000] Modules linked in:
[ 0.000000] Backtrace:
[ 0.000000] [<c0017dbc>] (dump_backtrace+0x0/0x10c) from [<c041451c>] (dump_stack+0x18/0x1c)
[ 0.000000] r6:c0030c14 r5:00000009 r4:c05d5e78 r3:c05f7fcc
[ 0.000000] [<c0414504>] (dump_stack+0x0/0x1c) from [<c003f504>] (warn_slowpath_common+0x54/0x6c)
[ 0.000000] [<c003f4b0>] (warn_slowpath_common+0x0/0x6c) from [<c003f5c0>] (warn_slowpath_fmt+0x38/0x40)
[ 0.000000] r8:80000200 r7:c0636540 r6:00000000 r5:c05e8c38 r4:00000000
[ 0.000000] r3:00000009
[ 0.000000] [<c003f588>] (warn_slowpath_fmt+0x0/0x40) from [<c0030c14>] (omap2_clksel_recalc+0xe8/0x18c)
[ 0.000000] r3:00000000 r2:c050219c
[ 0.000000] [<c0030b2c>] (omap2_clksel_recalc+0x0/0x18c) from [<c0035a94>] (propagate_rate+0x34/0x54)
[ 0.000000] r7:c0653de4 r6:c0653e1c r5:c05e8b38 r4:c05e8c38
[ 0.000000] [<c0035a60>] (propagate_rate+0x0/0x54) from [<c0035aa0>] (propagate_rate+0x40/0x54)
[ 0.000000] r5:c05e8adc r4:c05e8b24
[ 0.000000] [<c0035a60>] (propagate_rate+0x0/0x54) from [<c0035aa0>] (propagate_rate+0x40/0x54)
[ 0.000000] r5:c05e8a24 r4:c05e8ac8
[ 0.000000] [<c0035a60>] (propagate_rate+0x0/0x54) from [<c0035aa0>] (propagate_rate+0x40/0x54)
[ 0.000000] r5:c05e8910 r4:c05e8a10
[ 0.000000] [<c0035a60>] (propagate_rate+0x0/0x54) from [<c0035c04>] (recalculate_root_clocks+0x40/0x58)
[ 0.000000] r5:c05f772c r4:c05e88fc
[ 0.000000] [<c0035bc4>] (recalculate_root_clocks+0x0/0x58) from [<c05a6bd8>] (am33xx_clk_init+0x84/0xac)
[ 0.000000] r5:c05e878c r4:c05e878c
[ 0.000000] [<c05a6b54>] (am33xx_clk_init+0x0/0xac) from [<c05a6920>] (omap3xxx_clk_init+0xe0/0x314)
[ 0.000000] r5:c086e840 r4:00003517
[ 0.000000] [<c05a6840>] (omap3xxx_clk_init+0x0/0x314) from [<c05a05b8>] (am33xx_init_early+0x3c/0x40)
[ 0.000000] r7:c0653de4 r6:c0653e1c r5:c086e840 r4:c05c6564
[ 0.000000] [<c05a057c>] (am33xx_init_early+0x0/0x40) from [<c059cde0>] (setup_arch+0x714/0x804)
[ 0.000000] [<c059c6cc>] (setup_arch+0x0/0x804) from [<c05995a4>] (start_kernel+0x78/0x2dc)
[ 0.000000] [<c059952c>] (start_kernel+0x0/0x2dc) from [<80008040>] (0x80008040)
[ 0.000000] r6:c05c79e0 r5:c05d6084 r4:10c53c7d
[ 0.000000] ---[ end trace 1b75b31a2719ed1c ]---
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024
[ 0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 ro rootfstype=ext3 rootwait ip=none
[ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Memory: 256MB = 256MB total
[ 0.000000] Memory: 253272k/253272k available, 8872k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0599000 (5700 kB)
[ 0.000000] .init : 0xc0599000 - 0xc05d4000 ( 236 kB)
[ 0.000000] .data : 0xc05d4000 - 0xc063e388 ( 425 kB)
[ 0.000000] .bss : 0xc063e3ac - 0xc066d164 ( 188 kB)
[ 0.000000] NR_IRQS:396
[ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
[ 0.000000] Total of 128 interrupts on 1 active controller
[ 0.000000] OMAP clockevent source: GPTIMER2 at 24000000 Hz
[ 0.000000] OMAP clocksource: GPTIMER1 at 32768 Hz
[ 0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms
[ 0.000000] Console: colour dummy device 80x30
[ 0.000335] Calibrating delay loop... 298.59 BogoMIPS (lpj=1492992)
[ 0.067321] pid_max: default: 32768 minimum: 301
[ 0.067596] Security Framework initialized
[ 0.067779] Mount-cache hash table entries: 512
[ 0.068481] CPU: Testing write buffer coherency: ok
[ 0.096191] omap_hwmod: gfx: failed to hardreset
[ 0.116271] omap_hwmod: pruss: failed to hardreset
[ 0.118499] print_constraints: dummy:
[ 0.119293] NET: Registered protocol family 16
[ 0.123840] OMAP GPIO hardware version 0.1
[ 0.129699] omap_mux_init: Add partition: #1: core, flags: 0
[ 0.133911] omap_i2c.1: alias fck already exists
[ 0.135803] omap2_mcspi.1: alias fck already exists
[ 0.136322] omap2_mcspi.2: alias fck already exists
[ 0.138519] edma.0: alias fck already exists
[ 0.138580] edma.0: alias fck already exists
[ 0.138610] edma.0: alias fck already exists
[ 0.200531] bio: create slab <bio-0> at 0
[ 0.205322] SCSI subsystem initialized
[ 0.208892] usbcore: registered new interface driver usbfs
[ 0.209594] usbcore: registered new interface driver hub
[ 0.210021] usbcore: registered new device driver usb
[ 0.210632] registerd cppi-dma Intr @ IRQ 17
[ 0.210662] Cppi41 Init Done Qmgr-base(d087a000) dma-base(d0878000)
[ 0.210693] Cppi41 Init Done
[ 0.210754] musb-ti81xx musb-ti81xx: musb0, board_mode=0x13, plat_mode=0x3
[ 0.211364] musb-ti81xx musb-ti81xx: musb1, board_mode=0x13, plat_mode=0x1
[ 0.213897] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 100 kHz
[ 0.216888] tps65910 1-002d: could not be detected
[ 0.219970] Advanced Linux Sound Architecture Driver Version 1.0.24.
[ 0.222320] Switching to clocksource gp timer
[ 0.258087] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
[ 0.258422] musb-hdrc musb-hdrc.0: dma type: dma-cppi41
[ 0.259094] MUSB0 controller's USBSS revision = 4ea20800
[ 0.259185] musb0: Enabled SW babble control
[ 0.261230] musb-hdrc musb-hdrc.0: USB OTG mode controller at d083c000 using DMA, IRQ 18
[ 0.261535] musb-hdrc musb-hdrc.1: dma type: dma-cppi41
[ 0.262207] MUSB1 controller's USBSS revision = 4ea20800
[ 0.262268] musb1: Enabled SW babble control
[ 0.263305] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
[ 0.263488] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1
[ 0.263732] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 0.263763] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.263793] usb usb1: Product: MUSB HDRC host driver
[ 0.263824] usb usb1: Manufacturer: Linux 3.2.0 musb-hcd
[ 0.263854] usb usb1: SerialNumber: musb-hdrc.1
[ 0.265716] hub 1-0:1.0: USB hub found
[ 0.265777] hub 1-0:1.0: 1 port detected
[ 0.267028] musb-hdrc musb-hdrc.1: USB Host mode controller at d083e800 using DMA, IRQ 19
[ 0.267883] NET: Registered protocol family 2
[ 0.268218] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.268798] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.269195] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.269409] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.269439] TCP reno registered
[ 0.269470] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.269531] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.269958] NET: Registered protocol family 1
[ 0.270477] RPC: Registered named UNIX socket transport module.
[ 0.270507] RPC: Registered udp transport module.
[ 0.270507] RPC: Registered tcp transport module.
[ 0.270538] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.270996] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.291076] VFS: Disk quotas dquot_6.5.2
[ 0.291198] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.292358] msgmni has been set to 494
[ 0.298950] alg: No test for stdrng (krng)
[ 0.300262] io scheduler noop registered
[ 0.300292] io scheduler deadline registered
[ 0.300445] io scheduler cfq registered (default)
[ 0.302734] Could not set LED4 to fully on
[ 0.305999] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0
[ 1.130035] console [ttyO0] enabled
[ 1.135192] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1
[ 1.143707] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2
[ 1.152038] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3
[ 1.160461] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4
[ 1.168853] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5
[ 1.178222] omap4_rng omap4_rng: OMAP4 Random Number Generator ver. 2.00
[ 1.206634] brd: module loaded
[ 1.221282] loop: module loaded
[ 1.225097] i2c-core: driver [tsl2550] using legacy suspend method
[ 1.231658] i2c-core: driver [tsl2550] using legacy resume method
[ 1.238281] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
[ 1.303009] No daughter card found
[ 1.306732] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
[ 1.322113] Board name: A335WIFI
[ 1.325592] Board version: 100A
[ 1.328918] The board is a AM335x DEMO WiFi < Rev A1.
[ 1.336120] omap_hsmmc.0: alias fck already exists
[ 1.341979] omap_hsmmc.1: alias fck already exists
[ 1.347930] wl12xx_init START
[ 1.350921] wl12xx configure for DEMO Wifi
[ 1.355743] wl12xx using interrupt 260
[ 1.359710] wl12xx using interrupt pin 0x00000064
[ 1.364807] wl12xx_init STEP1
[ 1.367797] wl12xx_init STEP 2
[ 1.371032] wl12xx_init END
[ 1.374053] _regulator_get: l3_main.0 supply vdd_core not found, using dummy regulator
[ 1.382751] am335x_opp_update: physical regulator not present for core(-22)
[ 1.390838] registered am33xx_sr device
[ 1.398803] mtdoops: mtd device (mtddev=name/number) must be supplied
[ 1.406433] omap2-nand driver initializing
[ 1.411102] OneNAND driver initializing
[ 1.417999] CAN device driver interface
[ 1.422027] CAN bus driver for Bosch D_CAN controller 1.0
[ 1.429565] usbcore: registered new interface driver zd1201
[ 1.435913] usbcore: registered new interface driver cdc_ether
[ 1.442443] usbcore: registered new interface driver cdc_eem
[ 1.448822] usbcore: registered new interface driver dm9601
[ 1.454833] cdc_ncm: 04-Aug-2011
[ 1.458618] usbcore: registered new interface driver cdc_ncm
[ 1.464660] Initializing USB Mass Storage driver...
[ 1.470336] usbcore: registered new interface driver usb-storage
[ 1.476745] USB Mass Storage support registered.
[ 1.482574] mousedev: PS/2 mouse device common for all mice
[ 1.490783] omap_rtc am33xx-rtc: rtc core: registered am33xx-rtc as rtc0
[ 1.498016] am33xx-rtc: already running
[ 1.502502] i2c /dev entries driver
[ 1.507110] Linux video capture interface: v2.00
[ 1.512725] usbcore: registered new interface driver uvcvideo
[ 1.518859] USB Video Class driver (1.1.1)
[ 1.526214] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[ 1.533172] _regulator_get: deviceless supply vdd_mpu not found, using dummy regulator
[ 1.542449] cpuidle: using governor ladder
[ 1.548004] cpuidle: using governor menu
[ 1.557952] omap4_aes_mod_init: loading AM33X AES driver
[ 1.563873] omap4-aes omap4-aes: AM33X AES hw accel rev: 3.02
[ 1.570983] omap4_aes_probe: probe() done
[ 1.576080] omap4_sham_mod_init: loading AM33X SHA/MD5 driver
[ 1.582397] omap4-sham omap4-sham: AM33X SHA/MD5 hw accel rev: 4.03
[ 1.607452] omap4_sham_probe: probe() done
[ 1.617370] usbcore: registered new interface driver usbhid
[ 1.623352] usbhid: USB HID core driver
[ 1.629241] usbcore: registered new interface driver snd-usb-audio
[ 1.639282] ALSA device list:
[ 1.642425] No soundcards found.
[ 1.646118] oprofile: hardware counters not available
[ 1.651458] oprofile: using timer interrupt.
[ 1.656036] nf_conntrack version 0.5.0 (3957 buckets, 15828 max)
[ 1.663391] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 1.669219] TCP cubic registered
[ 1.672637] NET: Registered protocol family 17
[ 1.677368] can: controller area network core (rev 20090105 abi 8)
[ 1.684082] NET: Registered protocol family 29
[ 1.688751] can: raw protocol (rev 20090105)
[ 1.693267] can: broadcast manager protocol (rev 20090105 t)
[ 1.699279] Registering the dns_resolver key type
[ 1.704376] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[ 1.712463] ThumbEE CPU extension supported.
[ 1.717102] mux: Failed to setup hwmod io irq -22
[ 1.723480] Power Management for AM33XX family
[ 1.728515] Trying to load am335x-pm-firmware.bin (60 secs timeout)
[ 1.735504] Copied the M3 firmware to UMEM
[ 1.739990] Cortex M3 Firmware Version = 0x181
[ 1.745086] _regulator_get: deviceless supply vdd_core not found, using dummy regulator
[ 1.753723] smartreflex smartreflex: am33xx_sr_probe: cannot determine opp
[ 1.761016] smartreflex: probe of smartreflex failed with error -22
[ 1.768707] sr_init: platform driver register failed
[ 1.780944] clock: disabling unused clocks to save power
[ 1.812530] mmc0: host does not support reading read-only switch. assuming write-enable.
[ 1.825225] mmc0: new high speed SDHC card at address aaaa
[ 1.832550] mmcblk0: mmc0:aaaa SU08G 7.40 GiB
[ 1.840545] mmcblk0: p1 p2
[ 1.845794] omap_rtc am33xx-rtc: setting system clock to 2014-05-08 06:01:37 UTC (1399528897)
[ 1.856719] set_power - 1
[ 1.940277] kjournald starting. Commit interval 5 seconds
[ 1.946258] EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
[ 1.953674] VFS: Mounted root (ext3 filesystem) readonly on device 179:2.
[ 1.961883] Freeing init memory: 236K
[ 1.989776] mmc1: card claims to support voltages below the defined range. These will be ignored.
[ 2.016021] mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
[ 2.024597] mmc1: new SDIO card at address 0001
[ 2.031738] mmc1: mmc_power_save_host: powering down
[ 2.037078] set_power - 0
INIT: version 2.88 booting
Error opening /dev/fb0: No such device
Starting udev
[ 4.857269] Disabling lock debugging due to kernel taint
[ 4.864562] DEBUG: In wl1271_init, Line: 390
[ 4.869354] set_power - 1
[ 6.744995] DEBUG: In wl1271_probe, Line: 222
[ 6.763977] DEBUG: In wl1271_probe, Line: 222
[ 6.768615] DEBUG: In wl1271_probe, Line: 233
[ 6.773254] DEBUG: In wl1271_probe, Line: 242
[ 6.777954] DEBUG: In wl1271_probe, Line: 257
[ 6.782562] DEBUG: In wl1271_probe, Line: 262
[ 6.787200] DEBUG: In wl1271_probe, Line: 266
[ 6.791870] DEBUG: In wl1271_probe, Line: 282
[ 6.796508] DEBUG: In wl1271_probe, Line: 289
[ 6.801147] DEBUG: In wl1271_probe, Line: 297
[ 6.809448] mmc1: mmc_power_save_host: powering down
[ 6.814819] set_power - 0
[ 6.969909] cfg80211: Calling CRDA to update world regulatory domain
[ 7.335479] wl12xx: driver version: ol_R5.SP4.01-dirty
[ 7.340972] wl12xx: compilation time: Tue Jun 25 17:44:08 2013
[ 7.347473] DEBUG: In wl12xx_probe, Line: 7031
[ 7.463592] cfg80211: World regulatory domain updated:
[ 7.469177] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[ 7.478088] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 7.486511] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[ 7.494934] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[ 7.503326] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 7.511749] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 7.522705] DEBUG: In wl12xx_probe, Line: 7038
[ 7.527526] DEBUG: In wl12xx_probe, Line: 7042
[ 7.532226] DEBUG: In wl12xx_probe, Line: 7052
[ 7.536956] DEBUG: In wl12xx_probe, Line: 7060
[ 7.542114] DEBUG: In wl12xx_probe, Line: 7069
[ 7.546997] DEBUG: In wl12xx_probe, Line: 7085
[ 7.551727] DEBUG: In wl12xx_probe, Line: 7090
[ 7.556457] DEBUG: In wl1271_register_hw, Line: 6525
[ 7.561737] DEBUG: In wl1271_register_hw, Line: 6529
[ 7.626892] set_power - 1
[ 8.093719] DEBUG: In wl12xx_sdio_raw_write, Line: 121
[ 8.099639] DEBUG: In wl12xx_sdio_raw_write, Line: 121
[ 8.105377] DEBUG: In wl12xx_sdio_raw_write, Line: 121
[ 8.110992] DEBUG: In wl12xx_sdio_raw_write, Line: 121
[ 8.118347] DEBUG: In wl12xx_sdio_raw_write, Line: 121
[ 8.124084] DEBUG: In wl12xx_sdio_raw_write, Line: 121
[ 8.129760] DEBUG: In wl12xx_sdio_raw_write, Line: 121
[ 8.135437] DEBUG: In wl12xx_sdio_raw_write, Line: 121
[ 8.140930] DEBUG: In wl12xx_sdio_raw_read, Line: 77
[ 8.146240] DEBUG: In wl12xx_sdio_raw_read, Line: 80
[ 8.151489] DEBUG: In wl12xx_sdio_raw_read, Line: 88
[ 8.156768] func: cf2e3e00, buf: ce041f40, addr: 0x0001ce34, len: 0x00000004.
[ 8.164367] DEBUG: In wl12xx_sdio_raw_read, Line: 95

Please help me out.

Thanks.