11 Replies Latest reply on Jul 12, 2019 1:24 AM by ZhengbaoZ_96

    brcmfmac43455-sdio.txt missing in released driver

    DaCi_2690896

      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

        • 1. Re: Problems with FMAC drivers on SDIO
          ZhengbaoZ_96

          hello:

           

          Would you please upload your steps and dmesg log ?

          • 2. Re: Problems with FMAC drivers on SDIO
            DaCi_2690896

            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

            • 3. Re: Problems with FMAC drivers on SDIO
              DaCi_2690896

              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 ...

              • 4. Re: Problems with FMAC drivers on SDIO
                DaCi_2690896

                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

                • 5. Re: Problems with FMAC drivers on SDIO
                  ZhengbaoZ_96

                  hello:

                       please use this nvram to have a test .

                  • 6. Re: brcmfmac43455-sdio.txt missing in released driver
                    DaCi_2690896

                    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

                    • 7. Re: brcmfmac43455-sdio.txt missing in released driver
                      ZhengbaoZ_96

                      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.

                      • 8. Re: brcmfmac43455-sdio.txt missing in released driver
                        ZhengbaoZ_96

                        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

                        • 9. Re: brcmfmac43455-sdio.txt missing in released driver
                          RoCh_2868046

                          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.

                          1 of 1 people found this helpful
                          • 10. Re: brcmfmac43455-sdio.txt missing in released driver
                            DaCi_2690896

                            Hello,

                             

                            after removing interrupt definition in DTS everything is going well.

                             

                            Many Thanks