Loading asoc/codecs/csra66x0/csra66x0.c +20 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #include <linux/init.h> #include <linux/delay.h> Loading Loading @@ -602,6 +602,25 @@ static const struct snd_soc_dapm_route csra66x0_dapm_routes[] = { {"PGA", NULL, "DAC"}, {"SPKR", NULL, "PGA"}, }; /* * csra66x0_hw_free_mute - Update csra66x0 mute register * * @component - csra66x0 component * */ void csra66x0_hw_free_mute(struct snd_soc_component *component) { int val = 0; if (component == NULL) return; val = snd_soc_component_read32(component, CSRA66X0_MISC_CONTROL_STATUS_1_FA); snd_soc_component_write(component, CSRA66X0_MISC_CONTROL_STATUS_1_FA, val | 0x04); } EXPORT_SYMBOL(csra66x0_hw_free_mute); static int csra66x0_wait_for_config_state(struct snd_soc_component *component) { Loading asoc/codecs/csra66x0/csra66x0.h +3 −1 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #ifndef _CSRA66X0_H Loading Loading @@ -226,4 +226,6 @@ #define FAULT_STATUS_TEMP 0x10 #define FAULT_STATUS_PROTECT 0x20 void csra66x0_hw_free_mute(struct snd_soc_component *component); #endif /* _CSRA66X0_H */ asoc/qcs405.c +31 −0 Original line number Diff line number Diff line Loading @@ -6177,6 +6177,36 @@ static int msm_mi2s_snd_startup(struct snd_pcm_substream *substream) return ret; } static int msm_mi2s_snd_hw_free(struct snd_pcm_substream *substream) { int i, data_format = 0; struct snd_soc_pcm_runtime *rtd = substream->private_data; int index = rtd->cpu_dai->id; struct snd_soc_card *card = rtd->card; struct snd_soc_component *component; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) data_format = mi2s_rx_cfg[index].data_format; else data_format = mi2s_tx_cfg[index].data_format; pr_debug("%s(): substream = %s stream = %d\n", __func__, substream->name, substream->stream); /* Call csra mute function if data format is DSD, else return */ if (data_format != AFE_DSD_DATA) return 0; for (i = 0; i < card->num_aux_devs; i++) { component = soc_find_component(card->aux_dev[i].codec_of_node, NULL); csra66x0_hw_free_mute(component); } return 0; } static void msm_mi2s_snd_shutdown(struct snd_pcm_substream *substream) { int ret; Loading Loading @@ -6504,6 +6534,7 @@ static void msm_spdif_snd_shutdown(struct snd_pcm_substream *substream) static struct snd_soc_ops msm_mi2s_be_ops = { .startup = msm_mi2s_snd_startup, .hw_free = msm_mi2s_snd_hw_free, .shutdown = msm_mi2s_snd_shutdown, }; Loading Loading
asoc/codecs/csra66x0/csra66x0.c +20 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #include <linux/init.h> #include <linux/delay.h> Loading Loading @@ -602,6 +602,25 @@ static const struct snd_soc_dapm_route csra66x0_dapm_routes[] = { {"PGA", NULL, "DAC"}, {"SPKR", NULL, "PGA"}, }; /* * csra66x0_hw_free_mute - Update csra66x0 mute register * * @component - csra66x0 component * */ void csra66x0_hw_free_mute(struct snd_soc_component *component) { int val = 0; if (component == NULL) return; val = snd_soc_component_read32(component, CSRA66X0_MISC_CONTROL_STATUS_1_FA); snd_soc_component_write(component, CSRA66X0_MISC_CONTROL_STATUS_1_FA, val | 0x04); } EXPORT_SYMBOL(csra66x0_hw_free_mute); static int csra66x0_wait_for_config_state(struct snd_soc_component *component) { Loading
asoc/codecs/csra66x0/csra66x0.h +3 −1 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #ifndef _CSRA66X0_H Loading Loading @@ -226,4 +226,6 @@ #define FAULT_STATUS_TEMP 0x10 #define FAULT_STATUS_PROTECT 0x20 void csra66x0_hw_free_mute(struct snd_soc_component *component); #endif /* _CSRA66X0_H */
asoc/qcs405.c +31 −0 Original line number Diff line number Diff line Loading @@ -6177,6 +6177,36 @@ static int msm_mi2s_snd_startup(struct snd_pcm_substream *substream) return ret; } static int msm_mi2s_snd_hw_free(struct snd_pcm_substream *substream) { int i, data_format = 0; struct snd_soc_pcm_runtime *rtd = substream->private_data; int index = rtd->cpu_dai->id; struct snd_soc_card *card = rtd->card; struct snd_soc_component *component; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) data_format = mi2s_rx_cfg[index].data_format; else data_format = mi2s_tx_cfg[index].data_format; pr_debug("%s(): substream = %s stream = %d\n", __func__, substream->name, substream->stream); /* Call csra mute function if data format is DSD, else return */ if (data_format != AFE_DSD_DATA) return 0; for (i = 0; i < card->num_aux_devs; i++) { component = soc_find_component(card->aux_dev[i].codec_of_node, NULL); csra66x0_hw_free_mute(component); } return 0; } static void msm_mi2s_snd_shutdown(struct snd_pcm_substream *substream) { int ret; Loading Loading @@ -6504,6 +6534,7 @@ static void msm_spdif_snd_shutdown(struct snd_pcm_substream *substream) static struct snd_soc_ops msm_mi2s_be_ops = { .startup = msm_mi2s_snd_startup, .hw_free = msm_mi2s_snd_hw_free, .shutdown = msm_mi2s_snd_shutdown, }; Loading