Bringup of TI Talon [wl18xx] wifi IOT module on WP7607 Custom Board

We have a custom board based on WP7607 which has Talon TI wifi module [wl18xx] connect to it through SDIO lines. We have also connected the WIFI Enable (GPIO 8), Wifi Reset (GPIO 2) and SDIO interrupt enable (GPIO 42).

There are direct connections with no I2C switches PCA9548A in the path, or SDIO switch TXS02612. There is no CAT24C32 Eeprom connected on the TI Talon wifi card.
The Pin number 160 of WP7607 is floating. We have not connected it to 2.95 V as done in the MangoH Red EVK.

We have also modified the /etc/init.d/tiwifi script not to enable the I2C based setting.
Attaching the script for reference.

Image used is :
Connecting to service …
Firmware Version: SWI9X07Y_02.28.03.03 000000 jenkins 2019/05/21 03:33:04
Bootloader Version: SWI9X07Y_02.28.03.03 000000 jenkins 2019/05/21 03:33:04
Linux Version: 3.18.131 #1 PREEMPT Tue May 21 06:09:42 UTC 2019

We want to enabled TI Talon wl18xx module with WP7607.
Request your inputs here.

Few questions :

  1. When booting up the WP7607, we hit this error and is continuous.
    275.577422] mmc0: error -84 whilst initialising SDIO card
    [ 276.618893] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
    [ 276.618944] sdhci_msm 7864900.sdhci: exceeding card’s volts
    [ 276.622266] mmc0: error -84 whilst initialising SDIO card
    [ 277.668810] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
    [ 277.668858] sdhci_msm 7864900.sdhci: exceeding card’s volts
    [ 277.678219] mmc0: error -84 whilst initialising SDIO card
    [ 278.719159] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range

  2. With the attached tiwifi script, below is the failure when running wifi command “wifi client start”
    wifi client start ERROR: le_wifiClient_Start returns ERROR.

root@swi-mdm9x28-wp:~# logread -f
[ 1411.765981] mmc0: error -84 whilst initialising SDIO card
Jan 6 00:27:42 swi-mdm9x28-wp user.info kernel: [ 1411.703194] mmc0: card 0001 removed
Jan 6 00:27:42 swi-mdm9x28-wp user.warn kernel: [ 1411.756655] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
Jan 6 00:27:42 swi-mdm9x28-wp user.err kernel: [ 1411.765981] mmc0: error -84 whilst initialising SDIO card
Jan 6 00:27:43 swi-mdm9x28-wp user.warn kernel: [ 1412.833309] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
Jan 6 00:27:43 swi-mdm9x28-wp user.warn kernel: [ 1412.889917] mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
Jan 6 00:27:43 swi-mdm9x28-wp user.info kernel: [ 1412.893534] mmc0: new high speed SDIO card at address 0001
Jan 6 00:27:46 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | app.c app_Create() 3207 | Creating app ‘wifi’
Jan 6 00:27:47 swi-mdm9x28-wp user.warn Legato: -WRN- | supervisor[833]/supervisor T=main | proc.c GetWatchdogAction() 359 | wifi@0 watchdogAn
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | app.c app_Start() 3420 | Starting app ‘wifi’
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | app.c CreateFileLink() 2034 | Skipping file link t
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | app.c CreateFileLink() 2034 | Skipping file link s
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting r.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting r.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting r.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting r.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting r.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting r.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting r.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | proc.c proc_Start() 1390 | Starting process 'wifi7
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[4667]/supervisor T=main | proc.c proc_Start() 1355 | Execing ‘bin/wifi’
Jan 6 00:27:47 swi-mdm9x28-wp user.debug Legato: DBUG | wifiService[876]/framework T=main | LE_FILENAME ExtractFileDescriptor() 34 | Receive.
Jan 6 00:27:47 swi-mdm9x28-wp user.debug Legato: DBUG | wifiService[876]/framework T=main | LE_FILENAME ExtractFileDescriptor() 34 | Receive.
Jan 6 00:27:47 swi-mdm9x28-wp user.debug Legato: DBUG | wifiService[876]/framework T=main | LE_FILENAME le_mem_ForceAlloc() 833 | Memory poo.
Jan 6 00:27:47 swi-mdm9x28-wp user.debug Legato: DBUG | wifiService[876]/framework T=WifiClientPaThread | LE_FILENAME PThreadStartRoutine() .
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | wifiService[876]/daemon T=WifiClientPaThread | pa_wifi_client_ti.c WifiClientPaThread!
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | wifiService[876] | WIFI_START
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | wifiService[876]/daemon T=WifiClientPaThread | pa_wifi_client_ti.c WifiClientPaThread5
Jan 6 00:27:47 swi-mdm9x28-wp user.debug kernel: [ 1416.569236] gpio_sync_ri: RI owner is Modem
Jan 6 00:27:47 swi-mdm9x28-wp user.debug kernel: [ 1416.569264] gpio_map_name_to_num: find GPIO 79
Jan 6 00:27:47 swi-mdm9x28-wp user.debug kernel: [ 1416.569275] export_store: Export GPIO: 79
Jan 6 00:27:47 swi-mdm9x28-wp user.debug kernel: [ 1416.569300] gpio_sync_ri: RI owner is Modem
Jan 6 00:27:47 swi-mdm9x28-wp user.debug kernel: [ 1416.569315] gpiod_export: sierra–find GPIO,chipdev = -824015856,chipngpio = 80,chipbase 0
Jan 6 00:27:47 swi-mdm9x28-wp user.err Legato: =ERR= | wifiService[876] | modprobe: module msm_sdcc not found in modules.dep
Jan 6 00:27:47 swi-mdm9x28-wp user.err Legato: =ERR= | wifiService[876]/daemon T=main | pa_wifi_client_ti.c pa_wifiClient_Start() 349 | WiFi T
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | supervisor.c SigChildHandler() 792 | Reaping unco.
Jan 6 00:27:47 swi-mdm9x28-wp user.err Legato: =ERR= | wifiService[876]/daemon T=WifiClientPaThread | pa_wifi_client_ti.c ThreadDestructor() t
Jan 6 00:27:47 swi-mdm9x28-wp user.err Legato: =ERR= | wifiService[876]/daemon T=main | le_wifiClient.c le_wifiClient_Start() 657 | Unable to6
Jan 6 00:27:47 swi-mdm9x28-wp user.debug Legato: DBUG | wifiService[876]/framework T=main | le_wifiClient_server.c CleanupClientData() 148 |!
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | proc.c proc_SigChildHandler() 2051 | Process 'wif.
Jan 6 00:27:47 swi-mdm9x28-wp user.debug Legato: DBUG | wifiService[876]/framework T=main | le_wifiClient_server.c CleanupClientData() 169 |h
Jan 6 00:27:47 swi-mdm9x28-wp user.debug Legato: DBUG | wifiService[876]/framework T=main | le_wifiAp_server.c CleanupClientData() 148 | Cli!
Jan 6 00:27:47 swi-mdm9x28-wp user.warn Legato: -WRN- | supervisor[833]/supervisor T=main | app.c app_SigChildHandler() 4015 | Process 'wifi@.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | app.c app_StopComplete() 4686 | app ‘wifi’ has st.
Jan 6 00:27:47 swi-mdm9x28-wp user.info Legato: INFO | supervisor[833]/supervisor T=main | apps.c DeactivateAppContainer() 374 | Application.
Jan 6 00:27:50 swi-mdm9x28-wp user.info kernel: [ 1420.336094] mmc0: card 0001 removed
Jan 6 00:27:50 swi-mdm9x28-wp user.warn kernel: [ 1420.380982] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
Jan 6 00:27:50 swi-mdm9x28-wp user.warn kernel: [ 1420.381018] sdhci_msm 7864900.sdhci: exceeding card’s volts
[ 1420.466714] mmc0: bad CIS tuple 0x20 (0 bytes)
[ 1420.470563] mmc0: error -22 whilst initialising SDIO card
Jan 6 00:27:51 swi-mdm9x28-wp user.warn kernel: [ 1420.447273] mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
Jan 6 00:27:51 swi-mdm9x28-wp user.warn kernel: [ 1420.451331] mmc0: queuing unknown CIS tuple 0x43 (3 bytes)
Jan 6 00:27:51 swi-mdm9x28-wp user.warn kernel: [ 1420.452611] mmc0: queuing unknown CIS tuple 0x82 (18 bytes)
Jan 6 00:27:51 swi-mdm9x28-wp user.warn kernel: [ 1420.454912] mmc0: queuing unknown CIS tuple 0x01 (0 bytes)
Jan 6 00:27:51 swi-mdm9x28-wp user.warn kernel: [ 1420.458535] mmc0: queuing unknown CIS tuple 0x01 (63 bytes)
Jan 6 00:27:51 swi-mdm9x28-wp user.warn kernel: [ 1420.465882] mmc0: queuing unknown CIS tuple 0x0a (0 bytes)
Jan 6 00:27:51 swi-mdm9x28-wp user.warn kernel: [ 1420.466133] mmc0: queuing unknown CIS tuple 0x02 (0 bytes)
Jan 6 00:27:51 swi-mdm9x28-wp user.err kernel: [ 1420.466714] mmc0: bad CIS tuple 0x20 (0 bytes)
Jan 6 00:27:51 swi-mdm9x28-wp user.err kernel: [ 1420.470563] mmc0: error -22 whilst initialising SDIO card
[ 1421.540871] mmc0: error -84 whilst initialising SDIO card
Jan 6 00:27:52 swi-mdm9x28-wp user.warn kernel: [ 1421.535382] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
Jan 6 00:27:52 swi-mdm9x28-wp user.err kernel: [ 1421.540871] mmc0: ertiwifi (5.7 KB)

your logread pasted above is not complete… (some message is missing)
I guess the voltage of the SDIO pin has some problem:

Jan 6 00:27:50 swi-mdm9x28-wp user.warn kernel: [ 1420.381018] sdhci_msm 7864900.sdhci: exceeding card’s volts

What is the expected voltage of the SDIO interface ?
SDIO interface logic is 1.8V in our setup.

Are you talking about the 2.95V which is connected to pin number 160 of WP7607 on the EVK ? Is it mandatory to connect 2.95V to the 160 pin ?

Also, in the modified tiwifi script we have included modprobe msm_sdcc , which is not present in modules.dep. Should a new yocto image with msm_sdcc enabled be flashed ?

As you already make it working in MangOH board, you can measure the voltage on those pins on the working setup.

what is the reason for “modprobe msm_sdcc”? does it still work fine in case you put this in your mangoh board?

As this is related to hardware problem, probably you need to compare all the hardware difference with your working setup.

Ok will check the MangoH board voltages and get back for any questions.

As for the msm_sdcc, in the link : All wifi commands failing with Mirage board,
The tiwifi script was modified to incorporate msm_sdcc, disable the i2cset values.
Followed the same as in link.

If the msm_sdcc is intended for mangoH Green board, then i would probably skip it.

Please confirm.

you can remove msm_sdcc in your working setup and see if it still works.

thanks, removed the msm_sdcc in the tiwifi script, but still does not work.
I was checking the dmesg of the MangoH Red board and our custom board. Both has same fw image.

On the custom hw, wlcore fails to assign WLAN_EN GPIO 58. Logs attached.
But on MangoH red board, GPIOS 38 and 76 are enabled. AFter that wlcore is loaded, checked for the phy firmware.

Can you please let us know what is 76, 38 and 58 GPIOs.

Why does it fail for GPIO 58 in custom board and does it need to be changed ?

MangoH Red board logs :-
29.702185] gpio_check_and_wake: wake-n_gpio26 STATE=WAKEUP
[ 29.707536] swimcu_calibrate_event_handle: MCU calibrate completed with remaining time 0
[ 29.707560] swimcu_lpo_calibrate_calc: MCU time=30000 vs MDM time=29271
[ 29.707578] gpio_check_and_wake: wake-n_gpio26 STATE=SLEEP
[ 29.908304] cfg80211: Calling CRDA to update world regulatory domain
[ 29.908433] cfg80211: World regulatory domain updated:
[ 29.908444] cfg80211: DFS Master region: unset
[ 29.908454] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[ 29.908467] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.908478] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.908489] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.908499] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.908510] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.908521] cfg80211: (5490000 KHz - 5710000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.908532] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.908542] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
[ 30.002197] QTI:USB tethered modem SMD port opened
[ 30.006163] msm_hsusb msm_hsusb: [ep_queue] request already in queue
[ 30.011596] ctrl resp queue empty reqa1.01 v0000 i0008 l4096
[ 30.911715] i2c-msm-v2 78b8000.i2c: NACK: slave not responding, ensure its powered: msgs(n:2 cur:0 tx) bc(rx:1 tx:1) mode:FIFO slv_addr:0x70 MSTR_STS:0x0d1300c8 OPER:0x00000010
[ 30.927041] i2c-msm-v2 78b8000.i2c: NACK: slave not responding, ensure its powered: msgs(n:2 cur:0 tx) bc(rx:1 tx:1) mode:FIFO slv_addr:0x70 MSTR_STS:0x0d1300c8 OPER:0x00000010
[ 30.944009] i2c-msm-v2 78b8000.i2c: NACK: slave not responding, ensure its powered: msgs(n:2 cur:0 tx) bc(rx:1 tx:1) mode:FIFO slv_addr:0x70 MSTR_STS:0x0d1300c8 OPER:0x00000010
[ 30.962194] i2c-msm-v2 78b8000.i2c: NACK: slave not responding, ensure its powered: msgs(n:2 cur:0 tx) bc(rx:1 tx:1) mode:FIFO slv_addr:0x70 MSTR_STS:0x0d1300c8 OPER:0x00000010
[ 30.978069] i2c-msm-v2 78b8000.i2c: NACK: slave not responding, ensure its powered: msgs(n:2 cur:0 tx) bc(rx:1 tx:1) mode:FIFO slv_addr:0x70 MSTR_STS:0x0d1300c8 OPER:0x00000010
[ 30.994224] i2c-msm-v2 78b8000.i2c: NACK: slave not responding, ensure its powered: msgs(n:2 cur:0 tx) bc(rx:1 tx:1) mode:FIFO slv_addr:0x70 MSTR_STS:0x0d1300c8 OPER:0x00000010
[ 31.012135] gpio_sync_ri: RI owner is Modem
[ 31.012159] gpio_map_name_to_num: find GPIO 76
[ 31.012170] export_store: Export GPIO: 76
[ 31.012274] gpio_sync_ri: RI owner is Modem
[ 31.012289] gpiod_export: sierra–find GPIO,chipdev = -824015856,chipngpio = 80,chipbase = 0
[ 31.013772] gpio_sync_ri: RI owner is Modem
[ 31.013793] gpio_map_name_to_num: find GPIO 38
[ 31.013804] export_store: Export GPIO: 38
[ 31.013827] gpio_sync_ri: RI owner is Modem
[ 31.013841] gpiod_export: sierra–find GPIO,chipdev = -824015856,chipngpio = 80,chipbase = 0
[ 31.099828] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
[ 31.117545] mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
[ 31.120881] mmc0: new high speed SDIO card at address 0001
[ 31.683364] wlcore: wl18xx HW: 183x or 180x, PG 2.2 (ROM 0x11)
[ 31.771345] wlcore: loaded
[ 36.876279] wlcore: PHY firmware version: Rev 8.2.0.0.212
[ 36.917008] wlcore: firmware booted (Rev 8.9.0.0.17)
[ 36.939390] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 36.941265] ifconfig (1744) used greatest stack depth: 4376 bytes left
[ 36.942194] tiwifi (1673) used greatest stack depth: 4272 bytes left
[ 37.997096] wlcore: down

Custom Board logs :-

[ 29.142763] QTI:USB tethered modem SMD port opened
[ 29.144968] msm_hsusb msm_hsusb: [ep_queue] request already in queue
[ 29.150508] ctrl resp queue empty reqa1.01 v0000 i0008 l4096
[ 29.576118] gpio_sync_ri: RI owner is Modem
[ 29.576142] gpio_map_name_to_num: find GPIO 38
[ 29.576153] export_store: Export GPIO: 38
[ 29.576178] gpio_sync_ri: RI owner is Modem
[ 29.620610] cfg80211: Calling CRDA to update world regulatory domain
[ 29.620732] cfg80211: World regulatory domain updated:
[ 29.620744] cfg80211: DFS Master region: unset
[ 29.620753] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[ 29.620766] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.620777] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.620788] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.620799] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.620809] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.620820] cfg80211: (5490000 KHz - 5710000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.620831] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.620842] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
[ 30.167132] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
[ 30.167171] sdhci_msm 7864900.sdhci: no support for card’s volts
[ 30.167191] mmc0: error -22 whilst initialising SDIO card
[ 30.504282] gpio_check_and_wake: wake-n_gpio26 STATE=WAKEUP
[ 30.513715] swimcu_calibrate_event_handle: MCU calibrate completed with remaining time 0
[ 30.513758] swimcu_lpo_calibrate_calc: MCU time=30000 vs MDM time=30077
[ 30.513790] gpio_check_and_wake: wake-n_gpio26 STATE=SLEEP
[ 31.216859] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
[ 31.219699] mmc0: error -110 whilst initialising SDIO card
[ 31.598152] gpio_sync_ri: RI owner is Modem
[ 31.598193] gpio_map_name_to_num: find GPIO 58
[ 31.598207] export_store: Export GPIO: 58
[ 31.598253] gpio_sync_ri: RI owner is Modem
[ 31.598274] gpiod_export: sierra–find GPIO,chipdev = -824015856,chipngpio = 80,chipbase = 0
[ 33.308227] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
[ 33.313658] mmc0: error -84 whilst initialising SDIO card
[ 34.357367] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
[ 34.361899] mmc0: error -84 whilst initialising SDIO card
21339] usb usb1-port1: attempt power cycle
[ 42.778655] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
[ 42.836076] mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
[ 42.838606] mmc0: new high speed SDIO card at address 0001
[ 43.023952] gpio-58 (sysfs): gpiod_request: status -16
[ 43.023981] wlcore: ERROR cannot assign WLAN_EN GPIO58.
[ 43.023981]
[ 43.040465] wl18xx_driver: probe of wl18xx.0.auto failed with error -16
[ 43.060960] usb 1-1: new high-speed USB device number 4 using msm_hsic_host
[ 53.521175] usb 1-1: device not accepting address 4, error -110
[ 53.641232] usb 1-1: new high-speed USB device number 5 using msm_hsic_host
[ 64.100157] usb 1-1: device not accepting address 5, error -110
[ 64.105224] usb usb1-port1: unable to enumerate USB device
[ 64.112180] msm_hsic_host 7c00000.hsic_host: HSIC-USB in low power mode

mdm gpio 38= WP76 GPIO 2
mdm gpio 58= WP76 GPIO 8
mdm gpio 76= WP76 GPIO 13

As per your inputs,

mdm gpio 38 = WP76 GPIO 2 = IOT0_RESET = reset to external IOT WIFI module
mdm gpio 58 = WP76 GPIO 8 = IOT0_GPIO4 = external IOT wifi enable
mdm gpio 76 = WP76 GPIO 13 = ZIGBEE Enable

Above we obtained from the MangoH Red board schematic.

In our custom board, we have used WP76 GPIO 2 and WP76 GPIO 8. We are not using WP76 GPIO 13.

Can you help us identify what can be the cause for this CRASH @ request_firmware_work_fun ?

Logs :

29.548653] cfg80211: Calling CRDA to update world regulatory domain

[ 29.548782] cfg80211: World regulatory domain updated:
[ 29.548795] cfg80211: DFS Master region: unset
[ 29.548805] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[ 29.548818] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.548831] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.548842] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.548854] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.548865] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.548877] cfg80211: (5490000 KHz - 5710000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.548889] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 29.548901] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
[ 30.499932] gpio_check_and_wake: wake-n_gpio26 STATE=WAKEUP
[ 30.511692] swimcu_calibrate_event_handle: MCU calibrate completed with remaining time 0
[ 30.511736] swimcu_lpo_calibrate_calc: MCU time=30000 vs MDM time=30084
[ 30.511768] gpio_check_and_wake: wake-n_gpio26 STATE=SLEEP
[ 30.551215] gpio_sync_ri: RI owner is Modem
[ 30.551252] gpio_map_name_to_num: find GPIO 38
[ 30.551268] export_store: Export GPIO: 38
[ 30.551309] gpio_sync_ri: RI owner is Modem
[ 30.551331] gpiod_export: sierra–find GPIO,chipdev = -824015856,chipngpio = 80,chipbase = 0
[ 32.098114] sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
[ 32.118635] mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
[ 32.122243] mmc0: new high speed SDIO card at address 0001
[ 34.536856] mmc0: data txfr (0x00100000) error: -110 after 1342 ms
[ 34.542044] sdhci: =========== REGISTER DUMP (mmc0)===========
[ 34.542070] sdhci: Sys addr: 0x00000000 | Version: 0x00002e02
[ 34.542095] sdhci: Blk size: 0x00000004 | Blk cnt: 0x00000001
[ 34.542121] sdhci: Argument: 0xa7ff8804 | Trn mode: 0x00000003
[ 34.542145] sdhci: Present: 0x01f80100 | Host ctl: 0x00000017
[ 34.542169] sdhci: Power: 0x0000000d | Blk gap: 0x00000000
[ 34.542194] sdhci: Wake-up: 0x00000000 | Clock: 0x00000007
[ 34.542218] sdhci: Timeout: 0x0000000b | Int stat: 0x00000000
[ 34.542243] sdhci: Int enab: 0x03ff800b | Sig enab: 0x03ff000b
[ 34.542266] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
[ 34.542292] sdhci: Caps: 0x262dc8b2 | Caps_1: 0x00008007
[ 34.542316] sdhci: Cmd: 0x0000353a | Max curr: 0x00000000
[ 34.542340] sdhci: Resp 1: 0x00000000 | Resp 0: 0x00001000
[ 34.542364] sdhci: Resp 3: 0x00000000 | Resp 2: 0x00000000
[ 34.542385] sdhci: Host ctl2: 0x00000000
[ 34.542410] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x8f46c008
[ 34.542432] ----------- VENDOR REGISTER DUMP -----------
[ 34.542461] Data cnt: 0x00000000 | Fifo cnt: 0x00000000 | Int sts: 0x000c0000
[ 34.542489] DLL cfg: 0x60086400 | DLL sts: 0x00000000 | SDCC ver: 0x1000002e
[ 34.542516] Vndr func: 0x00008a1e | Vndr adma err : addr0: 0x00000000 addr1: 0x00000000
[ 34.542538] Vndr func2: 0xfa8018a8
[ 34.542641] Test bus[0 to 3]: 0x0000c846 0x000020ce 0x00007018 0x01c001ff
[ 34.542671] Test bus[4 to 7]: 0x00463fd8 0x0004c038 0x40000000 0x0003ffff
[ 34.542700] Test bus[8 to 11]: 0x47fc0604 0x40800002 0x201be089 0x000004c0
[ 34.542729] Test bus[12 to 15]: 0x034f0408 0x843f1180 0x0d000018 0x00800a80
[ 34.542757] Test bus[16 to 19]: 0x00012000 0x000f800c 0x00000000 0x00000c91
[ 34.542785] Test bus[20 to 23]: 0x0240ff01 0x00050021 0x00000000 0x00000000
[ 34.542811] Test bus[24 to 27]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.542838] Test bus[28 to 31]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.542864] Test bus[32 to 35]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.542891] Test bus[36 to 39]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.542917] Test bus[40 to 43]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.542943] Test bus[44 to 47]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.542970] Test bus[48 to 51]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.542997] Test bus[52 to 55]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.543023] Test bus[56 to 59]: 0x00000000 0x00000000 0x00000000 0x00000000
[ 34.543053] mmc0: clk: 50000000 clk-gated: 0 claimer: kworker/0:15 pwr: 12 host->irq = 8192
[ 34.543080] mmc0: rpmstatuspltfm(0:1:0)
[ 34.543100] sdhci: ===========================================
[ 34.543311] ------------[ cut here ]------------
[ 34.543382] WARNING: CPU: 0 PID: 857 at /usr/src/kernel/drivers/net/wireless/ti/wlcore/sdio.c:146 wl12xx_sdio_raw_write+0xe0/0x178 wlcore_sdio
[ 34.543405] Modules linked in: wl18xx wlcore_sdio wlcore mac80211 cfg80211
[ 34.543485] CPU: 0 PID: 857 Comm: kworker/0:15 Not tainted 3.18.131 #1
[ 34.543537] Workqueue: events request_firmware_work_func
[ 34.543619] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
[ 34.543670] [] (show_stack) from [] (warn_slowpath_common+0x60/0x80)
[ 34.543715] [] (warn_slowpath_common) from [] (warn_slowpath_null+0x18/0x20)
[ 34.543766] [] (warn_slowpath_null) from [] (wl12xx_sdio_raw_write+0xe0/0x178 [wlcore_sdio])
[ 34.544191] [] (wl12xx_sdio_raw_write [wlcore_sdio]) from [] (wlcore_set_partition+0x14c/0x49c [wlcore])
[ 34.544639] [] (wlcore_set_partition [wlcore]) from [] (wl12xx_set_power_on+0x70/0x14c [wlcore])
[ 34.545067] [] (wl12xx_set_power_on [wlcore]) from [] (wlcore_nvs_cb+0x250/0x908 [wlcore])
[ 34.545312] [] (wlcore_nvs_cb [wlcore]) from [] (request_firmware_work_func+0x24/0x44)
[ 34.545362] [] (request_firmware_work_func) from [] (process_one_work+0x1bc/0x2e0)
[ 34.545405] [] (process_one_work) from [] (worker_thread+0x2dc/0x3b8)
[ 34.545449] [] (worker_thread) from [] (kthread+0xc8/0xd4)
[ 34.545494] [] (kthread) from [] (ret_from_fork+0x14/0x3c)
[ 34.545522] —[ end trace 64d61770a2f5276f ]—
[ 34.545562] wl1271_sdio mmc0:0001:2: sdio write failed (-110)
[ 34.561668] wlcore: ERROR couldn’t get hw info

Why this time has crash but previous time does not?
have you checked if the voltage on SDIO bus is the same as Mangoh board?

Your observation on mangoh board is wrong, please see tiwifi script:

>        echo "mangOH red board"
> 
>                # Set IOT0_GPIO2 = 1 (WP GPIO13)
>                [ -d /sys/class/gpio/gpio13 ] || echo 13 >/sys/class/gpio/export
>                echo out >/sys/class/gpio/gpio13/direction
>                echo 1 >/sys/class/gpio/gpio13/value
> 
>                # Set IOT0_RESET = 1 (WP GPIO2)
>                [ -d /sys/class/gpio/gpio2 ] || echo 2 >/sys/class/gpio/export
>                echo out >/sys/class/gpio/gpio2/direction
>                echo 1 >/sys/class/gpio/gpio2/value

Hi,

I am Tejaswisj’s team mate and belongs to Hardware .

The SDIO voltage level in our custom board is 1.8V . In our custom board , Talon WL1831 IOT board is directly connected to WP7607 module.

But we noted that , in WP7607 MangOH RED EVK , they used a 1.8V to 2.95V SDIO voltage translator (TXS02612) .

So the SDIO voltage level at MangOH RED EVK is 2.95V and in custom board voltage level is 1.8V .

One more information is ,in MangoH Red schematic , IOT0_GPIO2 = 1 (WP GPIO13) is connected to only to IOT connector .

Let us know , what is the functionality of singal IOT0_GPIO2 .Right now this GPIO signal is not used any where .

Regards
Sg001

I guess it is for enabling the wifi chipset.
I don’t have the schematic either for the WIFI card…

WP76 GPIO 8 was used in the tiwifi file.
This caused that WIFI_ENABLE was not accessible.

Removed GPIO8 in the file, and then proceeded to crash at write

I don’t see my tiwifi script in mangoh red board is using GPIO8

yes original file does not have this, my bad i did a mistake and added that.
Removed it and then the WIFI_ENABLE error was gone.

Now getting the sdio write failed (-110) crash.

If you confirmed the mangoh red board is using 3V SDIO bus, you might try the same at your custom board.

Currently in our custom board, we dont have any 3V SDIO level translator.
Since, the Talon Wifi module spec mentions 1.8V is supported, we thought it might work.
This might be a lame questions, but
Is there a way in the dtsi file of the yocto image, to change this voltage support for SDIO lines to 1.8V ?

you can ask in this thread:

BTW, do you really confirm the mangoh red board is using 3V SDIO bus when communicating with WIFI IOT card? (I remember it should use 1.8 V bus)

The Mirage WiFi WL18 card uses 1.8v for all interface lines.

I agree with you, I remember it should use 1.8 V bus