msleep is not accurate for small delays. Use usleep_range
for accuracy.
CRs-Fixed: 1117121
Change-Id: I9a076f843875bd83a21c96d4e4ea0510e82ce352
Signed-off-by: Sujeev Dias <sdias@codeaurora.org>
MHI host may not have PCIe device info during channel
registration. Defer creation of char device until
PCIe bus enumeration is completed.
CRs-Fixed: 2040899
Change-Id: I6372523bd6a758f29dad09d207b86c3f87e2f2cc
Signed-off-by: Sujeev Dias <sdias@codeaurora.org>
In order to bind devices with variable PCIe device IDs with same device
tree node, make PCIe device ID optional parameter in device tree node.
If PCIe device ID not specified in device tree, any device can be bind
with the node.
CRs-Fixed: 2040899
Change-Id: Iaedcb40db15fa0e8c5c30eb147c904a10cd7569d
Signed-off-by: Sujeev Dias <sdias@codeaurora.org>
Not all endpoints support all channels supported by MHI host. Only allow
clients to register if requested channel is supported by endpoint.
CRs-Fixed: 2053250
Change-Id: Ib4bd8d21b8f43d693da30b8fafe2cb9d2e128a17
Signed-off-by: Sujeev Dias <sdias@codeaurora.org>
During MHI INIT, memory is allocated for firmware and
rddm vector table. This memory is not freed when DE_INIT
is called.
CRs-Fixed: 2053206
Change-Id: I85b2644189915dd25d8ac31190f16799f86cbd12
Signed-off-by: Sujeev Dias <sdias@codeaurora.org>
IPAv2 hardware works with 32 bit addressing,
so allocate a kernel memory using GFP_DMA flag
which is processed by IPA hardware. Added code
changes to free correct tx_pkt pointer in fail_dma_map condition.
Change-Id: I5f7005c3bf89275fd56af648ee5bf1b3d06afc38
Acked-by: Ashok Vuyyuru <avuyyuru@qti.qualcomm.com>
Acked-by: Mohammed Javid <mjavid@qti.qualcomm.com>
Signed-off-by: Utkarsh Saxena <usaxena@codeaurora.org>
Fix the security issue in handling add mux channel event
in ipa wan driver.
Change-Id: Ic2ffeafddad4954ec3ecba0d675646d0790eede7
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Acked-by: Shihuan Liu <shihuanl@qti.qualcomm.com>
Fix a potential buffer overflow that could occur
during firmware download by storing buffer address
locally instead of inside MHI context.
CRs-Fixed: 1109397
Change-Id: If27ba602cdafdc8d25a94fdc0d74e8970bf0b0f4
Signed-off-by: Sujeev Dias <sdias@codeaurora.org>
Define ops_keep_radio_on_during_sleep as static as it is used
only in msm_11ad context.
Change-Id: Id95579961ce5cdd3fbdf063578bd4d9144f8a725
Signed-off-by: Maya Erez <merez@codeaurora.org>
ipa post init is accessed from user space
context from ops structure.
While user space program triggered post init
there could be a chance, where the
user space context may get killed at any time,
due to which the memory allocation in post init
gets failed and in turn which clean up the
IPA driver.
Because the memory allocation of the
sigkill pending process will fail.
Make changes in ops structure write func-pointer to
queue a work instead of directly invoking post init.
So that ipa post init will execute in workqueue context.
Change-Id: Ia11b3a868d960111422c357bcc9924ef7b220e67
Acked-by: Mohammed Javid <mjavid@qti.qualcomm.com>
Signed-off-by: Utkarsh Saxena <usaxena@codeaurora.org>
When driver calls ops_bus_request with high bandwidth requirement,
affinity of wil6210 interrupt is set to first big core. However this
setting is not cleared when driver lowers bandwidth requirement.
This causes WARN_ON_ONCE(desc->affinity_hint) upon wil6210 rmmod.
Fix this by clearing affinity hint upon low bandwidth request.
Change-Id: I87b6b7ec9b369b84a9d3724d92a821a1302d1f83
Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
Transition to D3 hot in system suspend allows the wil6210
device to preserve the active connections in system suspend.
Change-Id: I4c24551f91ee7e59d4bfee02b0911c31ae0a05b1
Signed-off-by: Maya Erez <merez@codeaurora.org>
In order to preserve the connection in suspend/resume flow,
wil6210 host allows going to PCIe D3hot state in suspend,
instead of performing a full wil6210 device reset. This
requires the platform ability to initiate wakeup in case of
RX data. To check that, a new platform API is added.
In addition, add cfg80211 suspend/resume callbacks
implementation.
Change-Id: I3846eaaa8d6e9ecbe5adbb0c04c7574865d5af5e
Signed-off-by: Maya Erez <merez@codeaurora.org>
add support on wan-driver to query modem or
wlan-fw to get the total data usage for all
tethered clients.
Change-Id: I56f40f1c0f6b2ec4279e78b3aeb81c687d08bf2e
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
When resetting a GSI channel a special handling is needed
if there is an open aggregation frame. This handling is applied
to USB and MHI channels. This commit applies this handling to
GPI (system) channels as well.
Change-Id: Iebdf3d7375a4bd584c75503f01e64d7106f25e5a
CRs-Fixed: 2029089
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Check whether array index is within the bounds in
seemp_logk_get_bit_from_vector().
Change-Id: Idccf75736582b2390540f4d7b3351c018937186a
Signed-off-by: Yida Wang <yidaw@codeaurora.org>
For the status IPA_HW_2_CPU_WDI_RX_FSM_TRANSITION_ERROR,
receive from the uC, add a logic to retry sending the same
command for maximum of 10 retires.
Change-Id: I4b241311e0699aea0e24b3a279622a8a1aaa737d
Acked-by: Mohammed Javid <mjavid@qti.qualcomm.com>
Signed-off-by: Utkarsh Saxena <usaxena@codeaurora.org>
Stopping a PROD channel might result in a timeout because the
channel is not empty, or IPA is busy. Whether or not to retry
a stop operation is determined by channel owner.
This change removes the common retry logic of retrying to stop
a PROD channel and adds a retry only for the scenario it is
actually needed.
Change-Id: I7ac1e81f7f99de2b0c3162aa5aaea2102a450838
CRs-Fixed: 2037955
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
There is a potential race condition where suspend interrupt
handling might be running from two different context in parallel.
Add a mutex to ensure mutual exclusion when voting for IPA clocks.
CRs-Fixed: 2037199
Change-Id: I7f14866696b6c9f5e239f3de2c4bad6991097ecb
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
There's no need to check whether the device has been connected
when disconnect it, for we'll always do disconnect after the device
has been connected. Even if we do disconnect incorrectly, it'll not
affect. Now we have both ASYNC_AUDIO/VIDEO flag and SYNC_AUDIO/
VIDEO flag. Sometimes SYNC flag would be set when device is connected,
while ASYNC flag is set when disconnect, the two flags are not match.
If we check here, that would return false. So we could remove the flags.
CRs-Fixed: 2033810
Change-Id: I305f64352815cd38a4c9618bcd22a4d103c14818
Signed-off-by: zhaoyuan <yzhao@codeaurora.org>