linux-pinenote/drivers/net/wireless
Michal Kazior de57e2c8e1 ath10k: allow loading device specific board files
Some devices differ slightly and require different
board files. If wrong board data is used they
crash or behave incorrectly.

These devices can be differentiated by looking at
PCI subsystem device id. That is the case for
qca61x4 devices at least.

The board specific filename is constructed as:

 board-<bus>-<id>.bin

For PCI in particular it is:

 board-pci-<vendor>:<dev>:<subsys_vendor>:<subsys_dev>.bin

These files are looked in device/hw specific
directories. Hence for Killer 1525 (qca6174 hw2.1)
ath10k will request:

  /lib/firmware/ath10k/QCA6174/hw2.1/board-pci-168c:003e:1a56:1525.bin

To not break any existing setups (e.g. in case
some devices in the wild already have subsys ids)
if a board specific file isn't found a generic one
is used which is the one which would be used until
now. This guarantees that after upgrading a driver
device will not suddenly stop working due to
now-missing specific board file. If this is the
case a "fallback" string is appended to the info
string when driver boots.

Keep in mind this is distinct from cal-pci-*.bin
files which contain full calibration data and MAC
address. Cal data is aimed at systems where
calibration data is stored out of band, e.g. on
nand flash instead of device EEPROM - an approach
taken by some AP/router vendors.

Board files are more of a template and needs some
bits to be filled in by the OTP program using
device EEPROM contents.

One could argue to map subsystem ids to some board
design codename strings instead of using raw ids
when building the board filename. Using a mapping
however would make it a lot more cumbersome and
time consuming (due to how patches propagate over
various kernel trees) to add support for some new
device board designs. Adding a board file is a lot
quicker and doesn't require recompilation.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2015-04-21 20:35:12 +03:00
..
ath ath10k: allow loading device specific board files 2015-04-21 20:35:12 +03:00
b43 bcma: change IRQ control function to accept bus as an argument 2015-03-02 16:59:45 +02:00
b43legacy treewide: Remove unnecessary SSB_DEVTABLE_END macro 2015-02-11 14:38:29 -08:00
brcm80211 bcma: change IRQ control function to accept bus as an argument 2015-03-02 16:59:45 +02:00
cw1200 cfg80211: add bss_type and privacy arguments in cfg80211_get_bss() 2015-03-03 15:56:01 +01:00
hostap hostap: Delete an unnecessary check before the function call "kfree" 2015-02-06 08:51:35 +02:00
ipw2x00 cfg80211-wext: export symbols only when needed 2015-02-28 21:31:09 +01:00
iwlegacy iwlegacy: 4965-rs: Remove bogus colon after newline from debug message 2015-03-03 14:22:46 +02:00
iwlwifi iwlwifi: mvm: don't override passive dwell in case of fragmented scan 2015-03-02 08:20:32 +02:00
libertas Merge mac80211-next into ath-next 2015-03-30 10:07:12 +03:00
libertas_tf
mwifiex Merge mac80211-next into ath-next 2015-03-30 10:07:12 +03:00
orinoco cfg80211-wext: export symbols only when needed 2015-02-28 21:31:09 +01:00
p54 p54pci: add handling of signal case 2015-01-23 21:37:04 +02:00
prism54
rsi rsi: fix memory leak in rsi_load_ta_instructions() 2014-12-24 17:26:08 +02:00
rt2x00 Merge commit 'c1e140bf79' from mac80211-next 2015-01-22 14:49:44 +02:00
rtl818x
rtlwifi rtlwifi: rtl8192cu: Add case in rtl92cu_get_hw_reg 2015-03-03 15:45:35 +02:00
ti cfg80211: Allow NL80211_ATTR_IFINDEX to be added to vendor events 2015-03-03 15:56:05 +01:00
zd1211rw zd1211rw: fix misspelling of current function in string 2014-12-15 13:46:19 -05:00
adm8211.c adm8211: fix error return code 2015-01-15 14:44:42 +02:00
adm8211.h
airo.c
airo.h
airo_cs.c
at76c50x-usb.c
at76c50x-usb.h
atmel.c atmel: Remove open-coded and wrong strcasecmp 2015-01-23 21:38:54 +02:00
atmel.h
atmel_cs.c
atmel_pci.c
Kconfig
mac80211_hwsim.c mac80211_hwsim: fix beacon timers 2015-03-04 10:34:15 +01:00
mac80211_hwsim.h
Makefile
mwl8k.c cfg80211: remove "channel" from survey names 2015-01-08 15:27:52 +01:00
ray_cs.c
ray_cs.h
rayctl.h
rndis_wlan.c cfg80211: remove enum station_info_flags 2015-01-08 15:28:10 +01:00
wl3501.h
wl3501_cs.c
zd1201.c
zd1201.h