- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hello:
Would you please upload your steps and dmesg log ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 = <®_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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 ...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
after removing interrupt definition in DTS everything is going well.
Many Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Congratulations!!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.