msm: mdss: Add support to get/set secure flag via an ioctl

Add support to get/set secure flag for WB session through an ioctl.
This is required for WB clients such as AD/WFD, enabling them to modify
or query the secure flag depending on requirements e.g. secure video
playback when using AD.

Change-Id: I852b6f79b31b5ba027d9a5c11561c562023cb99f
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
mdss: display: Add support for dynamic FPS

Add sysfs entry for dynamic FPS update mode. Add support to
change FPS in the following scenarios:
1. Store the FPS and change the clocks only when Suspend/resume
   happens. This is the default configuration.
2. Change the FPS immediately by updating the clocks. Video
   mode engine is disabled and then enabled when clock rate
   is updated.

CRs-Fixed: 488453
Change-Id: I1722d54d9fbfdfbd7d22e02d8776a0f60dc86141
Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
msm: mdss: Fix DSI event handler for dynamic FPS configuration

Commit 1c3fce18 introduced a bug which resulted in the dynamic
fps configuration function being called in response to the
command list kickoff event. This results in incorrect failure
logs getting printed whenever DSI operates in command mode.

CRs-Fixed: 565171
Change-Id: I57359f624c2d6ddaa1a4c2fd7a5946ce9112ca16
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
msm: mdss: remove interruptible timeout waits

Currently display driver contexts are not utilizing interruptible
wake-ups while using wait_for_completion_interruptible_timeout. This
can lead to incorrect context wake-up and un-predictable outcome. Since
there is already a timeout attached to these kind of context sleeps, it
is safe to replace them with wait_for_completion_timeout.

Change-Id: Ia528debf34aef0acdda2bea1219a128c200c3651
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
msm: mdss: fb: Copy & send unsigned value for notify update

Copy unsigned long from userspace and modify the data fields
before copying back unsigned long data to userspace. This
keeps the datatypes of all operands homogeneous without
data leaks from kernel to user space.

CRs-Fixed: 526286
Change-Id: Ie4673563170c3459019dd6a5f1f55376f6e560c7
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
Signed-off-by: Manoj Rao <manojraj@codeaurora.org>
msm:mdss: Add support for show blank sysfs entry

Currently there is no support for show blank sysfs entry
in mdss. Hence, added this entry to check if panel is
power on or off.

Change-Id: Ifa50bf373590556f88b8f8196353dffefe2d2559
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
msm: mdss: delay freeing buffers for additional vsync

There are cases where if commit happens very close to vsync or in other
uncommon conditions, where MDP will continue fetching from old buffer
address when unmap of the buffer happens. In order to avoid such
scenarios keep a reference of buffers for an additional commit before
unmapping to avoid potential iommu page fault.

Change-Id: Ied61b4851e2d410d71360ad0c119ef21009f91a1
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
msm: mdss: Fix mdss_dsi_cmd_mdp_busy timeout error

Make MDSS clock ON before sending DCS command  to fix
mdss_dsi_cmd_mdp_busy timeout error.

Change-Id: I78a5931715f7a8803af77cd43c6191c225bcecd8
Signed-off-by: Pawan Kumar <pavaku@codeaurora.org>
msm: mdss: push wait for fences and ping pong done as late as possible

All the configuration up until MDP flush is double buffered. This means
we are able to do all hardware programming without settings taking
effect until flush happens. Perform all programming, wait for fences
and wait for previous frame is done just before the flush in order to
reduce the time between last frame done and kickoff of next one.

Change-Id: I1fd0c7a65309a3b148c8efef61819bfe9a248f29
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
msm: vidc: Increse OCMEM BW request to enhance performance

There are framedrops observed on high bitrate clips because
OCMEM BW is not sufficient to handle it. Increase OCMEM BW
to avoid framedrops.

Change-Id: I653b416442e56d6e0f0cdfd821c96df4b4f0e1fe
Signed-off-by: Vinay Kalia <vkalia@codeaurora.org>
msm: bam_dmux: tune downlink polling parameters

This change disables the BAM DMUX adaptive timer - this is to address
concerns about drops in TCP throughput for some use cases with the timer
enabled.  It also sets the aggregation to 3ms to save power while not
compromising performance. Power tests show a savings of 3-4% (compared to
having the timer poll the BAM pipe every 1 ms) for LTE (40Mbps downlink and
25Mbps uplink) and HSPA (7Mbps downlink and 384Kbps uplink) with no
degradation in performance.

Change-Id: Ia51eae773723e60d8b051766ad80bfb0a16f5f6d
Signed-off-by: Anurag Singh <anursing@codeaurora.org>
msm: bam_dmux: add loopback support

Bam dmux is currently very difficult to isolate and provide measurements
for common metrics, such as throughput and latency.

Add hooks into bam_dmux to allow for a seperate dynamically
loadable loopback module. This allows bam dmux to be isolated, and to
provide more accurate measurements of the above metrics.

Change-Id: I174d900dea73cca27d32a54a908f43728059be30
Signed-off-by: Brent Hronik <bhronik@codeaurora.org>
msm: bam_dmux: Fix race condition during SSR

BAM DMUX drivers set the global flags to identify the SSR during
SUBSYS_BEFORE_SHUTDOWN notification, but the flags change is not reflected
in some code paths like msm_bam_dmux_write().

Add the SSR flag check and SRCU locking to complete all pending bam dmux
writes before returning the control in SSR call back function for
SUBSYS_BEFORE_SHUTDOWN notification.

CRs-Fixed: 584805
Change-Id: I26647b485977943f272c44f7450ed6c4a4aa62f3
Signed-off-by: Arun Kumar Neelakantam <aneela@codeaurora.org>
msm: bam_dmux: modify DL low memory algorithm

Bam_dmux maintains a pool of dynamically allocated buffers for the BAM DMA
engine to use as destination memory for Downlink (DL) data.  The allocation
requests for the buffers are done using flags to indicate delays are
tolerable and either the memory or an error should be returned immediately
to bam_dmux as the buffers are normally allocated within various hot paths
inside of the driver.  If a low memory allocation failure is encountered
when attempting to replenish the pool of buffers, bam_dmux will either
attempt the memory allocations later when the next scheduled pool refilling
occurs if there is at least one buffer remaining in the pool, or will
schedule a delayed task to retry the buffer allocation until atleast one
buffer can be put into the pool.

This mechanism of handling low memory situations has two flaws.  First, the
allocation type used by bam_dmux does not trigger the standard low memory
recovery mechanism within the memory management subsystem.  Second, the
peripeheral on the otherside do the DMA engine has a limited hardware based
flow control mechanism that will not release flow control with only one
buffer queued to the DMA engine.

To assist in system recovery, and avoid a data stall, create a cold path
that is tolerant of memory allocation delays and is triggered when the hot
path encounters an allocation failure.

CRs-Fixed: 589665
Change-Id: If72b0eaef285ac6dfd99e97bef1cd7df154e3a48
Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
msm: scm-pas: Flush the metadata buffer

In the near future, scm_call will no longer flush
the entire cache in order to ensure that the secure
world doesn't see stale data. Therefore, flush the
metadata buffer from the cache before invoking
scm_call.

Change-Id: I0896d1bac074b6a4b004edfc1cb0a9a8de57999b
Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
msm: Add nodes in socinfo, to store APPS image version in SMEM

- Nodes for image_version, image_crm_version and image_variant updated in
order to store APPS image version.
- We get this info from userspace and pass it to SMEM.
- UGO write access added to select_image node, in order DIAG daemon
to be able to change it from userspace.

Change-Id: I57841c3c39ae1b7177f1a6592818a51ccb93cf97
Signed-off-by: Yulian Shandorov <jshandorov@codeaurora.org>
msm: socinfo: fix memory leak in socinfo_init_sysdev

Under certain error paths in socinfo_init_sysdev the soc_dev_attr
struct does not get freed. Fix this memory leak.

Change-Id: I22a4b60722367798dc5171fe7c00fc7c814168cb
Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
msm: Remove write permissions for "select_image"

This way we will cover the CTS requirements for
testAllFilesInSysAreNotWritable, e.g. only G/O to have write permissions
in /sys/ folder.

Change-Id: I012ac397aa0f696b5e992331209ff0a55dcca11a
Signed-off-by: Yulian Shandorov <jshandorov@codeaurora.org>
msm: Do not use offset, when reporting  image version string

As per requirements we have to report untouched image version string,
which includes numbers before the string: "00:BOOT.BF.2.1-2.1.0890",
instead of "BOOT.BF.2.1-2.1.0890".

Change-Id: Ie2b60ce867ff52fc38487edd403c18f840cce527
Signed-off-by: Yulian Shandorov <jshandorov@codeaurora.org>
msm: smem: Add NAND Device Item

Add new SMEM item used for passing NAND device parameters between
subsystems.

CRs-Fixed: 487179
Change-Id: I823e5073e02795386700109ccdf9fb7efff03fe5
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>