Revert "msm: wfd: Restart hrtimer after forwarding it"

This reverts commit Ia8e82a6ad327acddc135835268a755e3646d2ee8.
Calling hrtimer_forward_now() outside of the hrtimer callback context
and not restarting it seems to be a misuse of the hrt APIs.

Change-Id: Idd3f967d8037435ec43bbd843ce122d989aa838a
Signed-off-by: Srinu Gorle <sgorle@codeaurora.org>
msm: wfd: Add timeouts to completions

In the case of Venus going into a bad state and not returning buffers,
timeout of the completion so that the driver isn't stuck perpetually
waiting for a buffer.  This at least gives the driver a chance to clean
up and exit gracefully.

Change-Id: I05dd1e2977999bd17bd79e78eb8882fddf6a4aa4
CRs-Fixed: 589645
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
msm: wfd: Lock the state in vsg_start

Protect the state in vsg_start with a mutex as it can be accessed from
other threads.

CRs-Fixed: 634425
Change-Id: I823b34f1b310092ea100d366d92a3293a0c74e6d
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
msm: wfd: Modify enc_avg_latency to only measure the encode latency

Previously enc_avg_latency measured the time Video code took took to
encode a frame and the latency of the userspace client in picking up the
buffer.  Change the meaning just to measure encoder busy time.

CRs-Fixed: 647538
Change-Id: Ib7c30e51a267a0a2926096f13a933cdc94656453
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
msm: vidc: Free memory allocated to keep track of buffer ownership

Memory for free_output_indices and free_input_indices was never freed.
This commit kfrees the memory as part of venc_close().

CRs-Fixed: 631998
Change-Id: Iae28a1266bdf78445c1a936721d9901c9fa0f285
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
msm: vidc: flush queued work during device suspend

This change flushes any queued work related to power collapse,
once the device is power suspended.
There are applications which do not destroy video instance
on suspending the device. For such applications, if the device
is power suspended, video driver does not prepare venus for
power collapse.
Considerable power saving is observed by power collapsing
venus before the device goes in suspend state.

Change-Id: I11252e45b10d0d3d3eefb38994acd083c847bbb8
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
msm: vidc: Bug fix in instance clean-up

When close is called directly without proper state operations,
then driver tries to clean all V4L2 framework memory. When driver
calls queue_release, it tries to call stream_off again. This
causes driver to re-enter the state operations. This change
prevents driver to re-enter the state diagram.

Change-Id: I6df248792fca78fe743bead311fa1cec61a6bb79
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
Remove asus change
msm: vidc: Fix race condition during concurrent sessions

The core->instances list structure is guarded by
mutex core->lock, whenever a new video instance is added
or deleted from the list. However this list was accessed
from certain functions without acquiring the lock, which
resulted in race condition, causing the device to crash.
Also clean up the core locking mechanism.

Change-Id: I6f431bc381d54948611783e19fac853c83a87203
Signed-off-by: Arun Menon <avmenon@codeaurora.org>