Commit graph

12677 commits

Author SHA1 Message Date
Jayasena Sangaraboina
978b65ca45 ASoc: msm: Add low latency playback and recording support.
- Add lowlatency pcm driver for Playback and Recording.
- Add support in target board files
- Add Recording Path to Multimedia5 FE DAI
- Add support in routing, platform, machine drivers
- Add low latency interfaces support in ASM and ADM drivers.

Change-Id: I1beb11db9010534e5aa91179ac6040a41622185d
Signed-off-by: Jayasena Sangaraboina <jsanga@codeaurora.org>
2013-02-27 18:21:33 -08:00
Asish Bhattacharya
3b7ea4104b ASoC: WCD9304: remove dependency between DMIC's and Decimators.
The source of input signal(ADC or DMIC) needs to configured correctly
in CDC_TXn_MUX_CTL registers for correct operation of Decimators.
Currently for DMIC's, this configuration is done in DMIC DAPM widget
power up/down call back creating dependency between DMIC number and
Decimator number (with current code, DMIC1 can send signal to only
DEC1, DMIC2 can send signal to only DEC2). Remove this dependency by
setting type of input signal when Decimator MUX input is set.

CRs-Fixed: 384279
Change-Id: Ic084bb892d663dea51ca5a5a95c6bdba30453744
Signed-off-by: Asish Bhattacharya <asishb@codeaurora.org>
2013-02-27 18:21:18 -08:00
Joonwoo Park
22155702cc msm: q6dsp6v2: Configure token in APR packet correctly
The token field is for identification to determine response packet's
source.  Fill this field correctly to address afe_loopback timeout.

Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:21:09 -08:00
Joonwoo Park
c1db2a511a msm: msm8974: Add hostless PCM support
Add PCM hostless device for AFE use cases.

Change-Id: Iac4317ae7be89910b40ff29205c9107e8d13750c
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:21:08 -08:00
Bhalchandra Gajare
34847385a5 ASoC: WCD9304: Vote for runtime pm off after slimbus port disconnect
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: I711bc5cfee5b832575ea0b91cf68e826f1a3c0f5
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
2013-02-27 18:21:03 -08:00
Bhalchandra Gajare
ebf2101d60 ASoC: WCD9304: Fix to enable Headphone in class G mode
Headphone path can either be in CLASS G mode or CLASS AB mode.
The class G mode in the codec hardware is used to adjust the
supply voltage of the PA's according to the signal level. This
makes the system as efficient as possible. Fix the register
sequence to enable headphone in class G mode

CRs-fixed: 380598
Change-Id: I110c4e0ea958ef55c0b407c566deb7da58f4d99a
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
2013-02-27 18:20:43 -08:00
Bhalchandra Gajare
731abcd718 ASoC: apq8064: Change MBHC micbias voltage to 2.7 Volts
Upgrade the board file to change the microphone bias used by MBHC to
2.7 Volts. The button voltage ranges need to be updated accordingly

Change-Id: Ia2f91271864e0f8fe25b866bff8006af0dd6f20b
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
2013-02-27 18:20:38 -08:00
Joonwoo Park
6e7f05785d ASoC: wcd9310: fix TRRS override
The debugfs TRRS entry is for overriding headset button polling.
Fix regression not to start button polling when this flag is set.

CRs-fixed: 386038
Change-Id: I469c366bc111f37ecbb46708d2800200dd3d7584
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:20:23 -08:00
Joonwoo Park
a456b6d4c8 ASoC: wcd9310: make CFILT adjust time as a module parameter
Some of accessories on the headset jack takes longer to settle down
voltage.  Make adjust time to be configurable so those accessories can
be detected correctly.

Change-Id: I3c2f68c8a4bb1a8f94669bd910728f014ee39874
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:20:22 -08:00
Kiran Kandi
6a05c9e1d4 msm: wcd9xxx: add device tree support for codec slimbus component
Read the codec specific data from device tree instead of board file.

Change-Id: Iad382b89692903d2434b63d34c7121fe0b4b9dda
Signed-off-by: Kiran Kandi <kkandi@codeaurora.org>
2013-02-27 18:20:08 -08:00
Swaminathan Sathappan
21e5928043 ASoC: wcd9310: Reset channel actual flag only if active
Resetting this channel actual flag without
checking whether the set of channels are already in
use, could cause failures in disconnecting those
set of ports associated with that channels.

Change-Id: If0b917023c8f6d11d6b5cd92708715e10a1408ab
CRs-fixed: 384055
Signed-off-by: Swaminathan Sathappan <Swami@codeaurora.org>
2013-02-27 18:19:53 -08:00
Ben Romberger
06bd32b064 msm: audio: qdsp6v2: Add support for VOLTE
Update the number of supported voice networks
in the ACDB driver and change the voice driver
to support concurrent calibration for VOLTE,
VOIP & voice.

Change-Id: I945fa40cbb4ac079a79fa0cb829971f1aa9d07f6
Signed-off-by: Ben Romberger <bromberg@codeaurora.org>
2013-02-27 18:19:51 -08:00
Subhash Chandra Bose Naripeddy
51b53a1897 ASoC: msm: update SRS Tru media control structure with rreg initialization
When SRS Tru media topology is enabled the mixer controls set from
userspace are not sent to driver as the validation fails with
the missing field initialization in the structure. Update the same
to receive the SRS parameters from userspace

Change-Id: Ia2bf800a540adf3bcc2a99fc6e0d9b043c826272
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
2013-02-27 18:19:50 -08:00
Phani Kumar Uppalapati
053011c417 ASoC: msm8974: Add clock support for AUXPCM CPU DAI
This change sets rate on pcm0 root clock (pcm0_src_clk)
and pcm out enable (PCM_OE) clock for AUX PCM CPU DAI.
Once the rate is set on the source clocks, corresponding
branch clocks get enabled.

Change-Id: I59bc339d69fe836f613c1bebf7561184dced2dcf
Signed-off-by: Phani Kumar Uppalapati <phanik@codeaurora.org>
2013-02-27 18:19:12 -08:00
Asish Bhattacharya
119570c698 ASoC: msm: Fix issues in proxy port driver due to early afe port enable.
After recent movement of afe_start to prepare the interrupts start
coming earlier from proxy port.
This results in proxy port driver not ready for interrupts. Start the
timer later to ensure processing of packet once trigger start happens.

Change-Id: Ie82d982b6c147afdef46a8c7bfe7234dd14486f1
Signed-off-by: Asish Bhattacharya <asishb@codeaurora.org>
2013-02-27 18:19:08 -08:00
Joonwoo Park
d4eafd9091 ASoC: wcd9310: enhance mbhc button press detection performance
If interrupt handler is not quicker than voltage ramp up by button
release, driver requested measurement won't see stable voltage.
Enhance button press detection performance by comparing voltage
measurements from codec hardware only.

CRs-fixed: 376825
Change-Id: I294239df02fb5afeb3527dda85924c06ab15e54c
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:18:51 -08:00
Joonwoo Park
6dfcc72deb ASoC: wcd9310: enhance mbhc button release detection performance
Enhance button release detection performance by adopting dynamic release
threshold adjusting logic.
Button release is now detected more quickly.

Change-Id: I3a2379e10663cf91df671e8a3894b8805d1ccf9c
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:18:51 -08:00
Helen Zeng
f66663a40c ASoC: msm: Don't use spinlock to protect the code which can block
copy_to_user and copy_from_user can block(go to sleep). These two functions
should be removed from spinlock protection.

Change-Id: I0c10796ece4ac218600ef3b214c88a06004a0a0d
CRs-fixed: 381839
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>
2013-02-27 18:18:45 -08:00
Kuirong Wang
fefcfb5f4e ASoC: wcd9310/9304: Pull down Mic Bias output by default.
If Mic Bias is high Z by default and when the LDOH is enabled,
the Mic Bias output can pull-up to a non-zero voltage if there
is no loading or if the load leakage is very small.  Pulling
down the Mic Bias output so it is not in high Z to eliminate
the floating voltage.

Change-Id: I38e76a8c03107879727564f177b2713c9dfa4631
CRs-Fixed: 368898
Signed-off-by: Kuirong Wang <kuirongw@codeaurora.org>
2013-02-27 18:18:27 -08:00
Kuirong Wang
cdf330f35c ASoC: msm: update BTSCO rate put function.
The value for the amix command with the numeric strings is
the actual value not the order of the string in the array
of text so the put function has to be updated to handle it.
For example,  the following amix comand:
amix 'Internal BTSCO SampleRatee' 16000'
The value passed from the alsa-lib is not 2, i.e., the 2nd
paramater in the command string:
static const char *btsco_rate_text[] = {"8000", "16000"};
Instead, it is 16000.

CRs-fixed: 364832

Change-Id: Ie7c83a460900b54e2b317e1c77a064efc22e6bcd
Signed-off-by: Kuirong Wang <kuirongw@codeaurora.org>
2013-02-27 18:18:21 -08:00
Vidyakumar Athota
563c22ca38 ASoC: msm: Fix for voice call recording
-Voice call recording is not working because of missing
backends configuration for incall record Tx/Rx.

Change-Id: Ie69112e2929ed98a5bc19164cf9a9c66d73cc8dc
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
2013-02-27 18:18:13 -08:00
Joonwoo Park
25362f5d3f ASoC: msm8974: register backend DAI link of Taiko codec
Update DAI link to connect slimbus RX/TX port 0 to CPU.

Change-Id: Id8aa2ca92ea9b1e0d51b6d3ccf113860a9147c44
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:18:04 -08:00
Joonwoo Park
6da360614b ASoC: wcd9320: Enable RX7 speaker drive path
The wcd9320 Taiko codec replaced LINEOUT5 with speaker drive.
Add speaker drive path support.

Change-Id: Ia552dff774312491b8068ea1faf9c6137c7906a9
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:18:03 -08:00
Phani Kumar Uppalapati
f3a98f13bc kernel/msm: 8974: Add audio OCMEM driver support
Add audio OCMEM driver support to exercise On-Chip
Memory (OCMEM) for low power audio and voice. The
driver is implemented as standalone and it gets
exercised based on the usecase. Also, this design
reduces the latency associated with OCMEM handshaking
protocol. The audio OCMEM driver is enabled by default
with a Kconfig option using select. Add device tree node
for audio OCMEM to retrieve platform data.

Change-Id: Iba46ce675fc03843d88cd7cf2aa9bc92fe70a955
Signed-off-by: Phani Kumar Uppalapati <phanik@codeaurora.org>
2013-02-27 18:18:02 -08:00
Joonwoo Park
1238a07489 msm: q6dspv2: Add slimbus data path support
Register slimbus CPU dai link to support slimbus data path.

Change-Id: I3584306ac1e0ad6561a19cecfe71f2a63aadafa9
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:17:57 -08:00
Bhalchandra Gajare
b1c726527e ASoC: WCD9304: Make sure slimbus port disconnected before opening port
During rapid open and close of slimbus ports, it may happen that when
port open is performed, the port is not disconnected from the previous
open. This will cause inconsistent state and may result in failure to
playback audio. Fix by waiting for the slimbus port disconnect to happen
before opening the port.

CRs-fixed: 375689
Change-Id: Id1303deae296eb6842074837183ab231aa2b4dad
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
2013-02-27 18:17:53 -08:00
Joonwoo Park
aa4d497559 defconfig: msm8974: Enable wcd9320 Taiko codec driver
Enable wcd9320 Taiko codec driver for msm8974.

Change-Id: I773af257589c82fe468b7c121cafbf188524f2d2
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:17:45 -08:00
Santosh Mardi
83c4dd7d08 ASoC: msm: Update the AFE-PCM RX and TX dai link for mpq8064
In AFE-PCM RX and TX dai links of MPQ8064 machine driver there
was a conflict in codec dai name and codec name, with this ALSA
Framework is not creating the node in /dev/snd/

CRs-Fixed: 377509
Change-Id: I5337b216a3d0a2cdc36292ccdafe3e144e7f1d41
Signed-off-by: Santosh Mardi <gsantosh@codeaurora.org>
2013-02-27 18:17:44 -08:00
Joonwoo Park
4ee1c54e81 ASoC: apq8064: Add unsupported headset detection support
The wcd9310 codec driver already can detect and report unsupported headset
plugging.  Create headset jack with unsupported headset mask to be able to
report via sound core.

Change-Id: I0119d01c039362cc7b185f9f3407d78c958bc49a
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:17:35 -08:00
Mingming Yin
4c9c50c134 ASoC: msm: Fix crash during FM recording.
Call reg_phy_stream only after q6asm_open_read succeeds.

CRs-fixed: 376685
Change-Id: I64951b6c51f8cc9212a691ad087ab0008e9fcb7a
Signed-off-by: Mingming Yin <mingming@codeaurora.org>
2013-02-27 18:17:17 -08:00
Asish Bhattacharya
83b31ef0d1 ASoC: 8930: add multi channel support for hdmi
HDMI 1.3 supports Multi channel PCM up to 8 channels with sample
size of 16/20/24 bits and sample rate of 32, 44.1, 48, 96, 176.4,
192K. This patch add supports for 6 channel PCM at 48K sample rate
with sample size of 16 bits.

CRs-Fixed: 380370
Change-Id: I01cb7eb509a0d21072e2e8dcc63624384a1edb0d
Signed-off-by: Asish Bhattacharya <asishb@codeaurora.org>
2013-02-27 18:17:15 -08:00
Bhalchandra Gajare
1407b94e9e ASoC: WCD9304: Fix register sequence for analog mic recording
Found that the register sequence for enabling recording on analog
microphone was updating a wrong register. Fix by correcting the
register sequence

CRs-fixed: 378189
Change-Id: I3598cbc77b279684b28677943ac13f446bc2f78e
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
2013-02-27 18:17:10 -08:00
Swaminathan Sathappan
e5f67cc2bd ASoC: wcd9310: Clear the status only for active slimbus ports
When closing the slimbus ports, clear only the slimbus
ports which were active at the time of closing on that
slimbus interrupt, which will avoid clearing further
interrupts for other slimbus ports

Change-Id: I43ce9963c0ecb4b8fb79527b8a9c6b13d7780aad
CRs-fixed: 380535
Signed-off-by: Swaminathan Sathappan <Swami@codeaurora.org>
2013-02-27 18:17:07 -08:00
Harmandeep Singh
7fdf9a4be3 ASOC: msm: Add device tree specific changes in compressed driver
- Add a front end DAI link for compressed audio driver.
- Add device tree specific changes to sound soc compressed
 drivers which will help the detection of sound card.

Change-Id: I4a8076df8c82cd4e444fc0d68e8f7a228bd1dc02
Signed-off-by: Harmandeep Singh <hsingh@codeaurora.org>
2013-02-27 18:17:06 -08:00
Harmandeep Singh
a9e74c693c ASoc: msm: qdsp6v2: Native drivers to use different pool id.
Some physical pools ids may become unsupported in future targets.
Remove target specific information from API to make it robust against
such architectural changes.

Also different platforms such as MDM, MSM might support some physical
pools but not the other, so choosing a generic name which will could be
mapped internally to different memory pools

Change-Id: I4f003662d9a2a28c17eefa5230530b8608b26c09
Signed-off-by: Harmandeep Singh <hsingh@codeaurora.org>
2013-02-27 18:17:04 -08:00
Neema Shetty
c5409eae07 ASoC: msm: Apply cached volume and mute at call start.
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>
2013-02-27 18:16:55 -08:00
Subhash Chandra Bose Naripeddy
d7f5276687 ASoC: msm: Add support for meta data in compressed TX
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>
2013-02-27 18:16:45 -08:00
Patrick Lai
c24665621d ASoC: msm: qdsp6: set correct SET_PARAM payload size
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>
2013-02-27 18:16:42 -08:00
Ravi Kumar Alamanda
5b4713798b ASoc: msm: Remove incorrect headset mic gpios
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>
2013-02-27 18:16:42 -08:00
Subhash Chandra Bose Naripeddy
c0ba06982b ASoC: msm: Add volume support for Multimedia5
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>
2013-02-27 18:16:24 -08:00
Swaminathan Sathappan
62ab49c10d ASoC: wcd9310: vote off runtime PM after disable SLIMBUS ports
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>
2013-02-27 18:16:14 -08:00
Jay Wang
79a415c76b ASoC: msm: qdsp6: Fixed the issue unmap command is sent incorrectly
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>
2013-02-27 18:16:06 -08:00
Neema Shetty
3d550a6fe5 ASoC: msm: Add back-end enablement for CPU DAIs.
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>
2013-02-27 18:15:46 -08:00
Stepan Moskovchenko
330ebf63fd msm: Add preliminary support for MSM8960AB
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>
2013-02-27 18:15:44 -08:00
Swaminathan Sathappan
ebb0fa8624 ASoC: Don't set command state value for session time
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>
2013-02-27 18:15:38 -08:00
Venkat Sudhir
70849982d4 ASoC: msm: Fix CVS variable with VoLTE string.
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>
2013-02-27 18:15:35 -08:00
Jayasena Sangaraboina
3fe96792e7 ASoc: msm: Add fix for Unsupported Proxy backend sample rates.
- 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>
2013-02-27 18:15:32 -08:00
Bhalchandra Gajare
56b1a21666 ASoC: WCD9xxx: Add Micbias capless mode to platform data
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>
2013-02-27 18:15:21 -08:00
Patrick Lai
99f526976d ASoC: msm: fall back to have AFE port started at prepare
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>
2013-02-27 18:15:19 -08:00
Asish Bhattacharya
29f60b149b ASoC: wcd9304: Fix IIR filter controls
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>
2013-02-27 18:15:17 -08:00
Helen Zeng
35c715061e ASoC: msm: Use spin lock to protect the shared data
- 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>
2013-02-27 18:15:15 -08:00
Srikanth Uyyala
63a739c278 ASoC: msm: Support for non-DTS Q6 image
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>
2013-02-27 18:15:15 -08:00
Stepan Moskovchenko
8f40224052 msm: Add support for MSM8930AA
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>
2013-02-27 18:15:10 -08:00
Stepan Moskovchenko
d2c24f8eca msm: Change semantics of cpu_is_msm8930()
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>
2013-02-27 18:14:55 -08:00
Bhalchandra Gajare
493d2db384 ASoC: WCD9304: Apply digital gain after digital path is turned ON
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>
2013-02-27 18:14:44 -08:00
Bhalchandra Gajare
c496354a30 ASoC: msm8930: Correct microphone bias setting for Headset Mic
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>
2013-02-27 18:14:35 -08:00
Phani Kumar Uppalapati
596a4b70a1 msm: Add device tree support for audio drivers
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>
2013-02-27 18:14:27 -08:00
Bhalchandra Gajare
811c5d6e11 ASoC: WCD9310: Perform microphone polling to correct plug type
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>
2013-02-27 18:14:18 -08:00
Bhalchandra Gajare
f05987035b ASoC: WCD9304: Expose all possible Gain Settings for Earpiece PA
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>
2013-02-27 18:14:11 -08:00
Joonwoo Park
6d79ec99e2 ASoC: wcd9310: Fix audiable click noise with active ANC headset
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>
2013-02-27 18:14:11 -08:00
Joonwoo Park
f2d96e2fc6 ASoC: msm8960: Enable mbhc micbias when ANC headset is enabled
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>
2013-02-27 18:14:06 -08:00
Helen Zeng
7b8f222571 ASoc: soc-pcm: Don't shutdown codec dai if it's used by other stream
- 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>
2013-02-27 18:14:04 -08:00
Abhimanyu Kapur
a3b70549ee msm: 8974: rename copper to 8974
The official name for copper is MSM8974.
Switch to it.

Change-Id: Ifb241232111139912477bf7b5f2e9cf5d38d0f9e
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2013-02-27 18:14:01 -08:00
Shiv Maliyappanahalli
ea1120abe8 ASoC: msm: Add BE enablement for AUX PCM CPU DAI
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>
2013-02-27 18:13:54 -08:00
Phani Kumar Uppalapati
4dddf3faea ASOC: msm: Add voip/voice driver support for copper
Adding voip and voice driver support for copper target.

Change-Id: Ib64f08b79819895bea0507ee7a89748cd4c43016
Signed-off-by: Phani Kumar Uppalapati <phanik@codeaurora.org>
2013-02-27 18:13:53 -08:00
Swaminathan Sathappan
97ab0481b2 ASoC: Handle slimbus port disconnection before opening another
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>
2013-02-27 18:13:52 -08:00
Subhash Chandra Bose Naripeddy
832dfb7d14 ASoC: msm: Add 8-channel Multi-PCM TX support
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>
2013-02-27 18:13:51 -08:00
Srikanth Uyyala
b157cf52c0 ASoC: msm: DTS playback support
Compressed driver changes for the DTS support

Change-Id: I595e638da78cced02142f4ee430afb7357eb336c
Signed-off-by: Srikanth Uyyala <suyyala@codeaurora.org>
2013-02-27 18:13:36 -08:00
Subhash Chandra Bose Naripeddy
1cd3eb87ac ASoC: msm: Add compressed TX support
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>
2013-02-27 18:13:35 -08:00
Jay Wang
dab17a2f0c ASoC: msm: Fix the issue that freed data structure is accessed
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>
2013-02-27 18:13:28 -08:00
Kiran Kandi
c85c03ac2f ASoC: wcd9310: set rate only for required RX and TX paths.
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>
2013-02-27 18:13:28 -08:00
Jayasena Sangaraboina
6beeb66c9b ASoc: msm: Add support for audio recording with EC.
- 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>
2013-02-27 18:13:18 -08:00
Subhash Chandra Bose Naripeddy
aac4116945 ASoC: msm: Support for configuring buffer size in multichannel PCM TX
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>
2013-02-27 18:13:10 -08:00
Venkat Sudhir
c21b27abac ASoC: mdm9615: Fix spare register variable initialization.
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>
2013-02-27 18:13:01 -08:00
Aviral Gupta
77724b141f ASoC: msm: Update the encode option and sample rate.
Populate the sample rate, encode option in wma config params.

CRs-Fixed: 367243, 367242
Change-Id: Ieeb9d302454d3935faa51cac77021e7c1d77012c
Signed-off-by: Aviral Gupta <aviralg@codeaurora.org>
2013-02-27 18:12:59 -08:00
Santosh Mardi
dfa1c98da5 ASoC: msm: Update front end dai links of mpq8064 machine driver
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>
2013-02-27 18:12:59 -08:00
Subhash Chandra Bose Naripeddy
d69024c6f5 ALSA: core: Add support to handle compressed audio IOCTLs for capture
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>
2013-02-27 18:12:58 -08:00
Harmandeep Singh
839ecb45c7 ASoc: msm: Add support for AAC and WMA decoders.
Add support for AAC and WMA decoders.

Change-Id: Iba66fdf71e852387015a0d03d0f1f9b5a0f09682
Signed-off-by: Harmandeep Singh <hsingh@codeaurora.org>
2013-02-27 18:12:51 -08:00
Santosh Mardi
387f28cf15 ASoC: msm: Add support for afe disconnect command
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>
2013-02-27 18:12:37 -08:00
Asish Bhattacharya
6bc62a66f0 ASoC: wcd9304: add I2C\I2S support for sitar codec
Add support for I2C\I2S interface for sitar codec along
With SLIMBUS interface.

Change-Id: I68666fd10cf9fb8d871d4b2a3d9b2e454dd1efe7
Signed-off-by: Asish Bhattacharya <asishb@codeaurora.org>
2013-02-27 18:12:33 -08:00
Sriranjan Srikantam
5030e8fec9 ASoC: msm: Fix SRS key not being sent to DSP sometimes problem
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>
2013-02-27 18:12:23 -08:00
Neema Shetty
38e2aab037 ASoC: apq8064: Add run-time PM support for voice over Bluetooth.
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>
2013-02-27 18:12:23 -08:00
Helen Zeng
c7251a1675 ASoc: soc-pcm: Open/close share channel once if it is used by two streams
- 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>
2013-02-27 18:12:17 -08:00
Bhalchandra Gajare
7b7f397d6e ASoC: WCD9304: Fix OCP register default value
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>
2013-02-27 18:12:16 -08:00
Helen Zeng
1638f76ec8 ASoC: wcd9310: Add check to prevent the wrap around of channel active value
If the value of channel active variable is zero, don't decrease it.

Change-Id: Ic9cf9faacc10c37b30f2e3d91700015669061c24
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>
2013-02-27 18:12:14 -08:00
Satish Babu Patakokila
43d1873657 ASoC: msm: Add support for SGLTE feature
Impact:
Add SGLTE feature support.

Change:
- Add changes for SGLTE feature in machine, cpu,
routing, platform and proxy voice drivers.

Change-Id: Ie5006fbf40b2c3a0c772912303adbf7775c33382
Signed-off-by: Satish Babu Patakokila <sbpata@codeaurora.org>
2013-02-27 18:12:03 -08:00
Amal Paul
01f491c7e0 ASoC: qdsp6: Fix device crash issue in LPA seek.
Accessing buffer pointer before initialization results in device crash.
To memset the buffer using physical address also results in a device crash.
Fixed this by initializing the buffer pointer before it is accessed and
memset the buffer using the virtual address.

Change-Id: I3b03f56cf988c9471c7988665bcec3c467e60bfc
Signed-off-by: Amal Paul <amal@codeaurora.org>
2013-02-27 18:12:01 -08:00
Laxminath Kasam
28feaa0fea msm: Asoc: LPA: Fix pause and next clip play issue
- When paused and press next button to play next song,
sometimes CMD_EOS fails to get Ack from LPASS and
is wait timeout for 5sec causing delay for next
playback start.
- In the failure case, even before trigger start
of driver is done,LPA driver receives pcm_close.
In this case, though EOS is issued, it is not
getting honored from LPASS.
- If trigger start not happen in LPA driver,
avoid CMD_EOS to LPASS as it will not be handled.

CRs-Fixed: 368519, 366926
Change-Id: Ib5ff21925bb44849b27ed4709b72efcccf412b5d
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
2013-02-27 18:11:45 -08:00
Joonwoo Park
4971d3096c ASoC: wcd9310: Don't overwrite detected unsupported headset
The current US/EURO headset detection algorithm is overwriting detected
unsupported headset detection with invalid headset detection.
Don't make it to overwrite to report unsupported headset correctly.

CRs-fixed: 359290, 368319
Change-Id: If2d02c0d68be1c6f3f2eb1aa89c7a08ffe166446
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:11:43 -08:00
Bhalchandra Gajare
7dba81ccd9 ASoC: WCD9304: Enable charge pump for lineout
WCD9310 requires the charge pump to be enable for lineout (speaker)
as well. Fix to add charge pump in the routing for lineout

CRs-fixed: 369639
Change-Id: Ia6f699d1e659c68062d599820768a495d1f8d05a
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
2013-02-27 18:11:40 -08:00
Phani Kumar Uppalapati
5a6a94c304 ASOC: msm: Fix pcm playback issues for latest kernel.
Updated dai links to use dpcm trigger posts based on
the latest alsa sound soc framework.

Change-Id: I80819c87e7307ed24874e3ea237ff9d09770818f
Signed-off-by: Phani Kumar Uppalapati <phanik@codeaurora.org>
2013-02-27 18:11:34 -08:00
Harmandeep Singh
dcd23d119c ASoc: msm: Refactor some codec functionality into separate files
- Add all codec driver common functionality in common files.
- Add separate files for callback function definitions.
- Add header files according to the platform.

Change-Id: I906811043d4bb33571f719f79988fbdb89f5c385
Signed-off-by: Harmandeep Singh <hsingh@codeaurora.org>
2013-02-27 18:11:33 -08:00
Laxminath Kasam
ba7b9c7402 msm: Asoc: audio: Migrate to ION from DMA alloc
-RT proxy driver is using DMA alloc. Migrate them to
use ION memory to save memory and avoid stability
issues.

Change-Id: Idc2296bc5ecf76d6b846f204478c33f58423bb72
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
2013-02-27 18:11:32 -08:00
Shiv Maliyappanahalli
ec90bd7ff5 ASoC: msm9615: Add the amix control to configure AUX PCM rate
There are use cases that 16kHz sample rate AUX PCM needed
besides 8kHz. Add the amix control so that the AUX PCM
sample rate can be configured by application.

Change-Id: Ie2eaa5e844057065af4cedd64aa2c040f392721b
Signed-off-by: Shiv Maliyappanahalli <smaliyap@codeaurora.org>
2013-02-27 18:11:23 -08:00
Helen Zeng
d6a7ed5e07 ASoC: msm: Add Enablement for stubbed CPU DAI
Add backend enablement for stubbed DAIs.

Change-Id: I737b5cb114459a6288402ba81ae8cd1f9d14424b
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>
2013-02-27 18:11:18 -08:00
Santosh Mardi
b3f926c921 ASoC: msm: Update front end dai links with proper trigger command
CPU, platform and codec drivers does not support bespoke trigger.
update the front end dai links trigger option from bespoke to
dpcm trigger post.

Change-Id: I15bbb3b3fb1611bc3f77f729830fc8a6ba72b40a
Signed-off-by: Santosh Mardi <gsantosh@codeaurora.org>
2013-02-27 18:11:17 -08:00
Helen Zeng
4a5d11b80d ASoC: msm: Add routing control to route voice to HDMI
Add mixer control to route voice to HDMI.

Change-Id: Id94bdefc302edbcbc82a3430abee0f6d361075a1
Signed-off-by: Helen Zeng <xiaoyunz@codeaurora.org>
2013-02-27 18:11:05 -08:00
Kiran Kandi
3534eb6906 ASoC: wcd9320: Add intial driver for WCD9320 codec
The WCD9320 Codec Driver is an ALSA-compliant codec driver. This driver
constructs the internal codec audio paths with DAPM widgets and
controls and provides the controls to the upper layers to enable and
configure audio paths.

Change-Id: Iee29359bebfc838cd200732b7191a2eb6a2087ee
Signed-off-by: Kiran Kandi <kkandi@codeaurora.org>
2013-02-27 18:11:03 -08:00
Joonwoo Park
c8fd1b26d1 ASoC: wcd9310: Route MBHC override to micbias 2 during calibration
wcd9310's MUX for calibration is connected only to micbias 2.
Therefore if MBHC micbias is other than micbias 2, it's required to route
override to micbias 2 during calibration.
Set cfilt which is associated with micbias 2 as fast mode during
calibration for the same reason.

CRs-fixed: 369684
Change-Id: I910a8d6747ad013fbd7a006662a650f048ffc545
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:11:00 -08:00
Joonwoo Park
304d38f72d ASoC: apq8064: properly protect external mclk control function
Both audio path and MBHC accessory detection logic need master clock
enabled along with bandgap and clock block of CODEC. Clock control
is managed by the machine driver. Calls to clock control function from
audio and MBHC detection paths can be nested. As a result, reference
counter of master clock is incremen/decrement out of order and cause
master clock not enabled when audio path is enabled. Without master clock
CODEC will not consume data and this leads to SLIMBUS overflow error.

CRs-fixed: 370335
Change-Id: Id8d3b98496c95bb7ada9ca102fb867f52c0e500c
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2013-02-27 18:10:59 -08:00