Volume and mute settings before voice call is started are cached
in the driver, apply the cached settings at call start.
Change-Id: Iabc1f47c46a8e986c79106545ac3ee977fbca99c
Signed-off-by: Neema Shetty <nshetty@codeaurora.org>
There is a usecase where compressed data is sent over HDMI IN to
ADSP. The format of compressed is detected in ADSP and sent through
the meta data to compressed driver. Add support for meta data in
compressed TX for this use case.
Change-Id: Idbb18fe4a0ad828e9c2e9d7beec048b3cedf002d
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
QDSP6 AFE module produces error message whenever afe
loopback gain control command is issued. The reason is that
loopback gain control function sets wrong payload size.
Make change to set appropriate payload size for a given
SET_PARAM command
Change-Id: Ida2bf76baf56c35e89fe29f887f5b43af8bceabe
Signed-off-by: Patrick Lai <plai@codeaurora.org>
AV switch and US Euro headset switches are not supported
on apq8064 target. Hence removing unnecessary gpio pins
configuration.
Change-Id: Ia4747b59b63b0bf7c37054fb1bcebfc54079b481
Signed-off-by: Ravi Kumar Alamanda <ralama@codeaurora.org>
Add support for controlling pcm audio volume in DSP through
Multimedia5. Add TLV mixer control to set the pcm stream volume
Change-Id: Ie5f50c4f47ea57fe4be0aef1320c79a9d3fe7600
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
If the vote for pm runtime is done while codec shutdown, it is possible
that the runtime pm vote occurs even before the slimbus port for tx/rx
audio channel is disconnected. This can cause problem in audio playback/
record. Fix by moving the vote for runtime pm after slimbus port has
been disconnected
Change-Id: I959a83be7bc381e80dfc0176c50cb60e59ce227b
Signed-off-by: Swaminathan Sathappan <Swami@codeaurora.org>
Signed-off-by: Patrick Lai <plai@codeaurora.org>
When session CLOSE command is sent right before session RUN command
is acknowledged, callback function can mistakenly think that
the next received acknowledgement is for CLOSE command instead of
RUN command. This triggers driver to send memory unmap command to
the Q6 while it is still processing the CLOSE command. Eventually,
this leads to an invalid memory access and causes Q6 crash.
Change-Id: Ib5d560fbcb7e8ced79cc1075a9f6bea3b55a86b6
CRs-Fixed: 377281
Signed-off-by: Jay Wang <jaywang@codeaurora.org>
ALSA framework in kernel 3.4 requires all CPU DAIs to be routed to
the repective back-end input or output. Add the routing for STUB_1,
SLIMBUS_1, SLIMBUS_3, and SLIMBUS_4 CPU DAIs.
CRs-Fixed: 376720
Change-Id: Ie7799777d500194c53520320302e667f2ed07480
Signed-off-by: Neema Shetty <nshetty@codeaurora.org>
Update the call sites of cpu_is_msm8960() to include an
additional check for the MSM8960AB target where
appropriate.
Change-Id: I54b1b9dccde2f21ada27bc64df02c2cb313ff1d1
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Get session time command don't use the command state
value used for control commands. Don't set that state
value as it leads to volume command being timed out
which is waiting for this value to be reset.
Change-Id: I734a1ed7f4fda8d1367c27b71d7bfe5070f2ffc6
CRs-fixed: 377431
Signed-off-by: Swaminathan Sathappan <Swami@codeaurora.org>
Add CVS session variable with VoLTE string. MVM is
used wrongly with VoLTE string for passive stream create
command. This is replaced with correct CVS variable with
VoLTE string.
Change-Id: I1eb764a87368807cd7faad8ef4c7f3bff2e4328c
Signed-off-by: Venkat Sudhir <vsudhir@codeaurora.org>
- AFE does not support sampling rate 44.1k
- This fix addresses the issue by setting backend proxy device
sampling rate to 48k.
Change-Id: I4cd1ac6566d3230fa16fd70d99b8e758d8c606ad
CRs-fixed: 374556
Signed-off-by: Jayasena Sangaraboina <jsanga@codeaurora.org>
Microphone Bias may or may not have an external bypass capacitor
depending on the board configurations. Add the microphone bias
capless mode setting to the platform data for codec
CRs-fixed: 363941
Change-Id: Ia949d240b3b3122bc4bd6aca02ee5b6cd785d246
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
After upgrading to kernel 3.4, there is 5 second delay
at the closing of PCM playback. The delay is due to missing
EOS from QDSP6 audio session manager causing pcm close function
of PCM platform driver to wait for 5 seconds. The root cause
for missing EOS is that ALSA dynmic PCM shutdown sequence has
changed. Now, trigger stop is called on the back-end DAI-LINK.
Furthermore, back-end trigger stop is called before front-end
trigger stop. Since sink stops rendering data, data at source
will never get consumed. EOS event will not arrive. As trigger
operation has to be atomic, it is very difficult to guarantee
sequence on shutting down various modules in QDSP6. The decision
is to abandon starting and stopping QDSP6 AFE port in trigger
function. This decision is considered acceptable as playback
and capture over SLIMBUS is no longer subject to strict sequence
which Q6 AFE port must be started after CODEC configuration.
Change-Id: I0cc1d8b7d058052d7fae55c84b6be46b5b0678e9
CRs-fixed: 373966
Signed-off-by: Patrick Lai <plai@codeaurora.org>
Add IIR2 filter interface for the wcd9304 codec.
Control the two 5 band IIR filters in the audio
codec through mixer controls. Enable individual
IIR filter bands and set band coefficients.
Change the IIR filter code to use snd_soc_write
instead of snd_soc_update_bits. If update bits
is used the IIR registers may not be correctly
updated.
Change-Id: I92fc147641e9eb270d8176f20445371fe5cc2f92
Signed-off-by: Asish Bhattacharya <asishb@codeaurora.org>
- Two different locks (spin lock and mutex lock) are used
to protect the shared data, this may cause kernel panic.
- Use spin lock to protect the shared data between interrupt
function and non-interrupt functions.
CRs-fixed: 375637
Change-Id: I10c93e2ca80d821908b93c22525695d89143825a
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>
If Q6 does not support DTS, LA driver has to exit gracefully.
Introducing a new member cmd_response in audio_client structure
to indicate format is supported or not, and use this cmd_response
to return error from open_write.
Change-Id: Icad30c787e8a5f26ead92584e163721b94ba509d
Signed-off-by: Srikanth Uyyala <suyyala@codeaurora.org>
Update the call sites of cpu_is_msm8930() to include checks
for the MSM8930AA() variant. Relevant drivers will be
updated for more driver-specific specific MSM8930AA checks
at a later time.
Change-Id: Iff1af7a5454ec56c40390682ce2b4b6d1d325c91
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Per revised design decisions, cpu_is_msm8930() shall only
return true on 8930, and not on the 8627 variant. Modify
the cpu_is_xxx functions to reflect this change, and update
call sites accordingly.
Change-Id: I50b943f80c731717e6cd5d7fffb13aeec0f85a40
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
For the digital gain to be applied on the codec it is required to write
the digital gain register after the digital portion of the codec is
turned ON. This applies both for RX and TX digital path setup. Fix digital
gain setting sequence for RX and TX paths by rewriting the gain register
once the digital path is turned ON
Change-Id: I7b9c59c1b29b838845d27e406ba0f8a004c868b1
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
msm8930 uses external mic biasing for headset mic. Correct the
microphone bias for headset microphone by setting it to external
biasing
Change-Id: I0324f6f9922e12a3263ff803a7fa882ac08a956c
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Add device tree support to sound soc audio drivers.
These drivers get registered to the alsa framework
and thus aid detection of soundcard.
Change the device tree entries to follow the new
design approach of having individual probe functions
for each audio interface.
Change-Id: Ie8f0bddd5ba6e2cfb66c6a23efdcb434c5082d7d
Signed-off-by: Phani Kumar Uppalapati <phanik@codeaurora.org>
During slow insertion of headset, it may be possible that the
headset is wrongly detected as a headphone. This results in
the headset mic being non-functional.
Fix by polling the microphone voltage after a plug is detected
as a valid Headphone. In case the microphone voltage settles to
a valid headset voltage, correct the plug type from Headphone to
Headset.
CRs-fixed: 370332
Change-Id: I5280542e857940f8d228c5f0ded1d2fde301168f
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
WCD9304 supports 4 gain values for Earpiece PA. Only 2 of them are
exposed through the mixer control. Fix to add ability to program
all of the available gain levels
Change-Id: Ie768dc3aebb476ac47dd739654703f7e3cccfd5a
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
If mbhc polling is active, enable mbhc path to avoid polling noise.
CRs-fixed: 347090
Change-Id: I3d9d1d6ec64620e24244091d735ef71c605c64fd
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
When ANC is enabled it's needed to enable mbhc's micbias to avoid mbhc
polling noise.
Change-Id: Ib9ddf28800c7c2d993089fecb20371f3d3444a52
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
- Remove codec dai shutdown under cpu dai check
- Don't shutdown codec dai when it's still used by
other capture stream
Change-Id: I1b9eae17ee95d05a8feb07b2369db3936b783e3f
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>
The official name for copper is MSM8974.
Switch to it.
Change-Id: Ifb241232111139912477bf7b5f2e9cf5d38d0f9e
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
Add primary and secondary PCM RX and TX to the routing
table to support AUX PCM over primary and secondary
audio interface.
Change-Id: Ieca8f0af6479087d86625bec1a38e6357bb5faa3
Signed-off-by: Shiv Maliyappanahalli <smaliyap@codeaurora.org>
Adding voip and voice driver support for copper target.
Change-Id: Ib64f08b79819895bea0507ee7a89748cd4c43016
Signed-off-by: Phani Kumar Uppalapati <phanik@codeaurora.org>
Problem Description:
Open and close the same set of slimbus ports after
certain iterations will fail port open, as that port
was not disconnected successfully.
Fix Description:
Handle sequence of closing slimbus ports. Store
the channel masks associated with each codec dai
and reset them after they are closed from slimbus
Then, release the close slimbus port event, after
all the channels are closed completely
Change-Id: Ie14b9f0920b37f905151b48f18df181503acc21d
CRs-fixed: 370761
Signed-off-by: Swaminathan Sathappan <Swami@codeaurora.org>
There is use case that the HDMI input goes through MI2S TX
interface to ADSP. Add 8-channel Multi-PCM TX support for this
use case.
Change-Id: Ie26e188da8d15988452103f11277944551344cd1
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
Compressed driver changes for the DTS support
Change-Id: I595e638da78cced02142f4ee430afb7357eb336c
Signed-off-by: Srikanth Uyyala <suyyala@codeaurora.org>
There is use case that the HDMI input goes through MI2S
TX interface to ADSP. Add compressed TX support for
this use case.
Change-Id: I510e3e63b68ea1887e4c99ebf1c6f76112abbed5
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
When there is a failure while opening q6asm capturing stream,
it releases the q6asm data structure which is accessed by
stream closing function and lead to a crash. Resolving the
issue by freeing the data structure in closing function
instead of during opening failure.
Change-Id: Ie45335a98be21d3b6035115241f657185a918be0
CRs-Fixed: 373438
Signed-off-by: Jay Wang <jaywang@codeaurora.org>
Currently when ever hw_params is called on a codec dai the sample
rate is set of all Interpolators(RX) and decimators(TX) which are
not active. This causes issues when one TX codec dai active with one
sample rate and a side tone is enabled from one active RX path to
another TX path with different sample rate. When First TX DAI is
enabled all the non-active decimators sample rate are set to its DAI
rate. When a RX Dai is enabled and the mixer commands are given for side
tone path to complete, it will cause the other TX path to be enabled
with sample rate of first TX DAI. So when second TX DAI hw_params is
called, since the decimator is already active its sample rate will not
be set. So only set sample rates of decimators and interpolators a DAI
is going to use.
CRs-Fixed: 370230
Change-Id: Ic916fc7680b51345cfcc83011a6df30c4b3320c8
Signed-off-by: Kiran Kandi <kkandi@codeaurora.org>
- Add Mixer controls for Reference Rx device to be
used as a endpoint2 in adm open for echo cancellation.
- Add logic to support echo cancellation for audio
recording with fluence topology.
Change-Id: I7b83c3fc1a19fef7826bc8c3671e2565e393566a
Signed-off-by: Jayasena Sangaraboina <jsanga@codeaurora.org>
There is a usecase to capture PCM from HDMI input through ADSP using
MI2S TX interface and play or route the same to the desired output
device. To support this more buffering is required. Add configuring
buffer size in multi channel PCM TX driver to support the usecase.
Change-Id: Icefa803b02cd5edac0f67fe2186b44030c38c8b9
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
Initialize spare register variable. This causes Mic path
not to work if activated after voice call or combination of
Rx and TX path.
Change-Id: Ie431e2df4a8000489cc9763785c2182a608fcd3b
Signed-off-by: Venkat Sudhir <vsudhir@codeaurora.org>
CPU, platform and codec drivers do not support bespoke trigger.
Update the front end dai links trigger option from bespoke to
dpcm trigger post.
Also update the front end dai definition with proper aif name.
Change-Id: Iab655809f9b209bbe1e2cd51a51f191ad1e408d6
Signed-off-by: Santosh Mardi <gsantosh@codeaurora.org>
This is needed to support the compressed audio capture so that the
IOCTL commands for capture can pass to the ALSA SOC audio driver
Change-Id: I78c796275946e6e02f61aeab6579f3e9362f208b
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
For compressed playback to bypass ADM, AFE connect command
Is used when the session is closed AFE disconnect command
Should be issued.
Add the support for AFE disconnect command.
Change-Id: I4cc4e867c1be36fbc2659520fd14a356c8405f7b
Signed-off-by: Santosh Mardi <gsantosh@codeaurora.org>
Add support for I2C\I2S interface for sitar codec along
With SLIMBUS interface.
Change-Id: I68666fd10cf9fb8d871d4b2a3d9b2e454dd1efe7
Signed-off-by: Asish Bhattacharya <asishb@codeaurora.org>
SRS parameters are not updated sometimes when new adm session is
opened and DSP picks up invalid key from default values and plays
some undesired demo ring or noise. Fix this by sending the SRS
parameters everytime adm session is opened. Add a flag to check
if SRS is ever enabled and send parameters only if flag is set
Change-Id: Ib22e6ff74e4376936caa510a632a6a3c3727e034
Signed-off-by: Sriranjan Srikantam <cssrika@codeaurora.org>
When external modem is paired with the apps processor, voice call
over BT uses Slimbus to transfer voice packets from the modem to
the application processor. Enable run-time PM so that Slimbus
driver keeps the clocks enabled in the BT usecase.
CRs-fixed: 368527
Change-Id: Ic4653e304bdef7ea6303c89918ce4cfa195ba968
Signed-off-by: Neema Shetty <nshetty@codeaurora.org>
- During voice and normal recording concurrency case, both voice
and recording streams share the same tx channel. If one stream
already opens the tx channel, another stream will get error when
trying to open the same channel again. If one stream ends and closes
the channel, but another stream will lose the sound if it's still using
it.
- To prevent the above issues, only send SND_SOC_DAPM_STREAM_START event
when capture active count is one. And send SND_SOC_DAPM_STREAM_STOP event
when capture active count is zero.
Change-Id: Ic6dcd5d8d1949c2b96d46915a4399a454075fbb7
CRs-Fixed: 357022
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>
The default value for the OCP current setting register was wrongly updated
causing OCP to trigger when the volume on headphone is maximum. Fix by
correcting the default current setting value for OCP
Change-Id: I9aa6bfe7e4f9dbacdbd1cf1030f83660418bc37f
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
If the value of channel active variable is zero, don't decrease it.
Change-Id: Ic9cf9faacc10c37b30f2e3d91700015669061c24
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>