Age | Commit message (Collapse) | Author |
|
<pierre-louis.bossart@linux.intel.com>:
While looking at reboot issues and module load/unload tests, I found
out some resources allocated in the dailink .init() callback are not
properly released - there is no existing mechanism in the soc-core to
do so.
The addition of a dailink .exit() callback seems to be the simplest
solution overall. It can be argued that the existing machine platform
device .remove() callback can also perform the necessary cleanups,
however as shown in the last two examples this might require a loop to
identify components whereas the dailink .exit() already has all the
necessary information to revert the actions done in the .init() step.
Changes since RFC:
Better commit messages and explanations
rt5682 cases with snd_soc_component_set_jack() called in the .exit()
Fred Oh (2):
ASoC: intel: sof_rt5682: move disabling jack to dai link's exit()
ASoC: intel: cml_rt1011_rt5682: disable jack in dailink .exit()
Pierre-Louis Bossart (3):
ASoC: soc-link: introduce exit() callback
ASoC: Intel: bdw-rt5677: fix module load/unload issues
ASoC: Intel: kbl-rt5660: use .exit() dailink callback to release gpiod
include/sound/soc-link.h | 1 +
include/sound/soc.h | 3 +++
sound/soc/intel/boards/bdw-rt5677.c | 18 ++++++++++++++--
sound/soc/intel/boards/cml_rt1011_rt5682.c | 8 ++++++++
sound/soc/intel/boards/kbl_rt5660.c | 17 +++++++++++++--
sound/soc/intel/boards/sof_rt5682.c | 24 ++++++++--------------
sound/soc/soc-core.c | 3 +++
sound/soc/soc-link.c | 6 ++++++
8 files changed, 60 insertions(+), 20 deletions(-)
base-commit: 39853b1438bf9b07349c8c44b48f6c2eda6f8840
--
2.20.1
|
|
KASAN throws the following warning in rt1011.c:
[ 170.777603] BUG: KASAN: stack-out-of-bounds in _find_next_bit.constprop.0+0x3e/0xf0
find_next_bit() relies on unsigned long pointer arguments, but this driver
uses a type cast that generates the KASAN warning. Replace find_next_bit()
and find_last_bit() with __ffs() and __fls() to pass the value and avoid
casting pointers to make the warning go away.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Link: https://lore.kernel.org/r/20200622151348.28063-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Sets playback and capture constraints to S16_LE, stereo, 48kHz.
Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
Link: https://lore.kernel.org/r/20200623055130.159718-1-tzungbi@google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The "ret" in fsl_easrc_set_ctx_format is not initialized, then
the unknown value maybe returned by this function.
Fixes: 955ac624058f ("ASoC: fsl_easrc: Add EASRC ASoC CPU DAI drivers")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Link: https://lore.kernel.org/r/1592816611-16297-1-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
When removing the machine driver, the rt5682 jack handler will oops if jack
detection is not disabled. The jack can be disabled in the dai link's exit().
This is symmetrical change as jack is enabled in init().
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Link: https://lore.kernel.org/r/20200622154241.29053-6-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Move disabling jack from platform driver's remove() to dai link's exit().
This is symmetrical change as jack is enabled in init().
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Link: https://lore.kernel.org/r/20200622154241.29053-5-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The gpiod handling is inspired from the bdw-rt5677 code. Apply same
fix to avoid reference count issue while removing modules for
consistency.
Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Curtis Malainey <curtis@malainey.com>
Link: https://lore.kernel.org/r/20200622154241.29053-4-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The mainline code currently prevents modules from being removed.
The BE dailink .init() function calls devm_gpiod_get() using the codec
component device as argument. When the machine driver is removed, the
references to the gpiod are not released, and it's not possible to
remove the codec driver module - which is the only entity which could
free the gpiod.
This conceptual deadlock can be avoided by invoking gpiod_get() in the
.init() callback, and calling gpiod_put() in the exit() callback.
Tested on SAMUS Chromebook with SOF driver.
Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Curtis Malainey <curtis@malainey.com>
Link: https://lore.kernel.org/r/20200622154241.29053-3-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Some machine drivers allocate or request resources with
snd_soc_link_init() phase of the card probe. These resources need to
be properly released when removing a card, and this patch suggests a
dual exit() callback.
The exit() is invoked in soc_remove_pcm_runtime(), which is not
completely symmetric with the init() invoked in soc_init_pcm_runtime().
Alternate solutions were considered, e.g. adding a .remove() callback
for the platform driver, but that's not symmetrical at all and would
be difficult to handle if there are more than one dailink implementing
an .init(). We looked also into using .remove_dai_link() callback, but
that would also be imbalanced.
Note that because of the error handling in snd_soc_bind_card(), which
jumps to probe_end, there is no way to guarantee the exit() is invoked
with resources allocated in the init(). Prior to releasing those
resources, implementations of the exit() callback shall check the
resources are valid.
Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Curtis Malainey <curtis@malainey.com>
Link: https://lore.kernel.org/r/20200622154241.29053-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
snd_soc_component_read32()" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Hi Mark
Because we can use "read" function which is using
"regmap" or "driver", current ALSA SoC drivers are using both
snd_soc_component_read() // for regmap
snd_soc_component_read32() // for driver callback
These are similar but needs different parameter.
This patch aggressively merge snd_soc_component_read() and _read32(),
and makes snd_soc_component_read/write() as generally style.
New read doesn't return error if it failed,
thus, it can't keep compatibility,
but assuming it is not a big problem.
Because 1) it will indicate error message,
2) it can do nothing anyway if it fails "read".
[02/16] patch is not directly connected to read function merging,
but need to be apply after [01/16].
Kuninori Morimoto (16):
ASoC: soc-component: merge snd_soc_component_read() and snd_soc_component_read32()
ASoC: soc-component: use io_mutex correctly
ASoC: pxa: rename to snd_soc_component_read()
ASoC: atmel: rename to snd_soc_component_read()
ASoC: codecs: rename to snd_soc_component_read()
ASoC: codecs: wcd*: rename to snd_soc_component_read()
ASoC: codecs: tlv*: rename to snd_soc_component_read()
ASoC: codecs: max*: rename to snd_soc_component_read()
ASoC: codecs: msm*: rename to snd_soc_component_read()
ASoC: codecs: alc*: rename to snd_soc_component_read()
ASoC: codecs: wm*: rename to snd_soc_component_read()
ASoC: codecs: rt*: rename to snd_soc_component_read()
ASoC: codecs: da*: rename to snd_soc_component_read()
ASoC: codecs: cs*: rename to snd_soc_component_read()
ASoC: codecs: ak*: rename to snd_soc_component_read()
ASoC: remove snd_soc_component_read32()
include/sound/soc-component.h | 4 +-
sound/soc/atmel/atmel-pdmic.c | 4 +-
sound/soc/codecs/88pm860x-codec.c | 14 ++---
sound/soc/codecs/ab8500-codec.c | 8 +--
sound/soc/codecs/ad1980.c | 4 +-
sound/soc/codecs/ak4458.c | 2 +-
sound/soc/codecs/ak4535.c | 4 +-
sound/soc/codecs/ak4613.c | 4 +-
sound/soc/codecs/ak4671.c | 8 +--
sound/soc/codecs/alc5623.c | 6 +-
sound/soc/codecs/alc5632.c | 6 +-
sound/soc/codecs/arizona.c | 18 +++---
sound/soc/codecs/cs4270.c | 10 +--
sound/soc/codecs/cs42l42.c | 2 +-
sound/soc/codecs/cs42l51.c | 8 +--
sound/soc/codecs/cs42l73.c | 4 +-
sound/soc/codecs/cs47l35.c | 10 +--
sound/soc/codecs/cs47l85.c | 10 +--
sound/soc/codecs/da7210.c | 24 ++++----
sound/soc/codecs/da7213.c | 24 ++++----
sound/soc/codecs/da7218.c | 34 +++++------
sound/soc/codecs/da7219-aad.c | 16 ++---
sound/soc/codecs/da7219.c | 20 +++---
sound/soc/codecs/da732x.c | 18 +++---
sound/soc/codecs/da9055.c | 14 ++---
sound/soc/codecs/inno_rk3036.c | 6 +-
sound/soc/codecs/madera.c | 49 +++------------
sound/soc/codecs/max98088.c | 12 ++--
sound/soc/codecs/max98090.c | 20 +++---
sound/soc/codecs/max98095.c | 16 ++---
sound/soc/codecs/max9850.c | 2 +-
sound/soc/codecs/msm8916-wcd-analog.c | 14 ++---
sound/soc/codecs/msm8916-wcd-digital.c | 16 ++---
sound/soc/codecs/nau8822.c | 6 +-
sound/soc/codecs/rt1305.c | 2 +-
sound/soc/codecs/rt298.c | 2 +-
sound/soc/codecs/rt5616.c | 2 +-
sound/soc/codecs/rt5631.c | 32 +++++-----
sound/soc/codecs/rt5640.c | 10 +--
sound/soc/codecs/rt5645.c | 16 ++---
sound/soc/codecs/rt5651.c | 6 +-
sound/soc/codecs/rt5659.c | 14 ++---
sound/soc/codecs/rt5660.c | 2 +-
sound/soc/codecs/rt5663.c | 34 +++++------
sound/soc/codecs/rt5665.c | 16 ++---
sound/soc/codecs/rt5668.c | 16 ++---
sound/soc/codecs/rt5670.c | 18 +++---
sound/soc/codecs/rt5682-i2c.c | 2 +-
sound/soc/codecs/rt5682.c | 19 +++---
sound/soc/codecs/sgtl5000.c | 16 ++---
sound/soc/codecs/sta32x.c | 4 +-
sound/soc/codecs/tas2552.c | 4 +-
sound/soc/codecs/tas5720.c | 4 +-
sound/soc/codecs/tda7419.c | 9 +--
sound/soc/codecs/tlv320aic23.c | 14 ++---
sound/soc/codecs/tlv320aic26.c | 4 +-
sound/soc/codecs/tlv320aic32x4.c | 16 ++---
sound/soc/codecs/tlv320aic3x.c | 14 ++---
sound/soc/codecs/tscs42xx.c | 4 +-
sound/soc/codecs/tscs454.c | 24 ++------
sound/soc/codecs/wcd-clsh-v2.c | 2 +-
sound/soc/codecs/wcd9335.c | 48 +++++++--------
sound/soc/codecs/wcd934x.c | 52 ++++++++--------
sound/soc/codecs/wm2200.c | 4 +-
sound/soc/codecs/wm5100.c | 18 +++---
sound/soc/codecs/wm5110.c | 6 +-
sound/soc/codecs/wm8350.c | 32 +++++-----
sound/soc/codecs/wm8400.c | 50 +++++++--------
sound/soc/codecs/wm8510.c | 28 ++++-----
sound/soc/codecs/wm8523.c | 6 +-
sound/soc/codecs/wm8580.c | 12 ++--
sound/soc/codecs/wm8711.c | 8 +--
sound/soc/codecs/wm8728.c | 10 +--
sound/soc/codecs/wm8731.c | 6 +-
sound/soc/codecs/wm8750.c | 8 +--
sound/soc/codecs/wm8753.c | 42 ++++++-------
sound/soc/codecs/wm8770.c | 2 +-
sound/soc/codecs/wm8776.c | 2 +-
sound/soc/codecs/wm8804.c | 2 +-
sound/soc/codecs/wm8900.c | 22 +++----
sound/soc/codecs/wm8903.c | 20 +++---
sound/soc/codecs/wm8904.c | 16 ++---
sound/soc/codecs/wm8940.c | 32 +++++-----
sound/soc/codecs/wm8955.c | 2 +-
sound/soc/codecs/wm8958-dsp2.c | 18 +++---
sound/soc/codecs/wm8960.c | 20 +++---
sound/soc/codecs/wm8961.c | 58 +++++++++---------
sound/soc/codecs/wm8962.c | 31 +++++-----
sound/soc/codecs/wm8971.c | 8 +--
sound/soc/codecs/wm8974.c | 24 ++++----
sound/soc/codecs/wm8978.c | 12 ++--
sound/soc/codecs/wm8983.c | 8 +--
sound/soc/codecs/wm8985.c | 8 +--
sound/soc/codecs/wm8988.c | 12 ++--
sound/soc/codecs/wm8990.c | 18 +++---
sound/soc/codecs/wm8991.c | 38 ++++++------
sound/soc/codecs/wm8993.c | 28 ++++-----
sound/soc/codecs/wm8994.c | 60 +++++++++---------
sound/soc/codecs/wm8995.c | 16 ++---
sound/soc/codecs/wm8996.c | 30 ++++-----
sound/soc/codecs/wm8998.c | 8 +--
sound/soc/codecs/wm9081.c | 36 +++++------
sound/soc/codecs/wm9090.c | 4 +-
sound/soc/codecs/wm9713.c | 2 +-
sound/soc/codecs/wm_hubs.c | 30 ++++-----
sound/soc/fsl/fsl_audmix.c | 10 +--
sound/soc/fsl/fsl_easrc.c | 5 +-
sound/soc/meson/aiu-encoder-i2s.c | 3 +-
sound/soc/meson/aiu-fifo-i2s.c | 3 +-
sound/soc/meson/aiu-fifo.c | 3 +-
sound/soc/pxa/mioa701_wm9713.c | 8 +--
sound/soc/soc-ac97.c | 7 +--
sound/soc/soc-component.c | 84 ++++++++++++++------------
sound/soc/soc-dapm.c | 31 ++++------
sound/soc/soc-ops.c | 43 +++----------
115 files changed, 854 insertions(+), 963 deletions(-)
--
2.25.1
|
|
Exposed additional mixer controls to select calibration or diagnostic
firmware.
'Calibration' --> chip-dsp<id>-spk-cali.wmfw (.bin)
'Diagnostic' --> chip-dsp<id>-spk-diag.wmfw (.bin)
Signed-off-by: Vlad Karpovich <Vlad.Karpovich@cirrus.com>
Signed-off-by: David Rhodes <david.rhodes@cirrus.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20200619212651.2739-1-david.rhodes@cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
No driver is using snd_soc_component_read32() anymore.
This patch removes it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/877dw74mbv.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/878sgn4mc0.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87a7134mc4.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Link: https://lore.kernel.org/r/87bllj4mc8.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87d05z4mce.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87eeqf4mcl.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87ftav4md9.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87h7vb4mdf.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87imfr4mdl.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87k1074mds.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/87lfkn4mdy.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87mu534me5.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87o8pj4mef.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87pn9z4men.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
component has io_mutex, but it had been used at
snd_soc_component_update_bits_legacy() only which does read and write.
static int snd_soc_component_update_bits_legacy(...)
{
...
=> mutex_lock(&component->io_mutex);
...
old = snd_soc_component_read(...);
...
ret = snd_soc_component_write(...);
...
=> mutex_unlock(&component->io_mutex);
...
}
It is pointless if it is not used with both read and write functions.
This patch uses io_mutex correctly with read/write.
Here, xxx_no_lock() is local functions.
static int snd_soc_component_read(...)
{
...
=> mutex_lock(&component->io_mutex);
val = soc_component_read_no_lock(...);
=> mutex_unlock(&component->io_mutex);
...
}
static int snd_soc_component_write(...)
{
...
=> mutex_lock(&component->io_mutex);
ret = soc_component_write_no_lock(...);
=> mutex_unlock(&component->io_mutex);
...
}
static int snd_soc_component_update_bits_legacy(...)
{
...
=> mutex_lock(&component->io_mutex);
...
old = soc_component_read_no_lock(...);
...
ret = soc_component_write_no_lock(...);
...
=> mutex_unlock(&component->io_mutex);
...
}
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87r1uf4mfa.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
snd_soc_component_read32()
We had read/write function for Codec, Platform, etc,
but these has been merged into snd_soc_component_read/write().
Internally, it is using regmap or driver function.
In read case, each styles are like below
regmap
ret = regmap_read(..., reg, &val);
driver function
val = xxx->read(..., reg);
Because of this kind of different style, to keep same read style,
when we merged each read function into snd_soc_component_read(),
we created snd_soc_component_read32(), like below.
commit 738b49efe6c6 ("ASoC: add snd_soc_component_read32")
(1) val = snd_soc_component_read32(component, reg);
(2) ret = snd_soc_component_read(component, reg, &val);
Many drivers are using snd_soc_component_read32(), and
some drivers are using snd_soc_component_read() today.
In generally, we don't check read function successes,
because, we will have many other issues at initial timing
if read function didn't work.
Now we can use soc_component_err() when error case.
This means, it is easy to notice if error occurred.
This patch aggressively merge snd_soc_component_read() and _read32(),
and makes snd_soc_component_read/write() as generally style.
This patch do
1) merge snd_soc_component_read() and snd_soc_component_read32()
2) it uses soc_component_err() when error case (easy to notice)
3) keeps read32 for now by #define
4) update snd_soc_component_read() for all drivers
Because _read() user drivers are not too many, this patch changes
all user drivers.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/87sgev4mfl.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
CROS_EC isn't strictly required for audio to work
on other SDM845 platforms (like the Dragonboard 845c).
So lets remove the dependency and select the related
CROS_EC options via imply.
Signed-off-by: John Stultz <john.stultz@linaro.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Cc: Rohit kumar <rohitkr@codeaurora.org>
Cc: Patrick Lai <plai@codeaurora.org>
Cc: Banajit Goswami <bgoswami@codeaurora.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.com>
Cc: alsa-devel@alsa-project.org
Link: https://lore.kernel.org/r/20200619031407.116140-1-john.stultz@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Add pm runtime support and move clock handling there.
Close the clocks at suspend to reduce the power consumption.
fsl_spdif_suspend is replaced by pm_runtime_force_suspend.
fsl_spdif_resume is replaced by pm_runtime_force_resume.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Link: https://lore.kernel.org/r/579c0d71e976f34f23f40daa9f1aa06c4baca2f1.1592552389.git.shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
In trigger we already get the selected instance details
from runtime->private_data.So, removing the local
initialization which may corrupt the instance selected
details and this leads to corrupt data.
Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com>
Link: https://lore.kernel.org/r/20200618072624.27047-1-Vishnuvardhanrao.Ravulapati@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Blindly adding an sof- prefix to the card name is not user friendly
and causes UCM issues with a driver name truncated to 16 characters.
Simplify to use "sof-bdw <codec_name>" pattern for all Broadwell
machine drivers. The sof- prefix is added by the core. A generic "SOF"
driver name is used, and UCMv2 will detect the configuration for this
driver by testing the card name.
Legacy uses are unmodified.
Suggested-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20200617165616.18511-4-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Blindly adding an sof- prefix to the card name is not user friendly
and causes UCM issues with a driver name truncated to 16 characters.
Simplify to use "sof-bytcht <codec_name>" pattern for all cht* machine
drivers. The sof- prefix is added by the core. A generic "SOF" driver
name is used, and UCMv2 will detect the configuration for this driver
by testing the card name.
Legacy uses are unmodified.
Suggested-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20200617165616.18511-3-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Blindly adding an sof- prefix to the card name is not user friendly
and causes UCM issues with a driver name truncated to 16 characters.
Simplify to use "sof-bytcht <codec_name>" pattern for all byt* machine
drivers. The sof- prefix is added by the core. A generic "SOF" driver
name is used, and UCMv2 will detect the configuration for this driver
by testing the card name.
Legacy uses are unmodified.
Suggested-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20200617165616.18511-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
When axg card driver support is enabled, lets enable the related
internal DAC glue by default.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/20200617155047.1187256-1-jbrunet@baylibre.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The one difference on imx6sx platform is that the root clock
is shared with ASRC module, so we add a new flags
"shared_root_clock" which means the root clock is not independent,
then we will not do the clk_set_rate and clk_round_rate to avoid
impact ASRC module usage.
As add a new flags, we include the soc specific data struct.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Nicolin Chen <nicoleotsuka@gmail.com>
Link: https://lore.kernel.org/r/7a343edd5f8487abad248a0b862f45fd95067751.1592376770.git.shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Add new compatible string "fsl,imx6sx-spdif" in the binding document.
And add compatible string "fsl,vf610-spdif" which was missed before.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://lore.kernel.org/r/feda3bb02296455d43aeebb7575918d9b28e1a3f.1592376770.git.shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The MQS codec isn't an i2c device, so use of_find_device_by_node
to get platform device pointer.
Because MQS only support playback, then add a new audio map.
And there maybe "model" property or no "audio-routing" property in
devicetree, so add some enhancement for these two property.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Nicolin Chen <nicoleotsuka@gmail.com>
Link: https://lore.kernel.org/r/918505decb7f757f12c38059c590984f28d2f3a4.1592369271.git.shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Add compatible string "fsl,imx-audio-mqs" for MQS, and move
"audio-routing" property to be optional for MQS doesn't need
such property.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://lore.kernel.org/r/2185a3ec866bc59f82d93b73d1a732a896fd8f48.1592369271.git.shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Calling pm_runtime_get_sync increments the counter even in case of
failure, causing incorrect ref count if pm_runtime_put is not called in
error handling paths. Call pm_runtime_put if pm_runtime_get_sync fails.
Signed-off-by: Qiushi Wu <wu000273@umn.edu>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20200613204422.24484-1-wu000273@umn.edu
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Flush DAC data before playback.
Signed-off-by: Jack Yu <jack.yu@realtek.com>
Link: https://lore.kernel.org/r/20200616023644.4523-1-jack.yu@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
<shengjiu.wang@nxp.com>:
Fix several warnings with "make W=1"
Shengjiu Wang (3):
ASoC: fsl_easrc: Fix -Wmissing-prototypes warning
ASoC: fsl_easrc: Fix -Wunused-but-set-variable
ASoC: fsl_easrc: Fix "Function parameter not described" warnings
sound/soc/fsl/fsl_easrc.c | 42 +++++++++++++++++----------------------
1 file changed, 18 insertions(+), 24 deletions(-)
--
2.21.0
|
|
Heng <jee.heng.sia@intel.com>:
The below series of patches support the KeemBay ASoC platform driver.
The platform driver initialize the i2s to capture and playback the
pcm data on the ARM. The i2s is running in polling mode.
There is no DSP in the KeemBay SoC. Users are rely on the Gstreamer plugin
to perform Audio preprocessing.
Audio graph card is used to connect the platform driver with the
tlv320aic3204 codec.
Change History:
v5:
- Remove OF dependency from Kconfig as OF is shifted to audio graph card.
v4:
- Reduce if-otology at the tx/rx function.
- Fix indentation.
- specify .rate directly
v3:
- Adjusted header format.
- Use Audio graph card instead of custom sound card.
- Use if-else instead of conditional operator.
- Enabled .set_fmt to configure master clock.
v2:
- Corrected I2S naming for DT binding.
v1:
- Initial version.
Sia Jee Heng (3):
ASoC: Intel: Add KeemBay platform driver
ASoC: Intel: Add makefiles and kconfig changes for KeemBay
dt-bindings: sound: Add documentation for KeemBay i2s
.../bindings/sound/intel,keembay-i2s.yaml | 68 +++
sound/soc/intel/Kconfig | 7 +
sound/soc/intel/Makefile | 1 +
sound/soc/intel/keembay/Makefile | 4 +
sound/soc/intel/keembay/kmb_platform.c | 654 +++++++++++++++++++++
sound/soc/intel/keembay/kmb_platform.h | 145 +++++
6 files changed, 879 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/intel,keembay-i2s.yaml
create mode 100644 sound/soc/intel/keembay/Makefile
create mode 100644 sound/soc/intel/keembay/kmb_platform.c
create mode 100644 sound/soc/intel/keembay/kmb_platform.h
--
1.9.1
|
|
Bossart <pierre-louis.bossart@linux.intel.com>:
Try to both reduce useless verbosity and keep useful error reports.
Pierre-Louis Bossart (3):
ASoC: soc-core: reduce verbosity of BE override message
ASoC: soc-pcm: improve error messages in soc_pcm_new()
ASoC: soc-pcm/compress: reduce verbosity on mapping ok messages
sound/soc/soc-compress.c | 4 ++--
sound/soc/soc-core.c | 4 ++--
sound/soc/soc-pcm.c | 13 +++++++------
3 files changed, 11 insertions(+), 10 deletions(-)
--
2.20.1
|
|
<tzungbi@google.com>:
Commit 1a0f2433d738 ("ASoC: max98357a: Add ACPI HID MAX98360A") supports
MAX98360A in ACPI world. This series supports MAX98360A in OF world.
Tzung-Bi Shih (2):
ASoC: max98357a: add compatible string for MAX98360A
ASoC: dt-bindings: add compatible string for MAX98360A
.../devicetree/bindings/sound/max98357a.txt | 12 +++++++++---
sound/soc/codecs/max98357a.c | 1 +
2 files changed, 10 insertions(+), 3 deletions(-)
--
2.27.0.278.ge193c7cf3a9-goog
|
|
Jiaxin Yu <jiaxin.yu@mediatek.com>:
v2 changes:
1. Uses a DT property to select DMIC mode instead of a mixer control.
v1 changes:
1. Uses a mixer control to select DMIC mode.
2. patchwork list:
https://patchwork.kernel.org/patch/11578309
Jiaxin Yu (2):
ASoC: mediatek: mt6358: support DMIC one-wire mode
ASoC: dt-bindings: mediatek: mt6358: add dmic-mode property
Documentation/devicetree/bindings/sound/mt6358.txt | 6 ++++++
sound/soc/codecs/mt6358.c | 23 +++++++++++++++++++++-
2 files changed, 28 insertions(+), 1 deletion(-)
--
1.8.1.1.dirty
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
|
|
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Hi Mark
We have soc-component.c now, but still many component related
functions are implemented many place.
This patch-set collect these into soc-component.c.
v1 -> v2
- remove soc-compress.c exchange
(But I have plan to repost it)
- fixup loop break issue on some functions
- direct return on some functions
Link: https://lore.kernel.org/r/87a71nzhy2.wl-kuninori.morimoto.gx@renesas.com
Kuninori Morimoto (12):
ASoC: soc-component: add soc_component_pin() and share code
ASoC: soc-component: move snd_soc_component_xxx_regmap() to soc-component
ASoC: soc-component: move snd_soc_component_initialize() to soc-component.c
ASoC: soc-component: add soc_component_err()
ASoC: soc-component: add snd_soc_pcm_component_prepare()
ASoC: soc-component: add snd_soc_pcm_component_hw_params()
ASoC: soc-component: add snd_soc_pcm_component_hw_free()
ASoC: soc-component: add snd_soc_pcm_component_trigger()
ASoC: soc-component: add snd_soc_component_init()
ASoC: soc-component: merge soc-io.c into soc-component.c
ASoC: soc-component: merge soc_pcm_trigger_start/stop()
ASoC: soc-component: tidyup Copyright
include/sound/soc-component.h | 29 +-
sound/soc/Makefile | 2 +-
sound/soc/soc-component.c | 666 ++++++++++++++++++++++++----------
sound/soc/soc-core.c | 102 +-----
sound/soc/soc-io.c | 202 -----------
sound/soc/soc-pcm.c | 114 ++----
6 files changed, 531 insertions(+), 584 deletions(-)
delete mode 100644 sound/soc/soc-io.c
--
2.17.1
|
|
Having mixer control to switch between DMICs prevents user to
initiate capture simultaneously on both the DMIcs.
Earlier 2 separate devices, one for each DMIC, gave an option of
using them simultaneously, which is not supported.
Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
Link: https://lore.kernel.org/r/20200530095519.24324-1-akshu.agrawal@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Add amp common init function to gather common init setting and finaize.
- add max98390_init_regs func
- move amp setting to max98390_init_regs func.
- removed unneceary setting and finalize common register values.
Signed-off-by: Steve Lee <steves.lee@maximintegrated.com>
Link: https://lore.kernel.org/r/20200611094718.18371-1-steves.lee@maximintegrated.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Add DT binding of max98390 amplifier driver.
Signed-off-by: Steve Lee <steves.lee@maximintegrated.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20200602084337.22116-1-steves.lee@maximintegrated.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
DAI Wclk of rt5682 only supports 48000Hz output so far,
this patch lets it support 44100Hz.
Signed-off-by: derek.fang <derek.fang@realtek.com>
Link: https://lore.kernel.org/r/1591938925-1070-4-git-send-email-derek.fang@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|