11 Replies Latest reply on Aug 7, 2020 1:26 AM by ZhengbaoZ_96

    AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b

    MaDi_4746751

      Hello,

      I'm trying to create a test platform for a module that uses the AzureWave AW-CM256SM (which is based on the CYW43455) on the Raspberry Pi 4b. I have added an existing device tree overlay to enable SDIO on GPIO pins 22-27. It appears the module is being detected (sdio) but it fails to initialize. I have attached several outputs for your review. Since the brcmfmac driver for the 43455 was already installed, I have not made any driver changes. Please provide guidance on possible causes and next steps. My linux knowledge is limited so please provide a verbose answer.

      Best regards,

      Mark

        • 1. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
          ZhengbaoZ_96

          Hello:

          Would you please check if brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt exists in the directory /lib/firmware/brcm/  ?

           

          [    8.112856] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt failed with error -2

          1 of 1 people found this helpful
          • 2. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
            MaDi_4746751

            Hello,

            The brcm/brcmfmac43455-sdio file is present. It's my understanding the 43455 part has been used since the 3B model.

            The -2 error is benign since when I do not used the SDIO dtoverlay which enables the internal WiFi part, I still see the -2 error but the internal WiFi component works.

            I'm have not seen any device tree files with the ".raspberrypi,4-model-b.txt" extension. I'm assuming that is an error.

            Best regards,

            Mark

             

             

            # Cloned from bcm94345wlpagb_p2xx.txt

            NVRAMRev=$Rev: 498373 $

            sromrev=11

            vendid=0x14e4

            devid=0x43ab

            manfid=0x2d0

            prodid=0x06e4

            #macaddr=00:90:4c:c5:12:38

            macaddr=b8:27:eb:74:f2:6c

            nocrc=1

            boardtype=0x6e4

            boardrev=0x1304

             

             

            #XTAL 37.4MHz

            xtalfreq=37400

             

             

            btc_mode=1

            #------------------------------------------------------

            #boardflags: 5GHz eTR switch by default

            #            2.4GHz eTR switch by default

            #            bit1 for btcoex

            boardflags=0x00480201

            boardflags2=0x40800000

            boardflags3=0x44200100

            phycal_tempdelta=15

            rxchain=1

            txchain=1

            aa2g=1

            aa5g=1

            tssipos5g=1

            tssipos2g=1

            femctrl=0

            AvVmid_c0=1,165,2,100,2,100,2,100,2,100

            pa2ga0=-129,6525,-718

            pa2ga1=-149,4408,-601

            pa5ga0=-185,6836,-815,-186,6838,-815,-184,6859,-815,-184,6882,-818

            pa5ga1=-202,4285,-574,-201,4312,-578,-196,4391,-586,-201,4294,-575

            itrsw=1

            pdoffsetcckma0=2

            pdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0

            pdoffset2g40ma0=16

            pdoffset40ma0=0x8888

            pdoffset80ma0=0x8888

            extpagain5g=2

            extpagain2g=2

            tworangetssi2g=1

            tworangetssi5g=1

            # LTECX flags

            # WCI2

            ltecxmux=0

            ltecxpadnum=0x0504

            ltecxfnsel=0x22

            ltecxgcigpio=0x32

             

             

            maxp2ga0=80

            ofdmlrbw202gpo=0x0022

            dot11agofdmhrbw202gpo=0x4442

            mcsbw202gpo=0x98444422

            mcsbw402gpo=0x98444422

            maxp5ga0=82,82,82,82

            mcsbw205glpo=0xb9555000

            mcsbw205gmpo=0xb9555000

            mcsbw205ghpo=0xb9555000

            mcsbw405glpo=0xb9555000

            mcsbw405gmpo=0xb9555000

            mcsbw405ghpo=0xb9555000

            mcsbw805glpo=0xb9555000

            mcsbw805gmpo=0xb9555000

            mcsbw805ghpo=0xb9555000

             

             

            swctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff

            swctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe

            swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3

            swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3

             

             

            vcodivmode=1

            deadman_to=481500000

             

             

            ed_thresh2g=-54

            ed_thresh5g=-54

            eu_edthresh2g=-54

            eu_edthresh5g=-54

            ldo1=4

            rawtempsense=0x1ff

            cckPwrIdxCorr=3

            cckTssiDelay=150

            ofdmTssiDelay=150

            txpwr2gAdcScale=1

            txpwr5gAdcScale=1

            dot11b_opts=0x3aa85

            cbfilttype=1

            fdsslevel_ch11=6

             

             

            # Improved Bluetooth coexistence parameters from Cypress

            btc_mode=1

            btc_params8=0x4e20

            btc_params1=0x7530

            btc_params50=0x972c

            • 3. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
              ZhengbaoZ_96

              Hello:

               

                  So I can image the board of your tested,   the internal wifi module is still a 43455 or 4356 module , is that right ?   then you disconnect the internal module,  flying the interface to AW-CM256SM . if so , please check:

              1.  the NVRAM is released from Azurewave ?

              2.  if the SDIO interface is configured correctly after the switch , like pull-up resistor .

              • 4. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
                MaDi_4746751

                Hello,

                The internal wifi is disconnected by using the sdio dtoverlay in /boot/config.txt.

                The device tree overlay enables gpio 22-27 as an sdio interface.

                I have confirmed the sdio interface configuration.

                I have pulled high the wifi enable pin on the AW-CM256SM.

                Best regards,

                Mark

                • 5. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
                  ZhengbaoZ_96

                  Would you please share the internal chip Nvram ?   and what is the INT mode of AW256 ?  sdio: inband , or GPIO INT,  OOB .

                  • 6. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
                    MaDi_4746751

                    Hello,

                    I shared the NVRAM contents in a previous post.

                    I'm not sure about the interrupt mode.

                    Please provide directions for obtaining the information you are requesting.

                    Best regards,

                    Mark

                     

                    Here is /proc/interrupts

                    pi@raspberrypi:~ $ cat /proc/interrupts

                               CPU0       CPU1       CPU2       CPU3      

                    17:        108          0          0          0     GICv2  99 Level     timer

                    18:          0          0          0          0     GICv2  29 Level     arch_timer

                    19:   22148310    3736479    3500825    3998961     GICv2  30 Level     arch_timer

                    26:    6352278          0          0          0     GICv2  65 Level     fe00b880.mailbox

                    29:       6783          0          0          0     GICv2 153 Level     uart-pl011

                    32:      46509          0          0          0     GICv2 114 Level     DMA IRQ

                    39:         59          0          0          0     GICv2  66 Level     VCHIQ doorbell

                    40:   31293899          0          0          0     GICv2 158 Level     mmc1, mmc0

                    41:   27828936          0          0          0     GICv2 144 Level     vc4 firmware kms

                    42:          0          0          0          0     GICv2  48 Level     arm-pmu

                    43:          0          0          0          0     GICv2  49 Level     arm-pmu

                    44:          0          0          0          0     GICv2  50 Level     arm-pmu

                    45:          0          0          0          0     GICv2  51 Level     arm-pmu

                    47:     891720          0          0          0     GICv2 189 Level     eth0

                    48:          0          0          0          0     GICv2 190 Level     eth0

                    54:     423729          0          0          0     GICv2 106 Level     v3d

                    55:          0          0          0          0     GICv2 175 Level     PCIe PME, aerdrv

                    56:    1937214          0          0          0  BRCM STB PCIe MSI 524288 Edge      xhci_hcd

                    IPI0:          0          0          0          0  CPU wakeup interrupts

                    IPI1:          0          0          0          0  Timer broadcast interrupts

                    IPI2:    1874602    4460050    3935149    5495644  Rescheduling interrupts

                    IPI3:     136522      62609      63610     144154  Function call interrupts

                    IPI4:          0          0          0          0  CPU stop interrupts

                    IPI5:    1556197     633374     615923     674454  IRQ work interrupts

                    IPI6:          0          0          0          0  completion interrupts

                    Err:          0

                    • 7. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
                      ZhengbaoZ_96

                      It is strange that the Nvram doesn't provide INT setting.

                      This is for SDIO in-band interrupt.

                      sd_gpout=1

                      sd_oobonly=1

                      sd_gpval=1

                      sd_gpdc=0

                       

                      If the module connected with the INT pin , assume it is GPIO0 from module.

                      muxenb=0x10

                      1 of 1 people found this helpful
                      • 8. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
                        MaDi_4746751

                        Hello,

                        I'm not sure what to do with the information you provided.

                        The files I have are from the standard Raspberry distro which provide the brcmfmac driver supporting the 43455 which the AW-CM256SM is based on. Are you saying the existing files are not correct?

                        Best regards,

                        Mark

                        • 9. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
                          ZhengbaoZ_96

                          Would you please share more dts info in this platform especially for wifi part ?

                          • 10. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
                            MaDi_4746751

                            Hello,

                            I'm not sure if these files will be helpful but this is what I found.

                            I didn't file a DTS file related to WiFi.

                            Best regards,

                            Mark

                            • 11. Re: AW-CM256SM (CYW43455) on SDIO using a Raspberry Pi 4b
                              ZhengbaoZ_96

                              Hello:

                               

                              Since SDIO interface was detected successfully , but timeout in the logs.

                              I found a Raspberry tuning record from internet , you can have a reference .

                              I think you didn't need to modify anything other , only SDIO interface configuration and hardware need to be careful.

                              https://www.raspberrypi.org/forums/viewtopic.php?t=245225

                              1 of 1 people found this helpful