msm: rpm_smd: Fix issue of RPM ACK not getting processed
When RPM driver receives a notification of a SMD data event, it queues
works on a workqueue. However, if the event arrives when the workqueue
is in process, work does not get queued. This results in the last ACK
never getting processed or having to wait until a another ACK
arrives. The fix is to start the workqueue at init time and let it wait
on a completion event that gets triggered by the SMD data event.
completion event triggered by the SMD data event.
Also, before returning from msm_rpm_wait_for_ack_noirq, trigger the
completion event if there is pending data in the SMD buffer ready for
processing.
CRs-fixed: 418918
Change-Id: I8c962aadc553faee2a0b05ac6dc8b6c143e5d4ce
Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
1 file changed