Merge series from Richard Fitzgerald <rf@opensource.cirrus.com>:
This adds SOC_DOUBLE_R_S_EXT_TLV and SOC_SINGLE_S_EXT_TLV macros for
signed TLV controls that need custom get/put callbacks. These will be
needed by future Cirrus codec drivers, but are not particularly exotic
so could be useful for others.
Merge series from Stephen Kitt <steve@sk2.org>:
This series covers all the remaining changes to migrate
sound/soc/codecs i2c probes to probe_new, where the const struct
i2c_client * argument is still used. Instead of relying on the
parameter passed in, i2c_match_id is used instead.
With this set of patches, all the sound/soc/codecs i2c probes use the
new probe definition.
Changes since v1: two missing files were added.
Stephen Kitt (7):
ASoC: ak*: use i2c_match_id and simple i2c probe
ASoC: alc56*: use i2c_match_id and simple i2c probe
ASoC: max980*: use i2c_match_id and simple i2c probe
ASoC: pcm186x: use i2c_match_id and simple i2c probe
ASoC: tas*: use i2c_match_id and simple i2c probe
ASoC: tlv320*: use i2c_match_id and simple i2c probe
ASoC: tpa6130: use i2c_match_id and simple i2c probe
sound/soc/codecs/ak4613.c | 10 +++++----
sound/soc/codecs/ak4642.c | 8 ++++---
sound/soc/codecs/alc5623.c | 24 +++++++++++----------
sound/soc/codecs/alc5632.c | 20 +++++++++--------
sound/soc/codecs/max98088.c | 21 +++++++++---------
sound/soc/codecs/max98090.c | 23 ++++++++++----------
sound/soc/codecs/max98095.c | 19 +++++++++--------
sound/soc/codecs/pcm186x-i2c.c | 24 ++++++++++-----------
sound/soc/codecs/tas2562.c | 25 +++++++++++-----------
sound/soc/codecs/tas571x.c | 11 ++++++----
sound/soc/codecs/tas5720.c | 21 +++++++++---------
sound/soc/codecs/tlv320adc3xxx.c | 21 +++++++++---------
sound/soc/codecs/tlv320aic31xx.c | 32 ++++++++++++++--------------
sound/soc/codecs/tlv320aic32x4-i2c.c | 11 ++++++----
sound/soc/codecs/tlv320aic3x-i2c.c | 25 +++++++++++-----------
sound/soc/codecs/tpa6130a2.c | 19 +++++++++--------
16 files changed, 168 insertions(+), 146 deletions(-)
base-commit: 5d763a740e5b24e4a2ca04317255e7e941876338
--
2.27.0
Change the order of members in struct cs_dsp_coeff_ctl to avoid
the compiler having to insert alignment padding bytes. On a x86_64
build this saves 16 bytes per control.
- Pointers are collected to the top of the struct (with the exception of
priv, as noted below), so that they are inherently aligned.
- The set and enable bitflags are placed together so they can be merged.
- priv is placed at the end of the struct - it is for use by the
client so it is helpful to make it stand out, and since the compiler
will always pad the struct size to an alignment multiple putting a
pointer last won't introduce any more padding.
- struct cs_dsp_alg_region is placed at the end, right before priv, for
the same reasoning as priv.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20220425095159.3044527-1-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
As part of the ongoing i2c transition to the simple probe
("probe_new"), this patch uses i2c_match_id to retrieve the
driver_data for the probed device. The id parameter is thus no longer
necessary and the simple probe can be used instead.
In the context of an i2c probe, i2c_match_id with the module id table
and the probed client never returns null, so removing the null check
on the i2c_device_id pointer is safe.
The i2c id tables are moved up before the probe function, as
suggested by Wolfram Sang, except where the existing code already had
a declaration for the of_device_id table.
Signed-off-by: Stephen Kitt <steve@sk2.org>
Link: https://lore.kernel.org/r/20220415160613.148882-7-steve@sk2.org
Signed-off-by: Mark Brown <broonie@kernel.org>
As part of the ongoing i2c transition to the simple probe
("probe_new"), this patch uses i2c_match_id to retrieve the
driver_data for the probed device. The id parameter is thus no longer
necessary and the simple probe can be used instead.
The i2c id tables are moved up before the probe function, as
suggested by Wolfram Sang, except where the existing code already had
a declaration for the of_device_id table.
Signed-off-by: Stephen Kitt <steve@sk2.org>
Link: https://lore.kernel.org/r/20220415160613.148882-6-steve@sk2.org
Signed-off-by: Mark Brown <broonie@kernel.org>
As part of the ongoing i2c transition to the simple probe
("probe_new"), this patch uses i2c_match_id to retrieve the
driver_data for the probed device. The id parameter is thus no longer
necessary and the simple probe can be used instead.
The i2c id table is moved up before the probe function, as suggested
by Wolfram Sang.
Signed-off-by: Stephen Kitt <steve@sk2.org>
Link: https://lore.kernel.org/r/20220415160613.148882-5-steve@sk2.org
Signed-off-by: Mark Brown <broonie@kernel.org>
As part of the ongoing i2c transition to the simple probe
("probe_new"), this patch uses i2c_match_id to retrieve the
driver_data for the probed device. The id parameter is thus no longer
necessary and the simple probe can be used instead.
In the context of an i2c probe, i2c_match_id with the module id table
and the probed client never returns null, so removing the null check
on the i2c_device_id pointer is safe.
The i2c id tables are moved up before the probe function, as
suggested by Wolfram Sang.
Signed-off-by: Stephen Kitt <steve@sk2.org>
Link: https://lore.kernel.org/r/20220415160613.148882-4-steve@sk2.org
Signed-off-by: Mark Brown <broonie@kernel.org>
As part of the ongoing i2c transition to the simple probe
("probe_new"), this patch uses i2c_match_id to retrieve the
driver_data for the probed device. The id parameter is thus no longer
necessary and the simple probe can be used instead.
The i2c id tables are moved up before the probe function, as
suggested by Wolfram Sang.
Signed-off-by: Stephen Kitt <steve@sk2.org>
Link: https://lore.kernel.org/r/20220415160613.148882-3-steve@sk2.org
Signed-off-by: Mark Brown <broonie@kernel.org>
As part of the ongoing i2c transition to the simple probe
("probe_new"), this patch uses i2c_match_id to retrieve the
driver_data for the probed device. The id parameter is thus no longer
necessary and the simple probe can be used instead.
Signed-off-by: Stephen Kitt <steve@sk2.org>
Link: https://lore.kernel.org/r/20220415160613.148882-2-steve@sk2.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Merge series from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
Add two PCI IDs and quirks for APL Chromebooks and Intel IPC4
selection for developers.
cppcheck throws the following warning:
sound/soc/soc-core.c:2773:6: style: Condition '!num_widgets' is always
false [knownConditionTrueFalse]
if (!num_widgets) {
^
sound/soc/soc-core.c:2761:18: note: Assuming that condition
'num_widgets<0' is not redundant
if (num_widgets < 0) {
^
sound/soc/soc-core.c:2766:18: note: Assuming condition is false
if (num_widgets & 1) {
^
sound/soc/soc-core.c:2772:2: note: Compound assignment '/=', assigned
value is 0
num_widgets /= 2;
^
We should check upfront all error conditions.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20220421162505.302132-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Because Sound Card needs many drivers to probe, current audio-graph-card2
will indicate "Experimental stage" at top of probe function even though
in case it gets -EPROBE_DEFER, thus it will be indicated many times.
This patch indicates it when probe was succeeded.
[ 1.601393] asoc-audio-graph-card2 sound: Audio Graph Card2 is still under Experimental stage
...
[ 1.721269] asoc-audio-graph-card2 sound: Audio Graph Card2 is still under Experimental stage
...
[ 1.755231] asoc-audio-graph-card2 sound: Audio Graph Card2 is still under Experimental stage
...
[ 1.907710] asoc-audio-graph-card2 sound: Audio Graph Card2 is still under Experimental stage
...
[ 1.933173] rcar_sound ec500000.sound: probed
[ 1.948875] asoc-audio-graph-card2 sound: Audio Graph Card2 is still under Experimental stage
[ 1.959558] asoc-audio-graph-card2 sound: ak4613-hifi <-> rsnd-dai.0 mapping ok
[ 1.968119] asoc-audio-graph-card2 sound: i2s-hifi <-> rsnd-dai.1 mapping ok
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87o80vgn5a.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
commit cfb7b8bf1e ("ASoC: rsnd: tidyup
rsnd_ssiu_busif_err_status_clear()") merged duplicate code, but it didn't
care about default case, and causes smatch warnings.
smatch warnings:
sound/soc/sh/rcar/ssiu.c:112 rsnd_ssiu_busif_err_status_clear() \
error: uninitialized symbol 'offset'.
sound/soc/sh/rcar/ssiu.c:114 rsnd_ssiu_busif_err_status_clear() \
error: uninitialized symbol 'shift'.
This patch cares it.
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87r15rgn6p.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Merge series from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
With additional tests with the introduction of a 'deep-buffer' PCM
device mixed with the regular low-latency path, we came up with two
improvements in the BE state machine and transitions. The short
explanation is that the BE cannot directly use the trigger commands
provided by the FE, and a translation is needed to deal with paused
states.
Merge series from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
The INTEL_IPC4 protocol and firmware architecture will rely on
different sets of firmware binary and topology files. Some platforms
will only support INTEL_IPC4, some will support both INTEL_IPC4 and
SOF_IPC for development, and some will stay with the existing SOF_IPC.
This patchset adds new IPC definitions, and search paths for firmware
and topology files, along with means to override the default IPC type
and search paths for development. The firmware binary names are
aligned with those used by the Intel AVS driver to avoid duplicate
firmware installs, but the topology will have to differ due to driver
architecture differences.
Merge series from Cezary Rojewski <cezary.rojewski@intel.com>:
A continuation of avs-driver initial series [1]. This chapter covers
path management and topology parsing part which was ealier path of the
main series. The two patches that represented these two subjects in the
initial series, have been split into many to allow for easier review and
discussion.
AVS topology is split into two major parts: dictionaries - found within
ASoC topology manifest - and path templates.
Dictionaries job is to reduce the total amount of memory
occupied by topology elements. Rather than having every pipeline and
module carry its own information, each refers to specific entry in
specific dictionary by provided (from topology file) indexes. In
consequence, most struct avs_tplg_xxx are made out of pointers.
Path templates are similar to path descriptions found in skylake-driver
and they describe how given path shall look like in runtime - number of
modules and pipelines that shape it and how they are laid out. A single
path template is tied either to FE or BE and thus at most to a single,
user-visible endpoint when speaking of FE.
Path is a software representation of its ADSP firmware equivalent. It's
a logical container for pipelines which are themselves containers - this
time for modules i.e. processing units.
Depending on the number of audio formats supported, each path template
may carry one or more descriptions of given path. During runtime, when
audio format is known, description matching said format is selected and
used when instantiating path on ADSP firmware side through IPCs.