Rename:
CS_AMP_CAL_NAME => CIRRUS_LOGIC_CALIBRATION_EFI_NAME
CS_AMP_CAL_GUID => CIRRUS_LOGIC_CALIBRATION_EFI_GUID
This is to clarify that these are specific to Cirrus Logic,
especially the GUID. As defined by the UEFI specification the GUID
is a vendor identifier, not an EFI variable identifier.
There has been some misunderstanding of the purpose of these, which
has led to the Cirrus Logic GUID value being copied and used for other
vendor's EFI variables. It is rather strange to have data from another
vendor marked with the vendor GUID for Cirrus Logic.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Message-ID: <20250909113039.922065-2-rf@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Currently if a user enqueue a work item using schedule_delayed_work() the
used wq is "system_wq" (per-cpu wq) while queue_delayed_work() use
WORK_CPU_UNBOUND (used when a cpu is not specified). The same applies to
schedule_work() that is using system_wq and queue_work(), that makes use
again of WORK_CPU_UNBOUND.
This lack of consistentcy cannot be addressed without refactoring the API.
system_unbound_wq should be the default workqueue so as not to enforce
locality constraints for random work whenever it's not required.
Adding system_dfl_wq to encourage its use when unbound work should be used.
queue_work() / queue_delayed_work() / mod_delayed_work() will now use the
new unbound wq: whether the user still use the old wq a warn will be
printed along with a wq redirect to the new one.
The old system_unbound_wq will be kept for a few release cycles.
Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Marco Crivellari <marco.crivellari@suse.com>
Message-ID: <20250905091016.109428-2-marco.crivellari@suse.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Add check for the return value of devm_kmemdup() to prevent
potential null pointer dereference.
Fixes: 7561177017 ("ASoC: codecs: Add FourSemi FS2104/5S audio amplifier driver")
Signed-off-by: Charles Han <hanchunchao@inspur.com>
Message-ID: <20250905091845.1559-1-hanchunchao@inspur.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Merge series from Charles Keepax <ckeepax@opensource.cirrus.com>:
cs42l43 uses pm_runtime_force_suspend() during system suspend, however
this means care must be taken that IRQ handler code isn't running when
entering system suspend as force suspend will ignore that the handler
is holding a pm reference. Typically the result of this is just a few
error messages, but better to improve the handling and ensure that all
IRQ processing is synchronised in before system suspend.
Merge series from Jihed Chaibi <jihed.chaibi.dev@gmail.com>:
The series adds pin names for the es8316, wm8960, and nau8825
codecs to their respective binding files to improve the user
experience for board developers.
Manage clock settings for ADSP solution. On Existing ADSP bypass
solutions, the macro and dcodec GDSCs are enabled using power domains
in lpass-va-macro which is not applicable for ADSP based platform.
Co-developed-by: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
Signed-off-by: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Message-ID: <20250903151337.1037246-2-mohammad.rafi.shaik@oss.qualcomm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Fully power down the jack detection on system suspend since the device
will not be powered up during.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Message-ID: <20250903094549.271068-5-ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Currently the MFD driver disables all the IRQs upon entering system
suspend, however there are some issues with this approach. As this
device uses runtime force suspend.
The regmap IRQ handler can run, claim a PM runtime reference and get
scheduled, the MFD can then force suspend. When the IRQ thread gets
rescheduled it will try to access volatile registers on the
suspended device. Furthermore, this race also applies to work queue
items scheduled by the IRQ handlers.
As the MFD code doesn't know about the individual work queue items, the
end drivers must mask their own IRQs and sync in any work queues as part
of entering system suspend. Update the code here to do so.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Message-ID: <20250903094549.271068-4-ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
To support future refactoring store a pointer to the IRQ domain in the
codec private data allowing easier access to it outside of probe.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Message-ID: <20250903094549.271068-3-ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
There is some confusion around cs42l43_codec_runtime_force_suspend().
This function is the system suspend callback, however the name and
the debug print both use the words runtime. Rename the function to
the simpler cs42l43_codec_suspend() and correct the debug print.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Message-ID: <20250903094549.271068-2-ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Add a list of the wm8960 pin names to the binding's description to make
it self-contained and improve the user experience for board developers.
Signed-off-by: Jihed Chaibi <jihed.chaibi.dev@gmail.com>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Message-ID: <20250903160119.83625-4-jihed.chaibi.dev@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Add a list of the nau8825 pin names to the binding's description to make
it self-contained and improve the user experience for board developers.
Signed-off-by: Jihed Chaibi <jihed.chaibi.dev@gmail.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Message-ID: <20250903160119.83625-3-jihed.chaibi.dev@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Add a list of the es8316 pin names to the binding's description to make
it self-contained and improve the user experience for board developers.
Signed-off-by: Jihed Chaibi <jihed.chaibi.dev@gmail.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Message-ID: <20250903160119.83625-2-jihed.chaibi.dev@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Merge series from Cezary Rojewski <cezary.rojewski@intel.com>:
This series is a direct follow up to the recent
machine-board-registration changes [1]. Initially, a number of smaller
patchsets were part of a bigger block of changes. My attempt to split
them up to make the review easier was unfortunately not successful [2].
The goal of this series is the same one as with [1] - allow for multiple
cards of the same type without workarounds or code duplications.
With the machine-board names being unique - thanks to
PLATFORM_DEVID_AUTO - platform component names shall be adjusted too so
that no misbindings happen.
In essence, majority of the changes can be summarized as: simplifying
card and dai_link initialization. Actions:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
- for the probe-board mach-context is dropped entirely. The panic [2] is
gone
[1]: https://lore.kernel.org/linux-sound/20250827142229.869139-1-cezary.rojewski@intel.com/
[2]: https://lore.kernel.org/linux-sound/20250829225532.GA400117@ax162/
Add support for lpass wsa codec macro version 2.9, which is available in
Qualcomm Glymur SoCs.
Its compatible with 2.8 w.r.t register layouts
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Message-ID: <20250902140044.54508-7-srinivas.kandagatla@oss.qualcomm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Add support for lpass codec macro version 2.9, which is available in
Qualcomm Glymur SoCs.
Its compatible with 2.8 w.r.t register layouts.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Message-ID: <20250902140044.54508-6-srinivas.kandagatla@oss.qualcomm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Document compatibles for Qualcomm Glymur SoC macro digital codecs
(VA and WSA), compatible with previous generation (SM8550 and SM8650).
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Message-ID: <20250902140044.54508-5-srinivas.kandagatla@oss.qualcomm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Add support for glymur SoC based sound card support.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Message-ID: <20250902140044.54508-4-srinivas.kandagatla@oss.qualcomm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Document the bindings for the glymur sound card which is
audioreach based architecture.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Message-ID: <20250902140044.54508-3-srinivas.kandagatla@oss.qualcomm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sound machine drivers for Qualcomm SoCs can be reused across multiple
SoCs. But user space ALSA UCM files depend on the card driver name which
should be set per board/SoC.
Allow such customization by using driver match data as sound card driver
name.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Message-ID: <20250902140044.54508-2-srinivas.kandagatla@oss.qualcomm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-18-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-17-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-16-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-15-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-14-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-13-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-12-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
To allow for multiple instances of the card, move away from static
dai_link declaration.
While at it, simplify the code as the name of the platform component
matches the name of the card's platform_device:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-11-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-10-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-9-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-8-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-7-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-6-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-5-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
To allow for multiple instances of the card, move away from static
dai_link declaration.
While at it, simplify the code as the name of the platform component
matches the name of the card's platform_device:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-4-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-3-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The name of the platform component matches the name of the card's
platform_device.
This allows for simplifying card and dai_link initialization:
- drop mach->mach_params.platform usage
- drop snd_soc_fixup_dai_links_platform_name() usage
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250902094853.1231842-2-cezary.rojewski@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Currently the error check from the call to sof_ipc4_get_sample_type
is always false because a u32 variable out_ref_type is being used
to perform the less than zero check. Fix this by using the int
variable ret to perform the check.
Fixes: c04c2e8296 ("ASoC: SOF: ipc4-topology: Add support for 8-bit formats")
Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://patch.msgid.link/20250902083213.2620124-1-colin.i.king@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Merge series from Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>:
Recent static calibration support patches have excersised new code path
exposing some missing checks and also accessing some variables which are
of LE type that are accessed directly without converting it to CPU type.
Thanks to Dan Carpenter and kernel test robot for reporting this.
It is possible that the topology parsing function
audioreach_widget_load_module_common() could return NULL or an error
pointer. Add missing NULL check so that we do not dereference it.
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Stable@vger.kernel.org
Fixes: 36ad9bf1d9 ("ASoC: qdsp6: audioreach: add topology support")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Link: https://patch.msgid.link/20250825101247.152619-2-srinivas.kandagatla@oss.qualcomm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
We have 2 similar functions, both converts date from snd_kcontrol to
snd_soc_component.
(A) snd_soc_kcontrol_component()
(B) snd_soc_dapm_kcontrol_component()
(A) is just wrapper for snd_kcontrol_chip().
(B) is for more complex conversion.
Having similar functions is confusable. So (A) will be replaced to
original snd_kcontrol_chip(). (B) will be stay, but the function
name should be xx_to_xx().
And it is defined at soc-component.h. It should be implemented at
soc-dapm.c.
This patch renames it to snd_soc_dapm_kcontrol_to_component(), and
move to soc-dapm.c.
This patch keeps compatible by using define, but old name will be replaced
on each drivers and removed from ASoC in the future.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/871poyy53x.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
dapm_kcontrol_get_value() is global function, adds snd_soc_ prefix
This patch keeps compatible by using define, but old name will be replaced
on each drivers and removed from ASoC in the future.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/87349ey546.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
snd_soc_dapm_kcontrol_dapm() is unclear naming, rename it to
snd_soc_dapm_kcontrol_to_dapm(). This is prepare for dapm cleanup.
This patch keeps compatible by using define, but old name will be replaced
on each drivers and removed from ASoC in the future.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/874ituy54c.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
snd_soc_dapm_kcontrol_widget() is unclear naming, rename it to
snd_soc_dapm_kcontrol_to_widget(). This is prepare for dapm cleanup.
This patch keeps compatible by using define, but old name will be replaced
on each drivers and removed from ASoC in the future.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/875xeay54j.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
This series improves the IPC4 probes implementation by improving the
report quality and adds support for querying the available probes
on the firmware side.
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
Up to this point we had a spoken rule what sof-client can access and what
they must not (they cannot use sdev directly), recently there were attempts
to break this rule as clients could access sdev via the sof client dev.
The series will re-arrange the client device struct to 'hide' the sdev (and
the list) from client drivers to prevent abuse.
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
SDW codecs use the global HDaudio WAKEEN/STS to detect wakes since LNL. But
the wakeen is handled in the SDW driver. We should filter the bus->codec_mask
to only include HDA and IDISP codecs to avoid clearing the wakeen status
before it is handled.