linux-block.git
8 months agoASoC: audio-graph-card2: fix index check on graph_parse_node_multi_nm()
Kuninori Morimoto [Fri, 12 Jan 2024 06:10:15 +0000 (06:10 +0000)]
ASoC: audio-graph-card2: fix index check on graph_parse_node_multi_nm()

commit d685aea5e0a8 ("ASoC: audio-graph-card2: fix off by one in
graph_parse_node_multi_nm()") uses ">=" instead of ">" for index check,
but it was wrong. The nm_idx will be increment at end of loop,
thus, ">" is correct.

while (1) {
...
=> if (*nm_idx > nm_max)
break;
...
(*nm_idx)++;
}

Without this patch, "Multi-Codec-1" sample on
${LINUX}/sound/soc/generic/audio-graph-card2-custom-sample.dtsi
will be error.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://msgid.link/r/87o7drdqux.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: SOF: icp3-dtrace: Revert "Fix wrong kfree() usage"
Peter Ujfalusi [Fri, 12 Jan 2024 13:27:49 +0000 (15:27 +0200)]
ASoC: SOF: icp3-dtrace: Revert "Fix wrong kfree() usage"

The offending patch introduces memory leak when there is no error, the
memory allocated for the temporary storage is not freed up.

As I have commented, the original code was correct and cleaner to
follow but it was not obvious from the patch that it will introduce
regression.

Fixes: 8c91ca76f448 ("ASoC: SOF: icp3-dtrace: Fix wrong kfree() usage")
Link: https://lore.kernel.org/all/aec61f67-6b4f-49e6-b458-c332983a0ad6@linux.intel.com/
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://msgid.link/r/20240112132749.28970-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: mediatek: sof-common: Add NULL check for normal_link string
AngeloGioacchino Del Regno [Thu, 11 Jan 2024 10:52:26 +0000 (11:52 +0100)]
ASoC: mediatek: sof-common: Add NULL check for normal_link string

It's not granted that all entries of struct sof_conn_stream declare
a `normal_link` (a non-SOF, direct link) string, and this is the case
for SoCs that support only SOF paths (hence do not support both direct
and SOF usecases).

For example, in the case of MT8188 there is no normal_link string in
any of the sof_conn_stream entries and there will be more drivers
doing that in the future.

To avoid possible NULL pointer KPs, add a NULL check for `normal_link`.

Fixes: 0caf1120c583 ("ASoC: mediatek: mt8195: extract SOF common code")
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://msgid.link/r/20240111105226.117603-1-angelogioacchino.delregno@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: mediatek: mt8195: Remove afe-dai component and rework codec link
AngeloGioacchino Del Regno [Wed, 10 Jan 2024 10:57:57 +0000 (11:57 +0100)]
ASoC: mediatek: mt8195: Remove afe-dai component and rework codec link

Remove the extra 'mt8195-afe-pcm-dai' component, register the DAI
drivers to the main AFE component, and rework the DAI linking between
the headset codec (RT5682/RT5682S) and the TDM interface in the probe
function to stop assigning name, relying on the of_node of the codec.
Also replace the COMP_DUMMY codec entry with a COMP_EMPTY for the
ETDM2_IN and remove it entirely from ETDM1_OUT to fix the registration
flow for this sound card.

While at it, since we also need to swap the codec init function from
ETDM2_IN to ETDM1_OUT, remove the static assignment of both `ops` and
`init` for both, as we now assign these dynamically during probe.

Fixes: 13f58267cda3 ("ASoC: soc.h: don't create dummy Component via COMP_DUMMY()")
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://msgid.link/r/20240110105757.539089-1-angelogioacchino.delregno@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: mediatek: mt8192: Check existence of dai_name before dereferencing
Nícolas F. R. A. Prado [Mon, 8 Jan 2024 20:44:58 +0000 (17:44 -0300)]
ASoC: mediatek: mt8192: Check existence of dai_name before dereferencing

Following commit 13f58267cda3 ("ASoC: soc.h: don't create dummy
Component via COMP_DUMMY()"), the dai_name field is only populated for
dummy components after the card is registered. This causes a null
pointer dereference in the mt8192-mt6359 sound card driver's probe
function when searching for a dai_name among all the card's dai links.

Verify that the dai_name is non-null before passing it to strcmp. While
at it, also check that there's at least one codec.

Reported-by: kernelci.org bot <bot@kernelci.org>
Closes: https://linux.kernelci.org/test/case/id/6582cd6d992645c680e13478/
Fixes: 13f58267cda3 ("ASoC: soc.h: don't create dummy Component via COMP_DUMMY()")
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Link: https://msgid.link/r/20240108204508.691739-1-nfraprado@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: Intel: bxt_rt298: Fix kernel ops due to COMP_DUMMY change
Peter Ujfalusi [Mon, 8 Jan 2024 09:48:42 +0000 (11:48 +0200)]
ASoC: Intel: bxt_rt298: Fix kernel ops due to COMP_DUMMY change

The change to avoid dummy components will leave the component name and
dai_name NULL which will cause NULL dereference when trying to access to
it in the machine driver when applying fixups.

Link: https://github.com/thesofproject/linux/pull/4759#issuecomment-1878641868
Fixes: 13f58267cda3 ("ASoC: soc.h: don't create dummy Component via COMP_DUMMY()")
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://msgid.link/r/20240108094842.28782-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: Intel: bxt_da7219_max98357a: Fix kernel ops due to COMP_DUMMY change
Peter Ujfalusi [Mon, 8 Jan 2024 09:48:41 +0000 (11:48 +0200)]
ASoC: Intel: bxt_da7219_max98357a: Fix kernel ops due to COMP_DUMMY change

The change to avoid dummy components will leave the component name and
dai_name NULL which will cause NULL dereference when trying to access to
it in the machine driver when applying fixups.

Link: https://github.com/thesofproject/linux/pull/4759#issuecomment-1878641868
Fixes: 13f58267cda3 ("ASoC: soc.h: don't create dummy Component via COMP_DUMMY()")
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://msgid.link/r/20240108094842.28782-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agortq9128: Fix pm runtime and TDM usage
Mark Brown [Fri, 5 Jan 2024 18:48:30 +0000 (18:48 +0000)]
rtq9128: Fix pm runtime and TDM usage

Merge series from cy_huang@richtek.com:

This patch series fix rtq9128 pm_runtime and TDM usage.

8 months agoASoC: codecs: rtq9128: Fix TDM enable and DAI format control flow
ChiYuan Huang [Fri, 29 Dec 2023 01:46:02 +0000 (09:46 +0800)]
ASoC: codecs: rtq9128: Fix TDM enable and DAI format control flow

To enable TDM mode, the current control flow limits the function
calling order should be 'set_tdm_slot->set_dai_fmt'. But not all
platform sound card like as simeple card to follow this design.
To bypass this limit, adjust the DAI format setting in runtime
'hw_param' callback.

Signed-off-by: ChiYuan Huang <cy_huang@richtek.com>
Link: https://msgid.link/r/c4c8df00d8d179b8b5b39a8521de3a85325c57e8.1703813842.git.cy_huang@richtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: codecs: rtq9128: Fix PM_RUNTIME usage
ChiYuan Huang [Fri, 29 Dec 2023 01:46:01 +0000 (09:46 +0800)]
ASoC: codecs: rtq9128: Fix PM_RUNTIME usage

If 'pm_runtime_resume_and_get' is used, must check the return value to
prevent the active count not matched problem.

Signed-off-by: ChiYuan Huang <cy_huang@richtek.com>
Link: https://msgid.link/r/bebd9e2bed9e0528a7fd9c528d785da02caf4f1a.1703813842.git.cy_huang@richtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: tas2781: Add tas2563 into driver
Shenghao Ding [Thu, 4 Jan 2024 14:57:19 +0000 (22:57 +0800)]
ASoC: tas2781: Add tas2563 into driver

Move tas2563 from tas2562 driver to tas2781 driver to unbind tas2563 from
tas2562 driver code and bind it to tas2781 driver code, because tas2563
only work in bypass-DSP mode with tas2562 driver. In order to enable DSP
mode for tas2563, it has been moved to tas2781 driver. As to the hardware
part, such as register setting and DSP firmware, all these are stored in
the binary firmware. What tas2781 drivder does is to parse the firmware
and download it to the chip, then power on the chip. So, tas2781 driver
can be resued as tas2563 driver. Only attention will be paid to downloading
corresponding firmware.

Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>
Link: https://msgid.link/r/20240104145721.1398-4-shenghao-ding@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: tas2781: Add tas2563 into header file for DSP mode
Shenghao Ding [Thu, 4 Jan 2024 14:57:18 +0000 (22:57 +0800)]
ASoC: tas2781: Add tas2563 into header file for DSP mode

Move tas2563 from tas2562 header file to tas2781 header file to unbind
tas2563 from tas2562 driver code and bind it to tas2781 driver code,
because tas2563 only work in bypass-DSP mode with tas2562 driver. In
order to enable DSP mode for tas2563, it has been moved to tas2781
driver. As to the hardware part, such as register setting and DSP
firmware, all these are stored in the binary firmware. What tas2781
drivder does is to parse the firmware and download it to the chip,
then power on the chip. So, tas2781 driver can be resued as tas2563
driver. Only attention will be paid to downloading corresponding firmware.

Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>
Link: https://msgid.link/r/20240104145721.1398-3-shenghao-ding@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: tas2562: move tas2563 from tas2562 driver to tas2781 driver
Shenghao Ding [Thu, 4 Jan 2024 14:57:17 +0000 (22:57 +0800)]
ASoC: tas2562: move tas2563 from tas2562 driver to tas2781 driver

Move tas2563 from tas2562 driver to tas2781 driver to unbind tas2563 from
tas2562 driver code and bind it to tas2781 driver code, because tas2563
only work in bypass-DSP mode with tas2562 driver. In order to enable DSP
mode for tas2563, it has been moved to tas2781 driver. As to the hardware
part, such as register setting and DSP firmware, all these are stored in
the binary firmware. What tas2781 drivder does is to parse the firmware
and download it to the chip, then power on the chip. So, tas2781 driver
can be resued as tas2563 driver. Only attention will be paid to
downloading corresponding firmware.

Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>
Link: https://msgid.link/r/20240104145721.1398-2-shenghao-ding@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: dt-bindings: move tas2563 from tas2562.yaml to tas2781.yaml
Shenghao Ding [Thu, 4 Jan 2024 14:57:16 +0000 (22:57 +0800)]
ASoC: dt-bindings: move tas2563 from tas2562.yaml to tas2781.yaml

Move tas2563 from tas2562.yaml to tas2781.yaml to unbind tas2563 from
tas2562 driver code and bind it to tas2781 driver code, because tas2563
only work in bypass-DSP mode with tas2562 driver. In order to enable DSP
mode for tas2563, it has been moved to tas2781 driver. As to the hardware
part, such as register setting and DSP firmware, all these are stored in
the binary firmware. What tas2781 drivder does is to parse the firmware
and download it to the chip, then power on the chip. So, tas2781 driver
can be resued as tas2563 driver. Only attention will be paid to
downloading corresponding firmware.

Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20240104145721.1398-1-shenghao-ding@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: pxa: sspa: Don't select SND_ARM
Duje Mihanović [Tue, 26 Dec 2023 20:00:24 +0000 (21:00 +0100)]
ASoC: pxa: sspa: Don't select SND_ARM

On ARM64 platforms, SND_ARM shouldn't be selectable, but enabling
SND_SOC_MMP_SSPA will enable SND_ARM and cause build errors if
SND_ARMAACI is enabled (which it is by default). Since the SSPA driver
doesn't depend on AACI nor PXA2XX_LIB, remove this false dependency.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202310230518.zs9Qpg3j-lkp@intel.com/
Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
Link: https://lore.kernel.org/r/20231226200025.30870-1-duje.mihanovic@skole.hr
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: rt5663: cancel the work when system suspends
Shuming Fan [Fri, 29 Dec 2023 09:29:22 +0000 (17:29 +0800)]
ASoC: rt5663: cancel the work when system suspends

This patch makes sure that the workqueue is completed before the system suspends.

Signed-off-by: Shuming Fan <shumingf@realtek.com>
Link: https://lore.kernel.org/r/20231229092922.853-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
8 months agoASoC: SOF: imx: Add SNDRV_PCM_INFO_BATCH flag
Shengjiu Wang [Wed, 27 Dec 2023 09:27:43 +0000 (17:27 +0800)]
ASoC: SOF: imx: Add SNDRV_PCM_INFO_BATCH flag

The sof imx pcm device is a device which should support
double buffering.

Found this issue with pipewire. When there is no
SNDRV_PCM_INFO_BATCH flag in driver, the pipewire will
set headroom to be zero, and because sof pcm device
don't support residue report, when the latency setting
is small, the "delay" always larger than "target" in
alsa-pcm.c, that reading next period data is not
scheduled on time.

With SNDRV_PCM_INFO_BATCH flag in driver, the pipewire
will select a smaller period size for device, then
the task of reading next period data will be scheduled
on time.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://lore.kernel.org/r/1703669263-13832-1-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: Intel: cht_bsw_rt5645: Set card.components string
Hans de Goede [Sun, 26 Nov 2023 21:40:24 +0000 (22:40 +0100)]
ASoC: Intel: cht_bsw_rt5645: Set card.components string

Set the card.components string using the new rt5645_components() helper
which returns a components string based on the DMI quirks inside the
rt5645 codec driver.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://msgid.link/r/20231126214024.300505-8-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: rt5645: Add mono speaker information to the components string
Hans de Goede [Sun, 26 Nov 2023 21:40:23 +0000 (22:40 +0100)]
ASoC: rt5645: Add mono speaker information to the components string

The GPD Win and Teclast X80 Pro both only have 1 speaker add information
about this to the components string.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://msgid.link/r/20231126214024.300505-7-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: rt5645: Add a rt5645_components() helper
Hans de Goede [Sun, 26 Nov 2023 21:40:22 +0000 (22:40 +0100)]
ASoC: rt5645: Add a rt5645_components() helper

The rt5645 codec driver uses DMI quirks to configure the DMIC data-pins,
which means that it knows which DMIC interface is used on a specific
device.

ATM we duplicate this DMI matching inside the UCM profiles to select
the right DMIC interface. Add a rt5645_components() helper which the
machine-driver can use to set the components string of the card so
that UCM can get the info from the components string.

This way we only need to add new DMI quirks in one place.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://msgid.link/r/20231126214024.300505-6-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: rt5645: Add rt5645_get_pdata() helper
Hans de Goede [Sun, 26 Nov 2023 21:40:21 +0000 (22:40 +0100)]
ASoC: rt5645: Add rt5645_get_pdata() helper

Add a rt5645_get_pdata() helper function which retreives the platform-data
and overrides it with the quirks module parameter if that is set.

This is a preparation patch for adding the rt5645_components() function.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://msgid.link/r/20231126214024.300505-5-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: rt5645: Refactor rt5645_parse_dt()
Hans de Goede [Sun, 26 Nov 2023 21:40:20 +0000 (22:40 +0100)]
ASoC: rt5645: Refactor rt5645_parse_dt()

Refactor rt5645_parse_dt(), make it take a pointer to
struct rt5645_platform_data as argument instead of passing in
the complete rt5645_priv struct.

While at it also make it void since it always succeeds.

This is a preparation patch for factoring the code to get
the platform-data out into a separate helper function.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://msgid.link/r/20231126214024.300505-4-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: rt5645: Add platform-data for Acer Switch V 10
Hans de Goede [Sun, 26 Nov 2023 21:40:19 +0000 (22:40 +0100)]
ASoC: rt5645: Add platform-data for Acer Switch V 10

The Acer Switch V 10 uses the default jack-detect mode 3, but instead of
using an analog microphone it is using a DMIC on dmic-data-pin 1,
like other models following Intel's Braswell's reference design.

Add a DMI quirk pointing to the intel_braswell_platform_data for this.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://msgid.link/r/20231126214024.300505-3-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: rt5645: Drop double EF20 entry from dmi_platform_data[]
Hans de Goede [Sun, 26 Nov 2023 21:40:18 +0000 (22:40 +0100)]
ASoC: rt5645: Drop double EF20 entry from dmi_platform_data[]

dmi_platform_data[] first contains a DMI entry matching:

   DMI_MATCH(DMI_PRODUCT_NAME, "EF20"),

and then contains an identical entry except for the match being:

   DMI_MATCH(DMI_PRODUCT_NAME, "EF20EA"),

Since these are partial (non exact) DMI matches the first match
will also match any board with "EF20EA" in their DMI product-name,
drop the second, redundant, entry.

Fixes: a4dae468cfdd ("ASoC: rt5645: Add ACPI-defined GPIO for ECS EF20 series")
Cc: Chris Chiu <chiu@endlessos.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://msgid.link/r/20231126214024.300505-2-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: qcom: add sound card support for SM8650
Mark Brown [Tue, 19 Dec 2023 16:46:16 +0000 (16:46 +0000)]
ASoC: qcom: add sound card support for SM8650

Merge series from Neil Armstrong <neil.armstrong@linaro.org>:

Document the SM8650 sound card using the SM8450 fallback
and add the SM8650 compatible to the sc8280xp sound card
driver to use the sm8650 card driver_name like SM8450 & SM8550.

9 months agoadd es8326 dt-bindings, commonize headset codec
Mark Brown [Tue, 19 Dec 2023 16:46:07 +0000 (16:46 +0000)]
add es8326 dt-bindings, commonize headset codec

Merge series from Rui Zhou <zhourui@huaqin.corp-partner.google.com>:

Add dt-bindings for es8326 and codec es8326 support.
Remove duplicate code, commonize headset codec init/exit API.
At the same time, Enable dual amp max98390 for rt5682s.

9 months agoImprove AMD ACP Vangogh audio support for Steam Deck
Mark Brown [Tue, 19 Dec 2023 16:45:59 +0000 (16:45 +0000)]
Improve AMD ACP Vangogh audio support for Steam Deck

Merge series from Cristian Ciocaltea <cristian.ciocaltea@collabora.com>:

This patch series provides several fixes and improvements to AMD ACP drivers
targeting the Vangogh platform, as found on the Valve's new Steam Deck OLED.

Although in theory the board should have been supported by both SOF and legacy
ACP drivers, as of next-20231208 the audio seems to be completely broken.

Please note this only restores the legacy support, while SOF will be handled in
a separate series.

9 months agoASoC: don't use original dummy dlc
Mark Brown [Tue, 19 Dec 2023 16:45:51 +0000 (16:45 +0000)]
ASoC: don't use original dummy dlc

Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

"Empty" dlc might be used on Platform, but "dummy" dlc is not needed
for it. [PATCH 1/5][PATCH 2/5] removes "dummy" dlc from Platform.

Now ASoC have common dummy dlc (= snd_soc_dummy_dlc).
[PATCH 3/5][PATCH 4/5] will use it instead of original dummy dlc.

Many drivers are using below macro

SND_SOC_DAILINK_DEFS(link,
     DAILINK_COMP_ARRAY(COMP_CPU(...)),
(X)      DAILINK_COMP_ARRAY(COMP_DUMMY()),
     DAILINK_COMP_ARRAY(COMP_EMPTY()));

But (X) part will create original dummy dlc.
[PATCH 5/5] will try not to create original dummy dlc, and replace
it to common dummy dlc.

9 months agoGPIO inclusion fixes to misc sound drivers
Mark Brown [Tue, 19 Dec 2023 16:45:42 +0000 (16:45 +0000)]
GPIO inclusion fixes to misc sound drivers

Merge series from Linus Walleij <linus.walleij@linaro.org>:

Mostly dropping unused headers, and a single driver rewrite.

9 months agoASoC: dt-bindings: qcom,lpass-va-macro: remove spurious contains in if statement
Neil Armstrong [Tue, 19 Dec 2023 13:23:37 +0000 (14:23 +0100)]
ASoC: dt-bindings: qcom,lpass-va-macro: remove spurious contains in if statement

Remove this spurious "contains" which causes the bindings check of
qcom,sm8450-lpass-va-macro compatible to fail with:
codec@33f0000: clocks: [[156, 57, 1], [156, 102, 1], [156, 103, 1], [156, 70, 1]] is too long
        from schema $id: http://devicetree.org/schemas/sound/qcom,lpass-va-macro.yaml#
codec@33f0000: clock-names: ['mclk', 'macro', 'dcodec', 'npl'] is too long
        from schema $id: http://devicetree.org/schemas/sound/qcom,lpass-va-macro.yaml#

Seems the double "contains" was considered as valid by the tool but broke
the entire if statements.

Fixes: f243ef746d0a ("ASoC: dt-bindings: qcom,lpass-va-macro: Add SM8650 LPASS VA")
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231219-topic-sm8x50-upstream-va-macro-bindings-fix-v1-1-ae133886f70e@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: sprd: Simplify memory allocation in sprd_platform_compr_dma_config()
Christophe JAILLET [Tue, 19 Dec 2023 04:41:19 +0000 (05:41 +0100)]
ASoC: sprd: Simplify memory allocation in sprd_platform_compr_dma_config()

'sg' is freed at the end sprd_platform_compr_dma_config() both in the
normal and in the error handling path.

There is no need to use the devm_kcalloc()/devm_kfree(), kcalloc()/kfree()
is enough.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://msgid.link/r/d16f22ae0627249a9fc658927832590cd88c544e.1702960856.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: amd: Add acp-psp mailbox interface for iram-dram fence register modification
Venkata Prasad Potturu [Tue, 19 Dec 2023 11:24:13 +0000 (16:54 +0530)]
ASoC: SOF: amd: Add acp-psp mailbox interface for iram-dram fence register modification

Add acp-psp mailbox communication interface for iram-dram size
modification to notify psp.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://msgid.link/r/20231219112416.3334928-5-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: Rename amd_bt sof_dai_type
Venkata Prasad Potturu [Tue, 19 Dec 2023 11:24:12 +0000 (16:54 +0530)]
ASoC: SOF: Rename amd_bt sof_dai_type

Rename amd_bt sof_dai_type from ACP to ACP_BT.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://msgid.link/r/20231219112416.3334928-4-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: Add i2s bt dai configuration support for AMD platforms
Venkata Prasad Potturu [Tue, 19 Dec 2023 11:24:11 +0000 (16:54 +0530)]
ASoC: SOF: Add i2s bt dai configuration support for AMD platforms

Add support for i2s bt dai configuration from topology.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://msgid.link/r/20231219112416.3334928-3-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: Refactor sof_i2s_tokens reading to update acpbt dai
Venkata Prasad Potturu [Tue, 19 Dec 2023 11:24:10 +0000 (16:54 +0530)]
ASoC: SOF: Refactor sof_i2s_tokens reading to update acpbt dai

Refactor sof_i2s_tokens reading to update config->acpbt.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://msgid.link/r/20231219112416.3334928-2-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: amd: Refactor spinlock_irq(&sdev->ipc_lock) sequence in irq_handler
Venkata Prasad Potturu [Tue, 19 Dec 2023 11:24:09 +0000 (16:54 +0530)]
ASoC: SOF: amd: Refactor spinlock_irq(&sdev->ipc_lock) sequence in irq_handler

Refactor spinlock_irq(&sdev->ipc_lock) sequence in irq_handler
to avoid race conditions for acquiring hw_semaphore.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://msgid.link/r/20231219112416.3334928-1-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: soc.h: don't create dummy Component via COMP_DUMMY()
Kuninori Morimoto [Tue, 19 Dec 2023 05:10:33 +0000 (05:10 +0000)]
ASoC: soc.h: don't create dummy Component via COMP_DUMMY()

Many ASoC drivers define CPU/Codec/Platform dai_link by below macro.

SND_SOC_DAILINK_DEFS(link,
(A)      DAILINK_COMP_ARRAY(COMP_CPU("cpu_dai")),
(B)      DAILINK_COMP_ARRAY(COMP_CODEC("codec", "dai1"),
(B) COMP_CODEC("codec", "dai2")),
(C)      DAILINK_COMP_ARRAY(COMP_EMPTY()));

In this case, this macro will be converted to like below

[o] = static struct snd_soc_dai_link_component

(A) [o] link_cpus[]      = {{ .dai_name = "cpu_dai" }};
(B) [o] link_codecs[]    = {{ .dai_name = "dai1", .name = "codec" },
{ .dai_name = "dai2", .name = "codec" }}
(C) [o] link_platforms[] = {{ }};

CPU and Codec info will be filled by COMP_CPU() / COMP_CODEC (= A,B),
and Platform will have empty data by COMP_EMPTY() (= C) in this case.

Platform empty info will be filled when driver probe()
(most of case, CPU info will be copied to use soc-generic-dmaengine-pcm).

For example in case of DPCM FE/BE, it will be like below.
Codec will be dummy Component / DAI in this case (X).

SND_SOC_DAILINK_DEFS(link,
     DAILINK_COMP_ARRAY(COMP_CPU(...)),
(X)      DAILINK_COMP_ARRAY(COMP_DUMMY()),
     DAILINK_COMP_ARRAY(COMP_EMPTY()));

(X) part will converted like below

[o] link_codecs[]    = {{ .name = "snd-soc-dummy",
  .dai_name = "snd-soc-dummy-dai", }}

Even though we already have common asoc_dummy_dlc for dummy
Component / DAI, this macro will re-create new dummy dlc.
Some drivers defines many dai_link info via SND_SOC_DAILINK_DEFS(),
this means many dummy dlc also will be re-created. This is waste of
memory.

If we can use existing common asoc_dummy_dlc at (X),
we can avoid to re-creating dummy dlc, then, we can save the memory.

At that time, we want to keep existing code as much as possible, because
too many drivers are using this macro. But because of its original style,
using common asoc_dummy_dlc from it is very difficult or impossible.

So let's change the mind. The macro is used like below

SND_SOC_DAILINK_DEFS(link,
     DAILINK_COMP_ARRAY(COMP_CPU(...)),
(x)      DAILINK_COMP_ARRAY(COMP_DUMMY()),
     DAILINK_COMP_ARRAY(COMP_EMPTY()));

static struct snd_soc_dai_link dai_links[] = {
{
.name = ...,
.stream_name = ...,
(y) SND_SOC_DAILINK_REG(link),
},

(y) part will be like below

        static struct snd_soc_dai_link dai_links[] = {
        {
                .name = ...,
                .stream_name = ...,
 ^ ...
 | .codecs = link_codecs,
(y) .num_codecs = ARRAY_SIZE(link_codecs),
 v ...
}

This patch try to use trick on COMP_DUMMY()

- #define COMP_DUMMY() { .name = "snd-soc-dummy", .dai_name = "snd-soc-dummy-dai", }
+ #define COMP_DUMMY()

By this tric, (x) part will be like below.

before
[o] link_codecs[] = {{ .name = "snd-soc-dummy", .dai_name = "snd-soc-dummy-dai", }}
after
[o] link_codecs[] = { };

This is same as below

[o] link_codecs[0];

This means it has pointer (link_codecs), but the array size is 0.
(y) part will be like below.

static struct snd_soc_dai_link dai_links[] = {
{
...
.codecs = link_codecs,
.num_codecs = 0,
...
},

This is very special settings that normal use usually not do,
but new macro do.
We can find this special settings on soc-core.c and fill it as
"dummy DAI" (= asoc_dummy_dlc). By this tric, we can avoid to re-create
dummy dlc and save the memory.

This patch add tric at COMP_DUMMY() and add snd_soc_fill_dummy_dai()
to fill dummy DAI.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://msgid.link/r/871qbi93qu.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: sof: use snd_soc_dummy_dlc
Kuninori Morimoto [Tue, 19 Dec 2023 05:10:19 +0000 (05:10 +0000)]
ASoC: sof: use snd_soc_dummy_dlc

We already have snd_soc_dummy_dlc.
Let's use it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://msgid.link/r/8734vy93r8.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: intel: hdaudio.c: use snd_soc_dummy_dlc
Kuninori Morimoto [Tue, 19 Dec 2023 05:10:09 +0000 (05:10 +0000)]
ASoC: intel: hdaudio.c: use snd_soc_dummy_dlc

We already have snd_soc_dummy_dlc.
Let's use it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://msgid.link/r/874jge93ri.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: samsung: odroid: don't need DUMMY Platform
Kuninori Morimoto [Tue, 19 Dec 2023 05:10:02 +0000 (05:10 +0000)]
ASoC: samsung: odroid: don't need DUMMY Platform

We can use SND_SOC_DAILINK_REG() with 2 parameter.
DUMMY Platform is not needed.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://msgid.link/r/875y0u93rq.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: fsl: fsl-asoc-card: don't need DUMMY Platform
Kuninori Morimoto [Tue, 19 Dec 2023 05:09:53 +0000 (05:09 +0000)]
ASoC: fsl: fsl-asoc-card: don't need DUMMY Platform

We can use SND_SOC_DAILINK_REG() with 2 parameter.
DUMMY Platform is not needed.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://msgid.link/r/877cla93ry.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp: Remove redundant ret variable
Himanshu Bhavani [Mon, 18 Dec 2023 14:32:08 +0000 (20:02 +0530)]
ASoC: amd: acp: Remove redundant ret variable

Removed Unneeded variable: "ret"

Signed-off-by: Himanshu Bhavani <himanshu.bhavani@siliconsignals.io>
Link: https://msgid.link/r/20231218143214.939885-1-himanshu.bhavani@siliconsignals.io
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: tas2781: add support for FW version 0x0503
Gergo Koteles [Thu, 14 Dec 2023 00:25:39 +0000 (01:25 +0100)]
ASoC: tas2781: add support for FW version 0x0503

Layout of FW version 0x0503 is compatible with 0x0502.
Already supported by TI's tas2781-linux-driver tree.
https://git.ti.com/cgit/tas2781-linux-drivers/tas2781-linux-driver/

Fixes: 915f5eadebd2 ("ASoC: tas2781: firmware lib")
Signed-off-by: Gergo Koteles <soyer@irl.hu>
Link: https://msgid.link/r/98d4ee4e01e834af72a1a0bea6736facf43582e0.1702513517.git.soyer@irl.hu
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,lpass-rx-macro: Add X1E80100 LPASS WSA
Krzysztof Kozlowski [Mon, 11 Dec 2023 12:31:04 +0000 (13:31 +0100)]
ASoC: dt-bindings: qcom,lpass-rx-macro: Add X1E80100 LPASS WSA

Add bindings for Qualcomm X1E80100 SoC Low Power Audio SubSystem (LPASS)
WSA macro codec, which looks like compatible with earlier SM8550.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231211123104.72963-4-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,lpass-rx-macro: Add X1E80100 LPASS VA
Krzysztof Kozlowski [Mon, 11 Dec 2023 12:31:03 +0000 (13:31 +0100)]
ASoC: dt-bindings: qcom,lpass-rx-macro: Add X1E80100 LPASS VA

Add bindings for Qualcomm X1E80100 SoC Low Power Audio SubSystem (LPASS)
VA macro codec, which looks like compatible with earlier SM8550.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231211123104.72963-3-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,lpass-rx-macro: Add X1E80100 LPASS TX
Krzysztof Kozlowski [Mon, 11 Dec 2023 12:31:02 +0000 (13:31 +0100)]
ASoC: dt-bindings: qcom,lpass-rx-macro: Add X1E80100 LPASS TX

Add bindings for Qualcomm X1E80100 SoC Low Power Audio SubSystem (LPASS)
TX macro codec, which looks like compatible with earlier SM8550.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231211123104.72963-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,lpass-rx-macro: Add X1E80100 LPASS RX
Krzysztof Kozlowski [Mon, 11 Dec 2023 12:31:01 +0000 (13:31 +0100)]
ASoC: dt-bindings: qcom,lpass-rx-macro: Add X1E80100 LPASS RX

Add bindings for Qualcomm X1E80100 SoC Low Power Audio SubSystem (LPASS)
RX macro codec, which looks like compatible with earlier SM8550.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231211123104.72963-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: qcom: Fix trivial code style issues
Krzysztof Kozlowski [Mon, 4 Dec 2023 10:00:48 +0000 (11:00 +0100)]
ASoC: qcom: Fix trivial code style issues

Fix few trivial code style issues, pointed out by checkpatch, so they do
not get copied to new code (when old code is used as template):

  WARNING: Prefer "GPL" over "GPL v2" - see commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity")
  WARNING: function definition argument 'struct platform_device *' should also have an identifier name
  ERROR: code indent should use tabs where possible
  WARNING: please, no spaces at the start of a line
  WARNING: Missing a blank line after declarations
  WARNING: unnecessary whitespace before a quoted newline

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231204100048.211800-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: soc-pcm.c: Complete the active count for components without DAIs
Chancel Liu [Mon, 4 Dec 2023 11:15:32 +0000 (19:15 +0800)]
ASoC: soc-pcm.c: Complete the active count for components without DAIs

Some components like platforms don't have DAIs. If the active count of
these components is ignored pinctrl may be wrongly selected between
default and sleep state. So need to increment or decrement the active
count for components without DAIs to avoid it.

Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
Link: https://msgid.link/r/20231204111532.3165-1-chancel.liu@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,sm8250: Add X1E80100 sound card
Krzysztof Kozlowski [Mon, 4 Dec 2023 10:01:16 +0000 (11:01 +0100)]
ASoC: dt-bindings: qcom,sm8250: Add X1E80100 sound card

Document bindings for the Qualcomm X1E80100 SoC sound card.  The
bindings are the same as for other newer Qualcomm ADSP sound cards, thus
keep them in existing qcom,sm8250.yaml file, even though Linux driver is
separate.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://msgid.link/r/20231204100116.211898-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: qcom: Add x1e80100 sound machine driver
Krzysztof Kozlowski [Mon, 4 Dec 2023 10:01:15 +0000 (11:01 +0100)]
ASoC: qcom: Add x1e80100 sound machine driver

Add sound machine driver for the soundcards on Qualcomm X1E80100 SoC,
supporting up to four channel audio playback over Soundwire bus.  The
driver is based on existing sc8280xp.c driver.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231204100116.211898-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: mediatek: mt8188-mt6359: Enable dual amp for mt8188-rt5682s
Rui Zhou [Tue, 12 Dec 2023 12:30:50 +0000 (20:30 +0800)]
ASoC: mediatek: mt8188-mt6359: Enable dual amp for mt8188-rt5682s

Enable support for dual MAX98390 amplifiers on the mt8188-rt5682s board.

Reviewed-by: Trevor Wu <trevor.wu@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Rui Zhou <zhourui@huaqin.corp-partner.google.com>
Link: https://msgid.link/r/20231212123050.4080083-5-zhourui@huaqin.corp-partner.google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: mediatek: mt8188-mt6359: add es8326 support
Rui Zhou [Tue, 12 Dec 2023 12:30:49 +0000 (20:30 +0800)]
ASoC: mediatek: mt8188-mt6359: add es8326 support

To use ES8326 as the codec, add a new sound card
named mt8186_es8326.

Reviewed-by: Trevor Wu <trevor.wu@mediatek.com>
Signed-off-by: Rui Zhou <zhourui@huaqin.corp-partner.google.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://msgid.link/r/20231212123050.4080083-4-zhourui@huaqin.corp-partner.google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: mediatek: mt8188-mt6359: commonize headset codec init/exit api
Rui Zhou [Tue, 12 Dec 2023 12:30:48 +0000 (20:30 +0800)]
ASoC: mediatek: mt8188-mt6359: commonize headset codec init/exit api

Reduce code duplication, unify the headset codec init/exit api.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Rui Zhou <zhourui@huaqin.corp-partner.google.com>
Link: https://msgid.link/r/20231212123050.4080083-3-zhourui@huaqin.corp-partner.google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: mt8188-mt6359: add es8326 support
Rui Zhou [Tue, 12 Dec 2023 12:30:47 +0000 (20:30 +0800)]
ASoC: dt-bindings: mt8188-mt6359: add es8326 support

Add compatible string "mediatek,mt8188-es8326" to support new board
with es8326 codec.

Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Rui Zhou <zhourui@huaqin.corp-partner.google.com>
Link: https://msgid.link/r/20231212123050.4080083-2-zhourui@huaqin.corp-partner.google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp: Add missing MODULE_DESCRIPTION in mach-common
Cristian Ciocaltea [Sat, 9 Dec 2023 20:32:23 +0000 (22:32 +0200)]
ASoC: amd: acp: Add missing MODULE_DESCRIPTION in mach-common

Add a MODULE_DESCRIPTION() in the generic ACP machine driver to avoid
the following warning when building with W=1:

WARNING: modpost: missing MODULE_DESCRIPTION() in sound/soc/amd/acp/snd-acp-mach.o

Fixes: d4c750f2c7d4 ("ASoC: amd: acp: Add generic machine driver support for ACP cards")
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Link: https://msgid.link/r/20231209203229.878730-6-cristian.ciocaltea@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp-config: Add missing MODULE_DESCRIPTION
Cristian Ciocaltea [Sat, 9 Dec 2023 20:32:22 +0000 (22:32 +0200)]
ASoC: amd: acp-config: Add missing MODULE_DESCRIPTION

Add the missing MODULE_DESCRIPTION() to avoid the following warning when
building with W=1:

WARNING: modpost: missing MODULE_DESCRIPTION() in sound/soc/amd/snd-acp-config.o

Fixes: f1bdd8d385a8 ("ASoC: amd: Add module to determine ACP configuration")
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Link: https://msgid.link/r/20231209203229.878730-5-cristian.ciocaltea@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: vangogh: Switch to {RUNTIME,SYSTEM_SLEEP}_PM_OPS
Cristian Ciocaltea [Sat, 9 Dec 2023 20:32:21 +0000 (22:32 +0200)]
ASoC: amd: vangogh: Switch to {RUNTIME,SYSTEM_SLEEP}_PM_OPS

Replace the old SET_{RUNTIME,SYSTEM_SLEEP}_PM_OPS() helpers with their
modern alternatives and drop the now unnecessary __maybe_unused
qualifier in the suspend and resume functions.

Additionally, make use of pm_ptr() to ensure the PM ops are dropped when
building with CONFIG_PM disabled.

Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Link: https://msgid.link/r/20231209203229.878730-4-cristian.ciocaltea@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: vangogh: Allow probing ACP PCI when SOF is disabled
Cristian Ciocaltea [Sat, 9 Dec 2023 20:32:20 +0000 (22:32 +0200)]
ASoC: amd: vangogh: Allow probing ACP PCI when SOF is disabled

Since commit e89f45edb747 ("ASoC: amd: vangogh: Add check for acp config
flags in vangogh platform"), the Vangogh ACP PCI driver could not be used
anymore for boards which happen to have a matching entry in acp-config
list.

Commit f18818eb0dbe ("ASoC: amd: vangogh: Add condition check for acp
config flag") slightly changed the behaviour to permit loading the
driver if AMD_LEGACY flag is set.  However, for AMD_SOF flag the probing
is still denied, even if SOF support is disabled in kernel
configuration.

While this helps preventing conflicts between SOF and generic ACP
drivers, there are cases where a fallback to the generic non-SOF support
would still be needed or useful, e.g. SOF firmware is not available or
doesn't work properly, SOF driver is broken or doesn't provide full
support for a particular hardware, or simply for testing/debugging the
alternative solution.  A real-life example is Steam Deck OLED, which
works with both drivers.

Prevent returning from probe() when ACP config indicates SOF support for
the current board *and* the Vangogh SOF driver is not enabled in kernel
configuration.

Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Link: https://msgid.link/r/20231209203229.878730-3-cristian.ciocaltea@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: vangogh: Drop conflicting ACPI-based probing
Cristian Ciocaltea [Sat, 9 Dec 2023 20:32:19 +0000 (22:32 +0200)]
ASoC: amd: vangogh: Drop conflicting ACPI-based probing

The Vangogh machine driver variant based on the MAX98388 amplifier, as
found on Valve's Steam Deck OLED, relies on probing via an ACPI match
table.  This worked fine until commit 197b1f7f0df1 ("ASoC: amd: Add new
dmi entries to config entry") enabled SOF support for the target machine
(i.e. Galileo product), causing the sound card to enter the deferred
probe state indefinitely:

$ cat /sys/kernel/debug/devices_deferred
AMDI8821:00 acp5x_mach: Register card (acp5x-max98388) failed

The issue is related to commit e89f45edb747 ("ASoC: amd: vangogh: Add
check for acp config flags in vangogh platform"), which tries to
mitigate potential conflicts between SOF and generic ACP Vangogh
drivers, due to sharing the PCI device IDs.

However, the solution is effective only if the machine driver is
directly probed by pci-acp5x through platform_device_register_full().

Hence, remove the conflicting ACPI based probing and rely exclusively on
DMI quirks for sound card setup.

Fixes: dba22efd0d17 ("ASoC: amd: vangogh: Add support for NAU8821/MAX98388 variant")
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Link: https://msgid.link/r/20231209203229.878730-2-cristian.ciocaltea@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: qcom: sc8280xp: Add support for SM8650
Neil Armstrong [Tue, 12 Dec 2023 08:08:20 +0000 (09:08 +0100)]
ASoC: qcom: sc8280xp: Add support for SM8650

Add compatibles for sound card on Qualcomm SM8650 boards.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231212-topic-sm8650-upstream-snd-card-v1-2-fbfc38471204@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,sm8250: document SM8650 sound card
Neil Armstrong [Tue, 12 Dec 2023 08:08:19 +0000 (09:08 +0100)]
ASoC: dt-bindings: qcom,sm8250: document SM8650 sound card

Add sound card for SM8650, which as of now looks fully compatible with
SM8450.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231212-topic-sm8650-upstream-snd-card-v1-1-fbfc38471204@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: tegra: tegra20_ac97: Convert to use GPIO descriptors
Linus Walleij [Thu, 14 Dec 2023 13:15:45 +0000 (14:15 +0100)]
ASoC: tegra: tegra20_ac97: Convert to use GPIO descriptors

The Tegra20 AC97 driver is using the legacy GPIO APIs in
<linux/of_gpio.h> and <linux/gpio.h> to obtain GPIOs for reset
and sync.

Convert it over and fix the polarity error on the RESET line
in the process: this reset line is clearly active low. Just
fix the one in-tree device tree site using it at the same
time.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://msgid.link/r/20231214-gpio-descriptors-sound-misc-v1-4-e3004176bd8b@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: simple-card-utils: Drop GPIO include
Linus Walleij [Thu, 14 Dec 2023 13:15:44 +0000 (14:15 +0100)]
ASoC: simple-card-utils: Drop GPIO include

The generic card utilities are including the legacy GPIO header
<linux/gpio.h> but not using any symbols from it. Drop the
include from all files.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://msgid.link/r/20231214-gpio-descriptors-sound-misc-v1-3-e3004176bd8b@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: qcom: sc7180: Drop GPIO include
Linus Walleij [Thu, 14 Dec 2023 13:15:43 +0000 (14:15 +0100)]
ASoC: qcom: sc7180: Drop GPIO include

This driver is including the legacy GPIO header <linux/gpio.h>
but not using any symbols from it. Drop the include.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://msgid.link/r/20231214-gpio-descriptors-sound-misc-v1-2-e3004176bd8b@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: hisilicon: Drop GPIO include
Linus Walleij [Thu, 14 Dec 2023 13:15:42 +0000 (14:15 +0100)]
ASoC: hisilicon: Drop GPIO include

This driver is including the legacy GPIO header <linux/gpio.h>
but not using any symbols from it. Drop the include.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://msgid.link/r/20231214-gpio-descriptors-sound-misc-v1-1-e3004176bd8b@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp: add pm ops support for renoir platform.
Syed Saba Kareem [Fri, 15 Dec 2023 13:02:42 +0000 (18:32 +0530)]
ASoC: amd: acp: add pm ops support for renoir platform.

Add pm ops for renoir platform.

Signed-off-by: Syed Saba Kareem <Syed.SabaKareem@amd.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://msgid.link/r/20231215130300.1247475-1-Syed.SabaKareem@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: query FW config to reload library
Mark Brown [Fri, 15 Dec 2023 17:56:07 +0000 (17:56 +0000)]
ASoC: SOF: query FW config to reload library

Merge series from Bard Liao <yung-chuan.liao@linux.intel.com>:

We should query FW config if context save is supported, and no need
to reload FW if hda->booted_from_imr and ipc4_data->fw_context_save
are true.

9 months agoASoC: fsl_mqs: remove duplicated including
Wang Jinchao [Fri, 15 Dec 2023 09:13:51 +0000 (17:13 +0800)]
ASoC: fsl_mqs: remove duplicated including

rm the second \#include <linux/of.h>

Signed-off-by: Wang Jinchao <wangjinchao@xfusion.com>
Link: https://msgid.link/r/202312151713+0800-wangjinchao@xfusion.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: amd: remove duplicated including
Wang Jinchao [Fri, 15 Dec 2023 09:20:00 +0000 (17:20 +0800)]
ASoC: SOF: amd: remove duplicated including

remove the second \#include "../sof-audio.h"

Signed-off-by: Wang Jinchao <wangjinchao@xfusion.com>
Link: https://msgid.link/r/202312151719+0800-wangjinchao@xfusion.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: Intel: check fw_context_save for library reload
Rander Wang [Fri, 15 Dec 2023 08:31:02 +0000 (16:31 +0800)]
ASoC: SOF: Intel: check fw_context_save for library reload

If fw_context_save is defined by fw, driver can skip library reload on
d3 exit or reload library.

Signed-off-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://msgid.link/r/20231215083102.3064200-4-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: IPC4: query fw_context_save feature from fw
Rander Wang [Fri, 15 Dec 2023 08:31:01 +0000 (16:31 +0800)]
ASoC: SOF: IPC4: query fw_context_save feature from fw

Driver queries fw_context_save feature when fw is ready and can skip
library reload with this feature since library is saved in persistent
memory. The default value of fw_context_save is true unless fw reports
false.

Signed-off-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://msgid.link/r/20231215083102.3064200-3-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: IPC4: synchronize fw_config_params with fw definitions
Rander Wang [Fri, 15 Dec 2023 08:31:00 +0000 (16:31 +0800)]
ASoC: SOF: IPC4: synchronize fw_config_params with fw definitions

Update fw_config_params in driver.

Signed-off-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://msgid.link/r/20231215083102.3064200-2-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: audio-graph-port: Document new DAI link flags playback-only/captur...
Daniel Baluta [Tue, 28 Nov 2023 08:11:19 +0000 (10:11 +0200)]
ASoC: dt-bindings: audio-graph-port: Document new DAI link flags playback-only/capture-only

Document new playback-only and capture-only flags which can be used
when dai link can only support just one direction: playback or capture
but not both.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Link: https://msgid.link/r/20231128081119.106360-3-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: audio-graph-card2: Introduce playback-only/capture-only DAI link flags
Daniel Baluta [Tue, 28 Nov 2023 08:11:18 +0000 (10:11 +0200)]
ASoC: audio-graph-card2: Introduce playback-only/capture-only DAI link flags

We need this to support MICFIL PDM found on i.MX8MP where the DAI link
supports only capture direction.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Link: https://msgid.link/r/20231128081119.106360-2-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: mediatek: mt7986: silence error in case of -EPROBE_DEFER
Daniel Golle [Tue, 12 Dec 2023 23:10:07 +0000 (23:10 +0000)]
ASoC: mediatek: mt7986: silence error in case of -EPROBE_DEFER

If probe is defered no error should be printed. Use dev_err_probe() to
have it muted.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Reviewed-by: Maso Huang <maso.huang@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://msgid.link/r/b941a404d97c01ef3e30c49925927b9a7dafeb19.1702422544.git.daniel@makrotopia.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: cs42l43: Add missing statics for hp_ilimit functions
Charles Keepax [Tue, 12 Dec 2023 10:41:49 +0000 (10:41 +0000)]
ASoC: cs42l43: Add missing statics for hp_ilimit functions

Fixes: bbbc18d8c27c ("ASoC: cs42l43: Allow HP amp to cool off after current limit")
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://msgid.link/r/20231212104149.2388753-1-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: cs42l43: Allow HP amp to cool off after current limit
Charles Keepax [Mon, 11 Dec 2023 16:00:19 +0000 (16:00 +0000)]
ASoC: cs42l43: Allow HP amp to cool off after current limit

Whilst occasional current limiting is fine, constant current limiting
should be avoided. Add a back off system that will disable the
headphone amp, if a lot of current limiting is seen in a short window
of time.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://msgid.link/r/20231211160019.2034442-2-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: codec: wsa884x: make use of new mute_unmute_on_trigger flag
Neil Armstrong [Mon, 11 Dec 2023 11:40:57 +0000 (12:40 +0100)]
ASoC: codec: wsa884x: make use of new mute_unmute_on_trigger flag

This fix is based on commit [1] fixing click and pop sounds during
SoundWire port start because PA is left unmuted.

making use of new mute_unmute_on_trigger flag and removing unmute
at PA setup, removes the Click/Pop issue at SoundWire enable.

[1] 805ce81826c8 ("ASoC: codecs: wsa883x: make use of new mute_unmute_on_trigger flag")

Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231211-topic-sm8x50-upstream-wsa884x-fix-plop-v1-1-0dc630a19172@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,lpass-wsa-macro: Add SM8650 LPASS WSA
Krzysztof Kozlowski [Wed, 29 Nov 2023 11:30:14 +0000 (12:30 +0100)]
ASoC: dt-bindings: qcom,lpass-wsa-macro: Add SM8650 LPASS WSA

Add bindings for Qualcomm SM8650 Low Power Audio SubSystem (LPASS) WSA
macro codec, which looks like compatible with earlier SM8550.

Cc: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Link: https://msgid.link/r/20231129113014.38837-4-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,lpass-va-macro: Add SM8650 LPASS VA
Krzysztof Kozlowski [Wed, 29 Nov 2023 11:30:13 +0000 (12:30 +0100)]
ASoC: dt-bindings: qcom,lpass-va-macro: Add SM8650 LPASS VA

Add bindings for Qualcomm SM8650 Low Power Audio SubSystem (LPASS) VA
macro codec, which looks like compatible with earlier SM8550.

Cc: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231129113014.38837-3-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,lpass-tx-macro: Add SM8650 LPASS TX
Krzysztof Kozlowski [Wed, 29 Nov 2023 11:30:12 +0000 (12:30 +0100)]
ASoC: dt-bindings: qcom,lpass-tx-macro: Add SM8650 LPASS TX

Add bindings for Qualcomm SM8650 Low Power Audio SubSystem (LPASS) TX
macro codec, which looks like compatible with earlier SM8550.

Cc: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Link: https://msgid.link/r/20231129113014.38837-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: dt-bindings: qcom,lpass-rx-macro: Add SM8650 LPASS RX
Krzysztof Kozlowski [Wed, 29 Nov 2023 11:30:11 +0000 (12:30 +0100)]
ASoC: dt-bindings: qcom,lpass-rx-macro: Add SM8650 LPASS RX

Add bindings for Qualcomm SM8650 Low Power Audio SubSystem (LPASS) RX
macro codec, which looks like compatible with earlier SM8550.

Cc: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Link: https://msgid.link/r/20231129113014.38837-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: qcom: audioreach: Add 4 channel support
Krzysztof Kozlowski [Thu, 30 Nov 2023 18:07:58 +0000 (19:07 +0100)]
ASoC: qcom: audioreach: Add 4 channel support

Add support four channel streams.  Map channel 3 and 4 to left/right
surround ("quad(side)" from ffmpeg standard channel list) to match what
is in qdsp6/q6dsp-common.c driver.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231130180758.212172-3-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: qcom: audioreach: drop duplicate channel defines
Krzysztof Kozlowski [Thu, 30 Nov 2023 18:07:57 +0000 (19:07 +0100)]
ASoC: qcom: audioreach: drop duplicate channel defines

q6apm.h header already defines channel mapping values, so drop
duplicated devices from audioreach.h.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231130180758.212172-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: qcom: audioreach: Commonize setting channel mappings
Krzysztof Kozlowski [Thu, 30 Nov 2023 18:07:56 +0000 (19:07 +0100)]
ASoC: qcom: audioreach: Commonize setting channel mappings

Move code assigning channel mapping values to a common helper function.
This simplifies three out of four cases, with the last case using
incompatible type (uint16_t array instead of uint8_t array).

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20231130180758.212172-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: wm1250-ev1: Fix uninitialized ret
Linus Walleij [Sat, 9 Dec 2023 22:01:27 +0000 (23:01 +0100)]
ASoC: wm1250-ev1: Fix uninitialized ret

The GPIO descriptor conversion patch left an unitialized ret behind
by mistake, fix it by getting rid of the variable altogether.

Fixes: 10a366f36e2a ("ASoC: wm1250-ev1: Convert to GPIO descriptors")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202312090953.DiUo3mue-lkp@intel.com/
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20231209-descriptors-sound-wlf-v1-1-5b885ce43ae1@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoGPIO descriptor cleanup for some Wolfson codecs
Mark Brown [Sat, 9 Dec 2023 00:16:04 +0000 (00:16 +0000)]
GPIO descriptor cleanup for some Wolfson codecs

Merge series from Linus Walleij <linus.walleij@linaro.org>:

This converts the remaining Wolfson ASoC codecs to
use GPIO descriptors.

These Wolfson codecs are mostly used with different
Samsung S3C (especially Cragganmore 6410) board files,
so the in-tree users are fixed up in the process.

9 months agoASoC: wm8996: Convert to GPIO descriptors
Linus Walleij [Fri, 8 Dec 2023 10:09:29 +0000 (11:09 +0100)]
ASoC: wm8996: Convert to GPIO descriptors

This converts the WM8996 codec to use GPIO descriptors, an a similar
way to WM5100.

The driver is instantiating a GPIO chip named wm8996, and we get
rid of the base address for the GPIO chip from the platform data and
just use dynamic numbering. Move base and ngpio into the static
gpio_chip template.

Fix up the only in-tree user which is the Cragganmore 6410 module.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20231208-descriptors-sound-wlf-v1-5-c4dab6f521ec@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: wm5100: Convert to GPIO descriptors
Linus Walleij [Fri, 8 Dec 2023 10:09:28 +0000 (11:09 +0100)]
ASoC: wm5100: Convert to GPIO descriptors

This converts the WM5100 codec to use GPIO descriptors, a pretty
straight-forward conversion with the following peculiarities:

- The driver is instantiating a GPIO chip named wm5100, and the
  headphone polarity detection GPIO is lifted from there. We add
  this to the GPIO descriptor table as well, and we can then get
  rid of also the base address for the GPIO chip from the
  platform data and just use dynamic numbering.

- Fix up the only in-tree user which is the Cragganmore 6410
  module.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20231208-descriptors-sound-wlf-v1-4-c4dab6f521ec@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: wm2200: Convert to GPIO descriptors
Linus Walleij [Fri, 8 Dec 2023 10:09:27 +0000 (11:09 +0100)]
ASoC: wm2200: Convert to GPIO descriptors

This converts the WM2200 codec to use GPIO descriptors.
This is a pretty straight-forward conversion, and it also
switches over the single in-tree user in the S3C
Cragganmore module for S3C 6410.

This coded does not seem to get selected or be selectable
through Kconfig, I had to hack another soundcard Kconfig
entry to select it for compile tests.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20231208-descriptors-sound-wlf-v1-3-c4dab6f521ec@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: wm1250-ev1: Convert to GPIO descriptors
Linus Walleij [Fri, 8 Dec 2023 10:09:26 +0000 (11:09 +0100)]
ASoC: wm1250-ev1: Convert to GPIO descriptors

This converts the WM1250-EV1 codec to use GPIO descriptors.
It turns out that the platform data was only used to pass some
global GPIO numbers from a board file, so we get rid of this
and also switch over the single in-tree user in the S3C
Cragganmore module for S3C 6410.

The driver obtains two GPIO lines named OSR and master and just
pull them low, we leave this behaviour as it was.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20231208-descriptors-sound-wlf-v1-2-c4dab6f521ec@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: wm0010: Convert to GPIO descriptors
Linus Walleij [Fri, 8 Dec 2023 10:09:25 +0000 (11:09 +0100)]
ASoC: wm0010: Convert to GPIO descriptors

This converts the WM0010 codec to use GPIO descriptors.
It's a pretty straight-forward conversion also switching over
the single in-tree user in the S3C Cragganmore module
for S3C 6410.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20231208-descriptors-sound-wlf-v1-1-c4dab6f521ec@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: audio-graph-card2: fix off by one in graph_parse_node_multi_nm()
Dan Carpenter [Mon, 4 Dec 2023 12:42:07 +0000 (15:42 +0300)]
ASoC: audio-graph-card2: fix off by one in graph_parse_node_multi_nm()

The > comparison should be >= to avoid writing one element beyond the end
of the dai_link->ch_maps[] array.  The dai_link->ch_maps[] array is
allocated in graph_parse_node_multi() and it has "nm_max" elements.

Fixes: e2de6808df4a ("ASoC: audio-graph-card2: add CPU:Codec = N:M support")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/1032216f-902f-48f9-aa49-9d5ece8e87f2@moroto.mountain
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp: modify config flag read logic
Vijendar Mukunda [Thu, 7 Dec 2023 04:55:01 +0000 (10:25 +0530)]
ASoC: amd: acp: modify config flag read logic

Modify acp config flag read logic from ACP v7.0 onwards.
Instead of reading from DMI table match entry, read the
config flag value from BIOS ACPI table.
This will remove updating DMI table when new platform support
is added.
Use FLAG_AMD_LEGACY_ONLY_DMIC flag as default one.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20231207045505.1519151-1-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: SOF: Intel: hda-codec: Delay the codec device registration
Peter Ujfalusi [Thu, 7 Dec 2023 09:54:25 +0000 (11:54 +0200)]
ASoC: SOF: Intel: hda-codec: Delay the codec device registration

The current code flow is:
1. snd_hdac_device_register()
2. set parameters needed by the hdac driver
3. request_codec_module()
   the hdac driver is probed at this point

During boot the codec drivers are not loaded when the hdac device is
registered, it is going to be probed later when loading the codec module,
which point the parameters are set.

On module remove/insert
rmmod snd_sof_pci_intel_tgl
modprobe snd_sof_pci_intel_tgl

The codec module remains loaded and the driver will be probed when the
hdac device is created right away, before the parameters for the driver
has been configured:

1. snd_hdac_device_register()
   the hdac driver is probed at this point
2. set parameters needed by the hdac driver
3. request_codec_module()
   will be a NOP as the module is already loaded

Move the snd_hdac_device_register() later, to be done right before
requesting the codec module to make sure that the parameters are all set
before the device is created:

1. set parameters needed by the hdac driver
2. snd_hdac_device_register()
3. request_codec_module()

This way at the hdac driver probe all parameters will be set in all cases.

Link: https://github.com/thesofproject/linux/issues/4731
Fixes: a0575b4add21 ("ASoC: hdac_hda: Conditionally register dais for HDMI and Analog")
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20231207095425.19597-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp: Set bclk as source to set pll for rt5682s codec
Venkata Prasad Potturu [Wed, 6 Dec 2023 11:06:18 +0000 (16:36 +0530)]
ASoC: amd: acp: Set bclk as source to set pll for rt5682s codec

Some platforms doesn't have reference mclk pin to codec,
so set bclk as a clk source for rt5682s codec pll in tdm mode.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://lore.kernel.org/r/20231206110620.1695591-7-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp: Set bclk as source to set pll for rt5682s codec
Venkata Prasad Potturu [Wed, 6 Dec 2023 11:06:18 +0000 (16:36 +0530)]
ASoC: amd: acp: Set bclk as source to set pll for rt5682s codec

Some platforms doesn't have reference mclk pin to codec,
so set bclk as a clk source for rt5682s codec pll in tdm mode.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://lore.kernel.org/r/20231206110620.1695591-7-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp: Enable dpcm_capture for MAX98388 codec
Venkata Prasad Potturu [Wed, 6 Dec 2023 11:06:17 +0000 (16:36 +0530)]
ASoC: amd: acp: Enable dpcm_capture for MAX98388 codec

Enable dpcm_capture for amplifier codec MAX98388
for reference stream capture in smart amplifier case.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://lore.kernel.org/r/20231206110620.1695591-6-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
9 months agoASoC: amd: acp: Add i2s bt support for nau8821-max card
Venkata Prasad Potturu [Wed, 6 Dec 2023 11:06:16 +0000 (16:36 +0530)]
ASoC: amd: acp: Add i2s bt support for nau8821-max card

Add i2s bt support for sof-nau8821-max sound card.

Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://lore.kernel.org/r/20231206110620.1695591-5-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>