When SSR happens, set substream state to SNDRV_PCM_STATE_DISCONNECTED
to avoid userspace keeping waiting for substream state and causing
deadlock.
Change-Id: Iaa4d76101204652742c55d13da5c770c418a16bc
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Enable component after enabling interrupt to avoid missing
some intterupt during master init.
Change-Id: I0f60c5431a815c58f878d3b9275a046e47939111
Signed-off-by: Meng Wang <mengw@codeaurora.org>
wakeup_source_init and wakeup_source_trash are removed
in new kernel. Update these two APIs to wakeup_source_register
and wakeup_source_unregister.
Change-Id: If628aac4f5391b483bb20e66b49cdf47618462c9
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Wakeup source is not removed before freeing prtd
memory which causes kernel panic during SSR.
Move wakeup source after lsm_client initialization
is done.
Change-Id: I21cdafce84215d3fee3dc972af8e5b469dd5f565
Signed-off-by: Meng Wang <mengw@codeaurora.org>
If swr DMIC clk_div is enabled before enabling tx mclk and LPASS
power collapse happens, volatile swr DMIC clk_div registers would
be cleared and swr DMIC would not work. Make this change to enable
swr DMIC clk_div after tx mclk is enabled
Change-Id: Ie9e7e8c74dc0e013898f3fd8b62344a670ad6664
Signed-off-by: Meng Wang <mengw@codeaurora.org>
When LPI SVA is enabled, start recording and stop LPI SVA, wakeup irq
is not deregistered as tx_swr_clk_cnt is not 0. Add new check for
va_swr_clk_cnt to resolve the issue.
Change-Id: I441394f26b42f554169400194d021309ef70af9e
Signed-off-by: Meng Wang <mengw@codeaurora.org>
prtd->lsm_client->confidence_levels is allocated in
msm_lsm_get_conf_levels and not freed in msm_lsm_set_conf.
Make this change to free this memory.
Change-Id: I617703b36c13e065fdf995e89121c442b32b08f3
Signed-off-by: Meng Wang <mengw@codeaurora.org>
When enabling SVA, tx_mclk_users is not increased. If starting
and stopping recording after enabling SVA, tx_mclk will be closed
when powering down tx mclk widget. Increase tx_mclk_users when
enabling VA_MCLK to avoid mismatch.
Change-Id: I02d9400cf7309464bbba1e6749cfcfcf99f5876a
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Before every slave interrupt handler call, reset slave pending
irq flag, so that if irq is halted it does not retain the old
value.
Change-Id: I2c78500e83eca7864029f58cffa80f8648902fb2
Signed-off-by: Meng Wang <mengw@codeaurora.org>
There's some race condition when sending afe cmds between
USB playback and codec clk enablement. Add new clk_state,
clk_status and clk lock to resolve the race condition.
Change-Id: I2ccc77c20a274b797129b8b674c026ef003353d4
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Add mixer control for LPI enable flag. The listener
should only be registered for LPI SVA session.
Change-Id: I01e4b0868e3333e1fc60f86444b1cf1c77e25cb7
Signed-off-by: Meng Wang <mengw@codeaurora.org>
when triggering SSR during speaker playback and insert headset,
headset insertion/removal IRQ don't reach soundwire master side.
Remove soundwire state check in interrupt handler to resolve headset
detection issue.
Change-Id: If6ff9aaaab9513f713d6106913dfccbc0e75e385
Signed-off-by: Meng Wang <mengw@codeaurora.org>
When dispatch_event in apr and q6lsm_client_free in q6lsm
are running concurrently, there may be deadlock between
session_lock in lsm and svc->m_lock in apr for lsm_common.
Move lsm_common mmap apr deregister out of mutex_lock to
avoid deadlock.
Change-Id: I7c96ba12834bd4a7c8e5ca1b78d798578678b251
Signed-off-by: Meng Wang <mengw@codeaurora.org>
During SSR, q6lsm_mmapcallback could happen before
q6lsm_mmap_apr_dereg. q6lsm_common.apr and
q6lsm_common.apr_users are cleared in q6lsm_mmapcallback.
Add apr NULL check in q6lsm_mmap_apr_dereg before accessing
q6lsm_common.apr_users.
Change-Id: Ia0ff57b3fff0a0e4f26b836a8a15324406af1a14
Signed-off-by: Meng Wang <mengw@codeaurora.org>
when get_audio_edid_blk is NULL, msm_ext_disp_edid_ctl_info
returns error value. And it would cause tinymix doesn't have
full mix cmd list. Return 0 instead to avoid such issue.
Change-Id: Ic13067483b373fa4a81b663ece3d3e4a18ea8a87
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Sometimes adsp may fail to allocate memory for SVA calibration
data and add check if mem_map_handle is assigned with valid
non-zero handle to avoid panic.
Change-Id: Icad722edc52906e63d581aafa02b42b8518ebca6
Signed-off-by: Meng Wang <mengw@codeaurora.org>
When dispatch_event in apr and q6lsm_client_free in q6lsm
are running concurrently, there may be deadlock between
session_lock in lsm and svc->m_lock in apr. Adjust session_lock
in q6lsm_client_free to avoid deadlock.
Change-Id: I26eb788d4c17af78272dd1f717717e865dfbd0ac
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Add routings for SEC_MI2S_TX and Voicecall/VOIP to
reduce audio log during bootup.
Change-Id: I368ab9782f14ccf99114994fe6c2dd42fee5d59a
Signed-off-by: Meng Wang <mengw@codeaurora.org>
During adsp SSR, bolero runtime suspend is not called and
hw vote clks are not reset. Force bolero runtime suspend
during adsp SSR to avoid kernel panic.
Change-Id: Iff5983ef07f77ecc7f3f344948c013906b4bad60
Signed-off-by: Meng Wang <mengw@codeaurora.org>
During adsp SSR, lpi runtime suspend is not called and
hw vote clks are not reset. Force LPI runtime suspend
during adsp SSR to avoid kernel panic.
Change-Id: I153c5826a282d7beb175a41a55e2d6bf5907eb62
Signed-off-by: Meng Wang <mengw@codeaurora.org>
HW vote clock may fail to get enabled. Check if hw vote clk is
enabled in lpi_gpio_read and lpi_gpio_write to avoid kernel panic.
Change-Id: I077e5c61058d9d90be98ff3a0c0834049ad7e584
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Update pr_err to dev_err to indicate which device has
clock mismatch.
Change-Id: Icf842ed63aa0a01ace0ff461f8c05194a0e25f92
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Reset GFMUX reg for va-macro and wsa-macro when adsp is up
after SSR. And check if clock is enabled before accessing
register to avoid kernel panic.
Change-Id: Idce9695be552cab0e8e389cf72eeb7a67a754bf9
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Remove extra semi-colon from wsa_macro_set_spkr_gain_offset to
avoid compile error when wsa-macro is disabled.
Change-Id: Ic94e78822639d70a365c714ad7dd0b2091de8179
Signed-off-by: Meng Wang <mengw@codeaurora.org>
After SSR/PDR, the lpass clocks will be in off state. Force restart
clocks after SSR/PDR, if enabled before SSR/PDR, to reenable the clocks.
Change-Id: I3d850d92bdc6324aa7a64a83a9066f388a85c7f7
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Update wsa aux codec matching logic in machine driver
to apply proper gain settings for wsa8810 variant.
Add null check for aux component name to avoid dereference.
Change-Id: Ie332f8e37a2d6b7a250fe299df91fa9cf9d7636b
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Some bolero codec registers are not correctly restored after
SSR and causes DMICs on bolero don't work. Add this change to
restore all bolero codec registers after SSR.
Change-Id: I3666a77f802f62452a0e0de4859f48a0f9e5cbb1
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Do not disable tx macro clk when it's not enabled during
SSR/PDR to avoid clk count mismatch.
Change-Id: I69a59cff9cb57ef3dea366c73629c3eddcb19abe
Signed-off-by: Meng Wang <mengw@codeaurora.org>
During suspend on new kernel, FE/BE path would tear down and
pinctrl for related component would be deactived. On kona, FM
is connected to TERT MI2S and during suepend, pinctrl for TERT
MI2S would be sleep state and FM has no sound.
Add ignore_suspend for all BEs, BE_OUT and BE_IN to avoid tearing
FE/BE path during device suspend.
Change-Id: I8868f35d6c418987ffe287d64a3f5ae3d1abf1c1
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Add mixer control to set channel number for speaker protection.
Change-Id: I67527119a65758c77dbf9b1d26cc51f956702b5e
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Set/clear correct FE/BE route for LSM in LSM put funtion
to avoid mixer control initial value is not set from userspace
after audio server restart.
Change-Id: Ic415bb51cbaf887c4ddacf9e7062ec28a36674e4
Signed-off-by: Meng Wang <mengw@codeaurora.org>
There can be deadlock between __bolero_reg_read/write and
bolero_runtime_suspend. Remove the mutex_lock in
bolero_runtime_suspend to avoid deadlock.
Change-Id: I712b9f24adeddda8899b39f90291394965443163
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Stop mbhc operations during ssr down to cancel
any pending detection sequences.
Change-Id: Iff054cf8b3099959a1be561bd937057258f57b81
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Add NULL check before access pointer to avoid dereference.
Change-Id: I2c7408348a0acf1a3801a5869f62bae328858beb
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Disable EN_CUR_DET to fix receiver noise as per hw team
recommendation.
Change-Id: Icbeea920d02279ff845072e54be1c449db7bd2da
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Add connection for RX_CDC_DMA_RX_0 and WSA_CDC_DMA_RX_0
to suppport FM playback.
Change-Id: I406faecd089e063848e9e8b507b1e1a0d1c21454
Signed-off-by: Meng Wang <mengw@codeaurora.org>
mbhc_mbhc_cfg.swap_gnd_mic is not initialized for analog type-c
headset on Kona which causes headset detection fails.
When analog type-c headset function is enabled on device, initialize
swap_gnd_mic to msm_usbc_swap_gnd_mic to resolve this issue.
Change-Id: Ia8244e41cbfa7c8844b761ff129a7d2cced0dacf
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Some new backends are added and update be_name for channel mixer.
Update adm_programable_channel_mixer parameter to support record
echo from RX.
Change-Id: I628292112f558eca9301c67b36e6de41924f27d5
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Samplerate, channels and bit rate are not updated for
MSM_BACKEND_DAI_WSA_CDC_DMA_RX_*, MSM_BACKEND_DAI_RX_CDC_DMA_RX_*,
MSM_BACKEND_DAI_WSA_CDC_DMA_TX_*, MSM_BACKEND_DAI_TX_CDC_DMA_TX_*.
Add hw_params_fixup function for these BE DAIs.
Change-Id: Ia21f1cf5742e3acc6549319dcedfde07233ed161
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Copyright year 2018 for q6afecal-hwdep and third party copyright
marking for q6asm are removed during updating file headers.
Add them back.
Change-Id: I0341116ca0cf82be8c3876534b98ad2c376b3531
Signed-off-by: Meng Wang <mengw@codeaurora.org>
param_size value is not correctly assigned with roundup.
Assign the return value of roundup to param_size.
Change-Id: I92e42b4684d7be77a5fa82c8e8c90167f985f97d
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Update symbolic link for internal.h, core.h and pinctrl-utils.h for kona.
Change-Id: I3bb585700a531e97a0b1b163b191105628f3d22c
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Add support for AFE loopback between DMA backends
and tertiary mi2s tx on Kona.
This is required for FM playback usecase.
Change-Id: Idc0a1afc522365d15f3cdf28f01ea49f5c399850
Signed-off-by: Meng Wang <mengw@codeaurora.org>
SMMU initialization is not required to be done in client
probe process. SMMU framework takes care of creating
domain and attaching device. Remove related code from
audio ion driver.
Change-Id: I3756c5abb7488afb43e20fae698c7008461a18cb
Signed-off-by: Meng Wang <mengw@codeaurora.org>
snd_soc_codec is removed from kernel-4.19.
Update machine driver to fix compile error.
Change-Id: I1bdfda07c0d150d008c434c361142b655de1e9db
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Some alsa API are removed in kernel-4.19 which would cause
codec driver compile failure. Update codec driver to fix it.
Change-Id: Ie358ec1863082166958059c179300b453d2a03ad
Signed-off-by: Meng Wang <mengw@codeaurora.org>
snd_soc_platform_driver is removed in kernel-4.19.
Update snd_soc_platform_driver to snd_soc_component_driver.
Change-Id: I434b6fd173d1f4365a610d9164342d5d04d6c5bc
Signed-off-by: Meng Wang <mengw@codeaurora.org>
chmap in msm_lsm_check_and_set_lab_controls, data in
wcd9xxx_i2c_write_device and irq_level in wcd9xxx_irq_init
are Variable Length Array (VLA). VLAs are considered unfit
when it comes to security, performance, code quality and so
on. Hence, allocate the memory dynamically.
Change-Id: I52f33e61f857a00774eb26dc1d6372f2ed3d425c
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Switch audio drivers to SPDX identifier on msm-4.19.
Change-Id: Ic3f0230a516db251b8d81e8a7e73dbc04d66fe1b
Signed-off-by: Meng Wang <mengw@codeaurora.org>
On kernel-4.19, setup_timer is changed to timer_setup.
Update ep92 driver to fix compile error.
Change-Id: I844241413c72c415819774921f267d84692ba177
Signed-off-by: Meng Wang <mengw@codeaurora.org>
The two arguments in functions wcd_request_irq, wcd_free_irq,
wcd_enable_irq and wcd_disable_irq have same identifier names.
Correct wcd_irq_info identifier name to fix compile error
Change-Id: I6f240d3af1cd253336d070d0f3228eae96a4fcb6
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Update app type config get function and userspace can
get the app type config with mixer control.
Change-Id: I78eda2963161936ae1dbf90dad1bfb64cb079e8d
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Move struct snd_dec_ddp from uapi folder to msm-compress-q6-v2.c to
avoid code check warning.
Change-Id: Id33eee6da8f42841c80e7e5795bb19e71ab6e784
Signed-off-by: Meng Wang <mengw@codeaurora.org>
When codec probe is not correctly completed and ADSP SSR happens
before sound card is registered, calling SSR callback may result
into NULL pointer dereference and kernel panic happens.
Check sound card state when calling device_down and post_reset to
avoid NULL pointer dereference.
Change-Id: I35fd84af51edf45db6fd451dc68dbcaaed11fee7
Signed-off-by: Meng Wang <mengw@codeaurora.org>
When adsp/wdsp SSR happens, WDSP_SSR_TYPE_WDSP_DOWN/WDSP_SSR_TYPE_CDC_DOWN
would get received by wcd-dsp-mgr. wcd-dsp-mgr would clear current work and
init wdsp when adsp is up and ready_compl flag is set to ready. Sometimes
ready_compl flag is not cleared and wdsp initialization would happen when
adsp/wdsp is down which would cause kernel panic.
Reinit ready_compl flag when adsp/wdsp SSR happens.
Change-Id: I45186abba7992ee6912c5b0da171ef37b04e2e71
Signed-off-by: Meng Wang <mengw@codeaurora.org>
During SSR, ac could get freed after unlock the session lock
during the execution of q6asm_callback. If we try to get the
ac->cmd_lock after ac freed, kernel panic happens.
Remove mutex_lock in reset_event to avoid kernel panic.
Add spin_lock_irqsave in q6asm_add_hdr and change spin_lock to
spin_lock_irqsave in q6asm_callback to add synchronize between
q6asm_add_hdr and q6asm_callback to avoid kernel panic.
Change-Id: I72cf959fe6a764920a13d565c72243a80ac4f236
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Reset power_active_ref counter to 0 when it is negative to
take digital core out of reset during next session.
Change-Id: I724ffe6e3547655424238ca02a9bf8ac24b101fe
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Add qcom,subsys-name for apr driver. Based on the property,
registration of notifier is done for the right co-processor,
from which notification needs to be received.
Change-Id: Id492c8b24d1a4cf0bcab37700a1e9c61c9067041
Signed-off-by: Meng Wang <mengw@codeaurora.org>
waitqueue dsp_wait is not used anymore.
Remove it from apr driver.
Change-Id: Iab16d37cdc8dd495e2289acec3ee5625421465e4
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Use of_platform_populate to add child node of apr.
Change-Id: I9f0ded5e39deaf37c79ecda4d960d64c9c14eec9
Signed-off-by: Meng Wang <mengw@codeaurora.org>