Hi, I'm busy with a Driver port of the WFX-linux-driver of the WF200 to Openwrt .
its a new-ish SPI / MMC Wifi Co-Processor ( similar to ath9k-htc ) from SiliconLabs
Info page : WF200
WF111 or another one in the family with BLE and Wifi is also of interest but I only Have WF200 devices at the moment...
- Driver source : wfx-linux driver
- Device Firmware : wfx-firmware
- Device Configuration ( antennas, power etc ) : wfx-pds
- Utilities and tools : wfx-common-tools
I have managed to compile the kernel module (wfx.ko) and install it and the firmware files ( ...pds and ...sec ) to a OpenWRT device ( based on Beaglebone Black ( AM335x ) )
When it loads it reports errors / warnings on unknown symbols.
logread | grep wfx
Sat Jan 1 00:01:19 2000 kern.warn kernel: [ 78.105416] wfx: Unknown symbol cfg80211_find_ie_match (err 0)
Sat Jan 1 00:01:19 2000 kern.warn kernel: [ 78.111885] wfx: Unknown symbol ieee80211_bss_get_ie (err 0)
Sat Jan 1 00:01:19 2000 kern.warn kernel: [ 78.130204] wfx: Unknown symbol cfg80211_find_ie_match (err 0)
Sat Jan 1 00:01:19 2000 kern.warn kernel: [ 78.136819] wfx: Unknown symbol ieee80211_bss_get_ie (err 0)
Sat Jan 1 00:01:19 2000 user.err kernel: [ 78.152982] kmodloader: - wfx - 0
There were a LOT more of them until I added a dependency rule for Openwrt's build to mac80211, these are the last 2 remaining and I'm not sure which call to the mac80211 / nl80211 functions is causing it ( could it be a version mismatch between the Openwrt and Linux Trunk nl80211 / mac80211 ? )
Here is my Github repo with the modified makefiles ( to be compatible with Openwrt's build system )
in my build system I have :
wf200 placed under "openwrt/package/firmware/"
wfx placed under "openwrt/package/kernel/"
Openwrt Master
- Linux OpenWrt 4.14.151 armv7l GNU/Linux
- Target System (TI OMAP3/4/AM33xx)
- Target Profile (Texas Instruments AM335x BeagleBone Black)
relevant DTS entry for the spi device :
spi@481a0000 {
compatible = "ti,omap4-mcspi";
#address-cells = < 0x01 >;
#size-cells = < 0x00 >;
reg = < 0x481a0000 0x400 >;
interrupts = < 0x7d >;
ti,spi-num-cs = < 0x02 >;
ti,hwmods = "spi1";
dmas = < 0x2b 0x2a 0x00 0x2b 0x2b 0x00 0x2b 0x2c 0x00 0x2b 0x2d 0x00 >;
dma-names = "tx0\0rx0\0tx1\0rx1";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&wfx_spi1_pins>;
//ti,pio_mode; /*disable DMA when used in overlay, DMA gets stuck at 160 bits...*/
wfx: spidev@0 {
reg = <0>;
status = "okay";
spi-max-frequency = <20000000>; /* BBB max is 48MHz*/
// "silabs,wfx-spi" is mandatory.
// Append "spidev" to be able to also use spidev driver
compatible = "silabs,wfx-spi","linux,spidev";
pinctrl-names = "default";
pinctrl-0 = <&wfx_irq &wfx_gpios>;
interrupts-extended = <0x20 19 1>;
wakeup-gpios = <0x37 17 0>;
reset-gpios = <0x20 21 0>;
local-mac-address = [de ad be ef ed 01];
};
};
Does anyone have any ideas ?
-Daniel