diff --git a/Android.mk b/Android.mk index 6a388c2..0495a1b 100644 --- a/Android.mk +++ b/Android.mk @@ -27,4 +27,24 @@ LOCAL_PATH := $(call my-dir) ifneq ($(filter vs985,$(TARGET_DEVICE)),) include $(call all-makefiles-under,$(LOCAL_PATH)) + +WCNSS_IMAGES := \ + wcnss.b00 wcnss.b01 wcnss.b02 wcnss.b04 wcnss.b06 \ + wcnss.b07 wcnss.b08 wcnss.b09 wcnss.mdt + +WCNSS_SYMLINKS := $(addprefix $(TARGET_OUT_VENDOR)/firmware/,$(notdir $(WCNSS_IMAGES))) +$(WCNSS_SYMLINKS): $(LOCAL_INSTALLED_MODULE) + @echo "WCNSS firmware link: $@" + @mkdir -p $(dir $@) + @rm -rf $@ + $(hide) ln -sf /firmware/wcnss/$(notdir $@) $@ + +ALL_DEFAULT_INSTALLED_MODULES += $(WCNSS_SYMLINKS) + +# Create a link for the WCNSS config file, which ends up as a writable +# version in /data/misc/wifi +$(shell mkdir -p $(TARGET_OUT)/etc/firmware/wlan/prima; \ + ln -sf /data/misc/wifi/WCNSS_qcom_cfg.ini \ + $(TARGET_OUT)/etc/firmware/wlan/prima/WCNSS_qcom_cfg.ini) + endif diff --git a/BoardConfig.mk b/BoardConfig.mk index 19ae4b9..6a3d3a0 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -28,5 +28,16 @@ BOARD_RECOVERYIMAGE_PARTITION_SIZE := 16777216 BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2692743168 BOARD_USERDATAIMAGE_PARTITION_SIZE := 27325360128 +# Wifi +BOARD_HAS_QCOM_WLAN := true +BOARD_WLAN_DEVICE := qcwcn +WPA_SUPPLICANT_VERSION := VER_0_8_X +BOARD_WPA_SUPPLICANT_DRIVER := NL80211 +BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) +BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) +TARGET_USES_WCNSS_CTRL := true +WIFI_DRIVER_FW_PATH_STA := "sta" +WIFI_DRIVER_FW_PATH_AP := "ap" + # inherit from the proprietary version -include vendor/lge/vs985/BoardConfigVendor.mk diff --git a/device.mk b/device.mk index e13c136..33c6ab8 100644 --- a/device.mk +++ b/device.mk @@ -22,5 +22,11 @@ $(call inherit-product-if-exists, vendor/lge/vs985/vs985-vendor.mk) # Overlays DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/overlay +# Wifi +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/wifi/WCNSS_cfg.dat:system/etc/firmware/wlan/prima/WCNSS_cfg.dat \ + $(LOCAL_PATH)/wifi/WCNSS_qcom_cfg.ini:system/etc/wifi/WCNSS_qcom_cfg.ini \ + $(LOCAL_PATH)/wifi/WCNSS_qcom_wlan_nv.bin:system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin + # common g3 $(call inherit-product, device/lge/g3-common/g3.mk) diff --git a/wifi/WCNSS_cfg.dat b/wifi/WCNSS_cfg.dat new file mode 100644 index 0000000..46d4d7e Binary files /dev/null and b/wifi/WCNSS_cfg.dat differ diff --git a/wifi/WCNSS_qcom_cfg.ini b/wifi/WCNSS_qcom_cfg.ini new file mode 100644 index 0000000..3449e49 --- /dev/null +++ b/wifi/WCNSS_qcom_cfg.ini @@ -0,0 +1,421 @@ +# 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 + + +# Handoff Enable(1) Disable(0) + +gEnableHandoff=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 + + +# UAPSD service interval for VO,VI, BE, BK traffic + +InfraUapsdVoSrvIntv=0 + +InfraUapsdViSrvIntv=0 + +InfraUapsdBeSrvIntv=0 + +InfraUapsdBkSrvIntv=0 + + +# 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=0 + + +#Flag to enable HostARPOffload feature or not + +hostArpOffload=1 + +# Flag to enable Host IPv6 NS Offload feature or not +hostNSOffload=1 + +#SoftAP Related Parameters + +# AP MAc addr + +gAPMacAddr=000AF589dcab + + +# 802.11n Protection flag + +gEnableApProt=1 + + +#Enable OBSS protection + +gEnableApOBSSProt=0 + + +#Enable/Disable UAPSD for SoftAP + +gEnableApUapsd=0 + + +# 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 +# disable 11d by cheolsook.lee@lge.com, 20121010 +g11dSupportEnabled=0 + +# 802.11h support + +g11hSupportEnabled=1 + +# CCX Support and fast transition +CcxEnabled=0 +FastTransitionEnabled=1 +ImplicitQosIsEnabled=1 +gNeighborScanTimerPeriod=200 + +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 +gEnableFWRssiMonitoring=1 +# To enable, set FastRoamEnabled=1, gEnableFWRssiMonitoring=1, FastTransitionEnabled=1 +# To disable, set FastRoamEnabled=0, gEnableFWRssiMonitoring=0, FastTransitionEnabled=0 + +#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 + +gAPChannelSelectOperatingBand=0 + +#SoftAP HW mode +#eHDD_DOT11_MODE_AUTO = 0, //covers all things we support +#eHDD_DOT11_MODE_abg = 1, //11a/b/g only, no HT, no proprietary +#eHDD_DOT11_MODE_11b = 2, +#eHDD_DOT11_MODE_11g = 3, +#eHDD_DOT11_MODE_11n = 4, // 11a/b/g/n, HT 40 if gChannelBondingMode5GHz=1 +#eHDD_DOT11_MODE_11g_ONLY = 5, +#eHDD_DOT11_MODE_11n_ONLY = 6, +#eHDD_DOT11_MODE_11b_ONLY = 7, +# ifdef WLAN_FEATURE_11AC +#eHDD_DOT11_MODE_11ac_ONLY = 8, +#eHDD_DOT11_MODE_11ac = 9, +# endif +gSapDot11Mode=4 + +#Channel Bonding +gChannelBondingMode5GHz=1 + +# For Dynamic DTIM +gEnableModulatedDTIM=3 + +#Enable Keep alive with non-zero period value + +gStaKeepAlivePeriod = 30 + +#AP LINK MONITOR TIMEOUT is used for both SAP and GO mode. +#It is used to change the frequency of keep alive packets in the AP Link Monitor period which is by +#default 20s. Currently the keep alive packets are sent as an interval of 3s but after this change +#the keep alive packet frequency can be changed. + +#gApLinkMonitorPeriod = 3 + +#Enable Ap Keep Alive with non zero value in Secs +gApKeepAlivePeriod=25 + +#Enable P2P GO Keep Alive with non zero value in Secs +gGoKeepAlivePeriod=10 + +#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 + + +gVhtChannelWidth=2 +gEnableLogp=1 + + +# Enable Automatic Tx Power control + +gEnableAutomaticTxPowerControl=1 + +# 0 for OLPC 1 for CLPC and SCPC +gEnableCloseLoop=1 + +# Enable P2P administrated interface +isP2pDeviceAddrAdministrated=1 + +#Data Inactivity Timeout when in powersave (in ms) +gDataInactivityTimeout=200 + +# To disable MCS8/9 on only 2.5GHz(Case 01483285) +gEnableVhtFor24GHzBand=0 + +# 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 + +gEnableLpwrImgTransition=1 + +# Enable Tx beamforming +gTxBFEnable=1 + +# Enable Tx LDPC +#gTxLdpcEnable = 1 for HT mode, 2 for VHT mode,3 for both HT and VHT +gTxLdpcEnable=3 + +# Oxygen network (prop IE for IBSS) +gEnableOxygenNwk=0 +gFlexConnectPowerFactor=0 + +# Valid values are 2048,4096,8192 and so on +# Please don't use values other than the ones mentioned above +gMaxMediumTime=4096 + +# LGE_CHANGE_S, [WiFi][jaeoh.oh@lge.com], 2013-10-23, To improve running current consumption +# Set Listen Interval +gBmpsMinListenInterval=1 +gBmpsMaxListenInterval=10 +gBmpsModListenInterval=5 +gPowerUsage=Mod + +# LGE_CHANGE_S, Disable PNO feature +gPNOScanSupport=0 +# LGE_CHANGE_E, Disable PNO feature + +gScanResultAgeCount=3 + +# Disable CxM algorithm +# mwsCoexConfig1=1 // DISABLE_TDM +# mwsCoexConfig1=2 // WLAN_BACKOFF +# mwsCoexConfig1=4 // MODEM_BACKOFF +# mwsCoexConfig1=16 // DISABLE_SAR +mwsCoexConfig1=22 + +# TDLS configuration +gEnableTDLSSupport=1 +gEnableTDLSImplicitTrigger=0 +gTDLSTxStatsPeriod=5000 +gTDLSTxPacketThreshold=100 +gTDLSDiscoveryPeriod=20000 +gTDLSMaxDiscoveryAttempt=5 +gTDLSIdleTimeout=5000 +gTDLSRssiHysteresis=100 +gTDLSRSSITriggerThreshold=-75 +gTDLSIdlePacketThreshold=5 +gTDLSRSSITeardownThreshold=-75 + +END + +# Note: Configuration parser would not read anything past the END marker + diff --git a/wifi/WCNSS_qcom_wlan_nv.bin b/wifi/WCNSS_qcom_wlan_nv.bin new file mode 100644 index 0000000..8ad4fdb Binary files /dev/null and b/wifi/WCNSS_qcom_wlan_nv.bin differ