Add WSA VI sense macro to support VI sense capture.
Change-Id: I704aa6fbcb3908c0b76c82c941818b64e1d4598b
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
PA_ERR can happen during speaker path setup. Log the
error status in the interrupt handler and clear the error
status for next audio playback to resume properly on
the speaker.
Change-Id: I5800d9505a3036127097745aaa880b73b3e87f30
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Allow regcache sync during clock enable to make sure the registers
are in proper state before the usecase.
Change-Id: I8a9214e460c7f77759d1956e0e7e2d6b2f5b3d3a
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update register sequence of WSA883x codec to reduce CnP
during bringup and teardown of speaker path.
Change-Id: I348a55e1324b5c26a36b8d7c78edf52a66e40381
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update sequence to enable temperature sensor in wsa883x to
read proper temperature measurement.
Change-Id: I7db16344a92b82539929511bd0de322ed086beb7
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vangala, Amarnath <avangala@codeaurora.org>
Disable interrupts while bringing codec out of reset to avoid fake
interrupts.
Change-Id: Iec1e6c67429b7424693c2628e6f6d121a4c9ce71
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update speaker playback sequence on wsa883x codec to
avoid click and pop and loss of VI sense data on speaker.
Change-Id: I8ec7072b63bef6c2e7bd64c96df4d98852c4f40d
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
If soundwire slave supports clock stop mode, use the
clock stop mode instead of clock pause to avoid bus clash
interrupts.
Change-Id: I6eb0c76ffc0785c40d086f18ca16769a463f2e89
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Some usecase needs soundwire bus clock frequency to run at
lower clock rate for better power and performance. Update
soundwire bus clock frequency based on usecase.
Change-Id: I2e786d9f5d5d2ec3841daa934802eeafa79a8f6c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Different ADC modes need different clock rate. Update clock rate
based on the ADC mode.
Change-Id: Idaeda95a15e99038927de115727ece897bba7c29
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Check soundwire clock source before clock switch to avoid
redundant soundwire device suspend for the same clock source.
Change-Id: I613789b23c171959a60c9a059a30b3f1494f3dfa
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update TX HPF sequence for AMIC to avoid pop during
audio capture.
Change-Id: Ib70fc5cd05f67c97977db96487294bfe14f554ad
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Check for soundwire clock source before clock switch to avoid
redundant clock switch for the same clock source.
Change-Id: I8a7a116cc956f427af677b413928dace5a39a23d
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
During voice activation and audio capture concurrency usecase,
there is no common reference count for DMIC clock enablement,
results into mute when one usecase tears down. Change enables
a common reference count in bolero codec driver between voice
activation usecase and audio capture usecase to avoid mute
during VA and audio capture concurrency.
Change-Id: I424c941178d7e9ff91288a50ba27605b2b9d3abe
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update the clock sequence for native audio playback to avoid
any distortion or change in gain during native audio playback
usecase.
Change-Id: Ia9aaa63f3e476b49a07d49b794f4120ed55bac47
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Frame sync for fractional sample rates is different. Update
ssp period based on frame sync of fractional sample rate
for synchronization of the data channels.
Change-Id: I25eaa5195abcdfad54cfed09beb0abe5aff2499a
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support to handle wsa883x codec interrupts and runtime
detection of wsa883x variant.
Change-Id: I06fc113a390c04e890062761cff8ae7436acb662
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Mask bus clash interrupt before clock stop mode to avoid
misfire of the interrupt. Clear and enable the interrupt
after clock is enabled.
Change-Id: I494073a668d298eef466c0f10ab202c3c69f9968
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update rx droop based on sampling rate to avoid change in
gains between different sampling rates.
Change-Id: Icb2b0bc51a61395c2ee96f63c29555614fe9e505
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Change SSP period based on soundwire bus clock rate and frame shape
to avoid any synchronization issues.
Change-Id: I376958c6b92eca28b857c4c7c9948b1e56818657
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
WSA883x is a speaker amplifier with soundwire interface and
enumerates as soundwire slave. WSA883x supports audio playback
on speakers and has temperature sensors for better speaker
protection and enhanced boost control support. Add software
driver support to enable WSA883x speaker amplifier.
Change-Id: Ib9cf2eebdda5ce331154bc786f059c5757f34fa2
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
soundwire tx data gpio is wakeup source capable. Disable the
interrupt capable during voice activation usecase to let the
device enter into power collapse during voice activation usecase
on headset.
Change-Id: I64a0b5da249dd3da37310fb80909a0ac5fefae54
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update init registers for tx and rx paths in an array.
Change-Id: I2738af7639ffec05b5c93e86a2a3f4cf7ccb36fe
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update soundwire slave clock rate based on power mode on
WCD938x codec for better power numbers.
Change-Id: I6719d7eab7562bf4fe45b3e11fbae6e0a629f9b1
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Replace debug read/write register functions with
swr_master_read/swr_master_write to support different interfaces to
access soundwire registers.
Change-Id: I377bb927ee769a18c0179045953a521d0a83057f
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Check for valid port before mux configuration.
Change-Id: Iaa32925f0c23305a2a3cedd0e476372aac380e0c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Apply micbias configuration from device tree for WCD938x for
Kona target.
Change-Id: I45a47eb54f9fffb88259ba7e69633e3d3ebcb6a4
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
During low power island mode, register to event listener
to process soundwire inband interrupts from the soundwire
master driver.
Change-Id: Ib15f5ec59ea19010dbb8f9744de76bfc2ca7eebb
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support to register/deregister for event listener to listen to
headset interrupt events during low power island mode.
Change-Id: I9d05261003ef9e4783e03b3acb529c864c07cbec
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
DMIC45 clock gpio generates dmic clock on the gpio line when the audio
capture starts on DMIC4 or DMIC5. But the same gpio is also an
wakeup capable interrupt source. So, during audio capture usecase,
GIC receives interrupts continuously as clock gpio toggles. Disable
wakeup capability for DMIC45 clock gpio to avoid interrupt generation
to GIC during the audio capture usecase.
Change-Id: I7793455fd1034a5d391c6a163ca776c6ed0c9b89
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Some clock and data gpios are also treated as wakeup source capable
interrupts. Add support to control the wakeup capability based on
the usecase.
Change-Id: I32a12f004afbf04f82e40be62747b0af8836be82
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Fix soundwire clock sequence for headset SVA usecase to avoid
tx clock voting during low power SVA usecase.
Change-Id: I9613eee6a0b66560fa1108b4887af71507d345e7
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Unlock mutex for soundwire bank switch to process the
interrupt before clock pause and request for clock switch
to switch the soundwire clock source.
Change-Id: Idea4306a0e326864431e7cf956044383bf1790db
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support to enable LDOH in headphone path when equalizer
hardware installed on the device.
Change-Id: Ia575544650e5d03404fc77e3c2a9db729a2997a5
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support for moisture detection with duty cycle on WCD938x codec.
Change-Id: I1e5ceb39f031ea7f7efdd38706845b71b093a479
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Use soundwire device wakeup API to wakeup soundwire master
during headset plug detection.
Change-Id: Icddd558df382146bb2989926d2e92e627b5a844f
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Soundwire requires lpass core and lpass audio core to be enabled
to receive interrupts and soundwire register read/writes. Change
enables lpass core and lpass audio core in interrrupt service
routine and during register read/writes.
Change-Id: I56da2fc6efe7dfb1a7d59937b123b3972f633448
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update VA macro clock sequence for headset detection during
voice activation usecase to avoid soundwire bus clash interrupts.
Change-Id: Ic004d43aef9c8a9003b3028c122e6fb6a06fa58d
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Check for aux codec count and avoid aux codec registration
if the count is zero.
Change-Id: I540dcc8f14f138b8bd673d88ab7e033779a90843
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support to dump soundwire bulk register writes to
analyze port configuration on both soundwire master and
soundwire slave devices.
Change-Id: Ie02b2a0ba40aa5a0b4243022e439e1b545688143
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update DMIC enable sequence on WCD938x codec to support
audio capture on WCD DMICs.
Change-Id: I432bbc3a89ad6cbf968fa6474b9bbeb4924e2791
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Remove unused audio map routing from bolero codec to avoid
index mismatch for mic path enablement.
Change-Id: I09365f54ac5906df9568c78db902000a2dd790eb
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Existing delay for soundwire to auto suspend is 3 secs. Reduce
the delay to 1 sec to improve the power numbers.
Change-Id: I0c13439567eb73b80897f4cf1bbcfb1eded94a9c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support for LPASS Audio HW vote needed for low power AMIC
VA usecase.
Change-Id: If6642d418dbf2cc9773fbd0ec0fe35c30afac140
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Currently ASoC core creates a static route b/w
playback/capture widgets of cpu and codec dai
if they are part of the same dai-link. However
this will cause codec path to get powered up first
followed by the backend dai start during device
switch use-case where the front-end is not closed,
leading to audio playback failure if either bit-width
or sample rate is different. Set the dynamic bit of
backend dai dailink to update the backend parameters
before codec path setup.
Change-Id: Ic80755a5672849f527d5d696d31174a62997aca2
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add ignore suspend for digital mic4 and digital mic5 to avoid suspend
during system suspend.
Change-Id: I13d70510e56835867ee7a56a6af9bf223a64b751
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Fix issue in clock sequence when switching between VA clock to
TX clock and viceversa during VA usecase.
Change-Id: I4a7d423916b70b4b3c54d0d9a28b8ea874584525
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Suppress the errors from the soundwire master runtime suspend
and runtime resume, if the soundwire slave devices does not
implement the functionality, that avoids pm runtime calling
the runtime functions.
Change-Id: I513a37f37e349a0c435295056df8625f284e13e6
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Fix mismatch in TX clock count during three mic VA usecase.
Change-Id: I5f86fc8bf4f379e14ed8e15376f918b622bc221f
Signed-off-by: Sudheer Papothi <spapothi@quicinc.com>
Vote for LPASS HW core in soundwire clock request before
soundwire register access to avoid LPASS going to sleep.
Change-Id: I1e54ece19130cf6bd63fbf75a8a0716856c3b73e
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support to enable RCO during VA usecase.
Change-Id: Ic6b640f62a8a88b5d5b616fc05798917913356ed
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support for wcd938x codec variants. Changes detect the
variant and enable the corresponding features supported by
the codec variant.
Change-Id: Ib990465b42b903174391bb87115af47431b862ec
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Enable TX clock during VA path setup for SVA usecase to make
sure LPASS audio is in active state.
Change-Id: Ic835905e48919e3c97ab2b82b43b90a146f4f32e
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add DAPM widgets for soundwire clock on Tx path and
VA path to enable the desired clock source based on
the usecase.
Change-Id: I48b04e63317cefd8bf12d58b002efb37087f8dc2
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update audio routings for HDR recording on WCD938x codec
for AMIC1 and AMIC5 paths.
Change-Id: I67b93fe11c7a5b16ffd4bb8b58431be9dfba615e
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support for soundwire clock for VA usecase.
Change-Id: I1f56678ad36e4ae6c8dd458c0b7e96e847694050
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Check for valid handle before pm_runtime_resume in bolero register
read/write functions to avoid dereference.
Change-Id: I34d567e7575202817f4fcda784d0f3df2ed77bde
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Some of the interrupt status bits of soundwire interrupt registers
are different in different versions of soundwire. Change is to
handle the interrupts based on soundwire version.
Change-Id: Icac65c9986a3d5724da6343b4202931f04f57f25
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
During capture path setup, tx path hpf is set to hold.
Clear tx path hpf hold after device path setup.
Change-Id: I3299fc5d84d6e86e23c9ef150c8770ef9d59a870
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add soundwire DMIC port configuration on kona. This change
will enable audio capture from WCD938x codec DMICs.
Change-Id: I5b9e9a65f5bc021d4b19a838c17b56b3cb9eb4eb
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Clock Fs generation registers are in always on domain but
is needed for all the playback and capture usecases. Enable
clock Fs generation in the boloero codec after the clock
enablement.
Change-Id: I3a9cf14660f871b26ec96ef8b3e245ba5dadeb78
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
If the optional commands/registers in soundwire slave(s) are not
implemented, then soundwire bus will ignore the corresponding
commands and executes the next commands in queue.
Change-Id: I24dd929975218a150717f03f5c17c2be173a5005
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Existing soundwire master controller driver uses static tables
directly for soundwire port configuration. But, this is not
scalable to add support for new targets. So, define platform
specific soundwire master port configuration from machine driver.
Change-Id: I37d499c77914b413e6e16ab2689dbaae8fcd194c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support to get the platform specific soundwire port configuration
for soundwire master ports.
Change-Id: Ie1d32a77d534f6c3f397936b85c025b14d01f321
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Different platforms have different configuration for soundwire
ports. Add support to get the port configuration information
from the machine driver.
Change-Id: If2c006c4d4a43e2a8dc67c076f6d1c0f36eae16b
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Move APIs from internal header file for access to other
audio modules.
Change-Id: Ib34d052e4beb63c6805abacc3c99dbff18c9af6c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
WCD938x codec is a soundwire based codec that supports AMICs, DMICs,
Headphones, Ear and Aux paths. Add support to enable all device
paths of wcd938x codec.
Change-Id: I81b5e603ef73afba74b8d2274012752f9ca5cb6f
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support for soundwire device wakeup through bus driver.
These APIs will be used by slave driver through bus driver
to vote and unvote for master wakeup, when it requires
master for register access operations. Master will be
aware of the slave usage with the vote for device wakeup.
Change-Id: I24f0ec0344f05926dc866edb04294cb31348e1ce
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Add soundwire API to wakeup soundwire master and slave devices.
These APIs will be used by slave driver to vote and unvote for
master wakeup, when it requires master for register access
operations. Master will be aware of the slave usage with the
vote for device wakeup.
Change-Id: Ifa93f35ab2cffba778cd2fd9a2461e5a58445b75
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Soundwire slave device ID is 48 bits. Check the complete
soundwire slave device ID during enumeration for proper
slave driver registration.
Change-Id: Iac11eb818a29c227947f3cf50cafd336b4e410a2
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
During SSR, when the playback on speaker gets started before codec
is out of digital core power collapse, results in soundwire
register read/write failures. Check for codec power state before
enabling the soundwire during speaker device path enablement for
playback usecase to avoid soundwire register read/write failures.
Change-Id: I3b45ef0c34ad4f97aad89afaf719989ffbda7485
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support for headset moisture detection on wcd937x codec.
Change-Id: Ib9021869a5d3a0d4e5b8a912b235b68fad90f94f
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
when wsa881x device is down, reading temperature from driver
returns error. Instead of propagating the error, return the
cached temperature value to the thermal framework to avoid
iterative calls to read the temperature that results in
excessive logging.
Change-Id: I529c83eafec63004c2469bf16a0b53bd5accbdbb
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Detect moisture in the headset jack and avoid headset jack
corrosion due to presence of moisture over prolonged duration.
Change-Id: I0227e516feb58c96ddf6a8fbc32423bfe7733ca6
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
of_property_read_bool prevents an overlay to set it false
as /delete-property/ is not supported in device tree overlay.
Use of_property_read_u32 to read property to allow it to
be changed in overlay device tree.
Change-Id: Ic1ae38d99999b3ff7e268a6360d55fc2624c0b6f
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add mixer control for AANC noise level to control AANC noise
level from userspace when AANC functionality is enabled.
Change-Id: Id47b77e054008853e5b5ddb0e9cc126626b407b8
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Existing software supports only high AANC level with minimum noise.
Requirement is to support different noise levels when AANC is
enabled for better AANC effect.
Change-Id: I343d00473937f68eb86533e88b25083d554b79b1
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support for audio drivers compilation on kernel-4.14.
Change-Id: Id7689cef4ae7cdb6711fed386d2a6b0d427b3fc3
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Comparison of headset threshold during special headset detection is
not proper. This results in to improper detection of special headset
and recording usecase failure on special headset. Fix the special
headset detection issue by adding proper check condition while selection
of headset threshold from device tree.
Change-Id: I4c338ded1bcb9fa643e1584eb23c6260fe52acee
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Runtime suspend in slimbus driver makes QMI call which takes
wakelock and result in first system suspend to fail. As a result
of first suspend fail, POST_PM_SUSPEND event is dispatched to
thermal core which registered to pm notifier. WSA being one
of registered thermal zone gets query for temperature, and makes
slimbus reads/writes which will result in runtime resume of
slimbus driver to happen. System suspend fails again continuously
in this endless loop as slimbus runtime suspend will make QMI call
again.
Update wsa temp sensor to handle suspend event by registering to
pm notifier and ignore the temperature request from thermal core
at resume. This will avoid slimbus reads/writes during suspend in
progress and allow XO shutdown to happen.
Change-Id: Id13a9701cffb1231ef7d563cbc30756fd71d5868
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
During Tx path enablement, amic information is needed for proper
power level settings and for better performance. Existing API returns
incorrect amic information. Changes provide the correct amic information.
Change-Id: I18f3f35212cae47e5d944c2e075f03889147722b
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Fix hardware sequence for AQT1000 as per hardware
requirements to bring codec out of reset for playback
and capture usecases on headset.
Change-Id: I7419aec36aefc2887583308a60d1ea246d000469
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>