AnsweredAssumed Answered

QCA6174 SDIO not working on imx6ul

Question asked by ANUJ KHERA on Jul 15, 2018
Latest reply on Jul 19, 2018 by igorpadykov

We have a custom board designed based on IMX6UL. I am trying to make QCA6174(wlan) up on the board. Below are the observations:

 

Please find the below observations regarding the QCA6174 on IMX6UL based custom board. 

 

  • We are able to detect the MMC device

 

mmc0: queuing unknown CIS tuple 0x01 (3 bytes)

mmc0: queuing unknown CIS tuple 0x1a (5 bytes)

mmc0: queuing unknown CIS tuple 0x1b (8 bytes)

mmc0: queuing unknown CIS tuple 0x14 (0 bytes)

mmc0: queuing unknown CIS tuple 0x80 (1 bytes)

mmc0: queuing unknown CIS tuple 0x81 (1 bytes)

mmc0: new high speed SDIO card at address 0001

 

  • While inserting the driver i.e. wlan.ko we get the following error and the probe get failed.

 

wlan: loading driver v4.5.22.7

[  384.328568] hifDeviceInserted: Dumping clocks (50000000,50000000)

[  384.334699] HIFDumpCCCR 0(43) 1(3) 2(0) 3(0) 4(0) 5(0) 6(0) 7(6) 8(17) 9(0) A(10) B(0) C(0) D(0) E(0) F(0) 10(0) 11(0) 12(1) 13(3) 14(7) 15

[  384.335975] AR6000: Set async interrupt delay clock as 2.

[  384.346220] R0: wlan: [852:E :HDD] hdd_apply_cfg_ini: Reg Parameter gRrmOperChanMax > allowed Maximum [8 > 7]. Enforcing Default= 4

[  384.346271] R0: wlan: [852:E :HDD] hdd_apply_cfg_ini: Reg Parameter gRrmNonOperChanMax > allowed Maximum [8 > 7]. Enforcing Default= 4

[  384.349508] R0: wlan: [852:E :HDD] hdd_apply_cfg_ini: Reg Parameter 5g_rssi_boost_threshold > allowed Maximum [4294967236 > 4294967226]. En6

[  384.349539] R0: wlan: [852:E :HDD] hdd_apply_cfg_ini: Reg Parameter 5g_rssi_boost_threshold < allowed Minimum [4294967236 < 4294967241]. En6

[  384.349586] R0: wlan: [852:E :HDD] hdd_apply_cfg_ini: Reg Parameter 5g_rssi_penalize_threshold > allowed Maximum [4294967226 > 4294967216].6

[  384.349615] R0: wlan: [852:E :HDD] hdd_apply_cfg_ini: Reg Parameter 5g_rssi_penalize_threshold < allowed Minimum [4294967226 < 4294967231].6

[  385.506402] AR6000: SDIO bus operation failed! MMC stack returned : -84

[  385.506420] __HIFReadWrite, addr:0X000850, len:00000004, Read , Sync

[  385.506785] Unable to decrement the command credit count register

[  385.506805] Unable to write to the device.

[  385.506849] R0: [modprobe][00:06:25.419963]  wlan: [852:F :VOS] vos_open: BMI failed to download target

[  385.506902] R0: [VosMCThread][00:06:25.420023]  wlan: [856:E :VOS] VosMCThread: MC Thread exiting!!!!

[  385.506955] R0: [modprobe][00:06:25.420075]  wlan: [852:F :HDD] hdd_wlan_startup: vos_open failed

[  385.507464] R0: wlan: [852:F :HIF]  hdd_wlan_startup failed

[  385.507641] AR6000: SDIO bus operation failed! MMC stack returned : -123

[  385.507666] __HIFReadWrite, addr:0X000868, len:00000004, Write, Sync

[  385.508818] ar6k_wlan: probe of mmc0:0001:1 failed with error -1

 

  • After debugging more into the Linux MMC stack we comes out to the below conclusion:

 

-84 -> Illegal byte sequence

This is caused due to Data CRC error. For reference below is the mmc stack driver snippet.

Drivers/mmc/host/sdhci.c

 

        else if ((intmask & SDHCI_INT_DATA_CRC) &&

                SDHCI_GET_CMD(sdhci_readw(host, SDHCI_COMMAND))

                        != MMC_BUS_TEST_R){

                host->data->error = -EILSEQ;

                }

The above block is the code part of irq handler for data. After the data is transmitted on the SDIO bus, the HW is returning the error of CRC for the data, due to which the further communication on the SDIO bus is terminated.

 

Please give your inputs. As I am stuck on this. 

Outcomes