msm: rpm-regulator-smd: correct use-after-free in rpm_vreg_device_remove

Modify the rpm_vreg_device_remove() function so that the reg
pointer is not dereferenced after being freed.

Change-Id: I0bc2c38a00c5d6b783f52c0ae0f1faa31d3a1e4d
CRs-Fixed: 564463
Signed-off-by: David Collins <collinsd@codeaurora.org>
msm: rpm-regulator-smd: limit current to RPM defined maximum

Modify the rpm_vreg_get_optimum_mode() function so that it
restricts the maximum current that can be sent for the 'ma' KVP
to the limit defined by the RPM.

Change-Id: I744e656c75a5e78a81df9c283a8f14a977c4c6ee
Signed-off-by: David Collins <collinsd@codeaurora.org>
msm: rpm-regulator-smd: remove incorrect rpm_regulator_get() unlock calls

The rpm_regulator_get() function calls rpm_vreg_unlock() in
failure paths after two kzalloc() calls.  However, there is no
corresponding rpm_vreg_lock() call before these calls.  Also, the
code being executed does not require mutual exclusion.  Thus,
remove the rpm_vreg_unlock() calls in order to avoid possible
locking problems if kzalloc() fails.

Change-Id: I0a0f2ffde5a6c54600a823e3ed12c3c47c3bac6a
Signed-off-by: David Collins <collinsd@codeaurora.org>
msm: rpm-smd: Wait for RPM channel notification before opening a channel

On some targets, where RPM doesn't bring the Apps core out of reset, the
RPM driver might fail on a channel open if RPM has not yet created a SMD
channel for it.

Wait for a smd channel created notification before attempting to open
the RPM-SMD channel.

Change-Id: Ia432ac2c033ab66a70a87b26637bdfc95cadec74
Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
msm: rpm-smd: add missing kvp in sleep set

If there is a KVP that was not present in first sleepset
request and sent later, the same KVP is not updated to
the node in tree internally maintained

the kvp is added to the existing node

CRs-fixed: 546434
Change-Id: I43301f93fb48535e3d4a0833333568488a2c33d3
Signed-off-by: Venkat Devarasetty <vdevaras@codeaurora.org>
gpu: ion: Match ioctl numbers with userspace

 * Change Samsung-specific getphys ioctl to match stock

Change-Id: I1a646e16ab51885a6d289a6c2b62ca185a4a7705
Update from OSRC Release 3

Change-Id: I730fbcee378a8479030d1c37f87113fe9b9d7d6c
ASoC: msm: Add support for flexible period size and count

Add support for flexible buffer size and count for audio playback
and capture paths.
Make sure the size to allocate or memory map is multiple
of 4K bytes.

Change-Id: Ie125bc8a121088233b20e1ad08d8ec35291b827f
Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
ASoC: msm: Add support to query the channel map info

Implement method to get the channel map information from the
user space.
Remove the global variables in pcm driver to store the channel
map in the platform driver. This is needed to support multiple
instances of pcm driver for different pcm streams.

Bug: 9375848

Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
ASoC: msm: qdsp6v2: Add timestamp in voip frame header

Uplink timestamp needs to propagate to userspace for AV sync.
timestamp field is added in voip frame header to
capture the timestamp from LPASS for each uplink packet.

Change-Id: Id701df56e5a3d36bf83771ba9731c61a03dae3ba
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>
ASoC: msm: qdsp6v2: defer probe if memory allocation fails

During bootup, on targets which use SMMU, msm_audio_ion wrapper
will allocate and return memory even if SMMU device node is not
ready. Mapping such memory with LPASS will fail as LPASS is
expecting SMMU memory. msm_audio_ion_alloc will now return
EPROBE_DEFER if SMMU device is not ready and as result voice and
voip driver's probe() will defer. Any other memory allocation
errors other than EPROBE_DEFER from msm_audio_ion will result in
voice calls with degraded voice quality since calibration cannot
be applied and voip calls will fail since voip buffers cannot be
allocated.

CRs-fixed: 503096
Change-Id: I2eda29055f088c5d2c14362c47c3484c53d1f3f4
Signed-off-by: Shiv Maliyappanahalli <smaliyap@codeaurora.org>
ASoC: msm: qdsp6v2: Clear ION handle after freeing

Once ion memory is freed ion handle should be set to
NULL to avoid double free or any unintended access.
This change clears the ION handle after freeing up
the memory.

Change-Id: I37d76fe2641c111fa4376eff8f7e45f6795414ca
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
ASoC: qdsp6: Add support for gapless audio playback

Update ASM driver to support for gapless audio playback in
tunnel mode.

Change-Id: Id1f25afef25b3636fb50dc08b5feb803150d1b59
Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
ASoC: msm: Add support for gapless audio playback

Update compress driver to enable gapless mode in DSP to
achieve gapless audio playback in compress offload mode.

Change-Id: I212178025996f28ff5a3ddc361ceb7bd70b5d192
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
ASoC: qdsp6: Add support for custom topology

Update ASM driver to send commands to DSP to enable
custom topology for enabling audio post processing
effects in POPP.

Change-Id: Ic222b5045820ebabb79148c8e51f5fd90fcd1410
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
ASoC: qdsp6: Add support for audio post processing effects

Add interface to support configuring equlaizer, bass boost,
virtualizer and reverb effects in DSP for tunnel mode of
playback.

Change-Id: Ie1512e340315302691327b6379a0935170dc57a7
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
ASoC: msm: Add support to enable audio post processing in DSP

Add interface to support configuring equlaizer, bass boost,
virtualizer and reverb effects in DSP for tunnel mode of
playback.

Change-Id: I5ed578df1e1cb860734d2205c0895e82cfbdfbfc
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
ASoC: msm: Enable initial/trailing silence removal

For gapless audio playback, the DSP HW decoder needs to
remove the initial and trailing samples from the decoder
output according to meta data present in the stream. This
change is to enable the silence removal by sending the
meta data down to DSP.

Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
ASoC: msm: Handle RESET_EVENTS in compress driver

Listen for RESET_EVENTS message in the q6asm callback and move
compress driver to an error state. All ops except free() are rejected
in this state.

Change-Id: Id12dba9e3a40b01f02e516857cb32af8f9e4cb60
Signed-off-by: Haynes Mathew George <hgeorge@codeaurora.org>
ASoC: msm: Add support for ASM loopback

Add ASM loopback driver. When audio path wants to use filters in DSP,
it will do a loopback in ASM.  The new ASM loopback driver enables
the loopback.

Change-Id: I3ddfbf0a1be5b3b1d37b47b44d321ea7da93da83
Signed-off-by: Damir Didjusto <damird@codeaurora.org>
Signed-off-by: Vimal Puthanveed <vimalp@codeaurora.org>