Depending on the impedance across HPHL and HPHR, set classh
configurations so as to avoid false OCP events.
Move wcd9xxx_registers.h to uapi folder, as this header
file is used by userspace for wdc9330 codec.
CRs-Fixed: 963843
Change-Id: Ie2fb4b75b7f74013580bd3912372c64ddefc734e
Signed-off-by: Yeleswarapu Nagaradhesh <nagaradh@codeaurora.org>
Signed-off-by: Neema Shetty <nshetty@codeaurora.org>
Device crash is observed for consecutive SSR's triggered during WFD
playback. This is due to callback functions registered by afe client
aren't reset during the first SSR and the same callback functions are
being used for the next SSR event, resulting access in freed data.
Fix this issue by resetting the callback functions during SSR.
CRs-Fixed: 1045045
Change-Id: Ib651dd59b30e4924f4e199cfd4fae64df6030d9d
Signed-off-by: Venkata Narendra Kumar Gutta <vgutta@codeaurora.org>
FM audio playback is failing as the loopback mode
is hardcoded to EC mode which is incorrect for
FM audio playback usecase.
Change it to default loopback mode.
Change-Id: I36b60ba2283b0bbe36f492e1410603b8c2050cc4
Signed-off-by: Shiv Maliyappanahalli <smaliyap@codeaurora.org>
During playback, enabling smart boost feature changes the threshold
of the playback signal based on the amplitude of the signal without
clipping the signal. Change enables smart boost on WCD9340 codec.
Change-Id: Ic4c5e3cc071898f376070b853112c5014d61272c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
DMIC clock on ECPP(Echo Cancellation Ping-Pong) hardware path
can run at lower clock rate to avoid power consumption. Select
ECPP dmic clock rate when decimator is connected only to ECPP
path.
CRs-fixed: 1022917
Change-Id: I968e1fe6b099ebf5334eadb209219181293b207f
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
WCD9335 codec has single master clock supply widget for both
playback and recording paths. Adding separate clock supply
for playback and recording paths will help handle low power
audio recording usecases without affecting playback usecases.
Change is to enable separate clock supply widgets for playback
and recording paths.
CRs-fixed: 1022917
Change-Id: I3978d2c53f2b04104d9d279f8acad60326f9405c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
Codec is in digital core power collapse when there is no
audio usecase but low power audio usecases needs codec to
be out of power collapse. Changes bring codec out of
digital core power collapse for low power audio usecases
without enabling master clock.
CRs-fixed: 1022917
Change-Id: I762fc1dc6b6527608e73ac5144215ee141570aac
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
Add support for CPE(Codec Processing Engine) second voice
wakeup session using ECPP(Echo cancellation Ping-Pong) hardware
path. This allows to enable two concurrent CPE sessions, one
on MAD(Mic Always-on Detection) and the other on ECPP.
CRs-fixed: 1022917
Change-Id: I7a14a2d0b5455d427f90e02506b996fc615c848a
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
WCD audio codecs contain SPI slave hardware module to provide access
to codec memory and SPI register space. Change adds driver for this
slave hardware. This driver uses regmap for SPI internal register
accesses and plugs in to standard SPI framework as child device to
master controller driver.
CRs-Fixed: 1049012
Change-Id: I0640ac1ed60a2ec3633636760593211ecd2f9c2d
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
WCD audio codecs have DSP embedded to perform signal processing on
audio data. The codec driver has control over the DSP clock, power etc,
whereas the DSP memory can be accessed through an different bus slave
interface. In such cases, it is required to make sure the hardware
expected sequences are met for the DSP to function properly. The
wcd-dsp manager driver registers as master to component framework
and provides the ability to sequence the operations between the child
drivers. Upon registration of all children, the wcd-dsp manager driver
parses the wcd dsp image, downloads the image and boots up the DSP.
It invokes the component children to perform the tasks in sequence.
CRs-Fixed: 1049012
Change-Id: I059e1b111c607e49a7cc9a7940cf458e701c73d3
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
wcd_dsp_utils adds utilities that will be used by the
wcd dsp manager driver. Add helper functions to parse
WDSP image and provide list of segments to be loaded
to memory.
CRs-Fixed: 1049012
Change-Id: I2b1464c2a035a039440e6d3e5122ad3f90da4d1e
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Change conditions to query DSP for session time
Bug: 21633313
Change-Id: I7676d11747083eb35826c52abaa0de47f50032fc
Signed-off-by: Haynes Mathew George <hgeorge@codeaurora.org>
The array index value when setting/getting the channels
of proxy is incorrect as the channel count begins from two.
Fix by setting the correct index offset.
Change-Id: I3ab9858daf6dcdbce762946cbdebeb96eaad764a
Signed-off-by: Shiv Maliyappanahalli <smaliyap@codeaurora.org>
One of the CPE sessions uses EC(Echo cancellation) PP(Ping-Pong)
path on WCD9335 that is connected to CPE (Codec Processing Engine)
hardware. Configure EC PP path for CPE functionality. This
requires WCD9335 codec to be out of digital core power collapse
without turning on MCLK(Master clock).
CRs-fixed: 1022917
Change-Id: I68200b12fcb316bf36f7c3af2734a094f972da9c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
DAPM marks back end dai as dirty during ASoC suspend
which triggers device path teardown. Add ignore suspend
to all back end dais to avoid device path teardown.
CRs-Fixed: 1031932
Change-Id: I89f83feed0702f3a3f3b6141ed73459b8878d2df
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Changes to support packed 24 bit (SNDRV_PCM_FORMAT_S24_3LE)
CRs-Fixed: 1011048
Change-Id: Id927e9b8894b1bf99e57cc0f04abf126740c6d36
Signed-off-by: Manish Dewangan <manish@codeaurora.org>
In lsm-related driver files, some pointers are not set as NULL
after the memory is freed, which will leave many dangling pointers.
Set them to NULL explicitly to avoid potential risk.
CRs-Fixed: 997059
Change-Id: I44925240705608510266a51225cc02611637c571
Signed-off-by: Walter Yang <yandongy@codeaurora.org>
when mono headset is connected, either of the HPHL
or HPHR channel is enabled. So don't check for
both if cable is mono headset, otherwise RX chain is left muted
and hence audio is not heard from headset.
CRs-Fixed: 1018104
Change-Id: I464c785eba28f02993042d220e5744025e2f9346
Signed-off-by: Yeleswarapu Nagaradhesh <nagaradh@codeaurora.org>
Channel ids are not updated correctly in hardware params
fixup resulting in audio mute on one of the channels on headphones.
Fix the channel ids properly in msmcobalt machine driver hardware
params fixup.
CRs-Fixed: 1034829
Change-Id: If23da9ac1d2f71ad4d39371b665311f1f84b016a
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
DAPM marks front end dai as dirty during ASoC suspend
which triggers device path teardown. Add ignore suspend
to all front end dais to avoid device path teardown.
CRs-Fixed: 1031932
Change-Id: I1d85578534c58c121ca8e560d67faf9b94e87be9
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Existing CPE(Codec Processing Engine) driver supports single session.
Add support for two sessions with different sampling rates.
CRs-fixed: 1022917
Change-Id: Icb355cd07db9cc66632ac0ea14464c5610919725
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
Allow to set volume in ASM for the loopback driver. Without the
get() function the corresponding volume mixer control is
failing to set volume.
CRs-Fixed: 1034862
Change-Id: I621dd9de3a8d4a0f4102227989e1dd17638c20ea
Signed-off-by: Surendar karka <sukark@codeaurora.org>
Existing CPE(Codec Processing Engine) driver supports single session.
Add support for two sessions with different sampling rates.
CRs-fixed: 1022917
Change-Id: Ifbcb1bf8c418a4b3c787f68392aa141207dddde5
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
For the audio get calibration ioctl compare the allocated
buffer size to the size of the header and cal type header
to ensure the buffer is big enough.
Change-Id: I851b4454e8420706ad3263d67e892720d46e5718
Signed-off-by: Ben Romberger <bromberg@codeaurora.org>
As part of clock test, prepare and unprepare functions are
triggered for all the registered clock's. If clock is
is not used in a flavor of target then pinctrl
pointer is not valid. Hence check for pinctrl before accessing.
CRs-Fixed: 1018208
Change-Id: I3afc0d86476f7a447237180fa411858782d3df1b
Signed-off-by: Yeleswarapu Nagaradhesh <nagaradh@codeaurora.org>
This allows runtime suspend to kick in upon all the
children of usb device are suspended. It saves power
when usb audio device is connected but not data transfer
is taking place.
CRs-Fixed: 1003807
Change-Id: I227a74c029f10ffda9ceccc10322ad71e7fd0435
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>