msm: vidc: set ctrl to request sequence header for encoder

The encoder depended on a debug variable i.e. ftb_count, to
request firmware to send sequence header. Remove this
dependency and make the request only when the encoder
client requests using the provided set ctrl.

b/11051201

Change-Id: Iac4104c33eef62da553066c736b7adc87834d2ac
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>

Conflicts:
	drivers/media/platform/msm/vidc/msm_venc.c
	drivers/media/platform/msm/vidc/msm_vidc_common.c
	include/linux/videodev2.h
msm: vidc: added v4l2 control to set the color of concealed MBs.

The conceal color is set to be green by default, while some users
required it to be black.
Set it to be configurable by adding this v4l2 control.

Change-Id: I25565ee837c011f5875ce91bde23a169fbdb0709
Signed-off-by: Jia Meng <jmeng@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>

Conflicts:
	drivers/media/platform/msm/vidc/msm_vdec.c

Conflicts:
	drivers/media/platform/msm/vidc/msm_vdec.c
	include/linux/videodev2.h
msm: vidc: defer probe if iommu_group_find fails

v4l2 video driver probe needs to defer till
iommu domains probe has been called. Without this
change, v4l2 video driver probe will fail if
iommu domains probe is not invoked prior to it.

Change-Id: Idbc1a4c90e558952f41f51ec96fdd3e7974490cd
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>

Conflicts:
	drivers/media/platform/msm/vidc/venus_hfi.c
msm: vidc: enable deferred probe support for Q6

Add support to defer probe for Q6 driver. Also fixes
a bug in venus hfi, whereby probe for venus hfi fails
if the core_id is not zero.

Change-Id: I67269107132bf352186fad1e177e4099cf9f4534
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>
msm: vidc: Disable clock gating for 8x26

There are stability issue observed on 8x26 with
inter-frame clock gating enabled so disable
interframe clock gating on 8x26.

Change-Id: I0e2b89a0ce36ed4d5f15903ffe68b7c7275719c9
Signed-off-by: Vinay Kalia <vkalia@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>
Revert "msm: vidc: Disable clock gating for 8x26"

This reverts commit 4a73878e8eef36c661b99afa19122632ccffa084.
Inter frame clock gating was earlier disabled to resolve PDT
issues.Venus clock was getting disabled, when the ARM9 was
still doing bus access.
The final fix is merged as 0435d4a997f43ec1612a796ed871dbc71ae98368.
With the fix, clock gating can be enabled again to save power
during Interframe clock gating as well as during power
collapse.Hence the revert to enable Interframe clock
gating.

Change-Id: I5c9815cd6281535654f55aa72f15715fc7f747a5
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>
msm: vidc: Increase maximum buffer count limit

Some clients want to allocate more buffers on decoder
input port than required (mainly for performance reasons).
Video decoder should honor the client request as long as
V4L2 framework permits.

Change-Id: Idd8101e84823b10736ab75ced2ea3235d944ef55
CRs-fixed: 509088
Signed-off-by: Vinay Kalia <vkalia@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>

Conflicts:
	drivers/media/platform/msm/vidc/msm_vdec.c

Conflicts:
	drivers/media/platform/msm/vidc/msm_vdec.c
msm: wfd:Wait for one more vsync cycle, if VSG running out of input frames

If VSG running out of input frames, it will re-encode previous frames.
With this change, instead of encoding pervious frame VSG will push timer to
half of capturing frame rate. If it find new frame, it will be encoded
Otherwise will re-encode previous frame.

CRs-Fixed: 571771
Change-Id: Ie1c970b4e251c2165e77134b746c4ee0e3a90fba
Signed-off-by: Srinu Gorle <sgorle@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>
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>
Signed-off-by: houst0nn <houstonn@gmail.com>
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>
Signed-off-by: houst0nn <houstonn@gmail.com>
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>
Signed-off-by: houst0nn <houstonn@gmail.com>
[media] Revert "[media] v4l2: vb2: one more fix for REQBUFS()"

This reverts commit 31901a078af29c33c736dcbf815656920e904632.

Queue should be reinitialized on each REQBUFS() call even if the memory
access method and buffer count have not been changed. The user might have
changed the format and if we go the short path introduced in that commit,
the memory buffer will not be reallocated to fit with new format.

The previous patch was just over-engineered optimization, which just
introduced a bug to videobuf2.

Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
CC: Pawel Osciak <pawel@osciak.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

Change-Id: I537d5dcc025a176111fefc4bcdad934266373573
Git-commit: bf7b73efb7f52abf56b512546c3bbc35001dd696
Git-repo: https://github.com/torvalds/linux.git
Signed-off-by: Pushkaraj Patil <ppatil@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>
[media] v4l2-ioctl.c: handle PREPARE_BUF like QUERYBUF

The core code for PREPARE_BUF didn't take the multiplanar case into account,
which might cause page faults. Handle PREPARE_BUF just like QUERYBUF and
QBUF/DQBUF.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Git-commit: 96b1a70226cd43f69c63a7ba2a769bece08cf64e
Git-repo:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

Change-Id: Ica94027b4189627b3e8e76e40e9fc1a6f71932cb
Signed-off-by: Vinay Kalia <vkalia@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>
Revert "[media] videobuf2-core: Use current->mm_active when locking USERPTR"

Reverting commit 705d2156b85febeb47509e9d955052790b9025e0 because using
mm_active seems too unreliable. When current is a kthread, there's no
guarantee that there will not be a context switch between down_read and
up_read, which causes panic due to mismatched up/down_reads.

CRs-Fixed: 623719
Change-Id: Ibfb1ad81fbe30be88ccc5f38482578fee09dd83a
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>
videobuf2-core: Avoid locking userpages if no current->mm

If vb2_qbuf is called within the context of a kthread with no "user
memory map", current->mm will be NULL causing a fault when attempt to
lock the non-existent pages.

As such, perform a cursory check for a non-NULL current->mm before
locking the userspace pages.

CRs-Fixed: 623719
Change-Id: I138ba4d1611fae821e723a11b01046e5fc4f9092
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
Signed-off-by: houst0nn <houstonn@gmail.com>
Merge branch 'test2' of https://github.com/darkobas/SimpleKernel into test2
msm: Fix high load average from uninterruptible waits

 * The load average on all MSMs is currently hovering at around 14
   due to uninterruptible waits in various places.
 * Convert these waits to interruptible waits to bring the load
   back down to zero at idle.

Change-Id: I14bad4af135b1594e235e2252cb484cb34d91054
Signed-off-by: houst0nn <houstonn@gmail.com>

Conflicts:
	drivers/thermal/msm_thermal.c