CNSS driver controls the power on/off wlan device. because on CPE
platform the link/power status of RC<->USP may be still on when wlan
device is turning on/off, this may cause uncorrectable AER error on
DSP side, to avoid this issue DSP's downstream link should be
disabled before power on/off wlan device, and re-enabled after wlan
power on, and also wait for link training of DSP<->WLAN to complete.
To be compitable with non PCIE switch platform, add a new config
CONFIG_PCIE_SWITCH_SUPPORT to enable/disable this function
Change-Id: Iaca103850d5ffc717a2a8bc40d16358e03c0c9db
CRs-Fixed: 3848272
When WPSS crashes, remoteproc module sets notif->crashed to 1 in case
of BEFORE_SHUTDOWN, whereas, in case of AFTER_SHUTDOWN, remoteproc
module sets notif->crashed to 0.
To avoid MSA0 ramdump collection on graceful shutdown case, save
notif->crashed flag to determine WPSS crash and collect MSA0 ramdump
only when WPSS crashes.
Change-Id: I48b79ba5e21ebf5d1839c2e7d863d0eb74ad592b
CRs-Fixed: 3887666
Add wlan dts property qcom,pcie_switch_type to mark the wlan chip
is attached on the PCIe switch NTN3. If it's PCIE_SWITCH_NTN3, cnss
driver will enable/disable accordingly PCIe switch dsp link when
power on and shutdown wlan chip.
Change-Id: I48bb56879d5c00f05d0b4e62888027c435f861ee
CRs-Fixed: 3878342
Current code passes in mbox_msg max buffer
size to mailbox api rather than actual string
length. Resulting in KASAN detecting an out of
bound issue. Fix this by calculating the string
length, and passing that in.
CRs-Fixed: 3876948
Change-Id: I7d9be5466ca5bec81e181f47e278205d6d9a64ce
Positive return value from mbox_send_message() should be
treated as success, which indicate the index of
free mbox buffer obtained.
Change-Id: I59b47a3a711468ef233b43c1191217f1f6911c1f
CRs-Fixed: 3878630
Add support to check if IPA and WLAN share a common dma pool
and based on that take descision to map the rx buffers or not
in IPA use case scenarios
Change-Id: I5d684db1cffc9f04b962cf7bdf0305b7d5e1df23
CRs-Fixed: 3878739
During cnss unload or error quit, cnss_dms_deinit() is called to
perform dms client deinit. When dms sever quit, modem also send event
to cnss to schedule dms client restart with dms_del_server(). The two
processes are asynchronous so qmi_handle_release() may be entered
twice and cause qmi->sock to be used after free.
To avoid this race condition, call cnss_cancel_dms_work() before
cnss_dms_deinit() to guarantee the two processes not run concurrently.
Change-Id: I291c1d0bdead190549dcbbb2c4b7aa65a68196d7
CRs-Fixed: 3875961
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.
Change-Id: I00ef2586dbbf3f732026a0487d240950ccc0a0af
CRs-Fixed: 3864574
On some platforms, those with all of icnss, cnss
and the corresponding wlan drivers being present, but
only one dt node for wlan device, we only need one
platform driver which is compatible with the dt node.
To achieve this, return '-ENODEV' on icnss driver loading
if there is no matching dt node, just as cnss2 does.
This change can also fix the issue as below:
Background: icnss2 returns '-EAGAIN' when wlan driver
register request comes too early, to trigger the retry
mechanism in wlan driver.
Considering a device with drivers and dt node as
mentioned upon, and a wlan driver is trying to
register itself in icnss2 driver. But it will
definitely fail because icnss2 has not been probed
(due to no compatible dt node) and retry for up to
50 times with a 100ms interval due to the return
value '-EAGAIN'. This delays android bootup.
With this fix applied, wlan driver loading will fail
before registering itself to platform driver because
it depends on icnss2 that failed to load.
Change-Id: I8dfe8821c0c8ec45e7e55913de26060a32ffce82
CRs-Fixed: 3867504
Sometimes wlan driver loading comes very early, icnss2
driver is not ready at that point and returns '-ENODEV',
which results in wlan failure.
To fix it, icnss2 returns '-EAGAIN' in such case to
trigger the retry mechanism in wlan driver.
Change-Id: Ia9f955622d052842ecd1fe1a752fd20d1e98804c
CRs-Fixed: 3851180
It's possible that the 'rproc name' doesn't contain
'wpss' when 'rproc_restart_level_notifier()' gets called,
there are two issues in such case:
1. The fixed length 'ICNSS_RPROC_LEN(100)' for strnstr()
is too long for some cases, which may leads to
'slab-out-of-bounds' issue in strnstr().
To fix it, pass strlen of the rproc name instead.
2. It returns without freeing memory for the event data
and results in memory leak.
To fix it, allocate memory for the event only when
the notification is for 'wpss'.
Change-Id: Icf48f2f9cb8b8fcb4b766971169dd6dbeba9839d
CRs-Fixed: 3848536
Do not send QMI_WLFW_WFC_CALL_STATUS_REQ_V01 msg post WLAN MODE_OFF to
avoid FW crash.
Change-Id: I756b2aeb4241385d4f64f398ca13c8dace78d1b3
CRs-Fixed: 3754244
Because HSP may meet pcie link issue if working on Gen3 speed,
auto SPs decide to enum HSP using Gen1, and restore to Gen2 after
enum. We will not restore to default Gen3 speed.
Change-Id: I0d2a2189bcd55e2649d34e7a8d9c18ebbfab86f2
CRs-Fixed: 3821700
Add support for regulator: 3.3V M.2, to enable
it based on the entry in device tree.
Change-Id: I4716b9ad6fb6d116342ef0aa9157989f9dfbf152
CRs-Fixed: 3795246
Dump_enabled need to be checked before invoking qcom_dump for
pushing the Wlan FW dump to file system. Otherwise SSR gets stuck.
CRs-Fixed: 3805707
Change-Id: I7bd5d0579f71c1b3fa88fc41cd274bc8f432dab5
PCI bus resuming should be treated as fail once MHI
resume fails, to avoid the following operations those
depend on the result.
Change-Id: If3d21abf95cc2816bf6c34cb950ff430eee022d3
CRs-Fixed: 3795957
The remote proc name for wpss on volcano is
'9bb00000.remoteproc-wpss', the restart level changing
on which will be ignored by icnss platform driver
unexpectedly due to the maximum length for filtering the
name is too short.
To fix it, enlarge this maximum length to 100 bytes
according to implementation of remote proc.
Change-Id: I42148cb2f8d0821521acf06e5f54d4ebaf439985
CRs-Fixed: 3794773
For dual chip solution, first chip may fail to probe because of pcie
driver is not ready. During second chip probing, first chip may retry
to probe. So, second chip may set/get plat_env[0], first chip may
set/get plat_env[1].
If sencond chip not attached, plat_env[0] will be cleaned. When
cnss_pci_probe() is called by first chip, cnss_get_plat_priv_by_rc_num()
will call plat_env[0]. However it is already NULL.
Change-Id: Ib959b1a524bf777fc6a826b2771611cb28b8cb99
CRs-Fixed: 3778085
Checking smp2p_state using IS_ERR_OR_NULL returns true every time
for Adrastea based targets.
So add a new API to validate smp2p state which returns true only
if the device id is WCN6750_DEVICE_ID or WCN6450_DEVICE_ID or
wpss_supported is enabled.
Change-Id: I01237d9e7b47dd666a4987920ca73a3f8f584c87
CRs-Fixed: 3758894
Add cmem support for wcn7750 and pass the mem info
as part of soc info to wlan host driver.
Change-Id: Icb40d8cfe50cdd160471b8210a67ce9dc8dd3ad0
CRs-Fixed: 3750961
The Mbox interface requires structure 'qmp_pkt' which is defined
only when kernel config CONFIG_MSM_QMP is enabled, so add
conditional compilation for these interfaces (controlled by
config CONFIG_MSM_QMP).
While at the same time, qmp_get/qmp_put/qmp_send are controlled
by kernel config CONFIG_QCOM_AOSS_QMP, but they are defined
even when CONFIG_QCOM_AOSS_QMP is disabled, so conditional
compilation is not needed.
Change-Id: I0f793ae3661fb901edc857af0b1d4191d7c113f8
CRs-Fixed: 3712102
qcom_smem_get() returns 'ERR_PTR(ENODEV)' when Secure HW feature
is not enabled (related kernel config: CONFIG_QCOM_SMEM), add
the checking for this case.
Change-Id: Id3c6f8407a4eb4bc2124014503cc50bb99e90235
CRs-Fixed: 3769852
Add wrapper __cnss_get_mhi_soc_info() to get SoC info
before registering MHI controller.
It calls mhi_get_soc_info() if downstream MHI bus driver
is enabled(CONFIG_MHI_BUS_MISC is enabled), while reads
register for SoC hardware version directly if not.
Change-Id: I97e53bf0a7e28b2b1027d8de5eaf9fc82bcd5cee
CRs-Fixed: 3712133
This reverts commit I55d554c4dc7d01ed82fffe79f666b340b1004765.
Default RC speed should be restored, shouldn't be restored to Gen2.
Change-Id: I23369aea1391c9e20c7aabe10506a7c9c37a4ba7
CRs-Fixed: 3702776
When FW supports segment CALDB memory in memory request,
it will request memory with new type
QMI_WLFW_MEM_CALDB_SEG_V01.
Change-Id: I84b62436ea2616cb2d663c604ac4af8a8d9966b8
CRs-Fixed: 3763980
To avoid watchdog bark in 10s timeout due to compaction latency in very
bad fragmentation situation, Remove __GFP_DIRECT_RECLAIM flag to kzalloc
to avoid delay, which will help to claim memory faster.
Change-Id: I9d57e28c6e94dbd5cf02aaa9c6f84fe4b60fe36d
CRs-Fixed: 3746405
Add support to determine if CNSS and Audio share
IOMMU group and do iommu_map/unmap only in the
case of distinct iommu groups for direct link
datapath.
CRs-Fixed: 3714345
Change-Id: I6134e9d732052fd492e0f20d538e86ba96c14c4d
Fix potential NULL pointer dereference for tme_lite_mem
and tme_opt_file_mem, which are captured by static
analysis tool.
Change-Id: Ib2540669c55e771598dd21d8c2ae3eb297ffa67f
CRs-Fixed: 3716873
DRV last connected flag is cleared based on return from
host driver runtime_resume callback. In host triggered
SSR case runtime_resume callback return success without
actually resuming the bus and clearing DRV last connected
flag. When CNSS driver actually tries to resume the bus,
based on DRV last connected flag it calls MHI resume instead
of MHI DRV resume and fail to resume the bus. Bus resume
failure results in MHI driver go to bad state and fail to
trigger RDDM in device using SYS_ERR.
Fix this issue by clearing DRV last connected flag only after
bus resume is success.
Change-Id: Ia904f6965c2a2cbe0a483cf02ced91a09775ca62
CRs-Fixed: 3720847
For the cases where SOL is not enabled, Host REQ
reset will be used for second RDDM entry. If Host
REQ reset is success, start RDDM timer to wait for
RDDM status callback from MHI. If RDDM timer get
timedout read EE register to check for RDDM state
and schedule recovery.
Change-Id: I34253526ff4b20aedf8ab8f1f49831f68a3e0a35
CRs-Fixed: 3727389
This reverts Change-Id I848309440fdffd6517463e18190c03c1b7ed9269.
Reason for revert: Separate FW Binary not required
Change-Id: Ib694d38922f81895ce6bc01f4e38f95813625730
CRs-Fixed: 3726340