ASoC: codecs: tas*: merge .digital_mute() into .mute_stream()
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
ASoC: codecs: tlv*: merge .digital_mute() into .mute_stream()
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
ASoC: codecs: merge .digital_mute() into .mute_stream()
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
ASoC: meson: merge .digital_mute() into .mute_stream()
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
ASoC: spear: merge .digital_mute() into .mute_stream()
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
ASoC: ti: merge .digital_mute() into .mute_stream()
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
ASoC: hdmi-codec: merge .digital_mute() into .mute_stream()
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
For hdmi-codec, we need to update struct hdmi_codec_ops,
and all its users in the same time.
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling "direction".
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
To prepare merging mute_stream()/digital_mute(),
this patch adds .no_capture_mute support to emulate .digital_mute().
ASoC: hdmi-codec: return -ENOTSUPP for digital_mute
snd_soc_dai_digital_mute() will return -ENOTSUPP if driver doesn't
support mute.
In hdmi-codec case, hdmi_codec_digital_mute() will be used for it,
and each driver has .digital_mute() callback.
hdmi_codec_digital_mute() want to return -ENOTSUPP to follow it.
Mark Brown [Tue, 14 Jul 2020 15:55:17 +0000 (16:55 +0100)]
Merge series "ASoC: sh: remove discriminatory terms" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Renesas SH drivers are using discriminatory terms.
This patch-set removes or changes it as much as possible.
But, because DMA related API function name, it still exists.
I hope all these are removed someday.
v1 -> v2
- use "secondary" instead of "follower"
- care siu/ssi drivers
- tidyup git-log
Link: https://lore.kernel.org/r/87r1tg3swv.wl-kuninori.morimoto.gx@renesas.com
Kuninori Morimoto (5):
ASoC: rsnd: don't use discriminatory terms for function names
ASoC: rsnd: don't use discriminatory terms for comment
ASoC: fsi: don't use discriminatory terms for comment
ASoC: siu: don't use discriminatory terms for parameter
ASoC: ssi: don't use discriminatory terms for debug log
This patch converts Rockchip rk3328 audio codec binding to DT schema.
And adds description about "mclk" clock and fixes some errors in
original example.
Mark Brown [Fri, 10 Jul 2020 15:06:46 +0000 (16:06 +0100)]
Merge series "ASoC: mediatek: mt8183: support DP audio" from Tzung-Bi Shih <tzungbi@google.com>:
This series is a follow up for a long time ago series
(https://patchwork.kernel.org/cover/11204303/).
The old series bound too much on the patches of DRM bridge and ASoC
machine driver. And unluckily, the dependencies
(https://lore.kernel.org/patchwork/patch/1126819/) have not applied.
Revewing the ASoC patches in the old series, I found that they could be
decoupled from the DRM bridge patches. And they are harmless as it is
an optional attribute ("hdmi-codec") in DTS.
This series arranges and rebases the harmless ASoC patches for
mt8183-mt6358-ts3a227-max98357 and mt8183-da7219-max98357.
The 1st and 4th patch add an optional DT property. The 1st patch was
acked long time ago (https://patchwork.kernel.org/patch/11204321/).
The 2nd and 5th patch add DAI link for using hdmi-codec.
The 3rd and 6th patch support the HDMI jack reporting.
Tzung-Bi Shih (6):
ASoC: dt-bindings: mt8183: add a property "mediatek,hdmi-codec"
ASoC: mediatek: mt8183: use hdmi-codec
ASoC: mediatek: mt8183: support HDMI jack reporting
ASoC: dt-bindings: mt8183-da7219: add a property "mediatek,hdmi-codec"
ASoC: mediatek: mt8183-da7219: use hdmi-codec
ASoC: mediatek: mt8183-da7219: support HDMI jack reporting
Mark Brown [Fri, 10 Jul 2020 15:06:45 +0000 (16:06 +0100)]
Merge series "ASoC: Clean-up W=1 build warnings - part2" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
Both Lee Jones and I submitted separate series, this is the second
part of the merged result, for which no feedback was provided.
I picked Lee's patches for rt5659 and ak4458 and added the pxa and
ux500 that I didn't fix. The rest is largely identical between our
respective series, with the exception of the sunxi which I documented
and Lee removed. I don't have any specific preference and will go with
the flow on this.
Changes since v3:
Improved commit subjects from 'fix kernel-doc' as suggested by Lee
Jones. In a couple of cases I just reverted to Lee's patches when the
code was identical.
Added a couple of CC: tags from Lee's patches.
Added Arnaud Pouliquen's Acked-by tag in first patch.
Lee Jones (6):
ASoC: sunxi: sun4i-spdif: Fix misspelling of 'reg_dac_txdata' in
kernel-doc
ASoC: pxa: pxa-ssp: Demote seemingly unintentional kerneldoc header
ASoC: ux500: ux500_msp_i2s: Remove unused variables 'reg_val_DR' and
'reg_val_TSTDR'
ASoC: codecs: rt5659: Remove many unused const variables
ASoC: codecs: tlv320aic26: Demote seemingly unintentional kerneldoc
header
ASoC: codecs: ak4458: Remove set but never checked variable 'ret'
Pierre-Louis Bossart (4):
ASoC: sti: uniperif: fix 'defined by not used' warning
ASoC: qcom: qdsp6: q6asm: Provide documentation for 'codec_profile'
ASoC: sunxi: sun4i-i2s: add missing clock and format arguments in
kernel-doc
ASoC: codecs: rt5631: fix spurious kernel-doc start and missing
arguments
Hans de Goede [Fri, 3 Jul 2020 10:38:40 +0000 (12:38 +0200)]
ASoC: Intel: cht_bsw_rt5672: Improve dai-set-fmt comment in cht_codec_fixup()
As Pierre-Louis Bossart pointed out, saying that the default mode for the
SSP is TDM 4 slot is not entirely accurate.
There really are 2 default modes:
The default mode for the SSP configuration is TDM 4 slot for the
cpu-dai (hard-coded in DSP firmware),
The default mode for the SSP configuration is I2S for the codec-dai
(hard-coded in the 'SSP2-Codec" .dai_fmt masks, so far unused).
This commit updates the comment in cht_codec_fixup() to properly reflect
this.
Shengjiu Wang [Tue, 7 Jul 2020 08:54:25 +0000 (16:54 +0800)]
ASoC: fsl_spdif: Clear the validity bit for TX
In IEC958 spec, "The validity bit is logical "0" if the
information in the main data field is reliable, and it
is logical "1" if it is not".
The default value of "ValCtrl" is zero, which means
"Outgoing Validity always set", then all the data is not
reliable, then some spdif sink device will drop the data.
So set "ValCtrl" to 1, that is to clear "Outgoing Validity"
in default.
Lee Jones [Thu, 9 Jul 2020 16:23:27 +0000 (11:23 -0500)]
ASoC: codecs: ak4458: Remove set but never checked variable 'ret'
Looks as though the result of snd_soc_update_bits() has never been checked.
Fixes the following W=1 kernel build warning(s):
sound/soc/codecs/ak4458.c: In function ‘ak4458_set_dai_mute’:
sound/soc/codecs/ak4458.c:408:16: warning: variable ‘ret’ set but not
used [-Wunused-but-set-variable]
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Cc: Junichi Wakasugi <wakasugi.jb@om.asahi-kasei.co.jp> Cc: Mihai Serban <mihai.serban@nxp.com> Link: https://lore.kernel.org/r/20200709162328.259586-11-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This is the only use of kerneldoc in the sourcefile and no
descriptions are provided.
Fixes the following W=1 kernel build warning(s):
sound/soc/codecs/tlv320aic26.c:138: warning: Function parameter or
member 'dai' not described in 'aic26_mute'
sound/soc/codecs/tlv320aic26.c:138: warning: Function parameter or
member 'mute' not described in 'aic26_mute'
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Cc: Grant Likely <grant.likely@secretlab.ca> Link: https://lore.kernel.org/r/20200709162328.259586-10-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
ASoC: codecs: rt5631: fix spurious kernel-doc start and missing arguments
Fixes the following W=1 kernel build warning(s):
sound/soc/codecs/rt5631.c:72: warning: Function parameter or member
'component' not described in 'rt5631_write_index'
sound/soc/codecs/rt5631.c:72: warning: Function parameter or member
'reg' not described in 'rt5631_write_index'
sound/soc/codecs/rt5631.c:72: warning: Function parameter or member
'value' not described in 'rt5631_write_index'
sound/soc/codecs/rt5631.c:82: warning: Function parameter or member
'component' not described in 'rt5631_read_index'
sound/soc/codecs/rt5631.c:82: warning: Function parameter or member
'reg' not described in 'rt5631_read_index'
sound/soc/codecs/rt5631.c:367: warning: Function parameter or member
'component' not described in 'onebit_depop_power_stage'
sound/soc/codecs/rt5631.c:405: warning: Function parameter or member
'component' not described in 'onebit_depop_mute_stage'
sound/soc/codecs/rt5631.c:443: warning: Function parameter or member
'component' not described in 'depop_seq_power_stage'
sound/soc/codecs/rt5631.c:515: warning: Function parameter or member
'component' not described in 'depop_seq_mute_stage'
Lee Jones [Thu, 9 Jul 2020 16:23:23 +0000 (11:23 -0500)]
ASoC: ux500: ux500_msp_i2s: Remove unused variables 'reg_val_DR' and 'reg_val_TSTDR'
Looks like these have been unchecked since the driver's inception in 2012.
Fixes the following W=1 kernel build warning(s):
sound/soc/ux500/ux500_msp_i2s.c: In function ‘flush_fifo_rx’:
sound/soc/ux500/ux500_msp_i2s.c:398:6: warning: variable ‘reg_val_DR’
set but not used [-Wunused-but-set-variable]
sound/soc/ux500/ux500_msp_i2s.c: In function ‘flush_fifo_tx’:
sound/soc/ux500/ux500_msp_i2s.c:415:6: warning: variable
‘reg_val_TSTDR’ set but not used [-Wunused-but-set-variable]
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: zhong jiang <zhongjiang@huawei.com> Cc: Ola Lilja <ola.o.lilja@stericsson.com> Cc: Roger Nilsson <roger.xr.nilsson@stericsson.com> Cc: Sandeep Kaushik <sandeep.kaushik@st.com> Link: https://lore.kernel.org/r/20200709162328.259586-7-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This is the only use of kerneldoc in the sourcefile and full
descriptions are not provided.
Fixes the following W=1 kernel build warning(s):
sound/soc/pxa/pxa-ssp.c:186: warning: Function parameter or member
'ssp' not described in 'pxa_ssp_set_scr'
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: Daniel Mack <daniel@zonque.org> Cc: Haojian Zhuang <haojian.zhuang@gmail.com> Cc: Robert Jarzmik <robert.jarzmik@free.fr> Link: https://lore.kernel.org/r/20200709162328.259586-6-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Lee Jones [Thu, 9 Jul 2020 16:23:21 +0000 (11:23 -0500)]
ASoC: sunxi: sun4i-spdif: Fix misspelling of 'reg_dac_txdata' in kernel-doc
Property name descriptions need to match exactly.
Fixes the following W=1 kernel build warning(s):
sound/soc/sunxi/sun4i-spdif.c:178: warning: Function parameter or
member 'reg_dac_txdata' not described in 'sun4i_spdif_quirks'
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Chen-Yu Tsai <wens@csie.org> Cc: Philipp Zabel <p.zabel@pengutronix.de> Cc: Andrea Venturi <be17068@iperbole.bo.it> Cc: Marcus Cooper <codekipper@gmail.com> Link: https://lore.kernel.org/r/20200709162328.259586-5-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
ASoC: sunxi: sun4i-i2s: add missing clock and format arguments in kernel-doc
Fix W=1 warnings - missing fields in description
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or
member 'bclk_dividers' not described in 'sun4i_i2s_quirks'
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or member
'num_bclk_dividers' not described in 'sun4i_i2s_quirks'
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or member
'mclk_dividers' not described in 'sun4i_i2s_quirks'
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or member
'num_mclk_dividers' not described in 'sun4i_i2s_quirks'
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or member
'get_bclk_parent_rate' not described in 'sun4i_i2s_quirks'
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or member
'get_sr' not described in 'sun4i_i2s_quirks'
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or member
'get_wss' not described in 'sun4i_i2s_quirks'
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or member
'set_chan_cfg' not described in 'sun4i_i2s_quirks'
sound/soc/sunxi/sun4i-i2s.c:160: warning: Function parameter or member
'set_fmt' not described in 'sun4i_i2s_quirks'
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Chen-Yu Tsai <wens@csie.org> Cc: Philipp Zabel <p.zabel@pengutronix.de> Cc: Andrea Venturi <be17068@iperbole.bo.it> Link: https://lore.kernel.org/r/20200709162328.259586-4-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
ASoC: sti: uniperif: fix 'defined by not used' warning
Fix W=1 warning. The table uni_tdm_hw is declared in a header included
by multiple C file. This isn't really a good practice but for now
using __maybe_unused makes the following warning go away.
sound/soc/sti/sti_uniperif.c:12:
sound/soc/sti/uniperif.h:1351:38: warning: ‘uni_tdm_hw’ defined but
not used [-Wunused-const-variable=]
1351 | static const struct snd_pcm_hardware uni_tdm_hw = {
| ^~~~~~~~~~
Mark Brown [Thu, 9 Jul 2020 21:20:34 +0000 (22:20 +0100)]
Merge series "ASoC: codecs: add MAX98373 Soundwire driver" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
V3:
Rebased on top of two fixes already merged from the v2 patchset - no
code changes
Added explicit commit reference in last commit message
V2 with a number of cleanups:
split between I2C and SoundWire modes, as done for rt5682, and updated
Kconfigs.
removed useless initializations common to both modes
removed idle_bias on
fixed register classified as volatile in error
fixed SPDX comments
Pierre-Louis Bossart (2):
ASoC: codecs: max98373: split I2C and common parts
ASoC: Intel: sof-sdw: add MAX98373 I2C dependencies
Ryan Lee (1):
ASoC: codecs: max98373: add SoundWire support
randerwang (1):
ASoC: Intel: sdw_max98373: add card_late_probe support
Mark Brown [Thu, 9 Jul 2020 21:20:32 +0000 (22:20 +0100)]
Merge series "ASoC: Clean-up W=1 build warnings - part1" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
Both Lee Jones and I submitted separate series, this is the first part
of the merged result, which includes all previously reviewed patches
or suggested changes along with trivial ones for CONFIG_ACPI.
Lee Jones (2):
ASoC: codecs: jz4770: Remove defined but never used variable
'mic_boost_tlv'
ASoC: ti: omap-mcbsp-st: Remove set, but unused variable 'w'
Pierre-Louis Bossart (11):
ASoC: atmel: fix kernel-doc
ASoC: samsung: spdif: fix kernel-doc
ASoC: samsung: pcm: fix kernel-doc
ASoC: tegra: tegra20_das: remove always-true comparison
ASoC: uniphier: aio-core: fix kernel-doc
ASoC: codecs: da7210: fix kernel-doc
ASoC: codecs: da7219: fix 'defined but not used' warning
ASoC: codecs: cros_ec_codec: fix 'defined but not used' warning
ASoC: codecs: es8316: fix 'defined but not used' warning
ASoC: codecs: max98390: fix 'defined but not used' warning
ASoC: codecs: rt*: fix 'defined but not used' warning
The CPU and the codec both are represented now as components, so for
PDMIC we are registering two componenets with the same name. Since
there is no actual codec, we will merge the codec component into the
CPU one and use a dummy codec instead, for the DAI link.
As a bonus, debugfs will no longer report an error when will try to
create entries for both componenets with the same name.
The CPU and the codec both are represented now as components, so for
CLASS-D we are registering two componenets with the same name. Since
there is no actual codec, we will merge the codec component into the
CPU one and use a dummy codec instead, for the DAI link.
As a bonus, debugfs will no longer report an error when will try to
create entries for both componenets with the same name.
ASoC: codecs: es8316: fix 'defined but not used' warning
Fix W=1 warning
sound/soc/codecs/es8316.c:842:36: warning: 'es8316_acpi_match' defined
but not used [-Wunused-const-variable=]
842 | static const struct acpi_device_id es8316_acpi_match[] = {
| ^~~~~~~~~~~~~~~~~
ASoC: codecs: cros_ec_codec: fix 'defined but not used' warning
fix W=1 warning
sound/soc/codecs/cros_ec_codec.c:1056:36: warning:
'cros_ec_codec_acpi_id' defined but not used
[-Wunused-const-variable=]
1056 | static const struct acpi_device_id cros_ec_codec_acpi_id[] = {
| ^~~~~~~~~~~~~~~~~~~~~
Lee Jones [Tue, 7 Jul 2020 19:06:08 +0000 (14:06 -0500)]
ASoC: ti: omap-mcbsp-st: Remove set, but unused variable 'w'
Looks like 'w' has remained unchecked since the driver's inception.
Fixes the following W=1 kernel build warning(s):
sound/soc/ti/omap-mcbsp-st.c: In function ‘omap_mcbsp_st_chgain’:
sound/soc/ti/omap-mcbsp-st.c:145:6: warning: variable ‘w’ set but not used [-Wunused-but-set-variable]
Peter suggested that the whole read can be removed, so that's
been done too.
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc: Jarkko Nikula <jarkko.nikula@bitmer.com> Cc: Samuel Ortiz <samuel.ortiz@nokia.com> Cc: linux-omap@vger.kernel.org Link: https://lore.kernel.org/r/20200707190612.97799-10-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Lee Jones [Tue, 7 Jul 2020 19:06:07 +0000 (14:06 -0500)]
ASoC: codecs: jz4770: Remove defined but never used variable 'mic_boost_tlv'
Fixes the following W=1 kernel build warning(s):
In file included from include/sound/tlv.h:10,
from sound/soc/codecs/jz4770.c:19:
sound/soc/codecs/jz4770.c:306:35: warning: ‘mic_boost_tlv’ defined but not used [-Wunused-const-variable=]
306 | static const DECLARE_TLV_DB_SCALE(mic_boost_tlv, 0, 400, 0);
| ^~~~~~~~~~~~~
include/uapi/sound/tlv.h:64:15: note: in definition of macro ‘SNDRV_CTL_TLVD_DECLARE_DB_SCALE’
64 | unsigned int name[] = { | ^~~~
sound/soc/codecs/jz4770.c:306:14: note: in expansion of macro ‘DECLARE_TLV_DB_SCALE’
306 | static const DECLARE_TLV_DB_SCALE(mic_boost_tlv, 0, 400, 0);
| ^~~~~~~~~~~~~~~~~~~~
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Paul Cercueil <paul@crapouillou.net> Cc: ter Huurne <maarten@treewalker.org> Link: https://lore.kernel.org/r/20200707190612.97799-9-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
ASoC: codecs: da7219: fix 'defined but not used' warning
fix W=1 warning
sound/soc/codecs/da7219.c:1711:36: warning: 'da7219_acpi_match'
defined but not used [-Wunused-const-variable=]
1711 | static const struct acpi_device_id da7219_acpi_match[] = {
| ^~~~~~~~~~~~~~~~~
Ryan Lee [Wed, 8 Jul 2020 20:32:13 +0000 (15:32 -0500)]
ASoC: codecs: max98373: add SoundWire support
Add SoundWire specific parts and extend common ones already split from
I2C.
Signed-off-by: Ryan Lee <ryans.lee@maximintegrated.com> Signed-off-by: Naveen Manohar <naveen.m@intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20200708203215.231776-3-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
ASoC: codecs: max98373: split I2C and common parts
To prepare support for SoundWire, let's first split the I2C and common
parts. No new functionality, just indents and formatting to make
checkpatch happy.
Mark Brown [Wed, 8 Jul 2020 15:50:36 +0000 (16:50 +0100)]
Merge series "ASoC: topology: fix error handling flow" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
While experimenting and introducing errors in Baytrail topology files
until I got them right, I encountered multiple kernel oopses and
memory leaks. This is a first batch to harden the code, but we should
probably think of a tool to fuzz the topology...
Pierre-Louis Bossart (5):
ASoC: topology: fix kernel oops on route addition error
ASoC: topology: fix tlvs in error handling for widget_dmixer
ASoC: topology: use break on errors, not continue
ASoC: topology: factor kfree(se) in error handling
ASoC: topology: add more logs when topology load fails.
Mark Brown [Wed, 8 Jul 2020 15:50:34 +0000 (16:50 +0100)]
Merge series "ASoC: qdsp6: add gapless compressed audio support" from Srinivas Kandagatla <srinivas.kandagatla@linaro.org>:
This patchset adds gapless compressed audio support on q6asm.
Gapless on q6asm is implemented using 2 streams in a single asm session.
First few patches are enhacements done to q6asm interface to allow
stream id per each command, gapless flags and silence meta data.
Along with this there are few trivial changes which I thought are necessary!
Last patch implements copy callback to allow finer control over buffer offsets,
specially in partial drain cases.
This patchset is tested on RB3 aka DB845c platform.
Thanks,
srini
Srinivas Kandagatla (11):
ASoC: q6asm: add command opcode to timeout error report
ASoC: q6asm: rename misleading session id variable
ASoC: q6asm: make commands specific to streams
ASoC: q6asm: use flags directly from asm-dai
ASoC: q6asm: add length to write command token
ASoC: q6asm: add support to remove intial and trailing silence
ASoC: q6asm: add support to gapless flag in asm open
ASoC: q6asm-dai: add next track metadata support
ASoC: qdsp6: use dev_err instead of pr_err
ASoC: qdsp6-dai: add gapless support
ASoC: q6asm-dai: add support to copy callback
ASoC: mediatek: mt8183: support machine driver with rt1015
Supports machine driver with rt1015 ("mt8183-mt6358-ts3a227-rt1015").
Embeds in existing mt8183-mt6358-ts3a227-max98357.c because they share
most of the code.
ASoC: topology: add more logs when topology load fails.
Add more dev_err() logs to help trace topology load failures, since we
have multiple error causes (e.g. invalid header or header that could
not be loaded).
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@linux.intel.com> Link: https://lore.kernel.org/r/20200707203749.113883-6-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Since the beginning of the topology, the code continues to the next
object even when an error is detected.
The topology should be handled with an all-or-nothing design, loading
a partially valid topology is a sure way to get bug reports that are
difficult to deal with.
Changing the behavior may break previous solutions and expose problems
in topology files delivered in the past, so it's probably not wise to
add this patch to stable branches without revalidation.
ASoC: topology: fix kernel oops on route addition error
When errors happens while loading graph components, the kernel oopses
while trying to remove all topology components. This can be
root-caused to a list pointing to memory that was already freed on
error.
remove_route() is already called on errors and will perform the
required cleanups so there's no need to free the route memory in
soc_tplg_dapm_graph_elems_load() if the route was added to the
list. We do however want to free the routes allocated but not added to
the list.
Fixes: 7df04ea7a31ea ('ASoC: topology: modify dapm route loading routine and add dapm route unloading') Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20200707203749.113883-2-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Maxime Ripard [Tue, 7 Jul 2020 07:42:37 +0000 (09:42 +0200)]
ASoC: core: Remove only the registered component in devm functions
The ASoC devm_ functions that register a component
(devm_snd_soc_register_component and devm_snd_dmaengine_pcm_register) will
clean their component by running snd_soc_unregister_component.
snd_soc_unregister_component will then remove all the components for the
device that was used to register the component in the first place.
However, some drivers register several components (such as a DAI and a
dmaengine PCM) on the same device, and if the dmaengine PCM is registered
first, then the DAI will be cleaned up first and
snd_dmaengine_pcm_unregister will be called next.
snd_dmaengine_pcm_unregister will then lookup the dmaengine PCM component
on the device, and if there's one unregister that component and release its
dmaengine channels. That doesn't happen in practice though since the first
call to snd_soc_unregister_component removed all the components, so we
never get the chance to release the dmaengine channels.
In order to fix this, instead of removing all the components for a given
device, we can simply remove the component that was registered in the first
place. We should have the same number of component registration than we
have components, so it should work just fine.
Mark Brown [Fri, 3 Jul 2020 16:33:49 +0000 (17:33 +0100)]
Merge series "ASoC: rt5670: 2 small cleanups" from Hans de Goede <hdegoede@redhat.com>:
Hi All,
Here is in essence a resend of my 2 cleanup patches for the rt5670 ASoC
codec code, rebased on top of broonie/sound/for-5.9 with
broonie/sound/for-5.8 merged in.
Regards,
Hans
p.s.
I'll also send out the patch improving the comment in
cht_bsw_rt5672.c cht_codec_fixup() which Pierre-Louis requested soon.