536 Commits

Author SHA1 Message Date
Ritu Chaudhary
4204eccc7b
ASoC: tegra: Add support for S24_LE audio format
Add support for S24_LE format for all internal and IO AHUB
modules, except for ASRC (which is already supported).

The data flow happens as mentioned below:

- ADMAIF picks 24-bit valid data and converts it to 32-bit before
  sending to internal AHUB modules. This makes the driver change
  simpler for internal AHUB modules.
- IO modules CIF converts the 32-bit data to 24-bit before sending it
  to the external world.
- To maintain consistency across modules, conversions between 24-bit
  and 32-bit occur either at ADMAIF or at the IO modules CIF.

This feature has been thoroughly tested and verified with all internal
AHUB modules on the Jetson AGX Orin Platform, as well as with the
external RT5640 codec.

Signed-off-by: Ritu Chaudhary <rituc@nvidia.com>
Signed-off-by: Sheetal <sheetal@nvidia.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Link: https://patch.msgid.link/20241022041330.3421765-1-sheetal@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-10-22 15:06:29 +01:00
Takashi Iwai
1a529af6f8 ASoC: Updates for v6.12
This is a very large set of changes, almost all in drivers rather than
 the core.  Even with the addition of several quite large drivers the
 overall diffstat is negative thanks to the removal of some old Intel
 board support which has been obsoleted by the AVS driver, helped a bit
 by some factoring out into helpers (especially around the Soundwire
 machine drivers for x86).
 
 Highlights include:
 
  - More simplifications and cleanups throughout the subsystem from
    Morimoto-san.
  - Extensive cleanups and refactoring of the Soundwire drivers to make
    better use of helpers.
  - Removal of Intel machine support obsoleted by the AVS driver.
  - Lots of DT schema conversions.
  - Machine support for many AMD and Intel x86 platforms.
  - Support for AMD ACP 7.1, Mediatek MT6367 and MT8365, Realtek RTL1320
    SoundWire and rev C, and Texas Instruments TAS2563
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmbko34ACgkQJNaLcl1U
 h9CQiwf9HseC6VkNQ0ISVZ2UsSf8K/HsHsdBGl7/CRr0SEvS3pszYMkKPbhRggsF
 aQ4nfitXeN7Vo6S0tNXx63wzjpMPkjrHdV0XY+WJxfuCaeb3DHFEJ4uvlgv53aoh
 M+wz1aldvKWjDPwhkzcJEaneQ36U7OlUSBsbFHR82dBDguEm+h29tAxTuLlwL5Zb
 M8NuSfbh0cfY9Kk1cPGsqaHD8wjUeg6/Q5qnbDg2kAm0aF1fAxfyFKRX6Z5s9ekd
 LeU3EIdRbI8UlHv7Afl0UKDYtYqL1ubwmjDb45HnsE4FmNEmDEbf8c1adRumZAjm
 Js9yzswiaaHAvotCaEstFC6HYUL+oQ==
 =jugn
 -----END PGP SIGNATURE-----

Merge tag 'asoc-v6.12' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next

ASoC: Updates for v6.12

This is a very large set of changes, almost all in drivers rather than
the core.  Even with the addition of several quite large drivers the
overall diffstat is negative thanks to the removal of some old Intel
board support which has been obsoleted by the AVS driver, helped a bit
by some factoring out into helpers (especially around the Soundwire
machine drivers for x86).

Highlights include:

 - More simplifications and cleanups throughout the subsystem from
   Morimoto-san.
 - Extensive cleanups and refactoring of the Soundwire drivers to make
   better use of helpers.
 - Removal of Intel machine support obsoleted by the AVS driver.
 - Lots of DT schema conversions.
 - Machine support for many AMD and Intel x86 platforms.
 - Support for AMD ACP 7.1, Mediatek MT6367 and MT8365, Realtek RTL1320
   SoundWire and rev C, and Texas Instruments TAS2563
2024-09-14 09:09:59 +02:00
Uwe Kleine-König
130af75b5c
ASoC: Switch back to struct platform_driver::remove()
After commit 0edb555a65d1 ("platform: Make platform_driver::remove()
return void") .remove() is (again) the right callback to implement for
platform drivers.

Convert all drivers below sound/soc to use .remove(), with the eventual
goal to drop struct platform_driver::remove_new(). As .remove() and
.remove_new() have the same prototypes, conversion is done by just
changing the structure member name in the driver initializer.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://patch.msgid.link/20240909151230.909818-2-u.kleine-koenig@baylibre.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-09-09 18:26:49 +01:00
Mohan Kumar
6781b962d9
ASoC: tegra: Fix CBB error during probe()
When Tegra audio drivers are built as part of the kernel image,
TIMEOUT_ERR is observed from cbb-fabric. Following is seen on
Jetson AGX Orin during boot:

[    8.012482] **************************************
[    8.017423] CPU:0, Error:cbb-fabric, Errmon:2
[    8.021922]    Error Code            : TIMEOUT_ERR
[    8.025966]    Overflow              : Multiple TIMEOUT_ERR
[    8.030644]
[    8.032175]    Error Code            : TIMEOUT_ERR
[    8.036217]    MASTER_ID             : CCPLEX
[    8.039722]    Address               : 0x290a0a8
[    8.043318]    Cache                 : 0x1 -- Bufferable
[    8.047630]    Protection            : 0x2 -- Unprivileged, Non-Secure, Data Access
[    8.054628]    Access_Type           : Write

[    8.106130] WARNING: CPU: 0 PID: 124 at drivers/soc/tegra/cbb/tegra234-cbb.c:604 tegra234_cbb_isr+0x134/0x178

[    8.240602] Call trace:
[    8.243126]  tegra234_cbb_isr+0x134/0x178
[    8.247261]  __handle_irq_event_percpu+0x60/0x238
[    8.252132]  handle_irq_event+0x54/0xb8

These errors happen when MVC device, which is a child of AHUB
device, tries to access its device registers. This happens as
part of call tegra210_mvc_reset_vol_settings() in MVC device
probe().

The root cause of this problem is, the child MVC device gets
probed before the AHUB clock gets enabled. The AHUB clock is
enabled in runtime PM resume of parent AHUB device and due to
the wrong sequence of pm_runtime_enable() in AHUB driver,
runtime PM resume doesn't happen for AHUB device when MVC makes
register access.

Fix this by calling pm_runtime_enable() for parent AHUB device
before of_platform_populate() in AHUB driver. This ensures that
clock becomes available when MVC makes register access.

Fixes: 16e1bcc2caf4 ("ASoC: tegra: Add Tegra210 based AHUB driver")
Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Signed-off-by: Ritu Chaudhary <rituc@nvidia.com>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://patch.msgid.link/20240823144342.4123814-3-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-08-23 23:07:55 +01:00
Mark Brown
9aafe1dd03
ALSA/ASoC: use snd_pcm_direction_name()
Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

Many drivers are selecting strings "playback" / "capture" by own
handling, but we have snd_pcm_direction_name() function for it.
This patch use it.

One note is that snd_pcm_direction_name() will select
"Playback" and "Capture", instead of "playback" / "capture".
Almost all drivers are using it as dev_dbg() or dev_err()
so no problem. But some other drivers are using it as other
purpose. It might be issue (?). For example ASoC debugfs dir name
will be changed by this patch.
2024-08-01 20:15:22 +01:00
Kuninori Morimoto
d6db65bc62
ASoC: tegra: use snd_pcm_direction_name()
We already have snd_pcm_direction_name(). Let's use it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/87ikwnk510.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-08-01 14:54:52 +01:00
Rob Herring (Arm)
a1c8929b0e
ASoC: Use of_property_present()
Use of_property_present() to test for property presence rather than
of_get_property(). This is part of a larger effort to remove callers
of of_get_property() and similar functions. of_get_property() leaks
the DT property data pointer which is a problem for dynamically
allocated nodes which may be freed.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20240731191312.1710417-19-robh@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-08-01 12:51:44 +01:00
Arnd Bergmann
83340b855d
ASoC: tegra: select CONFIG_SND_SIMPLE_CARD_UTILS
This I2S client driver now uses functions exported from a helper module
but fails to link when the helper is disabled:

ERROR: modpost: "simple_util_parse_convert" [sound/soc/tegra/snd-soc-tegra210-i2s.ko] undefined!
ERROR: modpost: "simple_util_get_sample_fmt" [sound/soc/tegra/snd-soc-tegra210-i2s.ko] undefined!

Add a Kconfig select line to ensure it's always turned on here.

Fixes: 2502f8dd8c30 ("ASoC: tegra: I2S client convert formats handling")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Link: https://patch.msgid.link/20240719074831.3253995-1-arnd@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-07-22 13:04:50 +01:00
Mohan Kumar
2502f8dd8c
ASoC: tegra: I2S client convert formats handling
The AHUB HW modules are interconnected with CIF which are capable of
supporting Channel and Sample bit format conversion. Due to this, the
I2S Client can have different Channel and Sample bit from the hw_params()
and this config is passed from CIF port of I2S DT node which can help to
perform this conversion.

For e.g. HFP usecase consists of BT SCO with 1ch and 8k audio data
which needs to be converted and mixed with external codec playback and
capture path which is of 2ch and 48k format.

For HFP Playback:
  The path includes mono to stereo and 8k to 48k conversion
    _ _ _ _       _ _ _          _ _ _        _ _ _ _ _       _ _ _ _ _ _
   |       |1ch  |      | 1ch   |     |2ch   | SFC     | 2ch |           |
   |BT SCO |---->| I2Sx |------>| CIF |----->| 8k->48k |---->| Codec I2Sy|
   |_ _ _ _|     |_ _ __|client |_ _ _|audio |_ _ _ _ _|     |_ _ _ _ _ _|

For HFP Capture:
  The path includes stereo to mono and 48k to 8k conversion
    _ _ _ _ _ _       _ _ _ _ _        _ _ _         _ _ _ _       _ _ _ _
   |           | 2ch | SFC     | 2ch  |     | 1ch   |       | 1ch |       |
   | codec I2Sy|---->| 48k->8k |----->| CIF |------>| I2Sx  |---->| BT SCO|
   |_ _ _ _ _ _|     |_ _ _ _ _| audio|_ _ _|client |_ _ _ _|     |_ _ _ _|

For above two path, I2S client channel uses existing DT binding to pass
channels and format conversion in I2Sx CIF Port.

Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://msgid.link/r/20240527125608.2461300-3-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-05-27 13:59:49 +01:00
Takashi Iwai
51a50d6ad7
ASoC: tegra: Use *-y instead of *-objs in Makefile
*-objs suffix is reserved rather for (user-space) host programs while
usually *-y suffix is used for kernel drivers (although *-objs works
for that purpose for now).

Let's correct the old usages of *-objs in Makefiles.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20240507155540.24815-30-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-05-08 11:39:34 +09:00
Krzysztof Kozlowski
3beb985abb
ASoC: tegra: Use snd_soc_substream_to_rtd() for accessing private_data
Do not open-code snd_soc_substream_to_rtd().

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20240430-asoc-snd-substream-clean-v1-2-6f8a8902b479@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-05-06 23:59:47 +09:00
Sameer Pujar
2e93a29b48
ASoC: tegra: Fix DSPK 16-bit playback
DSPK configuration is wrong for 16-bit playback and this happens because
the client config is always fixed at 24-bit in hw_params(). Fix this by
updating the client config to 16-bit for the respective playback.

Fixes: 327ef6470266 ("ASoC: tegra: Add Tegra186 based DSPK driver")
Cc: stable@vger.kernel.org
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://msgid.link/r/20240405104306.551036-1-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-04-08 13:38:46 +01:00
Linus Walleij
26e91f61d6
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>
2023-12-18 14:03:32 +00:00
Christophe JAILLET
8df735701a
ASoC: tegra: convert not to use dma_request_slave_channel()
dma_request_slave_channel() is deprecated. dma_request_chan() should
be used directly instead.

Switch to the preferred function and update the error handling accordingly.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/b78685e4103f12931ddb09c1654bc6b04b640868.1699724240.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-11-13 01:26:12 +00:00
Krzysztof Kozlowski
f82eb06a40
ASoC: tegra: machine: Handle component name prefix
Use snd_soc_dapm_widget_name_cmp() helper when comparing widget names,
to include also the component's name prefix.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231023095428.166563-18-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-10-26 12:15:54 +01:00
Uwe Kleine-König
393df6f321
ASoC: simple-card-utils: Make simple_util_remove() return void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code.  However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

simple_util_remove() returned zero unconditionally. Make it return void
instead and convert all users to struct platform_device::remove_new().

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Link: https://lore.kernel.org/r/20231013221945.1489203-13-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-10-23 13:29:45 +01:00
Nathan Chancellor
41cb1126be
ASoC: tegra: Fix -Wuninitialized in tegra210_amx_platform_probe()
Clang warns (or errors with CONFIG_WERROR=y):

  sound/soc/tegra/tegra210_amx.c:553:10: error: variable 'soc_data' is uninitialized when used here [-Werror,-Wuninitialized]
    553 |                                             soc_data->regmap_conf);
        |                                             ^~~~~~~~

A refactoring removed the initialization of this variable but its use
was not updated. Use the soc_data value in the amx variable to resolve
the warning and remove the soc_data variable, as it is now entirely
unused.

Closes: https://github.com/ClangBuiltLinux/linux/issues/1943
Fixes: 9958d85968ed ("ASoC: Use device_get_match_data()")
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20231011-asoc-tegra-fix-uninit-soc_data-v1-1-0ef0ab44cf48@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-10-12 13:04:55 +01:00
Rob Herring
9958d85968
ASoC: Use device_get_match_data()
Use preferred device_get_match_data() instead of of_match_device() to
get the driver match data. With this, adjust the includes to explicitly
include the correct headers.

Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231006-dt-asoc-header-cleanups-v3-5-13a4f0f7fee6@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-10-09 13:13:59 +01:00
Rob Herring
340d79a14d
ASoC: Explicitly include correct DT includes
The DT of_device.h and of_platform.h date back to the separate
of_platform_bus_type before it was merged into the regular platform bus.
As part of that merge prepping Arm DT support 13 years ago, they
"temporarily" include each other. They also include platform_device.h
and of.h. As a result, there's a pretty much random mix of those include
files used throughout the tree. In order to detangle these headers and
replace the implicit includes with struct declarations, users need to
explicitly include the correct includes.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev> # for at91
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231006-dt-asoc-header-cleanups-v3-1-13a4f0f7fee6@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-10-09 13:13:56 +01:00
Kuninori Morimoto
436f4c706c
ASoC: tegra: convert not to use asoc_xxx()
ASoC is now unified asoc_xxx() into snd_soc_xxx().
This patch convert asoc_xxx() to snd_soc_xxx().

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87msxsqni9.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-09-25 14:16:30 +02:00
Sameer Pujar
e765886249
ASoC: tegra: Fix redundant PLLA and PLLA_OUT0 updates
Tegra audio graph card has many DAI links which connects internal
AHUB modules and external audio codecs. Since these are DPCM links,
hw_params() call in the machine driver happens for each connected
BE link and PLLA is updated every time. This is not really needed
for all links as only I/O link DAIs derive respective clocks from
PLLA_OUT0 and thus from PLLA. Hence add checks to limit the clock
updates to DAIs over I/O links.

This found to be fixing a DMIC clock discrepancy which is suspected
to happen because of back to back quick PLLA and PLLA_OUT0 rate
updates. This was observed on Jetson TX2 platform where DMIC clock
ended up with unexpected value.

Fixes: 202e2f774543 ("ASoC: tegra: Add audio graph based card driver")
Cc: stable@vger.kernel.org
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1694098945-32760-3-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-09-11 01:23:51 +01:00
Takashi Iwai
d81c203e61 ASoC: Fixes that got left after v6.4
These were some changes in my v6.4 branch that never got sent as fixes,
 none of them super urgent thankfully.
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmTstNgACgkQJNaLcl1U
 h9Cdpgf/QobBZAA/QCr1o9+ghrqdGwkgYtwJixJPDvb8rv4eaU892CHtyIBLd0Li
 bfhxDKyDIKkqomy/8ssjU2lg08aqX+2wgJxdsL/ni5lDJEa4YHSjTO1OwBL68w9F
 5KL83dgdlzr91tHhwwJQ3DSBJolh37shAe+KiYicVHDEP+AP+3q559lBiT9hs+hB
 eVe4IQ4mnJbHNRX+xmx/arrLZru+nPBKTJulkGtOnmqO0ZscwMAIqEiAor7yY9bG
 lJjyt7N7oglRRngX/PVcHq+VpTPwPGWJ7K2qnrTJtnpVt+vD+4qpZSMbIwBAoApY
 l8zWTjlrfFhMBiZOpyz62XrgQ8/Mhw==
 =WIkh
 -----END PGP SIGNATURE-----

Merge tag 'asoc-fix-v6.5-merge-window' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes that got left after v6.4

These were some changes in my v6.4 branch that never got sent as fixes,
none of them super urgent thankfully.
2023-08-28 16:56:54 +02:00
Kuninori Morimoto
516ee7009f
ASoC: tegra: merge DAI call back functions into ops
ALSA SoC merges DAI call backs into .ops.
This patch merge these into one.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/874jl9b0sl.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-08-14 13:10:18 +01:00
Yangtao Li
976201dd5f
ASoC: tegra: tegra20_ac97: Use devm_platform_get_and_ioremap_resource()
Convert platform_get_resource(), devm_ioremap_resource() to a single
call to devm_platform_get_and_ioremap_resource(), as this is exactly
what this function does.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20230711034846.69437-5-frank.li@vivo.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-07-17 06:15:56 +01:00
Sheetal
6dfe70be0b
ASoC: tegra: Fix ADX byte map
Byte mask for channel-1 of stream-1 is not getting enabled and this
causes failures during ADX use cases. This happens because the byte
map value 0 matches the byte map array and put() callback returns
without enabling the corresponding bits in the byte mask.

ADX supports 4 output streams and each stream can have a maximum of
16 channels. Each byte in the input frame is uniquely mapped to a
byte in one of these 4 outputs. This mapping is done with the help of
byte map array via user space control setting. The byte map array
size in the driver is 16 and each array element is of size 4 bytes.
This corresponds to 64 byte map values.

Each byte in the byte map array can have any value between 0 to 255
to enable the corresponding bits in the byte mask. The value 256 is
used as a way to disable the byte map. However the byte map array
element cannot store this value. The put() callback disables the byte
mask for 256 value and byte map value is reset to 0 for this case.
This causes problems during subsequent runs since put() callback,
for value of 0, just returns without enabling the byte mask. In short,
the problem is coming because 0 and 256 control values are stored as
0 in the byte map array.

Right now fix the put() callback by actually looking at the byte mask
array state to identify if any change is needed and update the fields
accordingly. The get() callback needs an update as well to return the
correct control value that user has set before. Note that when user
set 256, the value is stored as 0 and byte mask is disabled. So byte
mask state is used to either return 256 or the value from byte map
array.

Given above, this looks bit complicated and all this happens because
the byte map array is tightly packed and cannot actually store the 256
value. Right now the priority is to fix the existing failure and a TODO
item is put to improve this logic.

Fixes: 3c97881b8c8a ("ASoC: tegra: Fix kcontrol put callback in ADX")
Cc: stable@vger.kernel.org
Signed-off-by: Sheetal <sheetal@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1688015537-31682-3-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-06-29 11:40:27 +01:00
Sheetal
49bd7b0814
ASoC: tegra: Fix AMX byte map
Byte mask for channel-1 of stream-1 is not getting enabled and this
causes failures during AMX use cases. This happens because the byte
map value 0 matches the byte map array and put() callback returns
without enabling the corresponding bits in the byte mask.

AMX supports 4 input streams and each stream can take a maximum of
16 channels. Each byte in the output frame is uniquely mapped to a
byte in one of these 4 inputs. This mapping is done with the help of
byte map array via user space control setting. The byte map array
size in the driver is 16 and each array element is of size 4 bytes.
This corresponds to 64 byte map values.

Each byte in the byte map array can have any value between 0 to 255
to enable the corresponding bits in the byte mask. The value 256 is
used as a way to disable the byte map. However the byte map array
element cannot store this value. The put() callback disables the byte
mask for 256 value and byte map value is reset to 0 for this case.
This causes problems during subsequent runs since put() callback,
for value of 0, just returns without enabling the byte mask. In short,
the problem is coming because 0 and 256 control values are stored as
0 in the byte map array.

Right now fix the put() callback by actually looking at the byte mask
array state to identify if any change is needed and update the fields
accordingly. The get() callback needs an update as well to return the
correct control value that user has set before. Note that when user
sets 256, the value is stored as 0 and byte mask is disabled. So byte
mask state is used to either return 256 or the value from byte map
array.

Given above, this looks bit complicated and all this happens because
the byte map array is tightly packed and cannot actually store the 256
value. Right now the priority is to fix the existing failure and a TODO
item is put to improve this logic.

Fixes: 8db78ace1ba8 ("ASoC: tegra: Fix kcontrol put callback in AMX")
Cc: stable@vger.kernel.org
Signed-off-by: Sheetal <sheetal@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1688015537-31682-2-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-06-29 11:40:26 +01:00
Sheetal
d900d9a435
ASoC: tegra: Fix SFC conversion for few rates
Sample rate conversions for rates greater than 48kHz are found to be
failing. It means x->y conversions fail when either x or y is greater
than 48kHz.

This happens because, tegra210_sfc_rate_to_idx() returns incorrect
index for rates greater than 48kHz. This actually depends on the
tegra210_sfc_rates[] array and it is not in sync with frequency
values of SFC TX/RX register. To be precise, 64kHz entry is missing
in above array defined in the driver. Due to this wrong index is
returned and this results in incorrect programming of coefficients.

To fix this, align the tegra210_sfc_rates[] array with SFC register
specification and thus add 64kHz entry to it. Also, the coefficient
table is updated to reflect that none of the conversions are supported
for 64kHz.

Fixes: b2f74ec53a6c ("ASoC: tegra: Add Tegra210 based SFC driver")
Cc: stable@vger.kernel.org
Signed-off-by: Sheetal <sheetal@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/Message-Id: <1687433656-7892-2-git-send-email-spujar@nvidia.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-06-24 01:57:16 +01:00
Sameer Pujar
f47d43283a
ASoC: tegra: Remove stale comments in AHUB
Remove stale comments in AHUB driver which is related to DAPM
widgets and routes. This is misleading otherwise.

Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/Message-Id: <1687433656-7892-7-git-send-email-spujar@nvidia.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-06-22 18:02:05 +01:00
Sameer Pujar
2cc41db71a
ASoC: tegra: Use normal system sleep for ASRC
Align with other AHUB module drivers and use normal system
sleep for ASRC as well.

Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/Message-Id: <1687433656-7892-6-git-send-email-spujar@nvidia.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-06-22 18:02:04 +01:00
Mark Brown
1a32b4b9a6
ASoC: Merge fixes due to dependencies
So we can apply the tlv320aic3xxx DT conversion.
2023-06-16 14:55:20 +01:00
Jon Hunter
f9fd804aa0
ASoC: tegra: Fix Master Volume Control
Commit 3ed2b549b39f ("ALSA: pcm: fix wait_time calculations") corrected
the PCM wait_time calculations and in doing so reduced the calculated
wait_time. This exposed an issue with the Tegra Master Volume Control
(MVC) device where the reduced wait_time caused the MVC to fail. For now
fix this by setting the default wait_time for Tegra to be 500ms.

Fixes: 3ed2b549b39f ("ALSA: pcm: fix wait_time calculations")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20230613093453.13927-1-jonathanh@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-06-13 12:10:56 +01:00
Christophe JAILLET
41a343cd6b
ASoC: tegra: Simplify code around clk_get_rate() handling
clk_get_rate() returns an unsigned long, so there is no point in storing it
in a long, and test for negative values.

So, turn 'parent_rate' into an unsigned long, simplify the sanity check,
the error message and the return value, in case of error (i.e. 0).

Doing so also turns 'i' and 'valid_rates' into unsigned long, but it is
fine and harmless.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/53f928290f08f50ff43031e17fe1d88443c2c441.1686202022.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-06-08 11:36:27 +01:00
Claudiu Beznea
2f3092e77f
ASoC: do not include pm_runtime.h if not used
Do not include pm_runtime.h header in files where APIs exported by
pm_runtime.h are not used.

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com> # for omap-mcbsp-st.c
Link: https://lore.kernel.org/r/20230517094903.2895238-2-claudiu.beznea@microchip.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-05-23 13:55:55 +01:00
Min-Hua Chen
35f8a9d87c
ASoC: tegra: tegra210_adx: fix snd_pcm_format_t type
use snd_pcm_format_t instead of unsigned int to fix
the following sparse warnings:

sound/soc/tegra/tegra210_adx.c:125:14: sparse: warning: restricted snd_pcm_format_t degrades to integer
sound/soc/tegra/tegra210_adx.c:128:14: sparse: warning: restricted snd_pcm_format_t degrades to integer
sound/soc/tegra/tegra210_adx.c:131:14: sparse: warning: restricted snd_pcm_format_t degrades to integer

Signed-off-by: Min-Hua Chen <minhuadotchen@gmail.com
Link: https://lore.kernel.org/r/20230516223700.185569-1-minhuadotchen@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org
2023-05-17 10:37:43 +09:00
Zihao Wang
194f869230
ASoC: tegra20_ac97: Add missing unwind goto in tegra20_ac97_platform_probe()
Smatch Warns:
	sound/soc/tegra/tegra20_ac97.c:321 tegra20_ac97_platform_probe()
	warn: missing unwind goto?

The goto will set the "soc_ac97_ops" and "soc_ac97_bus" operations to
NULL.  But they are already NULL at this point so it is a no-op.
However, just for consistency, change the direct return to a goto.  No
functional change.

Signed-off-by: Zihao Wang <u202012060@hust.edu.cn>
Reviewed-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/r/20230404084622.1202-1-u202012060@hust.edu.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-04-04 12:46:42 +01:00
Jiapeng Chong
59385ed41c
ASoC: tegra: remove unneeded semicolon
./sound/soc/tegra/tegra_asoc_machine.c:206:3-4: Unneeded semicolon.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=4583
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230322014330.97079-1-jiapeng.chong@linux.alibaba.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:39 +00:00
Mark Brown
4af574f58f
ALSA/ASoC: Convert to platform remove callback
Merge series from Uwe Kleine-König <u.kleine-koenig@pengutronix.de>:

Hello,

this series adapts the platform drivers below sound/ to use the .remove_new()
callback. Compared to the traditional .remove() callback .remove_new() returns
no value. This is a good thing because the driver core doesn't (and cannot)
cope for errors during remove. The only effect of a non-zero return value in
.remove() is that the driver core emits a warning. The device is removed anyhow
and an early return from .remove() usually yields a resource leak.

By changing the remove callback to return void driver authors cannot
reasonably assume any more that there is some kind of cleanup later.

The first two patches simplify a driver each to return zero unconditionally,
and then all drivers are trivially converted to .remove_new().

There are nearly no interdependencies in this patch set---only 1 <- 11 and
2 <- 16. So even if some individual problems are found (I don't expect that),
the other patches can (and from my POV should) still be applied.

Best regards
Uwe

Uwe Kleine-König (173):
  ALSA: sh: aica: Drop if blocks with always false condition
  ASoC: amd: acp: rembrandt: Drop if blocks with always false condition
  ALSA: pxa2xx: Convert to platform remove callback returning void
  ALSA: atmel: ac97: Convert to platform remove callback returning void
  ALSA: mts64: Convert to platform remove callback returning void
  ALSA: portman2x4: Convert to platform remove callback returning void
  ALSA: mips/hal2: Convert to platform remove callback returning void
  ALSA: mips/sgio2audio: Convert to platform remove callback returning
    void
  ALSA: hda/tegra: Convert to platform remove callback returning void
  ALSA: ppc/powermac: Convert to platform remove callback returning void
  ALSA: sh: aica: Convert to platform remove callback returning void
  ALSA: sh_dac_audio: Convert to platform remove callback returning void
  ASoC: adi: axi-i2s: Convert to platform remove callback returning void
  ASoC: adi: axi-spdif: Convert to platform remove callback returning
    void
  ASoC: amd: acp-pcm-dma: Convert to platform remove callback returning
    void
  ASoC: amd: acp: rembrandt: Convert to platform remove callback
    returning void
  ASoC: amd: acp: renoir: Convert to platform remove callback returning
    void
  ASoC: amd: ps: Convert to platform remove callback returning void
  ASoC: amd: raven: acp3x-pcm-dma: Convert to platform remove callback
    returning void
  ASoC: amd: raven: acp3x-pdm-dma: Convert to platform remove callback
    returning void
  ASoC: amd: vangogh: acp5x-pcm-dma: Convert to platform remove callback
    returning void
  ASoC: amd: yc: acp6x-pdm-dma: Convert to platform remove callback
    returning void
  ASoC: apple: mca: Convert to platform remove callback returning void
  ASoC: atmel: atmel-i2s: Convert to platform remove callback returning
    void
  ASoC: atmel: atmel_wm8904: Convert to platform remove callback
    returning void
  ASoC: atmel: mchp-i2s-mcc: Convert to platform remove callback
    returning void
  ASoC: atmel: mchp-pdmc: Convert to platform remove callback returning
    void
  ASoC: atmel: mchp-spdifrx: Convert to platform remove callback
    returning void
  ASoC: atmel: mchp-spdiftx: Convert to platform remove callback
    returning void
  ASoC: atmel: mikroe-proto: Convert to platform remove callback
    returning void
  ASoC: atmel: sam9g20_wm8731: Convert to platform remove callback
    returning void
  ASoC: atmel: sam9x5_wm8731: Convert to platform remove callback
    returning void
  ASoC: atmel: tse850-pcm5142: Convert to platform remove callback
    returning void
  ASoC: au1x: ac97c: Convert to platform remove callback returning void
  ASoC: au1x: i2sc: Convert to platform remove callback returning void
  ASoC: au1x: psc-ac97: Convert to platform remove callback returning
    void
  ASoC: au1x: psc-i2s: Convert to platform remove callback returning
    void
  ASoC: bcm: bcm63xx-i2s-whistler: Convert to platform remove callback
    returning void
  ASoC: bcm: cygnus-ssp: Convert to platform remove callback returning
    void
  ASoC: cirrus: edb93xx: Convert to platform remove callback returning
    void
  ASoC: cirrus: ep93xx-i2s: Convert to platform remove callback
    returning void
  ASoC: codecs: cs47l15: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l24: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l35: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l85: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l90: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l92: Convert to platform remove callback returning
    void
  ASoC: codecs: inno_rk3036: Convert to platform remove callback
    returning void
  ASoC: codecs: lpass-rx-macro: Convert to platform remove callback
    returning void
  ASoC: codecs: lpass-tx-macro: Convert to platform remove callback
    returning void
  ASoC: codecs: lpass-va-macro: Convert to platform remove callback
    returning void
  ASoC: codecs: lpass-wsa-macro: Convert to platform remove callback
    returning void
  ASoC: codecs: msm8916-wcd-analog: Convert to platform remove callback
    returning void
  ASoC: codecs: msm8916-wcd-digital: Convert to platform remove callback
    returning void
  ASoC: codecs: rk817_codec: Convert to platform remove callback
    returning void
  ASoC: codecs: wcd938x: Convert to platform remove callback returning
    void
  ASoC: codecs: wm5102: Convert to platform remove callback returning
    void
  ASoC: codecs: wm5110: Convert to platform remove callback returning
    void
  ASoC: codecs: wm8994: Convert to platform remove callback returning
    void
  ASoC: codecs: wm8997: Convert to platform remove callback returning
    void
  ASoC: codecs: wm8998: Convert to platform remove callback returning
    void
  ASoC: dwc: dwc-i2s: Convert to platform remove callback returning void
  ASoC: fsl: eukrea-tlv320: Convert to platform remove callback
    returning void
  ASoC: fsl: fsl_asrc: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_aud2htx: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_audmix: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_dma: Convert to platform remove callback returning void
  ASoC: fsl: fsl_easrc: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_esai: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_mqs: Convert to platform remove callback returning void
  ASoC: fsl: fsl_rpmsg: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_sai: Convert to platform remove callback returning void
  ASoC: fsl: fsl_spdif: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_ssi: Convert to platform remove callback returning void
  ASoC: fsl: fsl_xcvr: Convert to platform remove callback returning
    void
  ASoC: fsl: imx-audmux: Convert to platform remove callback returning
    void
  ASoC: fsl: imx-pcm-rpmsg: Convert to platform remove callback
    returning void
  ASoC: fsl: imx-sgtl5000: Convert to platform remove callback returning
    void
  ASoC: fsl: mpc5200_psc_ac97: Convert to platform remove callback
    returning void
  ASoC: fsl: mpc5200_psc_i2s: Convert to platform remove callback
    returning void
  ASoC: fsl: mpc8610_hpcd: Convert to platform remove callback returning
    void
  ASoC: fsl: p1022_ds: Convert to platform remove callback returning
    void
  ASoC: fsl: p1022_rdk: Convert to platform remove callback returning
    void
  ASoC: fsl: pcm030-audio-fabric: Convert to platform remove callback
    returning void
  ASoC: generic: test-component: Convert to platform remove callback
    returning void
  ASoC: img: img-i2s-in: Convert to platform remove callback returning
    void
  ASoC: img: img-i2s-out: Convert to platform remove callback returning
    void
  ASoC: img: img-parallel-out: Convert to platform remove callback
    returning void
  ASoC: img: img-spdif-in: Convert to platform remove callback returning
    void
  ASoC: img: img-spdif-out: Convert to platform remove callback
    returning void
  ASoC: img: pistachio-internal-dac: Convert to platform remove callback
    returning void
  ASoC: Intel: sst-mfld-platform-pcm: Convert to platform remove
    callback returning void
  ASoC: Intel: sst: Convert to platform remove callback returning void
  ASoC: Intel: bytcht_es8316: Convert to platform remove callback
    returning void
  ASoC: Intel: bytcr_rt5640: Convert to platform remove callback
    returning void
  ASoC: Intel: boards: bytcr_rt5651: Convert to platform remove callback
    returning void
  ASoC: Intel: bytcr_wm5102: Convert to platform remove callback
    returning void
  ASoC: Intel: cht_bsw_max98090_ti: Convert to platform remove callback
    returning void
  ASoC: Intel: sof_es8336: Convert to platform remove callback returning
    void
  ASoC: Intel: sof_pcm512x: Convert to platform remove callback
    returning void
  ASoC: Intel: sof_sdw: Convert to platform remove callback returning
    void
  ASoC: Intel: sof_wm8804: Convert to platform remove callback returning
    void
  ASoC: Intel: catpt: Convert to platform remove callback returning void
  ASoC: Intel: skl-ssp-clk: Convert to platform remove callback
    returning void
  ASoC: kirkwood: kirkwood-i2s: Convert to platform remove callback
    returning void
  ASoC: mediatek: mtk-btcvsd: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt2701-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt6797-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8173-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8183-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8188-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8192-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8195-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: meson: aiu: Convert to platform remove callback returning void
  ASoC: mxs: mxs-sgtl5000: Convert to platform remove callback returning
    void
  ASoC: pxa: mmp-sspa: Convert to platform remove callback returning
    void
  ASoC: pxa: pxa2xx-ac97: Convert to platform remove callback returning
    void
  ASoC: qcom: qdsp6: Convert to platform remove callback returning void
  ASoC: rockchip: rockchip_i2s: Convert to platform remove callback
    returning void
  ASoC: rockchip: rockchip_i2s_tdm: Convert to platform remove callback
    returning void
  ASoC: rockchip: rockchip_pdm: Convert to platform remove callback
    returning void
  ASoC: rockchip: rockchip_rt5645: Convert to platform remove callback
    returning void
  ASoC: rockchip: rockchip_spdif: Convert to platform remove callback
    returning void
  ASoC: samsung: arndale: Convert to platform remove callback returning
    void
  ASoC: samsung: i2s: Convert to platform remove callback returning void
  ASoC: samsung: odroid: Convert to platform remove callback returning
    void
  ASoC: samsung: pcm: Convert to platform remove callback returning void
  ASoC: samsung: snow: Convert to platform remove callback returning
    void
  ASoC: samsung: spdif: Convert to platform remove callback returning
    void
  ASoC: sh: fsi: Convert to platform remove callback returning void
  ASoC: sh: hac: Convert to platform remove callback returning void
  ASoC: sh: rcar: Convert to platform remove callback returning void
  ASoC: sh: rz-ssi: Convert to platform remove callback returning void
  ASoC: sh: siu_dai: Convert to platform remove callback returning void
  ASoC: sprd: sprd-mcdt: Convert to platform remove callback returning
    void
  ASoC: stm: stm32_adfsdm: Convert to platform remove callback returning
    void
  ASoC: stm: stm32_i2s: Convert to platform remove callback returning
    void
  ASoC: stm: stm32_sai_sub: Convert to platform remove callback
    returning void
  ASoC: stm: stm32_spdifrx: Convert to platform remove callback
    returning void
  ASoC: sunxi: sun4i-codec: Convert to platform remove callback
    returning void
  ASoC: sunxi: sun4i-i2s: Convert to platform remove callback returning
    void
  ASoC: sunxi: sun4i-spdif: Convert to platform remove callback
    returning void
  ASoC: sunxi: sun50i-dmic: Convert to platform remove callback
    returning void
  ASoC: sunxi: sun8i-codec: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra186_asrc: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra186_dspk: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra20_ac97: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra20_i2s: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_admaif: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_adx: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_ahub: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_amx: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_dmic: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_i2s: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_mixer: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_mvc: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_ope: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_sfc: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra30_ahub: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra30_i2s: Convert to platform remove callback
    returning void
  ASoC: ti: ams-delta: Convert to platform remove callback returning
    void
  ASoC: ti: davinci-i2s: Convert to platform remove callback returning
    void
  ASoC: ti: davinci-mcasp: Convert to platform remove callback returning
    void
  ASoC: ti: omap-hdmi: Convert to platform remove callback returning
    void
  ASoC: ti: omap-mcbsp: Convert to platform remove callback returning
    void
  ASoC: uniphier: evea: Convert to platform remove callback returning
    void
  ASoC: ux500: mop500: Convert to platform remove callback returning
    void
  ASoC: ux500: ux500_msp_dai: Convert to platform remove callback
    returning void
  ASoC: xilinx: xlnx_formatter_pcm: Convert to platform remove callback
    returning void
  ASoC: xilinx: xlnx_spdif: Convert to platform remove callback
    returning void
  ASoC: xtensa: xtfpga-i2s: Convert to platform remove callback
    returning void
  ALSA: sparc/cs4231: Convert to platform remove callback returning void
  ALSA: sparc/dbri: Convert to platform remove callback returning void

 sound/arm/pxa2xx-ac97.c                      |  6 ++----
 sound/atmel/ac97c.c                          |  6 ++----
 sound/drivers/mts64.c                        |  6 ++----
 sound/drivers/portman2x4.c                   |  6 ++----
 sound/mips/hal2.c                            |  5 ++---
 sound/mips/sgio2audio.c                      |  5 ++---
 sound/pci/hda/hda_tegra.c                    |  6 ++----
 sound/ppc/powermac.c                         |  5 ++---
 sound/sh/aica.c                              |  7 ++-----
 sound/sh/sh_dac_audio.c                      |  5 ++---
 sound/soc/adi/axi-i2s.c                      |  6 ++----
 sound/soc/adi/axi-spdif.c                    |  6 ++----
 sound/soc/amd/acp-pcm-dma.c                  |  6 ++----
 sound/soc/amd/acp/acp-rembrandt.c            | 13 +++----------
 sound/soc/amd/acp/acp-renoir.c               |  5 ++---
 sound/soc/amd/ps/ps-pdm-dma.c                |  5 ++---
 sound/soc/amd/raven/acp3x-pcm-dma.c          |  5 ++---
 sound/soc/amd/renoir/acp3x-pdm-dma.c         |  5 ++---
 sound/soc/amd/vangogh/acp5x-pcm-dma.c        |  5 ++---
 sound/soc/amd/yc/acp6x-pdm-dma.c             |  5 ++---
 sound/soc/apple/mca.c                        |  5 ++---
 sound/soc/atmel/atmel-i2s.c                  |  6 ++----
 sound/soc/atmel/atmel_wm8904.c               |  6 ++----
 sound/soc/atmel/mchp-i2s-mcc.c               |  6 ++----
 sound/soc/atmel/mchp-pdmc.c                  |  6 ++----
 sound/soc/atmel/mchp-spdifrx.c               |  6 ++----
 sound/soc/atmel/mchp-spdiftx.c               |  6 ++----
 sound/soc/atmel/mikroe-proto.c               |  6 ++----
 sound/soc/atmel/sam9g20_wm8731.c             |  6 ++----
 sound/soc/atmel/sam9x5_wm8731.c              |  6 ++----
 sound/soc/atmel/tse850-pcm5142.c             |  6 ++----
 sound/soc/au1x/ac97c.c                       |  6 ++----
 sound/soc/au1x/i2sc.c                        |  6 ++----
 sound/soc/au1x/psc-ac97.c                    |  6 ++----
 sound/soc/au1x/psc-i2s.c                     |  6 ++----
 sound/soc/bcm/bcm63xx-i2s-whistler.c         |  5 ++---
 sound/soc/bcm/cygnus-ssp.c                   |  6 ++----
 sound/soc/cirrus/edb93xx.c                   |  6 ++----
 sound/soc/cirrus/ep93xx-i2s.c                |  5 ++---
 sound/soc/codecs/cs47l15.c                   |  6 ++----
 sound/soc/codecs/cs47l24.c                   |  6 ++----
 sound/soc/codecs/cs47l35.c                   |  6 ++----
 sound/soc/codecs/cs47l85.c                   |  6 ++----
 sound/soc/codecs/cs47l90.c                   |  6 ++----
 sound/soc/codecs/cs47l92.c                   |  6 ++----
 sound/soc/codecs/inno_rk3036.c               |  6 ++----
 sound/soc/codecs/lpass-rx-macro.c            |  6 ++----
 sound/soc/codecs/lpass-tx-macro.c            |  6 ++----
 sound/soc/codecs/lpass-va-macro.c            |  6 ++----
 sound/soc/codecs/lpass-wsa-macro.c           |  6 ++----
 sound/soc/codecs/msm8916-wcd-analog.c        |  6 ++----
 sound/soc/codecs/msm8916-wcd-digital.c       |  6 ++----
 sound/soc/codecs/rk817_codec.c               |  6 ++----
 sound/soc/codecs/wcd938x.c                   |  6 ++----
 sound/soc/codecs/wm5102.c                    |  6 ++----
 sound/soc/codecs/wm5110.c                    |  6 ++----
 sound/soc/codecs/wm8994.c                    |  6 ++----
 sound/soc/codecs/wm8997.c                    |  6 ++----
 sound/soc/codecs/wm8998.c                    |  6 ++----
 sound/soc/dwc/dwc-i2s.c                      |  5 ++---
 sound/soc/fsl/eukrea-tlv320.c                |  6 ++----
 sound/soc/fsl/fsl_asrc.c                     |  6 ++----
 sound/soc/fsl/fsl_aud2htx.c                  |  6 ++----
 sound/soc/fsl/fsl_audmix.c                   |  6 ++----
 sound/soc/fsl/fsl_dma.c                      |  6 ++----
 sound/soc/fsl/fsl_easrc.c                    |  6 ++----
 sound/soc/fsl/fsl_esai.c                     |  6 ++----
 sound/soc/fsl/fsl_mqs.c                      |  5 ++---
 sound/soc/fsl/fsl_rpmsg.c                    |  6 ++----
 sound/soc/fsl/fsl_sai.c                      |  6 ++----
 sound/soc/fsl/fsl_spdif.c                    |  6 ++----
 sound/soc/fsl/fsl_ssi.c                      |  6 ++----
 sound/soc/fsl/fsl_xcvr.c                     |  5 ++---
 sound/soc/fsl/imx-audmux.c                   |  6 ++----
 sound/soc/fsl/imx-pcm-rpmsg.c                |  6 ++----
 sound/soc/fsl/imx-sgtl5000.c                 |  6 ++----
 sound/soc/fsl/mpc5200_psc_ac97.c             |  5 ++---
 sound/soc/fsl/mpc5200_psc_i2s.c              |  5 ++---
 sound/soc/fsl/mpc8610_hpcd.c                 |  6 ++----
 sound/soc/fsl/p1022_ds.c                     |  6 ++----
 sound/soc/fsl/p1022_rdk.c                    |  6 ++----
 sound/soc/fsl/pcm030-audio-fabric.c          |  6 ++----
 sound/soc/generic/test-component.c           |  6 ++----
 sound/soc/img/img-i2s-in.c                   |  6 ++----
 sound/soc/img/img-i2s-out.c                  |  6 ++----
 sound/soc/img/img-parallel-out.c             |  6 ++----
 sound/soc/img/img-spdif-in.c                 |  6 ++----
 sound/soc/img/img-spdif-out.c                |  6 ++----
 sound/soc/img/pistachio-internal-dac.c       |  6 ++----
 sound/soc/intel/atom/sst-mfld-platform-pcm.c |  5 ++---
 sound/soc/intel/atom/sst/sst_acpi.c          |  5 ++---
 sound/soc/intel/boards/bytcht_es8316.c       |  5 ++---
 sound/soc/intel/boards/bytcr_rt5640.c        |  5 ++---
 sound/soc/intel/boards/bytcr_rt5651.c        |  5 ++---
 sound/soc/intel/boards/bytcr_wm5102.c        |  5 ++---
 sound/soc/intel/boards/cht_bsw_max98090_ti.c |  6 ++----
 sound/soc/intel/boards/sof_es8336.c          |  6 ++----
 sound/soc/intel/boards/sof_pcm512x.c         |  6 ++----
 sound/soc/intel/boards/sof_sdw.c             |  6 ++----
 sound/soc/intel/boards/sof_wm8804.c          |  5 ++---
 sound/soc/intel/catpt/device.c               |  6 ++----
 sound/soc/intel/skylake/skl-ssp-clk.c        |  6 ++----
 sound/soc/kirkwood/kirkwood-i2s.c            |  6 ++----
 sound/soc/mediatek/common/mtk-btcvsd.c       |  5 ++---
 sound/soc/mediatek/mt2701/mt2701-afe-pcm.c   |  6 ++----
 sound/soc/mediatek/mt6797/mt6797-afe-pcm.c   |  6 ++----
 sound/soc/mediatek/mt8173/mt8173-afe-pcm.c   |  5 ++---
 sound/soc/mediatek/mt8183/mt8183-afe-pcm.c   |  6 ++----
 sound/soc/mediatek/mt8188/mt8188-afe-pcm.c   |  6 ++----
 sound/soc/mediatek/mt8192/mt8192-afe-pcm.c   |  5 ++---
 sound/soc/mediatek/mt8195/mt8195-afe-pcm.c   |  5 ++---
 sound/soc/meson/aiu.c                        |  6 ++----
 sound/soc/mxs/mxs-sgtl5000.c                 |  6 ++----
 sound/soc/pxa/mmp-sspa.c                     |  7 +++----
 sound/soc/pxa/pxa2xx-ac97.c                  |  5 ++---
 sound/soc/qcom/qdsp6/q6routing.c             |  6 ++----
 sound/soc/rockchip/rockchip_i2s.c            |  6 ++----
 sound/soc/rockchip/rockchip_i2s_tdm.c        |  6 ++----
 sound/soc/rockchip/rockchip_pdm.c            |  6 ++----
 sound/soc/rockchip/rockchip_rt5645.c         |  6 ++----
 sound/soc/rockchip/rockchip_spdif.c          |  6 ++----
 sound/soc/samsung/arndale.c                  |  5 ++---
 sound/soc/samsung/i2s.c                      |  8 +++-----
 sound/soc/samsung/odroid.c                   |  6 ++----
 sound/soc/samsung/pcm.c                      |  6 ++----
 sound/soc/samsung/snow.c                     |  6 ++----
 sound/soc/samsung/spdif.c                    |  6 ++----
 sound/soc/sh/fsi.c                           |  6 ++----
 sound/soc/sh/hac.c                           |  5 ++---
 sound/soc/sh/rcar/core.c                     |  6 ++----
 sound/soc/sh/rz-ssi.c                        |  6 ++----
 sound/soc/sh/siu_dai.c                       |  5 ++---
 sound/soc/sprd/sprd-mcdt.c                   |  6 ++----
 sound/soc/stm/stm32_adfsdm.c                 |  6 ++----
 sound/soc/stm/stm32_i2s.c                    |  6 ++----
 sound/soc/stm/stm32_sai_sub.c                |  6 ++----
 sound/soc/stm/stm32_spdifrx.c                |  6 ++----
 sound/soc/sunxi/sun4i-codec.c                |  6 ++----
 sound/soc/sunxi/sun4i-i2s.c                  |  6 ++----
 sound/soc/sunxi/sun4i-spdif.c                |  6 ++----
 sound/soc/sunxi/sun50i-dmic.c                |  6 ++----
 sound/soc/sunxi/sun8i-codec.c                |  6 ++----
 sound/soc/tegra/tegra186_asrc.c              |  6 ++----
 sound/soc/tegra/tegra186_dspk.c              |  6 ++----
 sound/soc/tegra/tegra20_ac97.c               |  6 ++----
 sound/soc/tegra/tegra20_i2s.c                |  6 ++----
 sound/soc/tegra/tegra210_admaif.c            |  6 ++----
 sound/soc/tegra/tegra210_adx.c               |  6 ++----
 sound/soc/tegra/tegra210_ahub.c              |  6 ++----
 sound/soc/tegra/tegra210_amx.c               |  6 ++----
 sound/soc/tegra/tegra210_dmic.c              |  6 ++----
 sound/soc/tegra/tegra210_i2s.c               |  6 ++----
 sound/soc/tegra/tegra210_mixer.c             |  6 ++----
 sound/soc/tegra/tegra210_mvc.c               |  6 ++----
 sound/soc/tegra/tegra210_ope.c               |  6 ++----
 sound/soc/tegra/tegra210_sfc.c               |  6 ++----
 sound/soc/tegra/tegra30_ahub.c               |  6 ++----
 sound/soc/tegra/tegra30_i2s.c                |  6 ++----
 sound/soc/ti/ams-delta.c                     |  5 ++---
 sound/soc/ti/davinci-i2s.c                   |  6 ++----
 sound/soc/ti/davinci-mcasp.c                 |  6 ++----
 sound/soc/ti/omap-hdmi.c                     |  5 ++---
 sound/soc/ti/omap-mcbsp.c                    |  6 ++----
 sound/soc/uniphier/evea.c                    |  6 ++----
 sound/soc/ux500/mop500.c                     |  6 ++----
 sound/soc/ux500/ux500_msp_dai.c              |  6 ++----
 sound/soc/xilinx/xlnx_formatter_pcm.c        |  5 ++---
 sound/soc/xilinx/xlnx_spdif.c                |  5 ++---
 sound/soc/xtensa/xtfpga-i2s.c                |  5 ++---
 sound/sparc/cs4231.c                         |  6 ++----
 sound/sparc/dbri.c                           |  6 ++----
 171 files changed, 345 insertions(+), 654 deletions(-)

base-commit: fe15c26ee26efa11741a7b632e9f23b01aca4cc6
--
2.39.2
2023-03-21 16:29:48 +00:00
Uwe Kleine-König
d148a8d465
ASoC: tegra: tegra30_i2s: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-161-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:25 +00:00
Uwe Kleine-König
b17cf43d70
ASoC: tegra: tegra30_ahub: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-160-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:24 +00:00
Uwe Kleine-König
0e25bed50a
ASoC: tegra: tegra210_sfc: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-159-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:23 +00:00
Uwe Kleine-König
37831f8c14
ASoC: tegra: tegra210_ope: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-158-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:22 +00:00
Uwe Kleine-König
f94195ff02
ASoC: tegra: tegra210_mvc: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-157-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:21 +00:00
Uwe Kleine-König
e0d782fad1
ASoC: tegra: tegra210_mixer: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-156-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:20 +00:00
Uwe Kleine-König
e29df60014
ASoC: tegra: tegra210_i2s: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-155-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:19 +00:00
Uwe Kleine-König
7ffba01bcd
ASoC: tegra: tegra210_dmic: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-154-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:19 +00:00
Uwe Kleine-König
f3ac69d50c
ASoC: tegra: tegra210_amx: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-153-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:18 +00:00
Uwe Kleine-König
f1790c464b
ASoC: tegra: tegra210_ahub: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-152-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:17 +00:00
Uwe Kleine-König
f129152cbc
ASoC: tegra: tegra210_adx: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-151-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:16 +00:00
Uwe Kleine-König
8097e8afb9
ASoC: tegra: tegra210_admaif: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-150-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:15 +00:00
Uwe Kleine-König
81ab73dbfe
ASoC: tegra: tegra20_i2s: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-149-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-20 13:09:14 +00:00