Update high pass filter cut off frequency register after
decimator clock enable to reduce click and pop in recording
path.
Change-Id: Idee07f2104911180a9ca60490fe30f628f90b71f
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
It is possible that codec master clock enablement could race from two
different execution contexts, causing the mclk to be not enabled at all.
This will result in failure of use cases that expect the clock to be
present. Fix this issue by making sure the race condition does not
occur during mclk enablement.
bug: b/30983442
Change-Id: Ie254b8876524956b816267eaaed205f65641c000
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
To help debugging, change adds support to read address and size from
the debugfs nodes and provide the memory content through the
mem_read debugfs node.
CRs-Fixed: 1064870
Change-Id: I151bc5d373129e3599baf6d3217b65843c0f16d0
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Current maximum transfer unit in the driver is set to 16K bytes,
whereas the maximum possible is upto 64K bytes. Update the driver
to use the maximum possible transfer unit and split the read and
write requests into chunks of this maximum possible transfer length.
CRs-Fixed: 1070087
Change-Id: I271cf0ad12652421ab3ae8770714ccb78c043efa
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Avoid DAPM failure by ignoring the mbhc get impedance
errors as this is not a fatal and audio can still work
even if the class-H settings are not updated based on
impedance values.
Change-Id: Icd6846d157af5a96d5ae49261e109cbd5ab8c266
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
Create mixer control to select asrc (asynchronous sample rate
converter) output mode to integer or fractional rate based on
the playback sample rate of the main path or DSD path.
CRs-Fixed: 1078253
Change-Id: I941a357d63f1024c5f7648de10af10df0148c6a7
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
External clock buffer being turned on even when mclk is gated results
in power leakage. Disable external clock buffer when mclk
is not in use.
Change-Id: Iea45a4e8ab4560a093c44800ddd7b1311471c646
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Initliaze the local variables that are used in functions to return
success or error codes. This fixes possible cases where undefined
error codes are returned.
CRs-Fixed: 1070186
Change-Id: I74bed6cfd9753765b15d17d69ba30f61875e87c8
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
During subsystem restart, the codec hardware goes through reset. Add
support in the wcd934x dsp controller driver to handle codec reset
and perform necessary reset of the codec dsp.
Change-Id: I9916354c04e24708aced5fc63bc12ddfe87b49f2
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Keeper enable bit is used to reduce the current leakage
from soundwire master. Enable this bit before starting
audio use-case through soundwire and disable once
use-case is completed.
Change-Id: If2dc9e7fd9a2710391d02c0e52a291b3cffc63b6
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
Current register settings for memory control allow only few memory
banks to enter deep sleep. This could cause some of the memory banks
to not enter deep sleep mode, resulting into higher power consumption.
Fix the register sequence to make sure the memories are allowed to
enter deep sleep mode.
Change-Id: I2ae0fe35e9a207b33f88077ca6ec49d593d43b68
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
It is possible that codec hardware can be reset in case of subsystem
restart scenarios. It is required to reset the codec DSP as well in
such cases to make sure the DSP is in usable state after the codec
hardware is reset. Change adds support to handle codec down and up
events and perform the necessary reset on codec DSP.
Change-Id: I79502c043f5e16947c895aab7cd584d72ad1a7dc
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
The wdsp_intr_handler is not really processing interrupts in interrupt
context, rather assumes that the caller is not in interrupt context and
performs calls that may sleep. Rename the function in order to avoid
confusion. Interrupt handlers can still call this function as long as
they are in threaded interrupt context and are okay to sleep.
Change-Id: Ia2803d6ca021d505ed2e711e676cbd701b11c492
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
One time initializations like regmap and debugfs init are currently
done in the init function. But, in case of subsystem restart, the
driver can get de-initialized and then initialized again. This causes
the debugfs and regmap entries to get removed and added again during
subsystem restart cases. Avoid this by moving all the one time
initialization of the driver to component bind.
Change-Id: Ideed297fde016b0623616be64875be094e688981
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Display driver has a timeout to avoid prematurely turning
off audio engine. Add teardown function call to ensure
that display driver can turn off audio engine once audio
driver acknowledges the shutdown, so display driver
doesn't have to wait for the entire timeout period.
CRs-Fixed: 1075659
Change-Id: Ib8211a85543b659b7b19a6ebb85382dbbbecfec6
Signed-off-by: Garmond Leung <garmondl@codeaurora.org>
Incorrect values are received when queried for SLIM RXX MUX.
This is due to incorrect logic in the put and get functions
of this kctl. Correct the logic to fix this issue.
CRs-Fixed: 1074866
Change-Id: Ib1fda1fcbc09e132f1b3deaf4a65fe8617ff9d10
Signed-off-by: Xiaojun Sang <xsang@codeaurora.org>
In order to support higher bit rate like 384Khz
higher buffer sizes are required. Hence change
the max limit from 2 * PAGE_SIZE to 24 * PAGE_SIZE.
Change-Id: I9d57f3011fee086b2d54997d85bc9a37ccc07e4a
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
To support ADSP SVA on wcd934x, dedicated backend dailink needs
to be created. Add the dailink associating the specific cpu dai
and the MAD codec dai.
CRs-Fixed: 1070327
Change-Id: I4152d81e4e951216a8ecdd93562eb1740dbb962c
Signed-off-by: Walter Yang <yandongy@codeaurora.org>
Lowlatency playback is failed to start when FM is going on because
of wrong channel count in backend DAI. Channels are overwritten because
of afe loopback port mixer caching variable(port_sessions) overflow.
Fix this issue by creating an array to track all the loopback
connections.
Change-Id: I47b875df7eae671f8b59ecc76f61ed7fc7147f0e
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>