brcmfmac43455-sdio.txt missing in released driver

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
DaCi_2690896
Level 2
Level 2
First like received

Hello,

I have ported the last release of FMAC drivers into my IMX8MQ board

following the instructions on the related README.

The CYW43455 WiFi module is interfaced to the IMX8 through a SDIO.

When the brcmfmac driver is insmod-ed, a "platform not found" message is printed.

Nevertheless, the init of the drivers goes on and is concluded without errors.

The driver is shown in the lsmod module list.

However, the sdio probe function doesnt' seem to be called (no related printings)

and the wlan0 device has not be created:

# ifconfig wlan0 up

ifconfig: SIOCGIFFLAGS: No such device

Have you any suggestions/explanations for this behaviour?

Thanks

0 Likes
1 Solution

Hello:

    I am using the same NVRAM file to bring up 43455 in my Ubuntu PC, and it runs well.

I think the difference is you are using a hardware interrupt ?  I am using the in-band SD interrupt or poll in the driver.

                        interrupt-parent = <&gpio4>;

                        interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;

                        interrupt-names = "host-wake";

and maybe you can have a try to use poll mode to bring up your board.

you can find the code in brcmf_sdio_probe_attach ,  

bus->intr =true ;  ---> false;

bus->poll =false;  ---> true ;

better to find a  way to make sure your hardware board is ok also.

View solution in original post

0 Likes
11 Replies
Zhengbao_Zhang
Moderator
Moderator
Moderator
250 sign-ins First comment on KBA 10 questions asked

hello:

Would you please upload your steps and dmesg log ?

0 Likes

Hello,

I'm using driver v4.14.77-2019_0503.

My Linux Version is 4.14.78.

I have followed the instruction in the README:

### Using Linux Stable v4.14.77

```bash

#1. Download Linux stable kernel source

    wget https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/linux-4.14.77.tar.gz

    tar zxvf linux-4.14.77.tar.gz

#2. In Linux root folder, untar/apply cypress patches with below bash commands

    cd linux-4.14.77

    tar zxvf cypress-patch*.tar.gz

    for i in cypress-patch/*.patch; do patch -p1 < $i; done

#3. Set kernel .config and enable below options, then compile kernel image

#      CONFIG_BRCMUTIL=y

#      CONFIG_BRCMFMAC=y

#      CONFIG_BRCMFMAC_SDIO=y

#      CONFIG_BRCMFMAC_PROTO_BCDC=y

#      CONFIG_BRCMFMAC_PCIE=y

#      CONFIG_BRCMFMAC_PROTO_MSGBUF=y

#4. (optional) Backup original firmware files

    cp /lib/firmware/brcm /lib/firmware/brcm-bak -r

#5. Update firmware files in /lib/firmware/brcm

    tar zxvf cypress-firmware*.tar.gz

    cp firmware/* /lib/firmware/brcm

#6. Boot the system with the new kernel image

```

This is the dts:

&usdhc2 {

        #address-cells = <1>;

        #size-cells = <0>;

        pinctrl-names = "default";

        pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_wifi>;

        vmmc-supply = <&reg_usdhc2_vmmc>;

        bus-width = <4>;

        non-removable;

        no-1-8-v;       /* force 3.3V VIO */

        status = "okay";

          /* WI-FI Cypress-Murata: use Broadcom driver as modified in FMAC */

        brcmf: brcmf@1 {

                        reg = <1>;

                        compatible = "brcm,bcm4329-fmac";

                        interrupt-parent = <&gpio4>;

                        interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;

                        interrupt-names = "host-wake";

        };

};

When the insmod is performed, the following printings are shown (I have added some debug):

# insmod brcmfmac.ko

[ 1903.409488] brcmfmac:

[ 1903.409488]

[ 1903.409488] *** brcmfmac_module_init

[ 1903.409488]

[ 1903.426899]

[ 1903.426899] **** brcmf_debugfs_init ****

[ 1903.463687] brcmfmac: brcmfmac_module_init No platform data available.

[ 1903.470284]

[ 1903.470284] **** platform_driver_probe ****

[ 1903.496784] **** brcmf_mp_attach ****

[ 1903.502138] **** err = 0 ****

[ 1903.502140]

[ 1903.502140] **** END  ****

I observed that brcmf_ops_sdio_probe is not called.

The driver seems loaded:

# lsmod

Module                  Size  Used by

brcmfmac              352256  0

brcmutil               20480  1 brcmfmac

But WiFi won't start:

#ifnconfig wlano0 up

ifconfig: SIOCGIFFLAGS: No such device

Thanks,

Dario

0 Likes

I'm still investigating the problem: the FMAC device driver probe is not called as the device list of the SDIO bus is empty (the kernel function__attach_driver is not called at all).

As a confirmation of this, /sys/bus/sdio/devices and /sys/bus/sdio/drivers are empty.

Why?

The DTS seems clear but something is still missing ...

0 Likes

ZhengbaoZ_96

The driver is eventually started but it doesn't find the file: brcmfmac43455-sdio.txt.

It's not present in the firmware folder of the released FW: v4.14.77-2019_0503

0 Likes
lock attach
Attachments are accessible only for community members.

hello:

     please use this nvram to have a test .

0 Likes

Hi,

thanks for the file.

See below the result. It seems  that an access failed.

I don't know the purpose of this file, but I wonder why in the nvram file the devid=0x43ab is reported while the chip 43455 I have equipped has 0x4345. Moreover, a mac address is also reported in the file, while I expected it was cabled in the chip.

[   16.718840] brcmfmac: F1 signature read @0x18000000=0x15264345

[   16.731250] brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43455-sdio.bin for chip 0x004345(17221) rev 0x000006

[   20.028559] brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout

[   20.046498] brcmfmac: brcmf_c_preinit_dcmds: Retreiving cur_etheraddr failed, -110

[   20.054198] brcmfmac: brcmf_bus_started: failed: -110

[   20.059434] brcmfmac: brcmf_sdio_firmware_callback: dongle is not responding

0 Likes

Hello:

    I am using the same NVRAM file to bring up 43455 in my Ubuntu PC, and it runs well.

I think the difference is you are using a hardware interrupt ?  I am using the in-band SD interrupt or poll in the driver.

                        interrupt-parent = <&gpio4>;

                        interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;

                        interrupt-names = "host-wake";

and maybe you can have a try to use poll mode to bring up your board.

you can find the code in brcmf_sdio_probe_attach ,  

bus->intr =true ;  ---> false;

bus->poll =false;  ---> true ;

better to find a  way to make sure your hardware board is ok also.

0 Likes

Hello,

after removing interrupt definition in DTS everything is going well.

Many Thanks

0 Likes

Congratulations!!

0 Likes

In addition :   Different module partners will have different NVRAM release since it is hardware configuration related ,   so if you still can't bring up your board successfully , better to find NV file from the module partner where you got your board,  thanks.

There is a list here in the IoT Solutions Guide

0 Likes
RoCh_2868046
Level 4
Level 4
10 likes received First like received Welcome!

NXP i.MX8MQ EVK M.2 interface only supports PCIe, not SDIO. So I/m assuming you're using your own design where SDIO is available? In that case, you can check Murata Quick Start Guide at https://wireless.murata.com/datasheet?/RFM/data/murata_quick_start_guide_linux.pdf . You might also refer to this post: https://community.nxp.com/thread/491236 for a similar issue.

Alternately, you can refer to the solutions from Embedded Artists (https://www.embeddedartists.com/products/imx8m-com/). They support both PCIe/SDIO M.2 out-of-the-box.