Previously, IPA had its default vote which will bump up the SNOC
frequency to 200 MHz. Now IPA has removed its vote which is
causing throughput drop in HE cases for SAP and P2P GO mode.
To fix this, add new throughput level TPUT_LEVEL_HIGH_HE_CASE and
provide ini to set its threshold to increase SNOC frequency to
200 MHz. To enable, set ini BandwidthMidHighThreshold to 7000.
Change-Id: Ica8c640597c37602aea2f5e4ff6b0646c49ff548
CRs-Fixed: 3297833
There are quite a few documentation issues in core/pld:
- Documentation of implementations instead of interfaces
- Duplicate documentation
- Syntatically incorrect kernel-doc
Fix all of these issues.
Change-Id: Ia6ef2fda239e9021c879bc4672c9e80ec5c93921
CRs-Fixed: 3386837
Current code does not use the SSR host log collection API.
Fix this by adding SSR host log collection API usage.
Change-Id: I364bd6281e886e8c50dfd6f45f78fb98e822f962
CRs-Fixed: 3339953
Add PLD API support for mapping and unmapping memory
regions via platform driver API calls to Audio SMMU
context bank.
Change-Id: I93b5308ce6cb024773a780c0aaf98a4fd06281d7
CRs-Fixed: 3351568
Add PLD API to check whether direct_link is supported
by FW or not. Call platform driver API to get direct_link
support from FW capability.
Change-Id: Iac16427a853a3548dd49ece7a2839792e7c87e84
CRs-Fixed: 3335266
In some platform IRQ allocation may be failed because it can't support
so many MSI vectors. Driver can't be loaded in this platform.
Implement one MSI vector dynamic support. MSI vector number is defined
in platform driver, so add platform API to show whether platform is in
one MSI vector mode or not.
Change-Id: I5e87ec456b654701a195c793087f078cf7647a3c
CRs-Fixed: 3290815
To protect firmware not downloaded in system suspend, acquire/release
the cnss semaphore cnss_pm_sem. It is complex, and cnss function
cnss_pm_notify may trigger dead lock issue once PM_POST_SUSPEND is
ahead of PM_SUSPEND_PREPARE.
Optimize code to use PM wakelock API to protect firmware downloading.
Change-Id: I533c373b85f554fbcceb562d9f56c6b88e5155bb
CRs-Fixed: 3280247
WLAN HW can be disabled at boot and thus wlan boot activities will be
deferred. Add PLD API to start wlan boot time sequence in platform
driver after HW is enabled.
Change-Id: I9dcdc9944b7f71dc3488a20719ca36c00ae62a4e
CRs-Fixed: 3222032
This reverts commit I293647175c151da0fd6628345f98ea65c83b1bb3.
New solution idle shutdown in suspend prepare is better.
Change-Id: I69a0e7401c811e4a9656fcc8e3dd069f4317cc35
CRs-Fixed: 3213236
For targets not supporting shadow config v3, the compilation
may fail since the definition for shadow config v3 will not
be available.
Featurize the shadow config v3 properly to avoid any
compilation errors for targets not supporting this feature.
Change-Id: I6d968ff98776159319ec5edad1ada1b6d888f87e
CRs-Fixed: 3214412
Due to SPF, multiple drivers are supported and are loaded
run time. It is expected for one driver to fail to load,
however the failing driver should not flood the dmesg.
Add code to rate limit pld logs to avoid flooding of dmesg.
Change-Id: I1a3b397a3e1de750e520b62d97ccea19a4bbbf7d
Add PLD API to check if mode of interrupt is legacy or not in PLD
layer. It can be used by HIF layer when required.
Change-Id: Iac6fbe01755e833c062fc08940dd07f11b3452fa
CRs-Fixed: 3126969
Deep Sleep or Hibernate are system level mode power
modes in which wlan firmware is shutdown gracefully
and linux kernel is suspended. Currently, suspend
is not allowed if firmware is down, with this change
suspend is allowed if firmware is down due to Deep
Sleep or Hibernate low power state.
A new pld api is introduced to know the low power
state from platform driver, this api is enabled based
on CONFIG_ENABLE_LOW_POWER_MODE flag. Currently, this
feature is enabled only for wearable targets.
Change-Id: Iddaa4da8ee4880a4223420f59cbe9c365c30344a
CRs-Fixed: 3090481
Currently sched-delay is not taken into account while calculating TX/RX
offload packets in bus bandwidth work handler. This may result in an
incorrect calculation and determination of TX/RX bandwidth levels and
other params which are derived from it.
Add support to consider actual scheduling delay between two bandwidth
intervals to detemine TX/RX offloaded/not-offloaded packets.
Change-Id: Icfb961cbbc1a049df0133394883755418b631056
CRs-Fixed: 3079953
Set system PM_QOS with low latency only for "very-high" throughput levels
in TX case. Currently, its being done for "high" throughput levels.
In less than "very-high" throughput cases, this allows CPU cores to
enter low power modes. This is done only for non-offloaded packets e.g.
UDP.
Change-Id: Idf1dd2968b7dd8b4ef9f4061ee862de03d962c6e
CRs-Fixed: 3045963
Use internal flag CNSS_UTILS instead of CONFIG_CNSS_UTILS which
will not be defined from kernel defconfig for out-of-kernel-tree
CNSS utils driver. CNSS_UTILS will be defined in the driver Kbuild
no matter where CONFIG_CNSS_UTILS gets defined.
Change-Id: Ifc07affd8e2dc78103be0aab54e20514c2e3b733
CRs-fixed: 3074629
In 3rd party platform, CNSS driver will provide
LTE avoidance channel frequency ranges by API
cnss_utils_get_wlan_unsafe_channel_sap.
Based on requirement, in single SAP case or SAP+SAP
case, ACS channel list should be filtered out based
on vendor unsafe channel frequency ranges.
Change-Id: I583c1bb2583c783858c54e8643fbe1af69d492b1
CRs-Fixed: 3061043
Add new MAX TPUT level to vote for Max snoc/DDR vote levels.
MAX TPUT level is only required for DBS ultra_high TPUT level.
DBS mode ultra high TPUT require highest snoc/ddr clocks.
Change-Id: Iac41f7157d61858c72ef1b28ba9ad6f768da325c
CRs-Fixed: 3071101
Add a new SNOC/DDR voting slot for DBS mode. In DBS KPI tests,
more hardware resources are needed for both HW MAC0/1.
This change adds a new logic to vote more DDR frequency when
it's in DBS mode and the overall throughput is larger than a
pre-defined threshold.
Change-Id: I14a318b417a39714865de0617c9943c1a5e04ae6
CRs-fixed: 3064197
Add the support for the feature of Full Power Down while
in low power mode.
For this feature, it need to power down wlan chip when
suspend, and power up wlan chip when resume, so need to
change to call wlan driver shutdown and then power off the
wlan chip instead of calling wlan driver suspend when do
suspend, and changing to do power on wlan chip, download
wlan firmware, and calling wlan driver reinit instead of
calling wlan driver resume when do resume.
Change-Id: I293647175c151da0fd6628345f98ea65c83b1bb3
CRs-Fixed: 3061366
Use CONFIG_CNSS_OUT_OF_TREE to control if CNSS family drivers are
built from in-kernel-tree source or out-of-kernel-tree source since
the exposed header files will be in different paths. This is also
for backward compatibility.
Change-Id: Icc1253f65a596c8579424f056dcd0fcb5e73a4a1
CRs-fixed: 3022566
The current way in the driver to handle CONFIG_CNSS_UTILS=m and
CONFIG_WCNSS_MEM_PRE_ALLOC=m will not work if the flags are not
coming from kernel Kconfig directly (e.g. CNSS utils and prealloc
module sources are built out of kernel tree) since "cppflags-
$(CONFIG_FLAG) += -DCONFIG_FLAG" will not take effect if CONFIG_FLAG=m.
Fix it in a proper way which is same as handling CONFIG_CNSS_GENL.
Change-Id: Iab4bf34bd1ae89f947bc5f7080e18569810f5f58
CRs-fixed: 3022560
CNSS platform will notify bus related event, and add related
handler in CLD driver.
Change-Id: I257f2e09c4fbefa6c4913eb7a7deba165a9b73ec
CRs-Fixed: 2922102
Add pld_get_mhi_state API to get current MHI state and
pld_is_pci_ep_awake to indicate that PCI EP is out of
low power state.
Also enable pld_prevent_l1 and pld_allow_l1 API for WCN6750
to manage low power state of PCI EP from Host.
Change-Id: Ic574bf7d7886b8e59b98e65806b387eef3a54e94
Populate WLAN device memory related info along with other SOC info
in pld_get_soc_info() API.
Change-Id: I4b269e8d96d838b3ea7f998642cc8542cebb00d5
CRs-fixed: 2899892
When the SRNG IRQs are disabled during suspend, it is
required to disable the interrupts and wait for interrupts
that are pending to complete. Adding a pld/pfrm API to disable
irq synchronously.
CRs-Fixed: 2908685
Change-Id: Ia1f17d54cbe08e8dc101c0ecc2ddee9275712659
Add proper kernel-doc comments for the PLD APIs to force assert FW.
Rename pld_collect_rddm() to pld_force_collect_target_dump() for better
understanding.
Change-Id: I8e0639a120c893dde8ee1cfd5d2aea662eaebf3f
CRs-fixed: 2800567
As part of WOW feature in WCN6750, send HOST wake up
to FW over QMI instead of WMI. To send HOST wake, add
PLD layer and call platform driver API to send QMI
EXIT_POWER_SAVE to FW.
When FW receive EXIT_POWER_SAVE QMI, it will implicitly
consider that it also received HOST_WAKEUP_FROM_SLEEP
and send ACK for it through CE2.
Change-Id: Ia0a3f4c15662f9ee58649f5c6de965f65aeafe32
CRs-Fixed: 2779370
Since PCIE Genoa has separate wlan fw patch for
mission mode(amss.bin) and ftm mode(genoaftm.bin),
but cnss2 platform driver always try to load amss.bin,
which is not feasible. So add this new interface for
cnss2 to get correct driver mode and update the fw
patch name before it start downloading wlan fw
Change-Id: I44565c5f50aa03bbc407ee135ef5b02a040b0df6
Add PLD layer support using which the platform driver sends
thermal state change notification to WLAN host. The callback
contains state variable to store the current thermal state.
Add WHUNT support to validate host implementation.
Change-Id: I5039eae967f940a7809a4b6e6d523362819fb28a
Many platforms doesn't enabled CONFIG_CNSS_UTILS,
while pld_set_wlan_unsafe_channel depends on it,
pld_set_wlan_unsafe_channel and pld_get_wlan_unsafe_channel need return 0
instead of -EINVAL, or have side effect on channel avoid feature.
Change-Id: I0967d754314d6fb7f8a289ada3bbcbae2c8b3b5e
CRs-Fixed: 2752409
Use sync wake when trying to awake device for register
accessing.
This can avoid device re-enter low power mode after
device_wake asserted.
Change-Id: I9ce421be0ecdf05a26388732cc8e15154c57a47a
CRs-Fixed: 2703608
Add PLD_HAS_DRV_SUPPORT to platform capability to indicate if PCIe
DRV is supported or not.
Change-Id: I25dcba18b795988c4cdecd3f0c355de6786e0f3f
CRs-fixed: 2722430
Any connection in 11g/a is very latency sensitive and
we need to vote for a higher DDR frequency than in
the other phy modes.
Identify the number of latency sensitive connections
in STA mode and vote for higher DDR frequency for the
latency sensitive cases.
Change-Id: I2ce20b2b40213bde52211eae659c9673c6e0d305
CRs-fixed: 2695045
Add code to handle hang event data and length received
from platform driver through uevent.
Change-Id: Ie4acf55cd7d2e602ad10eedbdeed045acfd85f56
CRs-fixed: 2650831