Mark Brown [Tue, 28 Nov 2023 12:24:41 +0000 (12:24 +0000)]
ASoC: Intel: Link handling rework and fixes
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
SOF board updates for 6.8 including few small fix and the majority is to add
generic helpers for codec, amp, BT offload, HDMI-In and DAI link generation
among various machine drivers.
Mark Brown [Mon, 27 Nov 2023 17:33:11 +0000 (17:33 +0000)]
ASoC: makes CPU/Codec channel connection map more
Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Current ASoC is supporting CPU/Codec = N:M (N < M) connection by using
ch_map idea. This patch-set expands it that all connection uses this idea,
and no longer N < M limit [1][2].
Brent Lu [Mon, 27 Nov 2023 15:26:52 +0000 (17:26 +0200)]
ASoC: Intel: board_helpers: support DAI link array generation
Add a helper function for machine drivers to initialize dai_link and
num_links of a snd_soc_card structure. Machine driver needs to
initialize sof_card_private structure in driver probe function then
board_helpers module will create entire DAI link array for this board.
Signed-off-by: Brent Lu <brent.lu@intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20231127152654.28204-26-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Brent Lu [Mon, 27 Nov 2023 15:26:37 +0000 (17:26 +0200)]
ASoC: Intel: board_helpers: support amp link initialization
Add a helper function for machine drivers to initialize speaker
amplifier DAI link. The function will initialize common fields and let
caller to initialize codec-specific fields like codec, init, exit, and
ops fields.
Signed-off-by: Brent Lu <brent.lu@intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20231127152654.28204-11-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Brent Lu [Mon, 27 Nov 2023 15:26:33 +0000 (17:26 +0200)]
ASoC: Intel: board_helpers: support codec link initialization
Add a helper function for machine drivers to initialize headphone
codec DAI links. The function will initialize common fields and let
caller to initialize codec-specific fields like codec, init, exit, and
ops fields.
Signed-off-by: Brent Lu <brent.lu@intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20231127152654.28204-7-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Bard Liao [Mon, 27 Nov 2023 15:26:29 +0000 (17:26 +0200)]
ASoC: Intel: sof_maxim_common: add else between 2 if test
if (!strcmp(codec_dai->component->name, MAX_98373_DEV0_NAME)) and
if (!strcmp(codec_dai->component->name, MAX_98373_DEV1_NAME)) can't be
true at the same time. Add an else to clarify it.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Chao Song <chao.song@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20231127152654.28204-3-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Brent Lu [Mon, 27 Nov 2023 15:26:28 +0000 (17:26 +0200)]
ASoC: Intel: sof_ssp_amp: remove dead code
This patch fixes a dead code problem when calculating BE ID for each
HDMI-In link.
Signed-off-by: Brent Lu <brent.lu@intel.com> Reviewed-by: Balamurugan C <balamurugan.c@intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20231127152654.28204-2-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Peter Ujfalusi [Mon, 27 Nov 2023 10:43:13 +0000 (12:43 +0200)]
ASoC: SOF: Intel: Use existing helpers to change GPROCEN and PIE bits
Instead of directly changing the GPROCEN/PIE bits in PPCTL we should use
the existing helper hda_dsp_ctrl_ppcap_enable() and
hda_dsp_ctrl_ppcap_int_enable() helpers for clarity.
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20231127104313.16661-1-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Now ASoC is supporting CPU/Codec = N:M connection, add its sample
settings.
One note here is that it has many type of samples, it reached to
maximum of sound minor number. Therefore, new sample is disabled so far.
If you want to try it, you need to disable some other one instead.
Kuninori Morimoto [Mon, 13 Nov 2023 01:28:58 +0000 (01:28 +0000)]
ASoC: audio-graph-card2: use better image for Multi connection
1st port on Multi ports is for paired CPU/Codec, and the 2nd or later
port are for Multi Elements. This patch indicates its image to easy to
understand.
Kuninori Morimoto [Mon, 13 Nov 2023 01:28:27 +0000 (01:28 +0000)]
ASoC: makes CPU/Codec channel connection map more generic
Current ASoC CPU:Codec = N:M connection is using connection mapping idea,
but it is used for N < M case only. We want to use it for any case.
By this patch, not only N:M connection, but all existing connection
(1:1, 1:N, N:N) will use same connection mapping. Then, because it will
use default mapping, no conversion patch is needed to exising drivers.
More over, CPU:Codec = N:M (N > M) also supported in the same time.
ch_maps array will has CPU/Codec index by this patch.
Mark Brown [Sat, 25 Nov 2023 10:37:48 +0000 (10:37 +0000)]
ASoC: SOF: ipc4: Add support for control change
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
This series adds support for handling control (switch/enum) change notifications
sent by the firmware.
The use case is similar to what is already used by IPC3 version: the firmware
can update the value of an enum or switch and sends notification to the kernel,
which in turn will notify the user space of a change.
Peter Ujfalusi [Fri, 24 Nov 2023 15:08:53 +0000 (17:08 +0200)]
ASoC: SOF: ipc4: Handle ALSA kcontrol change notification from firmware
The control change notification is sent as module notification with a
standardized event_id (higher 16 bit is 0xA15A).
Add generic code to handle the module notification and invoke the control
update callback if the notification is an ALSA kcontrol change message.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20231124150853.18648-5-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Peter Ujfalusi [Fri, 24 Nov 2023 15:08:52 +0000 (17:08 +0200)]
ASoC: SOF: ipc4-control: Implement control update for switch/enum controls
Implement the sof_ipc_tplg_control_ops.update function to support a control
change notification from the firmware on switch or enum control types.
Based on the module notification message content, look up the swidget, then
the scontrol which was the source of the notification then if the message
contains the changed values update the cached values.
If only a notification without values received, marked the control as dirty
and on next read access fetch the new values from the firmware.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20231124150853.18648-4-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Peter Ujfalusi [Fri, 24 Nov 2023 15:08:51 +0000 (17:08 +0200)]
ASoC: SOF: ipc4: Add data struct for module notification message from firmware
With the module notification message the information about the notification
is provided via the mailbox with the sof_ipc4_notify_module_data struct.
It contains the module and instance id of the sender of the notification,
the event_id and optionally additional data which is module and event
specific.
At the same time add definitions to identify ALSA kcontrol change
notification.
These notifications use standardized event_id, modules must follow this if
they support such notifications:
upper 16 bit: 0xA15A as a magic identification value
lower 16 bit: param_id of the changed control
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20231124150853.18648-3-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Maciej Strozek [Thu, 23 Nov 2023 09:06:58 +0000 (09:06 +0000)]
ASoC: cs43130: Allow driver to work without IRQ connection
Add a polling mechanism that will keep the driver operational even in
absence of physical IRQ connection. If IRQ line is detected, the driver
will continue working as usual, in case of missing IRQ line it will
fallback to the polling mechanism introduced in this change.
This will support users which choose not to connect an IRQ line as it
is not critical to part's operation.
Michael Ellerman [Wed, 22 Nov 2023 06:27:11 +0000 (17:27 +1100)]
ASoC: fsl: mpc8610_hpcd: Remove unused driver
The mpc8610_hpcd.c driver depends on CONFIG_MPC8610_HPCD which was
removed in commit 248667f8bbde ("powerpc: drop HPCD/MPC8610 evaluation
platform support"). That makes the driver unbuildable and unusable, so
remove it.
The virtual widget example makes use of an undefined SND_SOC_DAPM_NOPM
argument passed to SND_SOC_DAPM_MIXER(). Replace with the correct
SND_SOC_NOPM definition.
Chancel Liu [Tue, 21 Nov 2023 05:25:12 +0000 (13:25 +0800)]
ASoC: imx-rpmsg: Force codec power on in low power audio mode
Low power audio mode requires binding codec still power on while Acore
enters into suspend so Mcore can continue playback music.
ASoC machine driver acquires DAPM endpoints through reading
"ignore-suspend-widgets" property from DT and then forces the path
between these endpoints ignoring suspend.
If the rpmsg sound card is in low power audio mode, the suspend/resume
callback of binding codec is overridden to disable the suspend/resume.
Chancel Liu [Tue, 21 Nov 2023 05:25:11 +0000 (13:25 +0800)]
ASoC: dt-bindings: sound-card-common: List sound widgets ignoring system suspend
Add a property to list audio sound widgets which are marked ignoring
system suspend. Paths between these endpoints are still active over
suspend of the main application processor that the current operating
system is running.
The SSI block on the RZ/Five SoC is identical to one found on the RZ/G2UL
SoC. "renesas,r9a07g043-ssi" compatible string will be used on the RZ/Five
SoC so to make this clear and to keep this file consistent, update the
comment to include RZ/Five SoC.
No driver changes are required as generic compatible string
"renesas,rz-ssi" will be used as a fallback on RZ/Five SoC.
Mark Brown [Mon, 13 Nov 2023 18:14:37 +0000 (18:14 +0000)]
ASoC: codecs: ES8326
Merge series from Zhu Ning <zhuning0077@gmail.com>:
We developed a new version of the chip. 3 Three patches are used for
compatibility with the old and new versions of the chip.We did tests
with the new driver at version_v0 and version_v3.The test results
from the test department met our expectations.Both versions work well
with the new drivers.
Mark Brown [Mon, 13 Nov 2023 14:08:33 +0000 (14:08 +0000)]
ASoC: SOF: mediatek: remove unused variables
Merge series from Trevor Wu <trevor.wu@mediatek.com>:
There are some variables that are no longer being used because they
were declared for the deprecated memory layout. Currently, these code
sections confuse the users. Therefore, this series removes the code
that was implemented for those variables.
Mark Brown [Mon, 13 Nov 2023 14:08:25 +0000 (14:08 +0000)]
Add DMIC slew rate controls
Merge series from Seven Lee <wtli@nuvoton.com>:
Determine DMIC slew rate via property setup.
Change:
V3 -> V4:
- add "maximum: 7" description.
V2 -> V3:
- Update description of DMIC slew rate and remove
"selection" key words from property name
- Corrected variable name of DMIC slew rate from c file
V1 -> V2:
- Corrected description of DMIC slew rate.
Krzysztof Kozlowski [Tue, 7 Nov 2023 10:16:10 +0000 (11:16 +0100)]
ASoC: dt-bindings: use "soundwire" as controller's node name in examples
Soundwire Devicetree bindings expect the Soundwire controller device
node to be named just "soundwire". Correct examples, so the incorrect
code will not be re-used.
Sebastian Reichel [Thu, 9 Nov 2023 18:44:43 +0000 (19:44 +0100)]
dt-bindings: es8328: convert to DT schema format
Convert the binding to DT schema format. Note, that "IPVDD-supply"
got fixed to be "HPVDD-supply" during the conversion. This was
obviously a typo in the old binding. The old binding example, DT
files, chip datasheet and Linux driver use HPVDD.
Weidong Wang [Thu, 9 Nov 2023 09:37:07 +0000 (17:37 +0800)]
ASoC: codecs: Modify the bin file parsing method
Modify the aw88395_lib file so that the bin file
parsing is no longer related to the chip id of the chip.
Adopt the bin file data type "prof_data_type" as the
differentiation between different chip bin file
parsing methods.
Since the chip id macro for the aw88399 is no longer
defined in aw88395_reg.h, define the chip id
for the aw88399 in aw88399.h
Rob Herring [Wed, 1 Nov 2023 14:09:22 +0000 (09:09 -0500)]
ASoC: dt-bindings: Simplify port schema
The use of 'definitions' is not necessary and also problematic because the
dtschema tools don't process 'definitions' resulting in this spurious
warning:
Documentation/devicetree/bindings/sound/renesas,rsnd.example.dtb: sound@ec500000: port:endpoint: Unevaluated properties are not allowed ('phandle' was unexpected)
from schema $id: http://devicetree.org/schemas/sound/renesas,rsnd.yaml#
Fix this by moving the port schema to #/properties/port and referencing
that directly from the 'ports' schema.
Really, a binding should just always use 'ports' if multiple ports are
possible. There's no benefit to supporting both forms. However, it appears
there are already lots of users of this one with a single 'port' node.
Amadeusz Sławiński [Thu, 26 Oct 2023 11:35:49 +0000 (13:35 +0200)]
ASoC: dapm: Simplify widget clone
New DAPM widgets are created based on a provided template. When cloning
the data, the name and stream name also need to be cloned. Currently the
data and the names are initialized in different places. Simplify the
code by having entire initialization in one place.
Keguang Zhang [Mon, 6 Nov 2023 12:51:03 +0000 (20:51 +0800)]
ASoC: sti-uniperf: Use default pcm_config instead
The sti-uniperf pcm_config is the same as the default pcm_config.
Since commit 43556516fffe ("ASoC: soc-generic-dmaengine-pcm:
Use default config when none is given"), passing a NULL pointer
could let this driver use the default config.
Trevor Wu [Fri, 3 Nov 2023 09:54:32 +0000 (17:54 +0800)]
ASoC: SOF: mediatek: remove unused variables
To prevent confusion on the follow-up platform, it is necessary to
remove any unused variables within the struct mtk_adsp_chip_info.
Signed-off-by: Trevor Wu <trevor.wu@mediatek.com> Reviewed-by: Yaochun Hung <yc.hung@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20231103095433.10475-4-trevor.wu@mediatek.com Signed-off-by: Mark Brown <broonie@kernel.org>
Trevor Wu [Fri, 3 Nov 2023 09:54:31 +0000 (17:54 +0800)]
ASoC: SOF: mediatek: mt8186: clean up unused code
Since there are some variables that are no longer being used, we remove
the code that was implemented for those variables.
Signed-off-by: Trevor Wu <trevor.wu@mediatek.com> Reviewed-by: Yaochun Hung <yc.hung@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20231103095433.10475-3-trevor.wu@mediatek.com Signed-off-by: Mark Brown <broonie@kernel.org>
Trevor Wu [Fri, 3 Nov 2023 09:54:30 +0000 (17:54 +0800)]
ASoC: SOF: mediatek: mt8195: clean up unused code
Since there are some variables that are no longer being used, we remove
the code that was implemented for those variables.
Signed-off-by: Trevor Wu <trevor.wu@mediatek.com> Reviewed-by: Yaochun Hung <yc.hung@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20231103095433.10475-2-trevor.wu@mediatek.com Signed-off-by: Mark Brown <broonie@kernel.org>
Zhu Ning [Wed, 1 Nov 2023 07:27:02 +0000 (15:27 +0800)]
ASoC: codecs: ES8326: Changing the headset detection time
The old headset detection time is not enough for the new chip version.
An error occurs with the old detection time.According to tests,
400ms is the best detection time that does not trigger an error.
The delay time after the trigger is reduced by 300ms to
keep the whole detection time unchanged.
Zhu Ning [Wed, 1 Nov 2023 07:27:01 +0000 (15:27 +0800)]
ASoC: codecs: ES8326: Changing initialisation and broadcasting
New chip versions require new initialisation and playback processes.
Changing the initialisation and playback process for better results.
The old chip versions are going to work well with the new sequences.
We've tested this with version_v0 and version_v3 chips
under the new sequence and they both pass.
Zhu Ning [Wed, 1 Nov 2023 07:27:00 +0000 (15:27 +0800)]
ASoC: codecs: ES8326: Add chip version flag
The new chip version requires the addition of a new clock table.
We determine which clock table to choose based on the version.
Newer versions of the chip have fewer processes to go through
in the headset detection, so the version flag is used to skip them.