2021-09-28 01:38:10

by Sugar Zhang

[permalink] [raw]
Subject: [PATCH] Revert "ASoC: rockchip: add config for rockchip dmaengine pcm register"

This reverts commit 75b31192fe6ad20b42276b20ee3bdf1493216d63.

The original purpose of customized pcm was to config prealloc buffer size
flexibly. but, we can do the same thing by soc-generic-dmaengine-pcm.

And the generic one can generated the better config by querying DMA
capabilities from dmaengine driver rather than the Hard-Coded one.

e.g.

the customized one:

static const struct snd_pcm_hardware snd_rockchip_hardware = {
.info = SNDRV_PCM_INFO_MMAP |
SNDRV_PCM_INFO_MMAP_VALID |
SNDRV_PCM_INFO_PAUSE |
SNDRV_PCM_INFO_RESUME |
SNDRV_PCM_INFO_INTERLEAVED,
...

the generic one:

ret = dma_get_slave_caps(chan, &dma_caps);
if (ret == 0) {
if (dma_caps.cmd_pause && dma_caps.cmd_resume)
hw.info |= SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME;
if (dma_caps.residue_granularity <= DMA_RESIDUE_GRANULARITY_SEGMENT)
hw.info |= SNDRV_PCM_INFO_BATCH;
...

So, let's revert back to use the generic dmaengine pcm.

Signed-off-by: Sugar Zhang <[email protected]>
---

sound/soc/rockchip/Makefile | 3 +--
sound/soc/rockchip/rockchip_i2s.c | 3 +--
sound/soc/rockchip/rockchip_pcm.c | 44 ---------------------------------------
sound/soc/rockchip/rockchip_pcm.h | 11 ----------
4 files changed, 2 insertions(+), 59 deletions(-)
delete mode 100644 sound/soc/rockchip/rockchip_pcm.c
delete mode 100644 sound/soc/rockchip/rockchip_pcm.h

diff --git a/sound/soc/rockchip/Makefile b/sound/soc/rockchip/Makefile
index 65e814d..05b078e 100644
--- a/sound/soc/rockchip/Makefile
+++ b/sound/soc/rockchip/Makefile
@@ -1,11 +1,10 @@
# SPDX-License-Identifier: GPL-2.0
# ROCKCHIP Platform Support
snd-soc-rockchip-i2s-objs := rockchip_i2s.o
-snd-soc-rockchip-pcm-objs := rockchip_pcm.o
snd-soc-rockchip-pdm-objs := rockchip_pdm.o
snd-soc-rockchip-spdif-objs := rockchip_spdif.o

-obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-rockchip-i2s.o snd-soc-rockchip-pcm.o
+obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-rockchip-i2s.o
obj-$(CONFIG_SND_SOC_ROCKCHIP_PDM) += snd-soc-rockchip-pdm.o
obj-$(CONFIG_SND_SOC_ROCKCHIP_SPDIF) += snd-soc-rockchip-spdif.o

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 7e89f5b..a6d7656 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -20,7 +20,6 @@
#include <sound/dmaengine_pcm.h>

#include "rockchip_i2s.h"
-#include "rockchip_pcm.h"

#define DRV_NAME "rockchip-i2s"

@@ -756,7 +755,7 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
goto err_suspend;
}

- ret = rockchip_pcm_platform_register(&pdev->dev);
+ ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
if (ret) {
dev_err(&pdev->dev, "Could not register PCM\n");
goto err_suspend;
diff --git a/sound/soc/rockchip/rockchip_pcm.c b/sound/soc/rockchip/rockchip_pcm.c
deleted file mode 100644
index 02254e4..0000000
--- a/sound/soc/rockchip/rockchip_pcm.c
+++ /dev/null
@@ -1,44 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (c) 2018 Rockchip Electronics Co. Ltd.
- */
-
-#include <linux/device.h>
-#include <linux/init.h>
-#include <linux/module.h>
-
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/soc.h>
-#include <sound/dmaengine_pcm.h>
-
-#include "rockchip_pcm.h"
-
-static const struct snd_pcm_hardware snd_rockchip_hardware = {
- .info = SNDRV_PCM_INFO_MMAP |
- SNDRV_PCM_INFO_MMAP_VALID |
- SNDRV_PCM_INFO_PAUSE |
- SNDRV_PCM_INFO_RESUME |
- SNDRV_PCM_INFO_INTERLEAVED,
- .period_bytes_min = 32,
- .period_bytes_max = 8192,
- .periods_min = 1,
- .periods_max = 52,
- .buffer_bytes_max = 64 * 1024,
- .fifo_size = 32,
-};
-
-static const struct snd_dmaengine_pcm_config rk_dmaengine_pcm_config = {
- .pcm_hardware = &snd_rockchip_hardware,
- .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config,
- .prealloc_buffer_size = 32 * 1024,
-};
-
-int rockchip_pcm_platform_register(struct device *dev)
-{
- return devm_snd_dmaengine_pcm_register(dev, &rk_dmaengine_pcm_config,
- SND_DMAENGINE_PCM_FLAG_COMPAT);
-}
-EXPORT_SYMBOL_GPL(rockchip_pcm_platform_register);
-
-MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/rockchip/rockchip_pcm.h b/sound/soc/rockchip/rockchip_pcm.h
deleted file mode 100644
index 7f00e2c..0000000
--- a/sound/soc/rockchip/rockchip_pcm.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (c) 2018 Rockchip Electronics Co. Ltd.
- */
-
-#ifndef _ROCKCHIP_PCM_H
-#define _ROCKCHIP_PCM_H
-
-int rockchip_pcm_platform_register(struct device *dev);
-
-#endif
--
2.7.4




2021-10-19 11:10:34

by John Keeping

[permalink] [raw]
Subject: Re: [PATCH] Revert "ASoC: rockchip: add config for rockchip dmaengine pcm register"

On Tue, 28 Sep 2021 09:35:57 +0800
Sugar Zhang <[email protected]> wrote:

> This reverts commit 75b31192fe6ad20b42276b20ee3bdf1493216d63.
>
> The original purpose of customized pcm was to config prealloc buffer size
> flexibly. but, we can do the same thing by soc-generic-dmaengine-pcm.
>
> And the generic one can generated the better config by querying DMA
> capabilities from dmaengine driver rather than the Hard-Coded one.
>
> e.g.
>
> the customized one:
>
> static const struct snd_pcm_hardware snd_rockchip_hardware = {
> .info = SNDRV_PCM_INFO_MMAP |
> SNDRV_PCM_INFO_MMAP_VALID |
> SNDRV_PCM_INFO_PAUSE |
> SNDRV_PCM_INFO_RESUME |
> SNDRV_PCM_INFO_INTERLEAVED,
> ...
>
> the generic one:
>
> ret = dma_get_slave_caps(chan, &dma_caps);
> if (ret == 0) {
> if (dma_caps.cmd_pause && dma_caps.cmd_resume)
> hw.info |= SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME;
> if (dma_caps.residue_granularity <= DMA_RESIDUE_GRANULARITY_SEGMENT)
> hw.info |= SNDRV_PCM_INFO_BATCH;
> ...
>
> So, let's revert back to use the generic dmaengine pcm.
>
> Signed-off-by: Sugar Zhang <[email protected]>

Reviewed-by: John Keeping <[email protected]>

> ---
>
> sound/soc/rockchip/Makefile | 3 +--
> sound/soc/rockchip/rockchip_i2s.c | 3 +--
> sound/soc/rockchip/rockchip_pcm.c | 44 ---------------------------------------
> sound/soc/rockchip/rockchip_pcm.h | 11 ----------
> 4 files changed, 2 insertions(+), 59 deletions(-)
> delete mode 100644 sound/soc/rockchip/rockchip_pcm.c
> delete mode 100644 sound/soc/rockchip/rockchip_pcm.h
>
> diff --git a/sound/soc/rockchip/Makefile b/sound/soc/rockchip/Makefile
> index 65e814d..05b078e 100644
> --- a/sound/soc/rockchip/Makefile
> +++ b/sound/soc/rockchip/Makefile
> @@ -1,11 +1,10 @@
> # SPDX-License-Identifier: GPL-2.0
> # ROCKCHIP Platform Support
> snd-soc-rockchip-i2s-objs := rockchip_i2s.o
> -snd-soc-rockchip-pcm-objs := rockchip_pcm.o
> snd-soc-rockchip-pdm-objs := rockchip_pdm.o
> snd-soc-rockchip-spdif-objs := rockchip_spdif.o
>
> -obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-rockchip-i2s.o snd-soc-rockchip-pcm.o
> +obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-rockchip-i2s.o
> obj-$(CONFIG_SND_SOC_ROCKCHIP_PDM) += snd-soc-rockchip-pdm.o
> obj-$(CONFIG_SND_SOC_ROCKCHIP_SPDIF) += snd-soc-rockchip-spdif.o
>
> diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
> index 7e89f5b..a6d7656 100644
> --- a/sound/soc/rockchip/rockchip_i2s.c
> +++ b/sound/soc/rockchip/rockchip_i2s.c
> @@ -20,7 +20,6 @@
> #include <sound/dmaengine_pcm.h>
>
> #include "rockchip_i2s.h"
> -#include "rockchip_pcm.h"
>
> #define DRV_NAME "rockchip-i2s"
>
> @@ -756,7 +755,7 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
> goto err_suspend;
> }
>
> - ret = rockchip_pcm_platform_register(&pdev->dev);
> + ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
> if (ret) {
> dev_err(&pdev->dev, "Could not register PCM\n");
> goto err_suspend;
> diff --git a/sound/soc/rockchip/rockchip_pcm.c b/sound/soc/rockchip/rockchip_pcm.c
> deleted file mode 100644
> index 02254e4..0000000
> --- a/sound/soc/rockchip/rockchip_pcm.c
> +++ /dev/null
> @@ -1,44 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Copyright (c) 2018 Rockchip Electronics Co. Ltd.
> - */
> -
> -#include <linux/device.h>
> -#include <linux/init.h>
> -#include <linux/module.h>
> -
> -#include <sound/core.h>
> -#include <sound/pcm.h>
> -#include <sound/soc.h>
> -#include <sound/dmaengine_pcm.h>
> -
> -#include "rockchip_pcm.h"
> -
> -static const struct snd_pcm_hardware snd_rockchip_hardware = {
> - .info = SNDRV_PCM_INFO_MMAP |
> - SNDRV_PCM_INFO_MMAP_VALID |
> - SNDRV_PCM_INFO_PAUSE |
> - SNDRV_PCM_INFO_RESUME |
> - SNDRV_PCM_INFO_INTERLEAVED,
> - .period_bytes_min = 32,
> - .period_bytes_max = 8192,
> - .periods_min = 1,
> - .periods_max = 52,
> - .buffer_bytes_max = 64 * 1024,
> - .fifo_size = 32,
> -};
> -
> -static const struct snd_dmaengine_pcm_config rk_dmaengine_pcm_config = {
> - .pcm_hardware = &snd_rockchip_hardware,
> - .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config,
> - .prealloc_buffer_size = 32 * 1024,
> -};
> -
> -int rockchip_pcm_platform_register(struct device *dev)
> -{
> - return devm_snd_dmaengine_pcm_register(dev, &rk_dmaengine_pcm_config,
> - SND_DMAENGINE_PCM_FLAG_COMPAT);
> -}
> -EXPORT_SYMBOL_GPL(rockchip_pcm_platform_register);
> -
> -MODULE_LICENSE("GPL v2");
> diff --git a/sound/soc/rockchip/rockchip_pcm.h b/sound/soc/rockchip/rockchip_pcm.h
> deleted file mode 100644
> index 7f00e2c..0000000
> --- a/sound/soc/rockchip/rockchip_pcm.h
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * Copyright (c) 2018 Rockchip Electronics Co. Ltd.
> - */
> -
> -#ifndef _ROCKCHIP_PCM_H
> -#define _ROCKCHIP_PCM_H
> -
> -int rockchip_pcm_platform_register(struct device *dev);
> -
> -#endif

2021-10-21 13:48:35

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] Revert "ASoC: rockchip: add config for rockchip dmaengine pcm register"

On Tue, 28 Sep 2021 09:35:57 +0800, Sugar Zhang wrote:
> This reverts commit 75b31192fe6ad20b42276b20ee3bdf1493216d63.
>
> The original purpose of customized pcm was to config prealloc buffer size
> flexibly. but, we can do the same thing by soc-generic-dmaengine-pcm.
>
> And the generic one can generated the better config by querying DMA
> capabilities from dmaengine driver rather than the Hard-Coded one.
>
> [...]

Applied to

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/1] Revert "ASoC: rockchip: add config for rockchip dmaengine pcm register"
commit: 5ba8ecf2272d34de9cd2271a0ac12f5f615ef7aa

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark