linux/sound/soc
Mark Brown 795dd8d3b8
Clean up usage of the endianness flag
Merge series from Charles Keepax <ckeepax@opensource.cirrus.com>:

Before componentisation any part registered as a CODEC would have
automatically supported both little and big endian, ie. the core
would duplicate any supported LE or BE PCM format to support the other
endian as well. As componentisation removed the distinction between
CODEC drivers and platform drivers, a flag was added to specify
if this behaviour is required for a particular component. However,
as most systems tend to use little endian the absence of the flag
is rarely noticed. Also the naming of the flag "endianness" is a
little unobvious as to if it should be applied to a particular
component.

This series adds a comment to better explain the meaning of the
flag and then tidys up the usage of the flag. A couple of uses
of the flag are removed where is has been used inappropriately
on the CPU side of the DAI link, this is clearly not valid in the
cases it has been used, and I suspect never would be valid. Then
some redundant formats are removed, since they would be covered by
existing endianness flags. And finally a bunch of devices that are
missing the flag have it added.

It is worth noting that since componenisation there are now a couple
of cases where it is not entire clear to me that the flag should
be applied to all CODECs as it was before. In those cases I haven't
updated the driver to add the flag and they are outlined here:

1) Build into the AP CODECs, these are actual silicon inside the main
processor and they typically receive audio directly from an internal
bus. It is not obvious to me that these can happily ignore endian. On
the CODEC side these include: jz4725b.c, jz4760.c, jz4770.c,
rk3328_codec.c, lpass-va-macro.c, lpass-rx-macro.c, lpass-tx-macro.c,
lpass-wsa-macro.c. There are also some examples of this scattered
around the various platform support directories in sound/soc.

2) Devices behind non-audio buses, SPI just moves bits and doesn't
really define an endian for audio data on the bus. Thus it seems the
CODEC probably can care about the endian. The only devices that fall
into this group (mostly for AoV) are: rt5514-spi.c, rt5677-spi.c,
cros_ec_codec.c (only the AoV).

3) CODECs with no DAIs, these could specify the flag and plenty of
them do; CODECs from the initial conversion to componentisation. But
the flag makes no difference here since there is nothing for it to
apply to. This includes purely analogue CODECs: aw8738.c, ssm2305.c,
tpa6130a2.c, tda7419.c, max9759.c, max9768.c, max9877.c, lm4857.c,
simple-mux.c, simple-amplifier.c. And devices that only do jack
detection: ts3a227e.c, mt6359-accdet.c.

If there are any opinions on adding the flag to any of those three
groups they would be greatfully received. But I am leaning towards
leaving 1,2 without endianness flags since it feels inappropriate,
and removing the endian flag from devices in catagory 3 that already
have it. Assuming no one objects to that I will do a follow up
series for that.
2022-05-10 12:12:50 +01:00
..
adi
amd ASoC: amd: acp: Add pm ops callback in machine driver 2022-04-20 14:25:13 +01:00
atmel Clean up usage of the endianness flag 2022-05-10 12:12:50 +01:00
au1x ASoC: wm8731: Factor out the I2C and SPI bus code into separate modules 2022-04-04 08:39:32 +01:00
bcm ASoC: bcm: Use platform_get_irq() to get the interrupt 2021-12-21 18:05:43 +00:00
cirrus ARM: SoC drivers for 5.16 2021-11-03 17:00:52 -07:00
codecs Clean up usage of the endianness flag 2022-05-10 12:12:50 +01:00
dwc ASoC: dwc-i2s: Handle errors for clk_enable 2022-03-02 13:45:24 +00:00
fsl ASoC: fsl_micfil: fix the naming style for mask definition 2022-05-05 13:24:48 +01:00
generic ASoC: Pull in fixes 2022-05-04 15:30:32 +01:00
hisilicon
img ASoC: img-i2s-in: using pm_runtime_resume_and_get instead of pm_runtime_get_sync 2022-04-25 14:00:23 +01:00
intel ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408 2022-04-28 13:20:35 +01:00
jz4740
kirkwood
mediatek ASoC: mediatek: mt8195: Fix build warning without CONFIG_OF 2022-05-09 19:04:37 +01:00
meson ASoC: meson: axg-card: Fix nonatomic links 2022-04-21 18:25:15 +01:00
mxs ASoC: mxs: Fix error handling in mxs_sgtl5000_probe 2022-03-08 13:41:15 +00:00
pxa ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
qcom ASoC: qcom: SC7280: Update machine driver startup, shutdown callbacks 2022-04-26 15:13:42 +01:00
rockchip ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
samsung ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
sh ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path 2022-04-27 17:22:50 +01:00
sof ASoC: SOF: sof-client: Update for different IPC versions 2022-05-09 22:12:23 +01:00
spear
sprd
sti ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call 2022-03-16 16:39:28 +00:00
stm ASoC: stm: Use dev_err_probe() helper 2021-12-20 12:47:23 +00:00
sunxi ASoC: sun4i-i2s: Add support for the R329/D1 variant 2022-02-03 11:30:57 +00:00
tegra ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
ti ASoC: ti: davinci-mcasp: Add dma-type for bcdma 2022-05-05 13:24:46 +01:00
uniphier ASoC: uniphier: simplify the return expression of uniphier_aio_compr_set_params() 2022-05-09 12:48:41 +01:00
ux500 ASoC: ux500: mop500: Constify static snd_soc_ops 2021-09-29 13:06:38 +01:00
xilinx ASoC: xilinx: xlnx_i2s: Handle sysclk setting 2022-01-24 19:45:38 +00:00
xtensa
Kconfig ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
Makefile ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
soc-ac97.c
soc-acpi.c ALSA: Replace acpi_bus_get_device() 2022-02-01 08:08:08 +01:00
soc-card.c ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
soc-component.c ASoC: soc-component: add snd_soc_pcm_component_delay() 2021-11-29 12:19:41 +00:00
soc-compress.c ASoC: soc-compress: Change the check for codec_dai 2022-03-14 08:29:11 +00:00
soc-core.c ASoC: soc-core: remove always-false path 2022-04-23 00:16:28 +01:00
soc-dai.c ASoC: soc-dai: update snd_soc_dai_delay() to snd_soc_pcm_dai_delay() 2021-11-29 12:19:40 +00:00
soc-dapm.c ASoC: dapm: Don't fold register value changes into notifications 2022-05-03 13:42:26 +01:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: soc-generic-dmaengine-pcm: Use default config when none is given 2022-05-04 15:31:19 +01:00
soc-jack.c ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
soc-link.c
soc-ops.c ASoC: ops: Validate input values in snd_soc_put_volsw_range() 2022-04-26 15:13:36 +01:00
soc-pcm.c ASoC: soc-pcm: improve BE transition for TRIGGER_START 2022-04-19 16:33:52 +01:00
soc-topology-test.c
soc-topology.c ASoC: Pull in fixes 2022-04-05 10:29:12 +01:00
soc-utils-test.c ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
soc-utils.c ASoC: soc-utils: Add helper to calculate BCLK from TDM info 2022-04-05 18:27:55 +01:00