커밋 그래프

358 커밋

작성자 SHA1 메시지 날짜
Jeff Johnson
6b432e8d56 cnss_prealloc: Update DDK for cnss_prealloc dependencies
Commit 97303bf330 ("cnss_prealloc: update prealloc mem pool based on
device type") introduced several new dependencies:
- cnss_prealloc has a dependency upon a new header file
  cnss_utils/cnss_common.h
- cnss2 has a dependency upon cnss_prealloc
- icnss2 has a dependency upon cnss_prealloc
- icnss2 has dependency upon cnss_utils and wlan_firmware_service

Add those dependencies to the DDK build rules.
Also add CNSS_OUT_OF_TREE config in icnss2/Kconfig file.

Change-Id: If00eb7623cffb82e02ed0f8001254082f2a19b93
CRs-Fixed: 3495407
2023-05-20 22:20:39 -07:00
Linux Build Service Account
db90870578 Merge 90e0212ecc on remote branch
Change-Id: I3e43fdfc6597b6c4082f499ac92e43af8df3513e
2023-05-19 19:17:47 -07:00
Nirav Shah
ac734e4b27 cnss2: Reduce cnss logs as part of QDSS logging
Reduce cnss logs as part of QDSS logging

Change-Id: I851146c482253d8776b762c1d27ffb0f7bc62157
CRs-Fixed: 3499978
2023-05-18 18:53:15 -07:00
Nirav Shah
1e15d131ea cnss2: Add support to configure log level
Add support to configure log level for dmesg and
ipc logging. Default log level is set to DEBUG
for ipc logging and INFO for dmesg logging.
Change default behavior of cnss_pr_dbg and
cnss_pr_vdbg API to not print in dmesg.

Change-Id: I6bb9d0bd297be20e66f563c16bb2f3f9d39d2be6
CRs-Fixed: 3499975
2023-05-19 07:21:53 +05:30
Naman Padhiar
6506428355 cnss_prealloc: Update memory pool table for WCN6750
The memory pool table decides number of reserved pools
needs to be preallocated during initialization. Update
the table for WCN6750.

Change-Id: I8679c574977026c9bb894e40384b74110d2c8ebd
CRs-Fixed: 3493255
2023-05-13 19:27:51 -07:00
Rajesh Chauhan
90e0212ecc cnss2: Add support for direct QMP to communicate with AOP
Add support for direct QMP to communicate with AOP. There
are two ways to communicate with AOP: mailbox, and direct
QMP. Based on property set in the device tree use either
direct QMP or mailbox to send messages to AOP.

Change-Id: I9fc24f8a483abb3084cda4d85acf2d53e43d9ad8
CRs-Fixed: 3488507
2023-05-11 18:02:05 -07:00
Sandeep Singh
ff9d11362f cnss_prealloc: add wrapper APIs if MEM_PRE_ALLOC flag not enabled
Add wrapper api to avoid compilaton failure if
CONFIG_WCNSS_MEM_PRE_ALLOC flag is not enabled.

Change-Id: Ic0625d68f587c79f38f33495b53645f1d7582144
CRs-Fixed: 3492092
2023-05-11 15:36:42 -07:00
Naman Padhiar
a232234d41 cnss2: Fix MHI state mismatch for MHI INIT
MHI INIT called during host driver registration leads to MHI state
mismatch because MHI is already in INIT state due to power up of
device as part of ongoing self recovery.
To fix this issue, avoid powering up device during recovery if host
driver is not registered. Device would be powered up later during
host driver registration.

Change-Id: I534dfc0e389ba97a6e2c4869d42be5ecff9609b3
CRs-Fixed: 3476947
2023-05-11 15:36:41 -07:00
Naman Padhiar
693e91a938 cnss2: Add support for MSIX interrupts
Read MSI-X address from device tree file and initialize
MSI-X address and data to support MSI-X interrupts.

Change-Id: I7cc43ca4d3e4c937f09facf12dd02437ddc2e039
CRs-Fixed: 3488821
2023-05-11 13:09:23 -07:00
Jeff Johnson
4ae0fef4d3 cnss2: Support the Bazel DDK
Android builds are transitioning to using Bazel for builds, and there
is a Driver Development Kit (DDK) which out-of-tree drivers must use
in this new scheme. Introduce the infrastructure to describe the wlan
platform driver modules using the DDK.

Change-Id: Ied2aae354aaea8a038461f6c74f26fe4f362a05a
CRs-Fixed: 3449426
2023-05-11 13:09:21 -07:00
Sandeep Singh
2dee0837c9 cnss2: record timestamps in smmu fault cb handler
Record timestamps in smmu fault cb handler.

Change-Id: I96042ffdc81fcca8069d16bf74899412cf04183c
CRs-Fixed: 3487738
2023-05-08 20:37:48 -07:00
Sandeep Singh
32e1756a19 cnss_prealloc: clean up prealloc mempool and cache on deinit
Cnss prealloc is trying to allocate memory from mempool
for wlan host driver even after cnss prealloc pool has been
destroyed by platform driver because mempool and cache is
not cleaned up on cnss pool deinit. Clean up mempool and
cache on prealloc deinit.

Change-Id: If28a27f5a21441e8650bb846ded889a33580ceaf
CRs-Fixed: 3488178
2023-05-08 12:15:19 -07:00
Alan Chen
035dc8286f cnss2: Add missing CONFIG items to Kconfig
Add missing platform driver Kconfig items to Kconfig file.

Change-Id: I87d6643d62c08de30c814aed59afa6809bfba369
CRs-Fixed: 3479052
2023-05-04 15:53:56 -07:00
Yu Wang
b26c26e7b0 cnss2: notify WLAN driver of system reboot
Notify WLAN driver of system reboot to avoid state
mismatch between cnss driver and WLAN driver.

Change-Id: I03e867484ee450c796c0dfabac7ed550a1d0337c
CRs-Fixed: 3467387
2023-04-28 19:03:31 -07:00
Will Huang
33dff49a43 cnss2: Change AFC data pointer from char* to const uint8_t*
API cnss_send_buffer_to_afcmem pass AFC data from driver to target
which is not changed in platform driver, and it is pass-through byte
stream for platform driver.

Change the AFC data pointer in API from char* to const uint8_t*.

Change-Id: Ib492dbcf028776858926d8a3e11edc528566fac1
CRs-Fixed: 3478093
2023-04-28 00:50:19 -07:00
Chaoli Zhou
cb3e0fc715 cnss2: Change log level for non-critical case
Missing respectivie reserved memory region for wlan
device during cnss probe phase is not a critical
case, so change the log level to avoid confusion.

Change-Id: I629fd94ab8f20176a0c3854b0b1d8f6f53b1b407
CRs-Fixed: 3472865
2023-04-25 23:46:44 -07:00
Sandeep Singh
97303bf330 cnss_prealloc: update prealloc mem pool based on device type
Update prealloc mem pool based on device type.

Change-Id: Ic7fc2145a0039aa55643672b8e125857c096a3ee
CRs-Fixed: 3459351
2023-04-25 23:46:44 -07:00
Yu Wang
21bd3e2016 cnss2: wait for device power up although idle restart is interrupted
When the waits on CNSS_DRIVER_EVENT_IDLE_RESTART is
interrupted by a kill signal, the device power up
is still in progress, it needs to wait for power
up complete to ensure synchronization.

Change-Id: I1f350cf70537257d8edbd5d31378d766f924915c
CRs-Fixed: 3422562
2023-04-24 00:10:45 -07:00
Alan Chen
7793f64f52 cnss2: Add 3 more log buffer regions to ssr driver logs
Add support to include hif_ce_desc_history, hif_ce_desc_history_buff,
and hang_event_data log buffer regions in ssr host dump collection.

Change-Id: I650b94973b8b12cb546a1bc2d121ee319a182767
CRs-Fixed: 3455747
2023-04-21 08:16:54 -07:00
Linux Build Service Account
00e60b6d27 Merge 8eb1e1e993 on remote branch
Change-Id: I87337423789f46b96405d5df9692e10e1428343e
2023-04-19 10:08:54 -07:00
Sandeep Singh
18a4f28a8d cnss2: notify wlan fw to stop trace collection
Cnss2 driver receives cnss_pci_smmu_fault_handler cb from smmu
driver whenever wlan fw access illegal IOVA address. In
cnss smmmu fault cb handler, cnss2 driver rings trace stop
door bell register to stop tracing in wlan fw. This will
help to get proper traces to debug where illegal access
is happening in wlan fw.

Change-Id: I953ced55d4d847ccaabad15f5f70150aec8aabd6
CRs-Fixed: 3459443
2023-04-18 18:26:59 -07:00
Chaoli Zhou
03a337ba78 cnss2: Support enable 32k sleep clk from cnss2
Add one new device tree config item "qcom,sleep-clk-supported"
to support enable 32k internal sleep clock in case it has no
external 32k clk attached in wlan chipset HW. Like qca6390
on some auto platform, host need explicitly tell firmware
to use internal sleep clock, otherwise it will cause LMAC
ps failure.

Change-Id: I52f5d332a912235596eb127ab8e4660355988038
CRs-Fixed: 3448595
2023-04-14 11:58:40 -07:00
Meng Yuan
8eb1e1e993 cnss2: fix the issue that NULL pointer may be referenced
Pointer 'plat_priv' returned from call to function
'cnss_get_plat_priv' may be NULL and may be passed to
another function that may reference it.

Change-Id: I5f8bad5efd0b728127f6f257882693a042d78223
CRs-Fixed: 3428657
2023-04-11 06:26:10 -07:00
Rajesh Chauhan
ff372a6f1d cnss_prealloc: use slab_cache from slab struct to identify mempool id
CNSS prealloc maintains various prealloc pools of 8Kb, 16Kb, 32Kb
and so on, and allocates buffer from the pool for wlan driver. When
wlan driver requests to free the memory buffer then CNSS prealloc
needs to first find out mempool id from which this buffer was allocated.
Use slab_cache from slab struct to identify memory pool id. Until
kernel 5.16, slab_cache was part of page struct but in kernel 5.17,
slab_cache is moved out to mm/slab.h file.

Also change WCNSS_PRE_ALLOC_GET_THRESHOLD to 8Kb to match with
cnss_pool_alloc_threshold.

Change-Id: I4e34d8f0b855c210cc9af30c1f4a0d6c7e43ab00
CRs-Fixed: 3414037
2023-04-10 10:37:41 -07:00
Chaoli Zhou
bd49da5f3e cnss2: Support disable pcie bw scalling from cnss2 side
Add new "qcom,no-bwscale" under child device node to
indicate it want to disable bw scalling.

And the background is like HSP, it has stability issue
with some specific pcie cable with gen3, so it will
negotiate with RC side to change from gen3 to gen2
with MHI_ER_BW_SCALE_ELEMENT_TYPE event, which will
impact all the platform that want to keep use gen3.
So add this device tree config item to skip the link
speed negotiation.

Change-Id: I4a8d94a50dd740b84c3eeac435c5a19098b79ad9
CRs-Fixed: 3435289
2023-04-07 18:28:25 -07:00
Naman Padhiar
190e1efaa9 cnss2: Avoid PBL/SBL region dump in Mission mode
Access to PBL and SBL log region in SRAM is restricted in
Mission mode. Avoid PBL/SBL log region dump in Mission mode.

Change-Id: Ia8813ccd9e2c0339c280e6cb6d6f0bab0bee206e
CRs-Fixed: 3432159
2023-04-07 17:02:05 -07:00
Wu Gao
3ef55a9a08 cnss2: Add CONFIG_DISABLE_CNSS_SRAM_DUMP
It costs 4M when loading cnss2, if device id is QCA6490 and enabled
CONFIG_CNSS2_DEBUG. Which is big memory consumption for low rate issue
debugging. So add CONFIG_DISABLE_CNSS_SRAM_DUMP to disable sram_dump.

Change-Id: Iacf338a3cc8f1583e16034a9873029a450fd254a
CRs-Fixed: 3441274
2023-04-06 19:13:16 -07:00
Alan Chen
ddbe3d0e4e cnss2: Use proper enum type for local iterator
Change type of local iterator for finding registered log
buffer region to enum.

Change-Id: Iffbde0921fa9d9c9ad15ce890af5c12b28ecc8e7
CRs-Fixed: 3436059
2023-04-03 18:26:04 -07:00
Wu Gao
5cb76f7ea2 cnss2: Define CONFIG_FREE_M3_BLOB_MEM if it is enabled
This change defines MARCO CONFIG_FREE_M3_BLOB_MEM if it is enabled.

Change-Id: I0930e105f221715a41185bbf0b318361a89130e7
CRs-Fixed: 3445596
2023-03-27 00:19:31 -07:00
Linux Build Service Account
7cc38a20ce Merge 4f03c58310 on remote branch
Change-Id: I92a9213e9c300f9811e744169af6ad4d2d0fb1a0
2023-03-20 15:42:56 -07:00
Naman Padhiar
643d19ee98 icnss2: Check for SSR before SOC Wake request
There are scenarios when WLAN Host request for
SOC Wake during SSR. If WLAN FW receives the request
before FW_READY it ASSERT.
Avoid sending SOC Wake request to FW during SSR.

Change-Id: Ia42cc17149de7a33da0161a280c79d5dfce0f4c8
CRs-Fixed: 3435111
2023-03-16 22:37:14 -07:00
Alan Chen
31dbde2074 cnss2: Add null check for allocated segment
Currently, cnss_do_host_ramdump() is allocating memory for a new segment
to be added to list to be written to ramdump, but it is not accounting
for the case that the kcalloc call returns NULL for the segment pointer.
Thus, add a null check after memory is allocated for the segment.

Change-Id: I80b68f699a44800c19a734c0be7e231726368f68
CRs-Fixed: 3431776
2023-03-16 04:54:33 -07:00
Zhaoyang Liu
203b502ea7 cnss2: Protect dependency on sec-module-symvers for KBUILD_EXTRA_SYMBOLS
Protect dependency on sec-module-symvers under flag
TARGET_KERNEL_DLKM_SECURE_MSM_OVERRIDE so that platform driver
builds successfully if TARGET_KERNEL_DLKM_SECURE_MSM_OVERRIDE
is set to false.

Change-Id: Ib357815f73cd3b7e94854fa070ec036bb8624976
CRs-Fixed: 3433493
2023-03-16 04:54:32 -07:00
Jayachandran Sreekumaran
9d783b8514 cnss2: Ensure driver registration before suspend
Ensure wlan driver registration before invoking suspend callback.

Change-Id: I2c8e40770209ae37364bdfea71045522d43465a8
CRs-Fixed: 3378544
2023-03-16 04:54:32 -07:00
Gangadhar Kavalastramath
313bb86570 cnss2: Set genoa dma bit mask to 32 bit
Currently genoa is using lower 32 bits of 64 bit dma
bitmask. Unexpected access of higher 32 bits may cause
issues.This code change avoids such possibilities.

Change-Id: I8bf17056a12661a7c50333bf5897721d363550a3
CRs-Fixed: 3428036
2023-03-11 15:42:16 -08:00
Chaoli Zhou
74ebfcdb0a cnss2: Skip any adsp operation if DRV not supported
At the auto platform, DRV feature is not applicable.
So do not issue any DRV related operation from cnss2
side, which may cause the RC PHY not ready in the LPM
case.

Change-Id: Iefae9a885c1adc289da518d65a2974e127bdf359
CRs-Fixed: 3419811
2023-03-10 21:15:43 -08:00
Kai Liu
597155d64e cnss2: Move genl related data to ipc long context
Fw reports binary info to host, host will send to cnss-daemon by
nl80211 message, move log in this path to ipc long context.

Change-Id: Ie458f26789e765f7edf3188ed2897e7082cdb52b
CRs-Fixed: 3427156
2023-03-08 12:24:48 -08:00
Gangadhar Kavalastramath
4f03c58310 cnss2: Add support for QCN7605
Add support for QCN7605 in cnss2 driver

Change-Id: I529d76f8f6fa6eeea2117630b2a1e9d05ce5f5b4
CRs-Fixed: 3359985
2023-03-07 18:28:55 -08:00
Naman Padhiar
97d02063a9 cnss2: Avoid IDLE Shutdown during recovery
There can be scenario where CNSS driver receives
IDLE shutdown request from WLAN Host driver when
SSR/Recovery is in progress. In such case return
-EBUSY to Host driver and avoid doing IDLE Shutdown.

Change-Id: I68bea49d23e741f405acc1f2c9133cb7452d7952
CRs-Fixed: 3418977
2023-03-03 15:24:27 -08:00
Sandeep Singh
f6f7707351 icnss2: Add change to download qdss file for WCN6450
Add change to download qdss file after bdf download
for WCN6450 device.

Change-Id: I3b46c3411d8af7835af3907f472e82906f924d08
CRs-Fixed: 3413562
2023-03-02 10:48:37 -08:00
Sai Kumar Kunchala
3b1df6da05 cnss2: Add NULL check for 'cfg_arr' pointer
Add NULL check for 'cfg_arr' pointer before passing to
'of_property_read_string_array' function

Change-Id: Ief30b57145af5842cfd8e9533fcc5d15ab5ea0f1
CRs-Fixed: 3409579
2023-03-01 07:43:20 -08:00
Wu Gao
dcbdb2f5fb cnss2: Use mdelay to avoid compilation issue
The function - udelay is used only for very small delays (< 2 msec) on
some arm architecture. Otherwise there is compilation issue like
"__bad_udelay", since input is out of range. This change uses mdelay
to replace udelay and avoid compilation issue.

Change-Id: I42df519e7004d89ae6bb394f65b0d61ab5073784
CRs-Fixed: 3418093
2023-03-01 03:05:30 -08:00
Sandeep Singh
b9deac9d5c icnss2: Disable APPS proxy votes before WLAN_EN
WCN6450 has strict power on sequence where WLAN_EN needs
to be enable first followed by regulators. To achieve
this remove Host Proxy votes before sending TARGET_CAP
and MODE_ON QMI request in which FW is suppose to do
WLAN_EN high.

Change-Id: I315269048c6499153d4d2daf6ee6a829f6fd2ccc
CRs-Fixed: 3413588
2023-02-28 23:33:52 -08:00
Sandeep Singh
aec346c6bc icnss2: Add support for WLAN WCN6450 device
Add corresponding driver support for WCN6450 device.
This change adds compatible dtsi entry, msi config,
v3 shadow register config and vreg regulator details
along with enabling bootup sequence for WCN6450 device.

Change-Id: I406c92cdc2815ffd1108331d382c4972befad998
CRs-Fixed: 3404702
2023-02-28 23:33:51 -08:00
Sandeep Singh
ecd2be21ed icnss2: Add null check for priv variable
Add null check for priv variable to avoid null
pointer dereference.

Change-Id: Ib1746d564f27f8096f66761946d37a2a3faf2e57
CRs-Fixed: 3378034
2023-02-28 18:35:39 -08:00
Naman Padhiar
01cb81be76 icnss2: Use event_data before posting event
In icnss_pdr_notifier_cb() API, event_data gets free while
processing PD_SERVICE_DOWN event. In the same function
event_data->crashed is checking after posting PD_SERVICE_DOWN
event which may cause using event_data even after free.

This commit updates checking for event_data->crashed before
posting PD_SERVICE_DOWN event.

Change-Id: Ie82a0b7b4ceb40063318ab2d926b9c14412fb2c9
CRs-Fixed: 3415299
2023-02-28 14:47:48 -08:00
Chaoli Zhou
b4a9230200 cnss2: Support compile flag CONFIG_CNSS_REQ_FW_DIRECT
Support CONFIG_CNSS_REQ_FW_DIRECT compile flag passing
from external to use request_firmware_direct instead of
firmware_request_nowarn to avoid regdb.bin search failure
with qcn7605 that finally cause kernel panic on the LV
platform.

Change-Id: I2431692465298c841bf63add44187c15e68a9742
CRs-Fixed: 3413712
2023-02-28 02:21:00 -08:00
Naman Padhiar
5c7494ce4a cnss2: Set TME-Lite support flag for Peach
Peach supports TME-Lite to validate FW image. TME-Lite supported
FW image format is different from currently used FW images and it
requires different way of downloading in MHI layer. Set TME-Lite
supported flag in MHI controller for Peach to inform MHI about
FW image format.

Change-Id: I615570914c9cec297aa422ce683b4d1c6c75ea1c
CRs-Fixed: 3364546
2023-02-26 22:53:13 -08:00
Chaoli Zhou
ef7ea762d7 cnss2: Force PM resume for qca6390
For whatever reason, the qca6390 is not in M3 state
during PM resume phase, but still functional if do
force resume. So calling mhi_pm_resume_force()
instead of the mhi_pm_resume() to unblock PM
resume for kernel 5.15.

Reference link:
https://lore.kernel.org/regressions/871r5p0x2u.fsf@codeaurora.org/

As for lower kernel version, like 5.4, it will do local
mhi pm state check in the mhi_pm_resume() instead of
target pm state check, so has no issue with qca6390.

Change-Id: I54c2cef457405720386af6a6f7d4617f3d081875
CRs-Fixed: 3402571
2023-02-20 08:30:48 -08:00
Xiaoning Ma
d1e484f291 cnss2: Support make target 'modules'
Yocto module.bbclass calls 'make modules' from wlan platform
root dir to compile external modules, it gets the error
"make: *** No rule to make target 'modules'.  Stop."

Update Makefile to support make target 'modules'.

Change-Id: I5b20d71eeedb5dac987d42768d609b32bace1b79
CRs-Fixed: 3401306
2023-02-20 08:30:47 -08:00