[OpenWrt-Devel] How to initialize multiple phy radios

Christian Lamparter chunkeey at googlemail.com
Fri Apr 22 06:32:39 EDT 2016


On Friday, April 22, 2016 02:03:01 AM David Hutchison wrote:
> I have been working on a board port and have everything working except
> for the 2nd radio. This board has a QCA9531 CPU and 2 WiFi Radios:
> AR9531 and a QCA9887 ( http://routerboard.com/RB952Ui-5ac2nD for more
> details ).
> [snip]
> Anyway, the Mikrotik hAP only has one radio and is 100% working.
> However the hAP AC Lite has an additional radio ( QCA988X )... I've
> compiled in ath10k, and added "ath79_register_pci()" but it doesn't
> find the radio. I've looked at ap91_pci_init() as well as
> ap94_pci_init() and haven't had any luck.

Does ath79_register_pci actually register the pci bus (there should
be some noise in the kernel log when it registers the pci bus)? Or
does it return an error -ENODEV?

This is what it looks like on a Archer C7: (Has a QCA9880)
[    0.129096] ar724x-pci ar724x-pci.0: PCIe link is down                                                                                                                                                                                                                       
[    0.133988] registering PCI controller with io_map_base unset                                                                                                                                                                                                                
[    0.139678] registering PCI controller with io_map_base unset                                                                                                                                                                                                                
[    0.586626] PCI host bridge to bus 0000:00                                                                                                                                                                                                                                   
[    0.590553] pci_bus 0000:00: root bus resource [mem 0x10000000-0x11ffffff]                                                                                                                                                                                                   
[    0.597148] pci_bus 0000:00: root bus resource [io  0x0000]                                                                                                                                                                                                                  
[    0.602534] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0] 

I looked at ath79_register_pci, it is located in /arch/mips/ath79/pci.c.
On the first look, it doesn't look like your SoC is present there.
However soc_is_qca953x is just testing soc_is_qca9533. Can you verify
that this is indeed correct and the function actually calls 

> What is the normal way for initializing a platform with multiple
> radio's? Of course I don't know the exact wiring with this board, but
> I believe the QCA988X 802.11ac radio is on a PCI bus of some sort. I'm
> not entirely sure, but every example I have seen it appears to be.
Hm, I don't know much about your device. If it's a proper QCA988X mini-pcie
radio and has the calibration data on a chip on its minipcie board, then
you don't need to setup anything else. Having select kmod-ath10k 
(which AFAIK includes the firmware as well) is enough.

But if the calibration data for ath10k is part of the routerboard's caldata
partition, you need to extracted by the userspace. This is currently done
by a script:

So you will need to add your device there with the right extraction

openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list