Takashi Iwai [Mon, 3 Aug 2020 14:18:47 +0000 (16:18 +0200)]
ASoC: tegra: tegra210_admaif: Fix compile warning with CONFIG_PM=n
Fix trivial compile warnings wrt unused functions by adding
__maybe_unused prefix:
sound/soc/tegra/tegra210_admaif.c:232:12: warning: 'tegra_admaif_runtime_resume' defined but not used [-Wunused-function]
sound/soc/tegra/tegra210_ahub.c:567:12: warning: 'tegra_ahub_runtime_suspend' defined but not used [-Wunused-function]
Takashi Iwai [Mon, 3 Aug 2020 14:18:46 +0000 (16:18 +0200)]
ASoC: tegra: tegra186_dspk: Fix compile warning with CONFIG_PM=n
Fix trivial compile warnings wrt unused functions by adding
__maybe_unused prefix:
sound/soc/tegra/tegra186_dspk.c:74:12: warning: 'tegra186_dspk_runtime_suspend' defined but not used [-Wunused-function]
sound/soc/tegra/tegra186_dspk.c:86:12: warning: 'tegra186_dspk_runtime_resume' defined but not used [-Wunused-function]
Hui Wang [Thu, 30 Jul 2020 12:31:38 +0000 (20:31 +0800)]
ASoC: amd: renoir: restore two more registers during resume
Recently we found an issue about the suspend and resume. If dmic is
recording the sound, and we run suspend and resume, after the resume,
the dmic can't work well anymore. we need to close the app and reopen
the app, then the dmic could record the sound again.
For example, we run "arecord -D hw:CARD=acp,DEV=0 -f S32_LE -c 2
-r 48000 test.wav", then suspend and resume, after the system resume
back, we speak to the dmic. then stop the arecord, use aplay to play
the test.wav, we could hear the sound recorded after resume is weird,
it is not what we speak to the dmic.
I found two registers are set in the dai_hw_params(), if the two
registers are set during the resume, this issue could be fixed.
Move the code of the dai_hw_params() into the pdm_dai_trigger(), then
these two registers will be set during resume since pdm_dai_trigger()
will be called during resume. And delete the empty function
dai_hw_params().
Fabio Estevam [Mon, 3 Aug 2020 11:52:33 +0000 (08:52 -0300)]
ASoC: wm8962: Do not remove ADDITIONAL_CONTROL_4 from readable register list
Removing ADDITIONAL_CONTROL_4 from the list of readable registers cause
audio distortion.
This change was sent as a comment below the --- line when submitting
commit 3f5fc9f39696 ("ASoC: wm8962: Do not access WM8962_GPIO_BASE"), so
it was not supposed to get merged.
Keep WM8962_ADDITIONAL_CONTROL_4 inside wm8962_readable_register() to
fix the regression.
Fixes: 3f5fc9f39696 ("ASoC: wm8962: Do not access WM8962_GPIO_BASE") Reported-by: Shengjiu Wang <shengjiu.wang@gmail.com> Signed-off-by: Fabio Estevam <festevam@gmail.com> Link: https://lore.kernel.org/r/20200803115233.19034-1-festevam@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
Shengjiu Wang [Mon, 3 Aug 2020 02:13:31 +0000 (10:13 +0800)]
ASoC: fsl-asoc-card: Remove fsl_asoc_card_set_bias_level function
With this case:
aplay -Dhw:x 16khz.wav 24khz.wav
There is sound distortion for 24khz.wav. The reason is that setting
PLL of WM8962 with set_bias_level function, the bias level is not
changed when 24khz.wav is played, then the PLL won't be reset, the
clock is not correct, so distortion happens.
The resolution of this issue is to remove fsl_asoc_card_set_bias_level.
Move PLL configuration to hw_params and hw_free.
After removing fsl_asoc_card_set_bias_level, also test WM8960 case,
it can work.
Fixes: a3a4ce5bbb01 ("ASoC: fsl: Add Freescale Generic ASoC Sound Card with ASRC support") Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Acked-by: Nicolin Chen <nicoleotsuka@gmail.com> Link: https://lore.kernel.org/r/1596420811-16690-1-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
Mark Brown [Fri, 31 Jul 2020 18:36:00 +0000 (19:36 +0100)]
Merge series "ASoC: core: Two step component registration" from Cezary Rojewski <cezary.rojewski@intel.com>:
Provide a mechanism for true two-step component registration. This
mimics device registration flow where initialization is the first step
while addition goes as second in line. Drivers may choose to modify
component's fields before registering component to ASoC subsystem via
snd_soc_add_component.
Patchset achieves status quo - behavior of snd_soc_register_component
remains unchanged.
Cezary Rojewski (3):
ASoC: core: Relocate and expose snd_soc_component_initialize
ASoC: core: Simplify snd_soc_component_initialize declaration
ASoC: core: Two step component registration
Modify snd_soc_add_component so it calls snd_soc_component_initialize
no longer and thus providing true two-step registration. Drivers may
choose to change component's fields before actually adding it to ASoC
subsystem.
Move 'name' field initialization responsibility back to
snd_soc_component_initialize to prepare snd_soc_add_component function
for being called separatelly as a second registration step.
Enabling a whole subsystem from a single driver 'select' is frowned
upon and won't be accepted in new drivers, that need to use 'depends on'
instead. Existing selection of DMADEVICES will then cause circular
dependencies. Replace them with a dependency.
Mark Brown [Thu, 30 Jul 2020 21:54:40 +0000 (22:54 +0100)]
Merge series "drop unnecessary list_empty" from Julia Lawall <Julia.Lawall@inria.fr>:
The various list iterators are able to handle an empty list.
The only effect of avoiding the loop is not initializing some
index variables.
Drop list_empty tests in cases where these variables are not
used.
The semantic patch that makes these changes is as follows:
(http://coccinelle.lip6.fr/)
ASoC: rk3399_gru_sound: Add DAPM pins, kcontrols for jack detection
PulseAudio (and perhaps other userspace utilities) can not detect any
jack for rk3399_gru_sound as the driver doesn't expose related Jack
kcontrols.
This patch adds two DAPM pins to the headset jack, where the
snd_soc_card_jack_new() call automatically creates "Headphones Jack" and
"Headset Mic Jack" kcontrols from them.
With an appropriate ALSA UCM config specifying JackControl fields for
the "Headphones" and "Headset" (mic) devices, PulseAudio can detect
plug/unplug events for both of them after this patch.
According to the WM8962 datasheet, there is no register at address 0x200.
WM8962_GPIO_BASE is just a base address for the GPIO registers and not a
real register, so remove it from wm8962_readable_register().
Also, Register 515 (WM8962_GPIO_BASE + 3) does not exist, so skip
its access.
This fixes the following errors:
wm8962 0-001a: ASoC: error at soc_component_read_no_lock on wm8962.0-001a: -16
wm8962 0-001a: ASoC: error at soc_component_read_no_lock on wm8962.0-001a: -16
Julia Lawall [Sun, 26 Jul 2020 10:58:26 +0000 (12:58 +0200)]
ASoC: Intel: drop unnecessary list_empty
list_for_each_entry_safe is able to handle an empty list.
The only effect of avoiding the loop is not initializing the
index variable.
Drop list_empty tests in cases where these variables are not
used.
Note that list_for_each_entry_safe is defined in terms of
list_first_entry, which indicates that it should not be used on an
empty list. But in list_for_each_entry_safe, the element obtained by
list_first_entry is not really accessed, only the address of its
list_head field is compared to the address of the list head, so the
list_first_entry is safe.
The semantic patch that makes this change is as follows (with another
variant for the no brace case): (http://coccinelle.lip6.fr/)
<smpl>
@@
expression x,e;
iterator name list_for_each_entry_safe;
statement S;
identifier i,j;
@@
-if (!(list_empty(x))) {
list_for_each_entry_safe(i,j,x,...) S
- }
... when != i
when != j
(
i = e;
|
? j = e;
)
</smpl>
Mark Brown [Thu, 30 Jul 2020 20:00:36 +0000 (21:00 +0100)]
Merge series "ASoC: meson: tdm fixes" from Jerome Brunet <jbrunet@baylibre.com>:
This patcheset is collection of fixes for the TDM input and output the
axg audio architecture. Its fixes:
- slave mode format setting
- g12 and sm1 skew offset
- tdm clock inversion
- standard daifmt props names which don't require a specific prefix
Simon Shields [Tue, 28 Jul 2020 13:11:10 +0000 (15:11 +0200)]
ASoC: samsung: Add sound support for Midas boards
This patch adds support for voice and BT calls, along with standard
audio output via the speaker, earpiece, headphone jack, HDMI, and
any accessories compatible with Midas boards. This patch also supports
headphone/headset detection and headsets with inline buttons.
[m.szyprowski: adaptation to v5.1+ kernels (DAI links initialization)]
[s.nawrocki: removal of the clk API calls for CODEC MCLK, the jack data
structure moved to struct midas_priv, coding style and typo fixes,
conversion to new cpu/codec/dai-node binding]
Signed-off-by: Simon Shields <simon@lineageos.org> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Acked-by: Krzysztof Kozlowski <krzk@kernel.org> Link: https://lore.kernel.org/r/20200728131111.14334-2-s.nawrocki@samsung.com Signed-off-by: Mark Brown <broonie@kernel.org>
The header was updated to align with the data sheet to start the GPO_CFG
at GPO_CFG0. The code was not updated to the change and therefore the
GPO_CFG0 register was not written to.
All channels are enabled at boot up, this patch ensures that all
channels are disabled at boot and whenever the function is called.
Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> Reviewed-by: Sia Jee Heng <jee.heng.sia@intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200730055319.1522-3-michael.wei.hong.sit@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Enable 8kHz audio support for Intel Keem Bay platform.
Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> Reviewed-by: Sia Jee Heng <jee.heng.sia@intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200730055319.1522-2-michael.wei.hong.sit@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
After carefully checking, it appears that both tdmout and tdmin require the
rising edge of the sclk they get to be synchronized with the frame sync
event (which should be a rising edge of lrclk).
TDMIN was improperly set before this patch. Remove the sclk_invert quirk
which is no longer needed and fix the sclk phase.
After carefully checking the result provided by the TDMIN on the g12a and
sm1 SoC families, the TDMIN skew offset appears to be 3 instead of 2 on the
axg.
Dan Murphy [Tue, 28 Jul 2020 16:08:33 +0000 (11:08 -0500)]
ASoC: tlv320adcx140: Add GPO configuration and drive output config
Add General Purpose Output (GPO) configuration and driver output
configuration. The GPOs can be configured as a GPO, IRQ, SDOUT or a
PDMCLK output. In addition the output drive can be configured with
various configurations.
Dan Murphy [Tue, 28 Jul 2020 16:08:32 +0000 (11:08 -0500)]
dt-bindings: tlv320adcx140: Add GPO config and drive config
Add properties for configuring the General Purpose Outputs (GPO). The
GPOs. There are 2 settings for each GPO, configuration and the output drive
type.
Mark Brown [Tue, 28 Jul 2020 15:43:36 +0000 (16:43 +0100)]
Merge series "SOF Fixes for S0iX suspend/resume sequence" from Ranjani Sridharan <ranjani.sridharan@linux.intel.com>:
This set of patches is required for facilitating system S0ix
entry when the DSP is in D0I3. This first patch adds the missing
CORB/RIRB DMA stop and restart to the suspend/resume sequence along
with powering up/down the links. The second patch ensures that the
FW traces are disabled when the system enters S0ix with the DSP in D0I3.
Marcin Rajwa (2):
ASoC: SOF: Intel: fix the suspend procedure to support s0ix entry
ASoC: SOF: Intel: disable traces when switching to S0Ix D0I3
Marcin Rajwa [Mon, 27 Jul 2020 18:36:13 +0000 (11:36 -0700)]
ASoC: SOF: Intel: disable traces when switching to S0Ix D0I3
We should always disable DMA trace on S0Ix. When staying at S0-D0I3,
we should enable DMA trace while both DMA Trace debug is enabled and
hda_enable_trace_D0I3_S0 is set. This commit corrects the existed
logic errors about that.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com> Signed-off-by: Keyon Jie <yang.jie@linux.intel.com> Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20200727183613.1419005-3-ranjani.sridharan@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Marcin Rajwa [Mon, 27 Jul 2020 18:36:12 +0000 (11:36 -0700)]
ASoC: SOF: Intel: fix the suspend procedure to support s0ix entry
This patch fixes the suspend & resume procedure to allow entry into the
low power states with some streams being active as a wake source - wake on
voice is a perfect example. The current implementation does not stop
the CORB/RIRB DMA and does not power down the HDA links. With firmware's
help, the platform has been able to still enter s0ix state on older
platforms, but the sequence is still incorrect, and the additional
driver actions are needed to ensure correct s0ix behaviour.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com> Signed-off-by: Keyon Jie <yang.jie@linux.intel.com> Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20200727183613.1419005-2-ranjani.sridharan@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Mark Brown [Mon, 27 Jul 2020 13:21:10 +0000 (14:21 +0100)]
Merge series "ASoC: intel: use asoc_substream_to_rtd()" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Hi Mark
I have posted "ASoC: add asoc_substream_to_rtd() macro"
patch-set to ALSA SoC ML (= see Link), and then Pierre-Louis
wanted that Intel patch was separated for boards.
The patches which are not for Intel were already accepted.
This is for Intel, and Intel boards.
Right now the direction of a DAI has to be specified as a literal
number in the device tree, e.g.:
dai@0 {
reg = <0>;
direction = <2>;
};
but this does not make it immediately clear that this is a
playback/RX-only DAI.
Actually, q6asm-dai.c has useful defines for this. Move them to the
dt-bindings header to allow using them in the dts(i) files.
The example above then becomes:
dai@0 {
reg = <0>;
direction = <Q6ASM_DAI_RX>;
};
which is immediately recognizable as playback/RX-only DAI.
Signed-off-by: Stephan Gerhold <stephan@gerhold.net> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20200727082502.2341-1-stephan@gerhold.net Signed-off-by: Mark Brown <broonie@kernel.org>
PME_EN state needs to restored to the value set by fmw.
For the devices which are not using I2S wake event which gets
enabled by PME_EN bit, keeping PME_EN enabled burns considerable amount
of power as it blocks low power state.
For the devices using I2S wake event, PME_EN gets enabled in fmw and the
state should be maintained after ACP Power On.
ASoC: dapm: don't call pm_runtime_* on card device
runtime_usage of sound card has been observed to grow without bound.
For example:
$ cat /sys/devices/platform/sound/power/runtime_usage
46
$ sox -n -t s16 -r 48000 -c 2 - synth 1 sine 440 vol 0.1 | \
aplay -q -D hw:0,0 -f S16_LE -r 48000 -c 2
$ cat /sys/devices/platform/sound/power/runtime_usage
52
Commit ec07032d8c28 ("ASoC: dapm: Don't force card bias level to be
updated") stops to force update bias_level on card. If card doesn't
provide set_bias_level callback, the snd_soc_dapm_set_bias_level()
is equivalent to NOP for card device.
As a result, dapm_pre_sequence_async() doesn't change the bias_level of
card device correctly. Thus, pm_runtime_get_sync() would be called in
dapm_pre_sequence_async() without symmetric pm_runtime_put() in
dapm_post_sequence_async().
Mark Brown [Fri, 24 Jul 2020 14:22:35 +0000 (15:22 +0100)]
Merge series "ASoC: qcom: Use qcom_snd_parse_of() for apq8016_sbc" from Stephan Gerhold <stephan@gerhold.net>:
At the moment we have two separate functions to parse the sound card
properties from the device tree: qcom_snd_parse_of() for DPCM and
apq8016_sbc_parse_of() without DPCM. These functions are almost identical
except for a few minor differences.
This patch set extends qcom_snd_parse_of() to handle links without DPCM,
so that we can use one common function for all (qcom) machine drivers.
Stephan Gerhold (7):
ASoC: qcom: Use devm for resource management
ASoC: qcom: common: Use snd_soc_dai_link_set_capabilities()
ASoC: q6afe: Remove unused q6afe_is_rx_port() function
ASoC: qcom: common: Support parsing links without DPCM
ASoC: qcom: common: Parse properties with "qcom," prefix
ASoC: qcom: apq8016_sbc: Use qcom_snd_parse_of()
ASoC: qcom: common: Avoid printing errors for -EPROBE_DEFER
Steve Lee [Fri, 24 Jul 2020 06:01:49 +0000 (15:01 +0900)]
ASoC: max98390: Update dsm init sequence and condition.
Modify dsm_init sequence and dsm param bin check condition.
- Move dsm_init() to after amp init setting to
make sure dsm init is last setting.
- dsm param bin check condition changed for extended register setting.
With commit 8fee73059876 ("ASoC: soc-component: add soc_component_err()")
every error different for ENOTSUPP or EPROBE_DEFER will log an error.
However, as explained in snd_soc_get_dai_name(), this callback may error
to indicate that the DAI is not matched by the component tested. If the
device provides other components, those may still match. Logging an error
in this case is misleading.
Don't use soc_component_ret() in snd_soc_component_of_xlate_dai_name()
to avoid spamming the log.
Fixes: 8fee73059876 ("ASoC: soc-component: add soc_component_err()") Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/20200723142020.1338740-1-jbrunet@baylibre.com Signed-off-by: Mark Brown <broonie@kernel.org>
Stephan Gerhold [Thu, 23 Jul 2020 18:39:04 +0000 (20:39 +0200)]
ASoC: qcom: common: Avoid printing errors for -EPROBE_DEFER
qcom_snd_parse_of() tends to produce lots of error messages during bootup:
MultiMedia1: error getting cpu dai name
This happens because the DAIs are not probed until the ADSP remoteproc
has booted, which takes a while. Until it is ready, snd_soc_of_get_dai_name()
returns -EDEFER_PROBE to retry probing later. This is perfectly normal,
so cleanup the kernel log a bit by not printing in case of -EPROBE_DEFER.
Signed-off-by: Stephan Gerhold <stephan@gerhold.net> Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20200723183904.321040-8-stephan@gerhold.net Signed-off-by: Mark Brown <broonie@kernel.org>
Stephan Gerhold [Thu, 23 Jul 2020 18:39:03 +0000 (20:39 +0200)]
ASoC: qcom: apq8016_sbc: Use qcom_snd_parse_of()
Now that we have updated qcom_snd_parse_of() to handle the device
tree bindings used for apq8016_sbc, update the apq8016_sbc driver
to use the common function and remove the duplicated code.
Signed-off-by: Stephan Gerhold <stephan@gerhold.net> Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20200723183904.321040-7-stephan@gerhold.net Signed-off-by: Mark Brown <broonie@kernel.org>
Stephan Gerhold [Thu, 23 Jul 2020 18:39:02 +0000 (20:39 +0200)]
ASoC: qcom: common: Parse properties with "qcom," prefix
The apq8016_sbc device tree binding uses a "qcom," vendor prefix
for all device tree properties, while qcom_snd_parse_of() uses the
same properties without a prefix.
In the future it would be nice to make this consistent, however,
for backwards compatibility we need to parse both names to allow
apq8016_sbc to use the common qcom_snd_parse_of() function.
Signed-off-by: Stephan Gerhold <stephan@gerhold.net> Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20200723183904.321040-6-stephan@gerhold.net Signed-off-by: Mark Brown <broonie@kernel.org>
Stephan Gerhold [Thu, 23 Jul 2020 18:39:01 +0000 (20:39 +0200)]
ASoC: qcom: common: Support parsing links without DPCM
So far qcom_snd_parse_of() was only used to parse the device tree
for boards using the QDSP6 driver together with DPCM. apq8016_sbc
uses an almost identical version (apq8016_sbc_parse_of()) which
parses links without DPCM.
Given the similarity of the two functions it is useful to combine
these two. To allow using qcom_snd_parse_of() in apq8016_sbc we
need to support parsing links without DPCM as well.
This is pretty simple: A DPCM link in the device tree is defined using:
Stephan Gerhold [Thu, 23 Jul 2020 18:39:00 +0000 (20:39 +0200)]
ASoC: q6afe: Remove unused q6afe_is_rx_port() function
This reverts commit 18d3429ec9d ("ASoc: q6afe: add support to get
port direction"), since the function is not needed anymore.
q6afe-dai already exposes the possible directions for a DAI through
the DAI capabilities (playback/capture-only DAI). Now we use
snd_soc_dai_link_set_capabilities() to infer the information
directly from the DAI capabilities.
Signed-off-by: Stephan Gerhold <stephan@gerhold.net> Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20200723183904.321040-4-stephan@gerhold.net Signed-off-by: Mark Brown <broonie@kernel.org>
Stephan Gerhold [Thu, 23 Jul 2020 18:38:59 +0000 (20:38 +0200)]
ASoC: qcom: common: Use snd_soc_dai_link_set_capabilities()
Commit 4cfcdc920c4d ("ASoC: qcom: common: set correct directions for dailinks")
introduced a call to q6afe_is_rx_port() to set the dpcm_playback/capture
parameters correctly. This is necessary because those parameters are now
validated to match the capabilities of the DAIs. [1]
The disadvantage of introducing the call to q6afe_is_rx_port() is that
it makes the qcom_snd_parse_of() helper dependent on the QDSP6 driver.
When the ADSP is bypassed (e.g. in apq8016-sbc) QDSP6 is not used.
There is a generic solution for this now: The correct direction for the links
is already defined by the DAI capabilities (e.g. rx ports only support playback).
Commit bb39a70c07a9 ("ASoC: soc-dai: set dai_link dpcm_ flags with a helper")
introduced the snd_soc_dai_link_set_capabilities() function that we can use
to set dpcm_playback/dpcm_capture according to the capabilities of the DAIs.
Use that for both FE/BE DAI links to avoid the dependency on the QDSP6 driver.
Stephan Gerhold [Thu, 23 Jul 2020 18:38:58 +0000 (20:38 +0200)]
ASoC: qcom: Use devm for resource management
Simplify the machine drivers for newer SoCs a bit by using the
devm_* function calls that automatically release the resources
when the driver is removed or when probing fails.
Signed-off-by: Stephan Gerhold <stephan@gerhold.net> Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20200723183904.321040-2-stephan@gerhold.net Signed-off-by: Mark Brown <broonie@kernel.org>
But, both are not understandable for reader.
This patch adds new asoc_substream_to_rtd() which is easy to understand.
These are not important, but for readable code.
Kuninori Morimoto (29):
ASoC: soc-xxx: add asoc_substream_to_rtd()
ASoC: ux500: use asoc_substream_to_rtd()
ASoC: ti: use asoc_substream_to_rtd()
ASoC: tegra: use asoc_substream_to_rtd()
ASoC: sunxi: use asoc_substream_to_rtd()
ASoC: stm: use asoc_substream_to_rtd()
ASoC: sof: use asoc_substream_to_rtd()
ASoC: sh: use asoc_substream_to_rtd()
ASoC: samsung: use asoc_substream_to_rtd()
ASoC: pxa: use asoc_substream_to_rtd()
ASoC: cirrus: use asoc_substream_to_rtd()
ASoC: rockchip: use asoc_substream_to_rtd()
ASoC: amd: use asoc_substream_to_rtd()
ASoC: fsl: use asoc_substream_to_rtd()
ASoC: mediatek: use asoc_substream_to_rtd()
ASoC: atmel: use asoc_substream_to_rtd()
ASoC: qcom: use asoc_substream_to_rtd()
ASoC: dwc: use asoc_substream_to_rtd()
ASoC: intel: use asoc_substream_to_rtd()
ASoC: meson: use asoc_substream_to_rtd()
ASoC: au1x: use asoc_substream_to_rtd()
ASoC: bcm: use asoc_substream_to_rtd()
ASoC: codecs: use asoc_substream_to_rtd()
ASoC: generic: use asoc_substream_to_rtd()
ASoC: sprd: use asoc_substream_to_rtd()
ASoC: kirkwood: use asoc_substream_to_rtd()
ASoC: xtensa: use asoc_substream_to_rtd()
ASoC: mxs: use asoc_substream_to_rtd()
ASoC: uniphier: use asoc_substream_to_rtd()
Shengjiu Wang [Thu, 23 Jul 2020 04:00:08 +0000 (12:00 +0800)]
ASoC: fsl_esai: add IRQF_SHARED for devm_request_irq
ESAI interfaces may share same interrupt line with EDMA on
some platforms (e.g. i.MX8QXP, i.MX8QM).
Add IRQF_SHARED flag to allow sharing the irq among several
devices
Randy Dunlap [Mon, 20 Jul 2020 18:32:21 +0000 (11:32 -0700)]
ASoC: ti: fix SND_SOC_J721E_EVM warnings & errors
SND_SOC_J721E_EVM should not select SND_SOC_PCM3168A_I2C when I2C
is not enabled. That causes build errors, so make this driver's
symbol depend on I2C.
../sound/soc/codecs/pcm3168a-i2c.c:59:1: warning: data definition has no type or storage class
module_i2c_driver(pcm3168a_i2c_driver);
^~~~~~~~~~~~~~~~~
../sound/soc/codecs/pcm3168a-i2c.c:59:1: error: type defaults to ‘int’ in declaration of ‘module_i2c_driver’ [-Werror=implicit-int]
../sound/soc/codecs/pcm3168a-i2c.c:59:1: warning: parameter names (without types) in function declaration
../sound/soc/codecs/pcm3168a-i2c.c:49:26: warning: ‘pcm3168a_i2c_driver’ defined but not used [-Wunused-variable]
static struct i2c_driver pcm3168a_i2c_driver = {
^~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
Fixes: 4a557bc50ae9 ("ASoC: ti: Add custom machine driver for j721e EVM (CPB and IVI)") Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/e74c690c-c7f8-fd42-e461-4f33571df4ef@infradead.org Signed-off-by: Mark Brown <broonie@kernel.org>
Rationale:
Reduces attack surface on kernel devs opening the links for MITM
as HTTPS traffic is much harder to manipulate.
Deterministic algorithm:
For each file:
If not .svg:
For each line:
If doesn't contain `\bxmlns\b`:
For each link, `\bhttp://[^# \t\r\n]*(?:\w|/)`:
If neither `\bgnu\.org/license`, nor `\bmozilla\.org/MPL\b`:
If both the HTTP and HTTPS versions
return 200 OK and serve the same content:
Replace HTTP with HTTPS.
James Schulman [Thu, 23 Jul 2020 11:03:21 +0000 (12:03 +0100)]
ASoC: wm_adsp: Support new metadata block ID's
Coefficient files now support additional metadata blocks, these
contain machine parsable text strings describing the parameters
contained in the coefficient file.
Rationale:
Reduces attack surface on kernel devs opening the links for MITM
as HTTPS traffic is much harder to manipulate.
Deterministic algorithm:
For each file:
If not .svg:
For each line:
If doesn't contain `\bxmlns\b`:
For each link, `\bhttp://[^# \t\r\n]*(?:\w|/)`:
If neither `\bgnu\.org/license`, nor `\bmozilla\.org/MPL\b`:
If both the HTTP and HTTPS versions
return 200 OK and serve the same content:
Replace HTTP with HTTPS.
Rationale:
Reduces attack surface on kernel devs opening the links for MITM
as HTTPS traffic is much harder to manipulate.
Deterministic algorithm:
For each file:
If not .svg:
For each line:
If doesn't contain `\bxmlns\b`:
For each link, `\bhttp://[^# \t\r\n]*(?:\w|/)`:
If neither `\bgnu\.org/license`, nor `\bmozilla\.org/MPL\b`:
If both the HTTP and HTTPS versions
return 200 OK and serve the same content:
Replace HTTP with HTTPS.