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