Hi,
this is a patch set to clean up the PCM copy ops using sockptr_t as a "universal" pointer, inspired by the recent patch from Andy Shevchenko: https://lore.kernel.org/r/20230721100146.67293-1-andriy.shevchenko@linux.int...
Even though it sounds a bit weird, sockptr_t is a generic type that is used already in wide ranges, and it can fit our purpose, too. With sockptr_t, the former split of copy_user and copy_kernel PCM ops can be unified again gracefully.
The patch set introduces the new PCM ops, converting users, and drops the old PCM ops. Most of conversions are straightforward, simply replacing copy_*_user() with copy_*_sockptr() variants.
Note that the conversion in ASoC will fix a potential problem of ASoC PCM that has been for long time. Since ASoC component takes care of only copy_user, the conversion form/to kernel space might have been missing. With this patch set, both cases are handled with sockptr_t by a single callback.
The patches are lightly tested (with a faked PCM copy implementation on HD-audio), while most of patches are only compile-tested.
Takashi
===
Cc: Andy Shevchenko andriy.shevchenko@linux.intel.com Cc: Andrey Utkin andrey_utkin@fastmail.com Cc: Anton Sviridenko anton@corp.bluecherry.net Cc: Arnaud Pouliquen arnaud.pouliquen@foss.st.com Cc: Banajit Goswami bgoswami@quicinc.com Cc: Bluecherry Maintainers maintainers@bluecherrydvr.com Cc: Claudiu Beznea claudiu.beznea@microchip.com Cc: Ismael Luceno ismael@iodev.co.uk Cc: Lars-Peter Clausen lars@metafoo.de Cc: Mark Brown broonie@kernel.org Cc: Mauro Carvalho Chehab mchehab@kernel.org Cc: Oleksandr Andrushchenko oleksandr_andrushchenko@epam.com Cc: Olivier Moysan olivier.moysan@foss.st.com Cc: Srinivas Kandagatla srinivas.kandagatla@linaro.org Cc: linux-media@vger.kernel.org Cc: xen-devel@lists.xenproject.org
===
Takashi Iwai (24): ALSA: pcm: Add copy ops with universal sockptr_t ALSA: core: Add memory copy helpers between sockptr and iomem ALSA: dummy: Convert to generic PCM copy ops ALSA: gus: Convert to generic PCM copy ops ALSA: emu8000: Convert to generic PCM copy ops ALSA: es1938: Convert to generic PCM copy ops ALSA: korg1212: Convert to generic PCM copy ops ALSA: nm256: Convert to generic PCM copy ops ALSA: rme32: Convert to generic PCM copy ops ALSA: rme96: Convert to generic PCM copy ops ALSA: hdsp: Convert to generic PCM copy ops ALSA: rme9652: Convert to generic PCM copy ops ALSA: sh: Convert to generic PCM copy ops ALSA: xen: Convert to generic PCM copy ops ALSA: pcmtest: Update comment about PCM copy ops media: solo6x10: Convert to generic PCM copy ops ASoC: component: Add generic PCM copy ops ASoC: mediatek: Convert to generic PCM copy ops ASoC: qcom: Convert to generic PCM copy ops ASoC: dmaengine: Convert to generic PCM copy ops ASoC: dmaengine: Use sockptr_t for process callback, too ALSA: doc: Update description for the new PCM copy ops ASoC: pcm: Drop obsoleted PCM copy_user ops ALSA: pcm: Drop obsoleted PCM copy_user and copy_kernel ops
.../kernel-api/writing-an-alsa-driver.rst | 59 +++++--------- drivers/media/pci/solo6x10/solo6x10-g723.c | 41 ++-------- include/sound/dmaengine_pcm.h | 2 +- include/sound/pcm.h | 12 +-- include/sound/soc-component.h | 14 ++-- sound/core/memory.c | 39 +++++++++ sound/core/pcm_lib.c | 81 +++++++++---------- sound/core/pcm_native.c | 2 +- sound/drivers/dummy.c | 12 +-- sound/drivers/pcmtest.c | 2 +- sound/isa/gus/gus_pcm.c | 23 +----- sound/isa/sb/emu8000_pcm.c | 79 +++++------------- sound/pci/es1938.c | 31 ++----- sound/pci/korg1212/korg1212.c | 46 +++-------- sound/pci/nm256/nm256.c | 42 ++-------- sound/pci/rme32.c | 50 +++--------- sound/pci/rme96.c | 48 +++-------- sound/pci/rme9652/hdsp.c | 42 ++-------- sound/pci/rme9652/rme9652.c | 46 ++--------- sound/sh/sh_dac_audio.c | 25 +----- sound/soc/atmel/mchp-pdmc.c | 2 +- sound/soc/mediatek/common/mtk-btcvsd.c | 22 ++--- sound/soc/qcom/lpass-platform.c | 12 +-- sound/soc/soc-component.c | 10 +-- sound/soc/soc-generic-dmaengine-pcm.c | 18 ++--- sound/soc/soc-pcm.c | 4 +- sound/soc/stm/stm32_sai_sub.c | 2 +- sound/xen/xen_snd_front_alsa.c | 55 +++---------- 28 files changed, 251 insertions(+), 570 deletions(-)