bsp qcom: Adding wcn3620 wifi peripheral
Adding new qcom wifi device
BUG: 23315076
Change-Id: Ib266f5c8dcab894f6d155f5bb8590f0815ff6e99
diff --git a/peripheral/wifi/wcn3620/WCNSS_cfg.dat b/peripheral/wifi/wcn3620/WCNSS_cfg.dat
new file mode 100644
index 0000000..0637816
--- /dev/null
+++ b/peripheral/wifi/wcn3620/WCNSS_cfg.dat
Binary files differ
diff --git a/peripheral/wifi/wcn3620/WCNSS_qcom_cfg.ini b/peripheral/wifi/wcn3620/WCNSS_qcom_cfg.ini
new file mode 100644
index 0000000..4b98e26
--- /dev/null
+++ b/peripheral/wifi/wcn3620/WCNSS_qcom_cfg.ini
@@ -0,0 +1,396 @@
+# This file allows user to override the factory
+
+# defaults for the WLAN Driver
+
+
+# Enable IMPS or not
+gEnableImps=1
+
+# Enable/Disable Idle Scan
+
+gEnableIdleScan=0
+
+
+# Increase sleep duration (seconds) during IMPS
+# 0 implies no periodic wake up from IMPS. Periodic wakeup is
+# unnecessary if Idle Scan is disabled.
+gImpsModSleepTime=0
+
+
+# Enable BMPS or not
+gEnableBmps=1
+
+# Enable suspend or not
+
+# 1: Enable standby, 2: Enable Deep sleep, 3: Enable Mcast/Bcast Filter
+
+gEnableSuspend=3
+
+
+# Phy Mode (auto, b, g, n, etc)
+# Valid values are 0-9, with 0 = Auto, 4 = 11n, 9 = 11ac
+gDot11Mode=0
+
+
+# CSR Roaming Enable(1) Disable(0)
+
+gRoamingTime=0
+
+
+# Assigned MAC Addresses - This will be used until NV items are in place
+
+# Each byte of MAC address is represented in Hex format as XX
+
+Intf0MacAddress=000AF58989FF
+Intf1MacAddress=000AF58989FE
+Intf2MacAddress=000AF58989FD
+
+Intf3MacAddress=000AF58989FC
+
+# Set/Clear UAPSD mask
+
+UapsdMask=0
+
+# UAPSD service interval for VO,VI, BE, BK traffic
+
+InfraUapsdVoSrvIntv=20
+
+InfraUapsdViSrvIntv=40
+
+# Flag to allow STA send AddTspec even when ACM is Off
+gAddTSWhenACMIsOff=1
+
+# Make 1x1 the default antenna configuration
+
+gNumRxAnt=1
+
+
+# Beacon filtering frequency (unit in beacon intervals)
+
+gNthBeaconFilter=50
+
+
+# Enable WAPI or not
+
+# WAPIIsEnabled=0
+
+
+# Flags to filter Mcast abd Bcast RX packets.
+
+# Value 0: No filtering, 1: Filter all Multicast.
+
+# 2: Filter all Broadcast. 3: Filter all Mcast abd Bcast
+
+McastBcastFilter=3
+
+
+#Flag to enable HostARPOffload feature or not
+
+hostArpOffload=1
+
+
+#SoftAP Related Parameters
+
+# AP MAc addr
+
+gAPMacAddr=000AF589dcab
+
+
+# 802.11n Protection flag
+
+gEnableApProt=1
+
+
+#Enable OBSS protection
+
+gEnableApOBSSProt=1
+
+
+#Enable/Disable UAPSD for SoftAP
+
+gEnableApUapsd=1
+
+
+# Fixed Rate
+
+gFixedRate=0
+
+
+# Maximum Tx power
+
+# gTxPowerCap=30
+
+
+# Fragmentation Threshold
+
+# gFragmentationThreshold=2346
+
+
+# RTS threshold
+
+RTSThreshold=2347
+
+
+# Intra-BSS forward
+
+gDisableIntraBssFwd=0
+
+
+# WMM Enable/Disable
+
+WmmIsEnabled=0
+
+
+# 802.11d support
+
+g11dSupportEnabled=1
+
+# CCX Support and fast transition
+EseEnabled=0
+FastTransitionEnabled=1
+ImplicitQosIsEnabled=0
+gNeighborScanTimerPeriod=200
+
+# default value of this parameter is zero to enable dynamic threshold allocation
+# to set static roming threshold uncomment below parameter and set vaule
+#gNeighborLookupThreshold=78
+
+gNeighborScanChannelMinTime=20
+gNeighborScanChannelMaxTime=30
+
+# Legacy (non-CCX, non-802.11r) Fast Roaming Support
+# To enable, set FastRoamEnabled=1
+# To disable, set FastRoamEnabled=0
+FastRoamEnabled=1
+
+#Check if the AP to which we are roaming is better than current AP in terms of RSSI.
+#Checking is disabled if set to Zero.Otherwise it will use this value as to how better
+#the RSSI of the new/roamable AP should be for roaming
+RoamRssiDiff=5
+
+# SAP Country code
+
+# Default Country Code is 2 bytes, 3rd byte is optional indoor or out door.
+
+# Example
+
+# US Indoor, USI
+
+# Korea Outdoor, KRO
+
+# Japan without optional byte, JP
+
+# France without optional byte, FR
+
+#gAPCntryCode=USI
+
+
+#Short Guard Interval Enable/disable
+
+gShortGI20Mhz=1
+
+gShortGI40Mhz=1
+
+
+#Auto Shutdown Value in seconds. A value of 0 means Auto shutoff is disabled
+
+gAPAutoShutOff=0
+
+
+# SAP auto channel selection configuration
+
+# 0 = disable auto channel selection
+
+# 1 = enable auto channel selection, channel provided by supplicant will be ignored
+
+gApAutoChannelSelection=0
+
+
+# Listen Energy Detect Mode Configuration
+
+# Valid values 0-128
+
+# 128 means disable Energy Detect feature
+
+# 0-9 are threshold code and 7 is recommended value from system if feature is to be enabled.
+
+# 10-128 are reserved.
+
+# The EDET threshold mapping is as follows in 3dB step:
+
+# 0 = -60 dBm
+
+# 1 = -63 dBm
+
+# 2 = -66 dBm
+
+# ...
+
+# 7 = -81 dBm
+
+# 8 = -84 dBm
+
+# 9 = -87 dBm
+
+# Note: Any of these settings are valid. Setting 0 would yield the highest power saving (in a noisy environment) at the cost of more range. The range impact is approximately #calculated as:
+
+#
+
+# Range Loss (dB) = EDET threshold level (dBm) + 97 dBm.
+
+#
+
+gEnablePhyAgcListenMode=128
+
+
+#Preferred channel to start BT AMP AP mode (0 means, any channel)
+
+BtAmpPreferredChannel=0
+
+
+#Preferred band (both or 2.4 only or 5 only)
+
+BandCapability=0
+
+
+#Beacon Early Termination (1 = enable the BET feature, 0 = disable)
+
+enableBeaconEarlyTermination=1
+
+beaconEarlyTerminationWakeInterval=11
+
+
+#Bluetooth Alternate Mac Phy (1 = enable the BT AMP feature, 0 = disable)
+
+gEnableBtAmp=0
+
+
+#SOFTAP Channel Range selection
+
+gAPChannelSelectStartChannel=1
+
+gAPChannelSelectEndChannel=11
+
+
+#SOFTAP Channel Range selection Operating band
+
+# 0:2.4GHZ 1: LOW-5GHZ 2:MID-5GHZ 3:HIGH-5GHZ 4: 4.9HZ BAND 5: 5GHZ BAND
+
+gAPChannelSelectOperatingBand=0
+
+
+#Channel Bonding
+gChannelBondingMode5GHz=1
+
+gEnableModulatedDTIM = 3
+gMaxLIModulatedDTIM = 3
+gEnableDatainactivity = 200
+
+#Enable Keep alive with non-zero period value
+
+gStaKeepAlivePeriod=30
+
+
+#Say gGoKeepAlivePeriod(5 seconds) and gGoLinkMonitorPeriod(10 seconds).
+#For every 10 seconds DUT sends Qos Null frame(i.e., Keep Alive frame if link is idle for last 10 seconds.)
+#For both active and power save clients.
+
+#Power save clients: DUT set TIM bit from 10th second onwards and till client honors TIM bit.
+#If doesn't honor for 5 seconds then Driver remove client.
+
+#Active clients: DUT send Qos Null frame for 10th seconds onwards if it is not success still DUT try on
+#11th second if not tries on 12th and so on till 15th second. Hence before disconnection DUT will send 5 NULL frames.
+#Hence in any case DUT will detect client got removed in (10+5) seconds. i.e., (gGoKeepAlivePeriod +gGoLinkMonitorPeriod)..
+
+#gGoLinkMonitorPeriod/ gApLinkMonitorPeriod is period where link is idle and it is period
+#where we send NULL frame.
+
+#gApLinkMonitorPeriod = 10
+
+#gGoLinkMonitorPeriod = 10
+
+#gGoKeepAlivePeriod/gApKeepAlivePeriod is time to spend to check whether frame are succeed to send or not.
+#Hence total effective detection time is gGoLinkMonitorPeriod+ gGoKeepAlivePeriod/gApLinkMonitorPeriod+ gApKeepAlivePeriod.
+gGoKeepAlivePeriod = 10
+
+gApKeepAlivePeriod = 30
+#If set will start with active scan after driver load, otherwise will start with
+
+#passive scan to find out the domain
+
+#gEnableBypass11d=1
+
+
+#If set to 0, will not scan DFS channels
+
+gEnableDFSChnlScan=1
+
+gEnableLogp=1
+
+
+# Enable Automatic Tx Power control
+
+gEnableAutomaticTxPowerControl=0
+
+# 0 for OLPC 1 for CLPC and SCPC
+gEnableCloseLoop=1
+
+#Data Inactivity Timeout when in powersave (in ms)
+gDataInactivityTimeout=200
+
+gEnableLpwrImgTransition=1
+
+# Scan Timing Parameters
+# gPassiveMaxChannelTime=110
+# gPassiveMinChannelTime=60
+# Enable Tx LDPC
+#gTxLdpcEnable = 1 for HT mode, 2 for VHT mode,3 for both HT and VHT
+gTxLdpcEnable=3
+# gActiveMaxChannelTime=40
+# gActiveMinChannelTime=20
+
+# Valid values are 2048,4096,8192 and so on
+# Please don't use values other than the ones mentioned above
+gMaxMediumTime=4096
+
+# 802.11K support
+gRrmEnable=1
+gRrmOperChanMax=8
+gRrmNonOperChanMax=8
+gRrmRandIntvl=100
+
+#Scan offload
+gEnableDirectedScanOffload=0
+
+#FlexConnect Power Factor
+#Default is set to 0 (disable)
+gFlexConnectPowerFactor=0
+
+gVhtChannelWidth=2
+
+# VHT Tx/Rx MCS values
+# Valid values are 0,1,2. If commented out, the default value is 0.
+# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
+gVhtRxMCS=2
+gVhtTxMCS=2
+
+# Enable Tx beamforming
+gTxBFEnable=1
+
+#Enable/Disable TDLS Feature
+gEnableTDLSSupport=1
+
+#Enable/Disable TDLS Implicit Trigger
+gEnableTDLSImplicitTrigger=0
+
+#Enable/Disable TDLS WMM Mode
+gEnableTDLSWmmMode=1
+
+#Enable/Disable TDLS Buffer Sta
+gEnableTDLSBufferSta=1
+
+
+END
+
+# Note: Configuration parser would not read anything past the END marker
+
diff --git a/peripheral/wifi/wcn3620/WCNSS_qcom_wlan_nv.bin b/peripheral/wifi/wcn3620/WCNSS_qcom_wlan_nv.bin
new file mode 100644
index 0000000..9671792
--- /dev/null
+++ b/peripheral/wifi/wcn3620/WCNSS_qcom_wlan_nv.bin
Binary files differ
diff --git a/peripheral/wifi/wcn3620/WCNSS_wlan_dictionary.dat b/peripheral/wifi/wcn3620/WCNSS_wlan_dictionary.dat
new file mode 100644
index 0000000..328f0c7
--- /dev/null
+++ b/peripheral/wifi/wcn3620/WCNSS_wlan_dictionary.dat
@@ -0,0 +1,390 @@
+
+/*------------------------------------------------------------------------------
+//DO NOT EDIT
+BEGIN
+HAL_PHY_RATE_11AC_DUP_12_MBPS gl
+HAL_PHY_RATE_11AC_DUP_18_MBPS gm
+HAL_PHY_RATE_11AC_DUP_24_MBPS gn
+HAL_PHY_RATE_11AC_DUP_36_MBPS go
+HAL_PHY_RATE_11AC_DUP_48_MBPS gp
+HAL_PHY_RATE_11AC_DUP_54_MBPS gq
+HAL_PHY_RATE_11AC_DUP_6_MBPS gj
+HAL_PHY_RATE_11AC_DUP_9_MBPS gk
+HAL_PHY_RATE_11A_12_MBPS e8
+HAL_PHY_RATE_11A_18_MBPS e9
+HAL_PHY_RATE_11A_24_MBPS fa
+HAL_PHY_RATE_11A_36_MBPS fb
+HAL_PHY_RATE_11A_48_MBPS fc
+HAL_PHY_RATE_11A_54_MBPS fd
+HAL_PHY_RATE_11A_6_MBPS e6
+HAL_PHY_RATE_11A_9_MBPS e7
+HAL_PHY_RATE_11A_DUP_12_MBPS fg
+HAL_PHY_RATE_11A_DUP_18_MBPS fh
+HAL_PHY_RATE_11A_DUP_24_MBPS fi
+HAL_PHY_RATE_11A_DUP_36_MBPS fj
+HAL_PHY_RATE_11A_DUP_48_MBPS fk
+HAL_PHY_RATE_11A_DUP_54_MBPS fl
+HAL_PHY_RATE_11A_DUP_6_MBPS fe
+HAL_PHY_RATE_11A_DUP_9_MBPS ff
+HAL_PHY_RATE_11B_LONG_11_MBPS e2
+HAL_PHY_RATE_11B_LONG_1_MBPS ez
+HAL_PHY_RATE_11B_LONG_2_MBPS e0
+HAL_PHY_RATE_11B_LONG_5_5_MBPS e1
+HAL_PHY_RATE_11B_SHORT_11_MBPS e5
+HAL_PHY_RATE_11B_SHORT_2_MBPS e3
+HAL_PHY_RATE_11B_SHORT_5_5_MBPS e4
+HAL_PHY_RATE_MCS_1NSS_13_MBPS fn
+HAL_PHY_RATE_MCS_1NSS_19_5_MBPS fo
+HAL_PHY_RATE_MCS_1NSS_26_MBPS fp
+HAL_PHY_RATE_MCS_1NSS_39_MBPS fq
+HAL_PHY_RATE_MCS_1NSS_52_MBPS fr
+HAL_PHY_RATE_MCS_1NSS_58_5_MBPS fs
+HAL_PHY_RATE_MCS_1NSS_65_MBPS ft
+HAL_PHY_RATE_MCS_1NSS_6_5_MBPS fm
+HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS f7
+HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS f8
+HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS f9
+HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS f2
+HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS f3
+HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS f4
+HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS f5
+HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS f6
+HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS fv
+HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS fw
+HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS fx
+HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS fy
+HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS fz
+HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS f0
+HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS f1
+HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS fu
+HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS gf
+HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS gg
+HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS gh
+HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS ga
+HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS gb
+HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS gc
+HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS gd
+HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS ge
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS gs
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS gt
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS gu
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS gv
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS gw
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS gx
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS gy
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS gr
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS gz
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS j8
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS g1
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS g2
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS g3
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS g4
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS g5
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS g6
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS g7
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS g0
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS g8
+HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS j9
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS he
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS hf
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS hg
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS g9
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS hh
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS hi
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS ha
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS hb
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS hc
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS hd
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS ho
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS hp
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS hq
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS hj
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS hr
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS hs
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS hk
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS hl
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS hm
+HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS hn
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS hw
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS hx
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS hy
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS hz
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS h0
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS ht
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS h1
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS h2
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS hu
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS hv
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS h6
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS h7
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS h8
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS h9
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS ia
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS h3
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS ib
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS ic
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS h4
+HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS h5
+MAX_2_4GHZ_CHANNEL dt
+MIN_2_4GHZ_CHANNEL ds
+MODE_802_11AG d7
+MODE_802_11B d6
+MODE_802_11N d8
+NUM_2_4GHZ_CHANNELS du
+NUM_802_11_MODES d9
+NUM_HAL_PHY_RATES ie
+NUM_NV_FIELDS ak
+NUM_NV_TABLE_IDS jl
+NUM_PHY_MAX_TX_CHAINS a2
+NUM_PRODUCT_BANDS ao
+NUM_REG_DOMAINS bc
+NUM_RF_CHANNELS dr
+NUM_RF_SUBBANDS bi
+NV_COMMON_COUPLER_TYPE ah
+NV_COMMON_MAC_ADDR ae
+NV_COMMON_MFG_SERIAL_NUMBER af
+NV_COMMON_NUM_OF_RX_CHAINS ad
+NV_COMMON_NUM_OF_TX_CHAINS ac
+NV_COMMON_NV_VERSION ai
+NV_COMMON_PRODUCT_BANDS ab
+NV_COMMON_PRODUCT_ID aa
+NV_COMMON_RESERVED aj
+NV_COMMON_WLAN_NV_REV_ID ag
+NV_FIELDS_IMAGE i6
+NV_TABLE_ANTENNA_PATH_LOSS jg
+NV_TABLE_CAL_MEMORY je
+NV_TABLE_DEFAULT_COUNTRY i9
+NV_TABLE_FW_CONFIG jf
+NV_TABLE_HW_CAL_VALUES jc
+NV_TABLE_OFDM_CMD_PWR_OFFSET ji
+NV_TABLE_PACKET_TYPE_POWER_LIMITS jh
+NV_TABLE_RATE_POWER_SETTINGS i7
+NV_TABLE_REGULATORY_DOMAINS i8
+NV_TABLE_RSSI_CHANNEL_OFFSETS jd
+NV_TABLE_TPC_PDADC_OFFSETS jb
+NV_TABLE_TPC_POWER_TABLE ja
+NV_TABLE_TX_BB_FILTER_MODE jj
+NV_TABLE_VIRTUAL_RATE jk
+PHY_TX_CHAIN_0 a1
+PRODUCT_BAND_11_A an
+PRODUCT_BAND_11_A_B_G am
+PRODUCT_BAND_11_B_G al
+REG_DOMAIN_APAC a8
+REG_DOMAIN_ETSI a4
+REG_DOMAIN_FCC a3
+REG_DOMAIN_HI_5GHZ ba
+REG_DOMAIN_JAPAN a5
+REG_DOMAIN_KOREA a9
+REG_DOMAIN_NO_5GHZ bb
+REG_DOMAIN_N_AMER_EXC_FCC a7
+REG_DOMAIN_WORLD a6
+RF_CHAN_1 bj
+RF_CHAN_10 bs
+RF_CHAN_100 cc
+RF_CHAN_104 cd
+RF_CHAN_108 ce
+RF_CHAN_10_1 kn
+RF_CHAN_11 bt
+RF_CHAN_112 cf
+RF_CHAN_116 cg
+RF_CHAN_11_1 ko
+RF_CHAN_12 bu
+RF_CHAN_120 ch
+RF_CHAN_124 ci
+RF_CHAN_128 cj
+RF_CHAN_12_1 kp
+RF_CHAN_13 bv
+RF_CHAN_132 ck
+RF_CHAN_136 cl
+RF_CHAN_13_1 kq
+RF_CHAN_14 bw
+RF_CHAN_140 cm
+RF_CHAN_144 kt
+RF_CHAN_149 cn
+RF_CHAN_14_1 kr
+RF_CHAN_153 co
+RF_CHAN_157 cp
+RF_CHAN_161 cq
+RF_CHAN_165 cr
+RF_CHAN_1_1 ke
+RF_CHAN_2 bk
+RF_CHAN_208 b1
+RF_CHAN_212 b2
+RF_CHAN_216 b3
+RF_CHAN_240 bx
+RF_CHAN_244 by
+RF_CHAN_248 bz
+RF_CHAN_252 b0
+RF_CHAN_2_1 kf
+RF_CHAN_3 bl
+RF_CHAN_36 b4
+RF_CHAN_3_1 kg
+RF_CHAN_4 bm
+RF_CHAN_40 b5
+RF_CHAN_44 b6
+RF_CHAN_48 b7
+RF_CHAN_4_1 kh
+RF_CHAN_5 bn
+RF_CHAN_52 b8
+RF_CHAN_56 b9
+RF_CHAN_5_1 ki
+RF_CHAN_6 bo
+RF_CHAN_60 ca
+RF_CHAN_64 cb
+RF_CHAN_6_1 kj
+RF_CHAN_7 bp
+RF_CHAN_7_1 kk
+RF_CHAN_8 bq
+RF_CHAN_8_1 kl
+RF_CHAN_9 br
+RF_CHAN_9_1 km
+RF_CHAN_BOND_10 cz
+RF_CHAN_BOND_102 dd
+RF_CHAN_BOND_106 de
+RF_CHAN_BOND_11 c0
+RF_CHAN_BOND_110 df
+RF_CHAN_BOND_114 dg
+RF_CHAN_BOND_118 dh
+RF_CHAN_BOND_122 di
+RF_CHAN_BOND_126 dj
+RF_CHAN_BOND_130 dk
+RF_CHAN_BOND_134 dl
+RF_CHAN_BOND_138 dm
+RF_CHAN_BOND_142 ku
+RF_CHAN_BOND_151 dn
+RF_CHAN_BOND_155 do
+RF_CHAN_BOND_159 dp
+RF_CHAN_BOND_163 dq
+RF_CHAN_BOND_210 c4
+RF_CHAN_BOND_214 c5
+RF_CHAN_BOND_242 c1
+RF_CHAN_BOND_246 c2
+RF_CHAN_BOND_250 c3
+RF_CHAN_BOND_3 cs
+RF_CHAN_BOND_38 c6
+RF_CHAN_BOND_4 ct
+RF_CHAN_BOND_42 c7
+RF_CHAN_BOND_46 c8
+RF_CHAN_BOND_5 cu
+RF_CHAN_BOND_50 c9
+RF_CHAN_BOND_54 da
+RF_CHAN_BOND_58 db
+RF_CHAN_BOND_6 cv
+RF_CHAN_BOND_62 dc
+RF_CHAN_BOND_7 cw
+RF_CHAN_BOND_8 cx
+RF_CHAN_BOND_9 cy
+RF_SUBBAND_2_4_GHZ bd
+RF_SUBBAND_4_9_GHZ bh
+RF_SUBBAND_5_HIGH_GHZ bg
+RF_SUBBAND_5_LOW_GHZ be
+RF_SUBBAND_5_MID_GHZ bf
+adjustedPwrDet ew
+antennaGain dy
+antennaPathLoss jv
+bRatePowerOffset dz
+bRssiOffset d1
+band d5
+calData er
+chanId i4
+channelNum d4
+channels dx
+configItem1 ik
+configItem2 i1
+configItem3 i2
+configItem4 i3
+countryCode ig
+couplerType az
+custom_tcxo_reg8 ef
+custom_tcxo_reg9 eg
+defaultCountryTable jo
+e80211Modes j6
+eHalPhyRates j7
+ePhyTxChains j1
+eRegDomainId j2
+eRfChannels j4
+eRfChannels_2_4GHz j5
+eRfSubBand j3
+else kv
+empirical ex
+enableDPD2G iv
+enableDPD5G iw
+enabled dv
+endif id
+extPaCtrl0Polarity in
+extPaCtrl1Polarity io
+fields jz
+fwConfig js
+gnRatePowerOffset d0
+gnRssiOffset d2
+hwCalValues ju
+hwParam10 eo
+hwParam11 ep
+hwParam2 ee
+hwParam3 eh
+hwParam4 ei
+hwParam5 ej
+hwParam6 ek
+hwParam7 el
+hwParam8 em
+hwParam9 en
+ifdef gi
+latest kw
+macAddr au
+macAddr1 ks
+macAddr2 av
+macAddr3 aw
+macAddr4 ax
+mfgSN ay
+numOfRxChains at
+numOfTxChains as
+nvVersion a0
+nv_TxBBFSel9MHz ed
+ofdmCmdPwrOffset jx
+ofdmPwrOffset et
+pdadcSelect2G ix
+pdadcSelect5GHigh i0
+pdadcSelect5GLow iy
+pdadcSelect5GMid iz
+pktTypePwrLimits jw
+plutCharacterized jp
+plutPdadcOffset jq
+productBands aq
+productId ap
+psSlpTimeOvrHd2G ea
+psSlpTimeOvrHd5G eb
+psSlpTimeOvrHdxLNA5G ec
+pwr i5
+pwrDetAdc ev
+pwrLimit dw
+pwrOptimum jm
+pwrOptimum_virtualRate jr
+pwrSampled ey
+regDomain if
+regDomains jn
+rssiChanOffsets jt
+rsvd eu
+skuID ih
+tRateGroupPwr kb
+tRateGroupPwrVR kd
+tTpcCaldPowerTable ka
+tTpcPowerTable kc
+tables j0
+targetFreq d3
+tpcMode2G ii
+tpcMode5G ij
+txFirFilterMode es
+txbbFilterMode jy
+validBmap eq
+wlanNvRevId ar
+xCoupler2G ir
+xCoupler5G is
+xLNA2G ip
+xLNA5G iq
+xPA2G il
+xPA5G im
+xPdet2G it
+xPdet5G iu
+
+END
+------------------------------------------------------------------------------*/
diff --git a/peripheral/wifi/wcn3620/peripheral.mk b/peripheral/wifi/wcn3620/peripheral.mk
new file mode 100644
index 0000000..4bd615d
--- /dev/null
+++ b/peripheral/wifi/wcn3620/peripheral.mk
@@ -0,0 +1,37 @@
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+WLAN_FIRMWARE_SRC = hardware/bsp/qcom/peripheral/wifi/wcn3620
+FIRMWARE_DST = system/vendor/firmware
+
+# Wireless peripheral firmware -- loaded by drivers/net/wireless/wcnss.
+WCNSS_FILES := mdt b00 b01 b02 b04 b06 b09 b10 b11
+WCNSS_COPY_FILES += \
+ $(join $(patsubst %, $(WLAN_FIRMWARE_SRC)/wcnss.%, $(WCNSS_FILES)), $(patsubst %, :$(FIRMWARE_DST)/wcnss.%, $(WCNSS_FILES)))
+
+PRODUCT_COPY_FILES += $(WCNSS_COPY_FILES)
+
+# WiFi driver -- loaded by drivers/staging/prima.
+WLAN_FIRMWARE_DST = $(FIRMWARE_DST)/wlan/prima
+PRIMA_FILES = \
+ WCNSS_cfg.dat \
+ WCNSS_qcom_cfg.ini \
+ WCNSS_qcom_wlan_nv.bin \
+ WCNSS_wlan_dictionary.dat
+PRIMA_COPY_FILES += \
+ $(join $(patsubst %, $(WLAN_FIRMWARE_SRC)/%, $(PRIMA_FILES)), $(patsubst %, :$(WLAN_FIRMWARE_DST)/%, $(PRIMA_FILES)))
+
+PRODUCT_COPY_FILES += $(PRIMA_COPY_FILES)
diff --git a/peripheral/wifi/wcn3620/wcnss.b00 b/peripheral/wifi/wcn3620/wcnss.b00
new file mode 100644
index 0000000..008321e
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.b00
Binary files differ
diff --git a/peripheral/wifi/wcn3620/wcnss.b01 b/peripheral/wifi/wcn3620/wcnss.b01
new file mode 100644
index 0000000..8f48ed8
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.b01
Binary files differ
diff --git a/peripheral/wifi/wcn3620/wcnss.b02 b/peripheral/wifi/wcn3620/wcnss.b02
new file mode 100644
index 0000000..ea50706
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.b02
Binary files differ
diff --git a/peripheral/wifi/wcn3620/wcnss.b04 b/peripheral/wifi/wcn3620/wcnss.b04
new file mode 100644
index 0000000..271ad3c
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.b04
Binary files differ
diff --git a/peripheral/wifi/wcn3620/wcnss.b06 b/peripheral/wifi/wcn3620/wcnss.b06
new file mode 100644
index 0000000..da8d8da
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.b06
Binary files differ
diff --git a/peripheral/wifi/wcn3620/wcnss.b09 b/peripheral/wifi/wcn3620/wcnss.b09
new file mode 100644
index 0000000..6048a30
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.b09
Binary files differ
diff --git a/peripheral/wifi/wcn3620/wcnss.b10 b/peripheral/wifi/wcn3620/wcnss.b10
new file mode 100644
index 0000000..6817491
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.b10
Binary files differ
diff --git a/peripheral/wifi/wcn3620/wcnss.b11 b/peripheral/wifi/wcn3620/wcnss.b11
new file mode 100644
index 0000000..c5b3863
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.b11
Binary files differ
diff --git a/peripheral/wifi/wcn3620/wcnss.mdt b/peripheral/wifi/wcn3620/wcnss.mdt
new file mode 100644
index 0000000..8d0f637
--- /dev/null
+++ b/peripheral/wifi/wcn3620/wcnss.mdt
Binary files differ