alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
@ 2014-05-20 20:26 Vasily Khoruzhick
  2014-05-20 20:26 ` [PATCH v2 2/2] ASoC: samsung: drop support for legacy S3C24XX DMA API Vasily Khoruzhick
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Vasily Khoruzhick @ 2014-05-20 20:26 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim, Sangbeom Kim,
	Lars-Peter Clausen
  Cc: Vasily Khoruzhick

Use dmaengine instead of legacy s3c24xx DMA API for s3c24xx and s3c2412

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
---
v2: use hardcoded dma channel number

 sound/soc/samsung/Kconfig       |  9 +++----
 sound/soc/samsung/dmaengine.c   |  3 +++
 sound/soc/samsung/s3c-i2s-v2.c  | 17 +------------
 sound/soc/samsung/s3c2412-i2s.c | 47 +++++++++++++++++-----------------
 sound/soc/samsung/s3c24xx-i2s.c | 56 +++++++++++++++++++----------------------
 5 files changed, 56 insertions(+), 76 deletions(-)

diff --git a/sound/soc/samsung/Kconfig b/sound/soc/samsung/Kconfig
index 3507574..022c7a4 100644
--- a/sound/soc/samsung/Kconfig
+++ b/sound/soc/samsung/Kconfig
@@ -1,11 +1,10 @@
 config SND_SOC_SAMSUNG
 	tristate "ASoC support for Samsung"
 	depends on PLAT_SAMSUNG
-	select S3C2410_DMA if ARCH_S3C24XX
+	select S3C24XX_DMAC if ARCH_S3C24XX
 	select S3C64XX_PL080 if ARCH_S3C64XX
-	select SND_S3C_DMA if !ARCH_S3C24XX
-	select SND_S3C_DMA_LEGACY if ARCH_S3C24XX
-	select SND_SOC_GENERIC_DMAENGINE_PCM if !ARCH_S3C24XX
+	select SND_S3C_DMA
+	select SND_SOC_GENERIC_DMAENGINE_PCM
 	help
 	  Say Y or M if you want to add support for codecs attached to
 	  the Samsung SoCs' Audio interfaces. You will also need to
@@ -19,7 +18,6 @@ config SND_S3C_DMA_LEGACY
 
 config SND_S3C24XX_I2S
 	tristate
-	select S3C24XX_DMA
 
 config SND_S3C_I2SV2_SOC
 	tristate
@@ -27,7 +25,6 @@ config SND_S3C_I2SV2_SOC
 config SND_S3C2412_SOC_I2S
 	tristate
 	select SND_S3C_I2SV2_SOC
-	select S3C2410_DMA
 
 config SND_SAMSUNG_PCM
 	tristate
diff --git a/sound/soc/samsung/dmaengine.c b/sound/soc/samsung/dmaengine.c
index 750ce58..72f27d1 100644
--- a/sound/soc/samsung/dmaengine.c
+++ b/sound/soc/samsung/dmaengine.c
@@ -17,6 +17,7 @@
 
 #include <linux/module.h>
 #include <linux/amba/pl08x.h>
+#include <linux/platform_data/dma-s3c24xx.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
@@ -29,6 +30,8 @@
 
 #ifdef CONFIG_ARCH_S3C64XX
 #define filter_fn pl08x_filter_id
+#elif defined(CONFIG_ARCH_S3C24XX)
+#define filter_fn s3c24xx_dma_filter
 #else
 #define filter_fn NULL
 #endif
diff --git a/sound/soc/samsung/s3c-i2s-v2.c b/sound/soc/samsung/s3c-i2s-v2.c
index 79e7efb..1a74051 100644
--- a/sound/soc/samsung/s3c-i2s-v2.c
+++ b/sound/soc/samsung/s3c-i2s-v2.c
@@ -392,8 +392,6 @@ static int s3c2412_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
 	int capture = (substream->stream == SNDRV_PCM_STREAM_CAPTURE);
 	unsigned long irqs;
 	int ret = 0;
-	struct s3c_dma_params *dma_data =
-		snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	pr_debug("Entered %s\n", __func__);
 
@@ -424,13 +422,6 @@ static int s3c2412_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
 
 		local_irq_restore(irqs);
 
-		/*
-		 * Load the next buffer to DMA to meet the reqirement
-		 * of the auto reload mechanism of S3C24XX.
-		 * This call won't bother S3C64XX.
-		 */
-		s3c2410_dma_ctrl(dma_data->channel, S3C2410_DMAOP_STARTED);
-
 		break;
 
 	case SNDRV_PCM_TRIGGER_STOP:
@@ -644,12 +635,6 @@ int s3c_i2sv2_probe(struct snd_soc_dai *dai,
 	/* record our i2s structure for later use in the callbacks */
 	snd_soc_dai_set_drvdata(dai, i2s);
 
-	i2s->regs = ioremap(base, 0x100);
-	if (i2s->regs == NULL) {
-		dev_err(dev, "cannot ioremap registers\n");
-		return -ENXIO;
-	}
-
 	i2s->iis_pclk = clk_get(dev, "iis");
 	if (IS_ERR(i2s->iis_pclk)) {
 		dev_err(dev, "failed to get iis_clock\n");
@@ -729,7 +714,7 @@ int s3c_i2sv2_register_component(struct device *dev, int id,
 			   struct snd_soc_component_driver *cmp_drv,
 			   struct snd_soc_dai_driver *dai_drv)
 {
-	struct snd_soc_dai_ops *ops = dai_drv->ops;
+	struct snd_soc_dai_ops *ops = (struct snd_soc_dai_ops *)dai_drv->ops;
 
 	ops->trigger = s3c2412_i2s_trigger;
 	if (!ops->hw_params)
diff --git a/sound/soc/samsung/s3c2412-i2s.c b/sound/soc/samsung/s3c2412-i2s.c
index d079445..ba084e3 100644
--- a/sound/soc/samsung/s3c2412-i2s.c
+++ b/sound/soc/samsung/s3c2412-i2s.c
@@ -33,25 +33,19 @@
 #include "regs-i2s-v2.h"
 #include "s3c2412-i2s.h"
 
-static struct s3c2410_dma_client s3c2412_dma_client_out = {
-	.name		= "I2S PCM Stereo out"
-};
-
-static struct s3c2410_dma_client s3c2412_dma_client_in = {
-	.name		= "I2S PCM Stereo in"
-};
-
 static struct s3c_dma_params s3c2412_i2s_pcm_stereo_out = {
-	.client		= &s3c2412_dma_client_out,
+	.client		=
+		(struct s3c2410_dma_client *)&s3c2412_i2s_pcm_stereo_out,
 	.channel	= DMACH_I2S_OUT,
-	.dma_addr	= S3C2410_PA_IIS + S3C2412_IISTXD,
+	.ch_name	= "tx",
 	.dma_size	= 4,
 };
 
 static struct s3c_dma_params s3c2412_i2s_pcm_stereo_in = {
-	.client		= &s3c2412_dma_client_in,
+	.client		=
+		(struct s3c2410_dma_client *)&s3c2412_i2s_pcm_stereo_in,
 	.channel	= DMACH_I2S_IN,
-	.dma_addr	= S3C2410_PA_IIS + S3C2412_IISRXD,
+	.ch_name	= "rx",
 	.dma_size	= 4,
 };
 
@@ -63,6 +57,9 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai)
 
 	pr_debug("Entered %s\n", __func__);
 
+	samsung_asoc_init_dma_data(dai, &s3c2412_i2s_pcm_stereo_out,
+		&s3c2412_i2s_pcm_stereo_in);
+
 	ret = s3c_i2sv2_probe(dai, &s3c2412_i2s, S3C2410_PA_IIS);
 	if (ret)
 		return ret;
@@ -70,10 +67,9 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai)
 	s3c2412_i2s.dma_capture = &s3c2412_i2s_pcm_stereo_in;
 	s3c2412_i2s.dma_playback = &s3c2412_i2s_pcm_stereo_out;
 
-	s3c2412_i2s.iis_cclk = clk_get(dai->dev, "i2sclk");
+	s3c2412_i2s.iis_cclk = devm_clk_get(dai->dev, "i2sclk");
 	if (IS_ERR(s3c2412_i2s.iis_cclk)) {
 		pr_err("failed to get i2sclk clock\n");
-		iounmap(s3c2412_i2s.regs);
 		return PTR_ERR(s3c2412_i2s.iis_cclk);
 	}
 
@@ -94,8 +90,6 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai)
 static int s3c2412_i2s_remove(struct snd_soc_dai *dai)
 {
 	clk_disable(s3c2412_i2s.iis_cclk);
-	clk_put(s3c2412_i2s.iis_cclk);
-	iounmap(s3c2412_i2s.regs);
 
 	return 0;
 }
@@ -105,18 +99,10 @@ static int s3c2412_i2s_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_soc_dai *cpu_dai)
 {
 	struct s3c_i2sv2_info *i2s = snd_soc_dai_get_drvdata(cpu_dai);
-	struct s3c_dma_params *dma_data;
 	u32 iismod;
 
 	pr_debug("Entered %s\n", __func__);
 
-	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-		dma_data = i2s->dma_playback;
-	else
-		dma_data = i2s->dma_capture;
-
-	snd_soc_dai_set_dma_data(cpu_dai, substream, dma_data);
-
 	iismod = readl(i2s->regs + S3C2412_IISMOD);
 	pr_debug("%s: r: IISMOD: %x\n", __func__, iismod);
 
@@ -169,6 +155,19 @@ static const struct snd_soc_component_driver s3c2412_i2s_component = {
 static int s3c2412_iis_dev_probe(struct platform_device *pdev)
 {
 	int ret = 0;
+	struct resource *res;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res) {
+		dev_err(&pdev->dev, "Can't get IO resource.\n");
+		return -ENOENT;
+	}
+	s3c2412_i2s.regs = devm_ioremap_resource(&pdev->dev, res);
+	if (s3c2412_i2s.regs == NULL)
+		return -ENXIO;
+
+	s3c2412_i2s_pcm_stereo_out.dma_addr = res->start + S3C2412_IISTXD;
+	s3c2412_i2s_pcm_stereo_in.dma_addr = res->start + S3C2412_IISRXD;
 
 	ret = s3c_i2sv2_register_component(&pdev->dev, -1,
 					   &s3c2412_i2s_component,
diff --git a/sound/soc/samsung/s3c24xx-i2s.c b/sound/soc/samsung/s3c24xx-i2s.c
index f31e916..97600df 100644
--- a/sound/soc/samsung/s3c24xx-i2s.c
+++ b/sound/soc/samsung/s3c24xx-i2s.c
@@ -31,25 +31,19 @@
 #include "dma.h"
 #include "s3c24xx-i2s.h"
 
-static struct s3c2410_dma_client s3c24xx_dma_client_out = {
-	.name = "I2S PCM Stereo out"
-};
-
-static struct s3c2410_dma_client s3c24xx_dma_client_in = {
-	.name = "I2S PCM Stereo in"
-};
-
 static struct s3c_dma_params s3c24xx_i2s_pcm_stereo_out = {
-	.client		= &s3c24xx_dma_client_out,
+	.client		=
+		(struct s3c2410_dma_client *)&s3c24xx_i2s_pcm_stereo_out,
 	.channel	= DMACH_I2S_OUT,
-	.dma_addr	= S3C2410_PA_IIS + S3C2410_IISFIFO,
+	.ch_name	= "tx",
 	.dma_size	= 2,
 };
 
 static struct s3c_dma_params s3c24xx_i2s_pcm_stereo_in = {
-	.client		= &s3c24xx_dma_client_in,
+	.client		=
+		(struct s3c2410_dma_client *)&s3c24xx_i2s_pcm_stereo_in,
 	.channel	= DMACH_I2S_IN,
-	.dma_addr	= S3C2410_PA_IIS + S3C2410_IISFIFO,
+	.ch_name	= "rx",
 	.dma_size	= 2,
 };
 
@@ -231,18 +225,12 @@ static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_pcm_hw_params *params,
 				 struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct s3c_dma_params *dma_data;
+	struct snd_dmaengine_dai_dma_data *dma_data;
 	u32 iismod;
 
 	pr_debug("Entered %s\n", __func__);
 
-	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-		dma_data = &s3c24xx_i2s_pcm_stereo_out;
-	else
-		dma_data = &s3c24xx_i2s_pcm_stereo_in;
-
-	snd_soc_dai_set_dma_data(rtd->cpu_dai, substream, dma_data);
+	dma_data = snd_soc_dai_get_dma_data(dai, substream);
 
 	/* Working copies of register */
 	iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
@@ -251,11 +239,11 @@ static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,
 	switch (params_format(params)) {
 	case SNDRV_PCM_FORMAT_S8:
 		iismod &= ~S3C2410_IISMOD_16BIT;
-		dma_data->dma_size = 1;
+		dma_data->addr_width = 1;
 		break;
 	case SNDRV_PCM_FORMAT_S16_LE:
 		iismod |= S3C2410_IISMOD_16BIT;
-		dma_data->dma_size = 2;
+		dma_data->addr_width = 2;
 		break;
 	default:
 		return -EINVAL;
@@ -270,8 +258,6 @@ static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
 			       struct snd_soc_dai *dai)
 {
 	int ret = 0;
-	struct s3c_dma_params *dma_data =
-		snd_soc_dai_get_dma_data(dai, substream);
 
 	pr_debug("Entered %s\n", __func__);
 
@@ -290,7 +276,6 @@ static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
 		else
 			s3c24xx_snd_txctrl(1);
 
-		s3c2410_dma_ctrl(dma_data->channel, S3C2410_DMAOP_STARTED);
 		break;
 	case SNDRV_PCM_TRIGGER_STOP:
 	case SNDRV_PCM_TRIGGER_SUSPEND:
@@ -380,14 +365,12 @@ static int s3c24xx_i2s_probe(struct snd_soc_dai *dai)
 {
 	pr_debug("Entered %s\n", __func__);
 
-	s3c24xx_i2s.regs = ioremap(S3C2410_PA_IIS, 0x100);
-	if (s3c24xx_i2s.regs == NULL)
-		return -ENXIO;
+	samsung_asoc_init_dma_data(dai, &s3c24xx_i2s_pcm_stereo_out,
+		&s3c24xx_i2s_pcm_stereo_in);
 
-	s3c24xx_i2s.iis_clk = clk_get(dai->dev, "iis");
+	s3c24xx_i2s.iis_clk = devm_clk_get(dai->dev, "iis");
 	if (IS_ERR(s3c24xx_i2s.iis_clk)) {
 		pr_err("failed to get iis_clock\n");
-		iounmap(s3c24xx_i2s.regs);
 		return PTR_ERR(s3c24xx_i2s.iis_clk);
 	}
 	clk_enable(s3c24xx_i2s.iis_clk);
@@ -474,6 +457,19 @@ static const struct snd_soc_component_driver s3c24xx_i2s_component = {
 static int s3c24xx_iis_dev_probe(struct platform_device *pdev)
 {
 	int ret = 0;
+	struct resource *res;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res) {
+		dev_err(&pdev->dev, "Can't get IO resource.\n");
+		return -ENOENT;
+	}
+	s3c24xx_i2s.regs = devm_ioremap_resource(&pdev->dev, res);
+	if (s3c24xx_i2s.regs == NULL)
+		return -ENXIO;
+
+	s3c24xx_i2s_pcm_stereo_out.dma_addr = res->start + S3C2410_IISFIFO;
+	s3c24xx_i2s_pcm_stereo_in.dma_addr = res->start + S3C2410_IISFIFO;
 
 	ret = snd_soc_register_component(&pdev->dev, &s3c24xx_i2s_component,
 					 &s3c24xx_i2s_dai, 1);
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v2 2/2] ASoC: samsung: drop support for legacy S3C24XX DMA API
  2014-05-20 20:26 [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API Vasily Khoruzhick
@ 2014-05-20 20:26 ` Vasily Khoruzhick
  2014-05-20 22:19 ` [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API Mark Brown
  2014-05-21 13:28 ` [alsa-devel] " Tomasz Figa
  2 siblings, 0 replies; 16+ messages in thread
From: Vasily Khoruzhick @ 2014-05-20 20:26 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim, Sangbeom Kim,
	Lars-Peter Clausen
  Cc: Vasily Khoruzhick

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
---
v2: No changes

 sound/soc/samsung/Kconfig  |   3 -
 sound/soc/samsung/Makefile |   2 -
 sound/soc/samsung/dma.c    | 460 ---------------------------------------------
 3 files changed, 465 deletions(-)
 delete mode 100644 sound/soc/samsung/dma.c

diff --git a/sound/soc/samsung/Kconfig b/sound/soc/samsung/Kconfig
index 022c7a4..bf4bb7b 100644
--- a/sound/soc/samsung/Kconfig
+++ b/sound/soc/samsung/Kconfig
@@ -13,9 +13,6 @@ config SND_SOC_SAMSUNG
 config SND_S3C_DMA
 	tristate
 
-config SND_S3C_DMA_LEGACY
-	tristate
-
 config SND_S3C24XX_I2S
 	tristate
 
diff --git a/sound/soc/samsung/Makefile b/sound/soc/samsung/Makefile
index 86715d8..bc02da0 100644
--- a/sound/soc/samsung/Makefile
+++ b/sound/soc/samsung/Makefile
@@ -1,6 +1,5 @@
 # S3c24XX Platform Support
 snd-soc-s3c-dma-objs := dmaengine.o
-snd-soc-s3c-dma-legacy-objs := dma.o
 snd-soc-idma-objs := idma.o
 snd-soc-s3c24xx-i2s-objs := s3c24xx-i2s.o
 snd-soc-s3c2412-i2s-objs := s3c2412-i2s.o
@@ -11,7 +10,6 @@ snd-soc-pcm-objs := pcm.o
 snd-soc-i2s-objs := i2s.o
 
 obj-$(CONFIG_SND_S3C_DMA) += snd-soc-s3c-dma.o
-obj-$(CONFIG_SND_S3C_DMA_LEGACY) += snd-soc-s3c-dma-legacy.o
 obj-$(CONFIG_SND_S3C24XX_I2S) += snd-soc-s3c24xx-i2s.o
 obj-$(CONFIG_SND_SAMSUNG_AC97) += snd-soc-ac97.o
 obj-$(CONFIG_SND_S3C2412_SOC_I2S) += snd-soc-s3c2412-i2s.o
diff --git a/sound/soc/samsung/dma.c b/sound/soc/samsung/dma.c
deleted file mode 100644
index dc09b71..0000000
--- a/sound/soc/samsung/dma.c
+++ /dev/null
@@ -1,460 +0,0 @@
-/*
- * dma.c  --  ALSA Soc Audio Layer
- *
- * (c) 2006 Wolfson Microelectronics PLC.
- * Graeme Gregory graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com
- *
- * Copyright 2004-2005 Simtec Electronics
- *	http://armlinux.simtec.co.uk/
- *	Ben Dooks <ben@simtec.co.uk>
- *
- *  This program is free software; you can redistribute  it and/or modify it
- *  under  the terms of  the GNU General  Public License as published by the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#include <linux/slab.h>
-#include <linux/dma-mapping.h>
-#include <linux/module.h>
-
-#include <sound/soc.h>
-#include <sound/pcm_params.h>
-
-#include <asm/dma.h>
-#include <mach/hardware.h>
-#include <mach/dma.h>
-
-#include "dma.h"
-
-#define ST_RUNNING		(1<<0)
-#define ST_OPENED		(1<<1)
-
-static const struct snd_pcm_hardware dma_hardware = {
-	.info			= SNDRV_PCM_INFO_INTERLEAVED |
-				    SNDRV_PCM_INFO_BLOCK_TRANSFER |
-				    SNDRV_PCM_INFO_MMAP |
-				    SNDRV_PCM_INFO_MMAP_VALID,
-	.buffer_bytes_max	= 128*1024,
-	.period_bytes_min	= PAGE_SIZE,
-	.period_bytes_max	= PAGE_SIZE*2,
-	.periods_min		= 2,
-	.periods_max		= 128,
-	.fifo_size		= 32,
-};
-
-struct runtime_data {
-	spinlock_t lock;
-	int state;
-	unsigned int dma_loaded;
-	unsigned int dma_period;
-	dma_addr_t dma_start;
-	dma_addr_t dma_pos;
-	dma_addr_t dma_end;
-	struct s3c_dma_params *params;
-};
-
-static void audio_buffdone(void *data);
-
-/* dma_enqueue
- *
- * place a dma buffer onto the queue for the dma system
- * to handle.
- */
-static void dma_enqueue(struct snd_pcm_substream *substream)
-{
-	struct runtime_data *prtd = substream->runtime->private_data;
-	dma_addr_t pos = prtd->dma_pos;
-	unsigned int limit;
-	struct samsung_dma_prep dma_info;
-
-	pr_debug("Entered %s\n", __func__);
-
-	limit = (prtd->dma_end - prtd->dma_start) / prtd->dma_period;
-
-	pr_debug("%s: loaded %d, limit %d\n",
-				__func__, prtd->dma_loaded, limit);
-
-	dma_info.cap = (samsung_dma_has_circular() ? DMA_CYCLIC : DMA_SLAVE);
-	dma_info.direction =
-		(substream->stream == SNDRV_PCM_STREAM_PLAYBACK
-		? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM);
-	dma_info.fp = audio_buffdone;
-	dma_info.fp_param = substream;
-	dma_info.period = prtd->dma_period;
-	dma_info.len = prtd->dma_period*limit;
-
-	if (dma_info.cap == DMA_CYCLIC) {
-		dma_info.buf = pos;
-		prtd->params->ops->prepare(prtd->params->ch, &dma_info);
-		prtd->dma_loaded += limit;
-		return;
-	}
-
-	while (prtd->dma_loaded < limit) {
-		pr_debug("dma_loaded: %d\n", prtd->dma_loaded);
-
-		if ((pos + dma_info.period) > prtd->dma_end) {
-			dma_info.period  = prtd->dma_end - pos;
-			pr_debug("%s: corrected dma len %ld\n",
-					__func__, dma_info.period);
-		}
-
-		dma_info.buf = pos;
-		prtd->params->ops->prepare(prtd->params->ch, &dma_info);
-
-		prtd->dma_loaded++;
-		pos += prtd->dma_period;
-		if (pos >= prtd->dma_end)
-			pos = prtd->dma_start;
-	}
-
-	prtd->dma_pos = pos;
-}
-
-static void audio_buffdone(void *data)
-{
-	struct snd_pcm_substream *substream = data;
-	struct runtime_data *prtd = substream->runtime->private_data;
-
-	pr_debug("Entered %s\n", __func__);
-
-	if (prtd->state & ST_RUNNING) {
-		prtd->dma_pos += prtd->dma_period;
-		if (prtd->dma_pos >= prtd->dma_end)
-			prtd->dma_pos = prtd->dma_start;
-
-		if (substream)
-			snd_pcm_period_elapsed(substream);
-
-		spin_lock(&prtd->lock);
-		if (!samsung_dma_has_circular()) {
-			prtd->dma_loaded--;
-			dma_enqueue(substream);
-		}
-		spin_unlock(&prtd->lock);
-	}
-}
-
-static int dma_hw_params(struct snd_pcm_substream *substream,
-	struct snd_pcm_hw_params *params)
-{
-	struct snd_pcm_runtime *runtime = substream->runtime;
-	struct runtime_data *prtd = runtime->private_data;
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	unsigned long totbytes = params_buffer_bytes(params);
-	struct s3c_dma_params *dma =
-		snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
-	struct samsung_dma_req req;
-	struct samsung_dma_config config;
-
-	pr_debug("Entered %s\n", __func__);
-
-	/* return if this is a bufferless transfer e.g.
-	 * codec <--> BT codec or GSM modem -- lg FIXME */
-	if (!dma)
-		return 0;
-
-	/* this may get called several times by oss emulation
-	 * with different params -HW */
-	if (prtd->params == NULL) {
-		/* prepare DMA */
-		prtd->params = dma;
-
-		pr_debug("params %p, client %p, channel %d\n", prtd->params,
-			prtd->params->client, prtd->params->channel);
-
-		prtd->params->ops = samsung_dma_get_ops();
-
-		req.cap = (samsung_dma_has_circular() ?
-			DMA_CYCLIC : DMA_SLAVE);
-		req.client = prtd->params->client;
-		config.direction =
-			(substream->stream == SNDRV_PCM_STREAM_PLAYBACK
-			? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM);
-		config.width = prtd->params->dma_size;
-		config.fifo = prtd->params->dma_addr;
-		prtd->params->ch = prtd->params->ops->request(
-				prtd->params->channel, &req, rtd->cpu_dai->dev,
-				prtd->params->ch_name);
-		if (!prtd->params->ch) {
-			pr_err("Failed to allocate DMA channel\n");
-			return -ENXIO;
-		}
-		prtd->params->ops->config(prtd->params->ch, &config);
-	}
-
-	snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
-
-	runtime->dma_bytes = totbytes;
-
-	spin_lock_irq(&prtd->lock);
-	prtd->dma_loaded = 0;
-	prtd->dma_period = params_period_bytes(params);
-	prtd->dma_start = runtime->dma_addr;
-	prtd->dma_pos = prtd->dma_start;
-	prtd->dma_end = prtd->dma_start + totbytes;
-	spin_unlock_irq(&prtd->lock);
-
-	return 0;
-}
-
-static int dma_hw_free(struct snd_pcm_substream *substream)
-{
-	struct runtime_data *prtd = substream->runtime->private_data;
-
-	pr_debug("Entered %s\n", __func__);
-
-	snd_pcm_set_runtime_buffer(substream, NULL);
-
-	if (prtd->params) {
-		prtd->params->ops->flush(prtd->params->ch);
-		prtd->params->ops->release(prtd->params->ch,
-					prtd->params->client);
-		prtd->params = NULL;
-	}
-
-	return 0;
-}
-
-static int dma_prepare(struct snd_pcm_substream *substream)
-{
-	struct runtime_data *prtd = substream->runtime->private_data;
-	int ret = 0;
-
-	pr_debug("Entered %s\n", __func__);
-
-	/* return if this is a bufferless transfer e.g.
-	 * codec <--> BT codec or GSM modem -- lg FIXME */
-	if (!prtd->params)
-		return 0;
-
-	/* flush the DMA channel */
-	prtd->params->ops->flush(prtd->params->ch);
-
-	prtd->dma_loaded = 0;
-	prtd->dma_pos = prtd->dma_start;
-
-	/* enqueue dma buffers */
-	dma_enqueue(substream);
-
-	return ret;
-}
-
-static int dma_trigger(struct snd_pcm_substream *substream, int cmd)
-{
-	struct runtime_data *prtd = substream->runtime->private_data;
-	int ret = 0;
-
-	pr_debug("Entered %s\n", __func__);
-
-	spin_lock(&prtd->lock);
-
-	switch (cmd) {
-	case SNDRV_PCM_TRIGGER_START:
-		prtd->state |= ST_RUNNING;
-		prtd->params->ops->trigger(prtd->params->ch);
-		break;
-
-	case SNDRV_PCM_TRIGGER_STOP:
-		prtd->state &= ~ST_RUNNING;
-		prtd->params->ops->stop(prtd->params->ch);
-		break;
-
-	default:
-		ret = -EINVAL;
-		break;
-	}
-
-	spin_unlock(&prtd->lock);
-
-	return ret;
-}
-
-static snd_pcm_uframes_t
-dma_pointer(struct snd_pcm_substream *substream)
-{
-	struct snd_pcm_runtime *runtime = substream->runtime;
-	struct runtime_data *prtd = runtime->private_data;
-	unsigned long res;
-
-	pr_debug("Entered %s\n", __func__);
-
-	res = prtd->dma_pos - prtd->dma_start;
-
-	pr_debug("Pointer offset: %lu\n", res);
-
-	/* we seem to be getting the odd error from the pcm library due
-	 * to out-of-bounds pointers. this is maybe due to the dma engine
-	 * not having loaded the new values for the channel before being
-	 * called... (todo - fix )
-	 */
-
-	if (res >= snd_pcm_lib_buffer_bytes(substream)) {
-		if (res == snd_pcm_lib_buffer_bytes(substream))
-			res = 0;
-	}
-
-	return bytes_to_frames(substream->runtime, res);
-}
-
-static int dma_open(struct snd_pcm_substream *substream)
-{
-	struct snd_pcm_runtime *runtime = substream->runtime;
-	struct runtime_data *prtd;
-
-	pr_debug("Entered %s\n", __func__);
-
-	snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS);
-	snd_soc_set_runtime_hwparams(substream, &dma_hardware);
-
-	prtd = kzalloc(sizeof(struct runtime_data), GFP_KERNEL);
-	if (prtd == NULL)
-		return -ENOMEM;
-
-	spin_lock_init(&prtd->lock);
-
-	runtime->private_data = prtd;
-	return 0;
-}
-
-static int dma_close(struct snd_pcm_substream *substream)
-{
-	struct snd_pcm_runtime *runtime = substream->runtime;
-	struct runtime_data *prtd = runtime->private_data;
-
-	pr_debug("Entered %s\n", __func__);
-
-	if (!prtd)
-		pr_debug("dma_close called with prtd == NULL\n");
-
-	kfree(prtd);
-
-	return 0;
-}
-
-static int dma_mmap(struct snd_pcm_substream *substream,
-	struct vm_area_struct *vma)
-{
-	struct snd_pcm_runtime *runtime = substream->runtime;
-
-	pr_debug("Entered %s\n", __func__);
-
-	return dma_mmap_writecombine(substream->pcm->card->dev, vma,
-				     runtime->dma_area,
-				     runtime->dma_addr,
-				     runtime->dma_bytes);
-}
-
-static struct snd_pcm_ops dma_ops = {
-	.open		= dma_open,
-	.close		= dma_close,
-	.ioctl		= snd_pcm_lib_ioctl,
-	.hw_params	= dma_hw_params,
-	.hw_free	= dma_hw_free,
-	.prepare	= dma_prepare,
-	.trigger	= dma_trigger,
-	.pointer	= dma_pointer,
-	.mmap		= dma_mmap,
-};
-
-static int preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
-{
-	struct snd_pcm_substream *substream = pcm->streams[stream].substream;
-	struct snd_dma_buffer *buf = &substream->dma_buffer;
-	size_t size = dma_hardware.buffer_bytes_max;
-
-	pr_debug("Entered %s\n", __func__);
-
-	buf->dev.type = SNDRV_DMA_TYPE_DEV;
-	buf->dev.dev = pcm->card->dev;
-	buf->private_data = NULL;
-	buf->area = dma_alloc_writecombine(pcm->card->dev, size,
-					   &buf->addr, GFP_KERNEL);
-	if (!buf->area)
-		return -ENOMEM;
-	buf->bytes = size;
-	return 0;
-}
-
-static void dma_free_dma_buffers(struct snd_pcm *pcm)
-{
-	struct snd_pcm_substream *substream;
-	struct snd_dma_buffer *buf;
-	int stream;
-
-	pr_debug("Entered %s\n", __func__);
-
-	for (stream = 0; stream < 2; stream++) {
-		substream = pcm->streams[stream].substream;
-		if (!substream)
-			continue;
-
-		buf = &substream->dma_buffer;
-		if (!buf->area)
-			continue;
-
-		dma_free_writecombine(pcm->card->dev, buf->bytes,
-				      buf->area, buf->addr);
-		buf->area = NULL;
-	}
-}
-
-static int dma_new(struct snd_soc_pcm_runtime *rtd)
-{
-	struct snd_card *card = rtd->card->snd_card;
-	struct snd_pcm *pcm = rtd->pcm;
-	int ret;
-
-	pr_debug("Entered %s\n", __func__);
-
-	ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32));
-	if (ret)
-		return ret;
-
-	if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) {
-		ret = preallocate_dma_buffer(pcm,
-			SNDRV_PCM_STREAM_PLAYBACK);
-		if (ret)
-			goto out;
-	}
-
-	if (pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream) {
-		ret = preallocate_dma_buffer(pcm,
-			SNDRV_PCM_STREAM_CAPTURE);
-		if (ret)
-			goto out;
-	}
-out:
-	return ret;
-}
-
-static struct snd_soc_platform_driver samsung_asoc_platform = {
-	.ops		= &dma_ops,
-	.pcm_new	= dma_new,
-	.pcm_free	= dma_free_dma_buffers,
-};
-
-void samsung_asoc_init_dma_data(struct snd_soc_dai *dai,
-				struct s3c_dma_params *playback,
-				struct s3c_dma_params *capture)
-{
-	snd_soc_dai_init_dma_data(dai, playback, capture);
-}
-EXPORT_SYMBOL_GPL(samsung_asoc_init_dma_data);
-
-int samsung_asoc_dma_platform_register(struct device *dev)
-{
-	return snd_soc_register_platform(dev, &samsung_asoc_platform);
-}
-EXPORT_SYMBOL_GPL(samsung_asoc_dma_platform_register);
-
-void samsung_asoc_dma_platform_unregister(struct device *dev)
-{
-	snd_soc_unregister_platform(dev);
-}
-EXPORT_SYMBOL_GPL(samsung_asoc_dma_platform_unregister);
-
-MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
-MODULE_DESCRIPTION("Samsung ASoC DMA Driver");
-MODULE_LICENSE("GPL");
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-20 20:26 [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API Vasily Khoruzhick
  2014-05-20 20:26 ` [PATCH v2 2/2] ASoC: samsung: drop support for legacy S3C24XX DMA API Vasily Khoruzhick
@ 2014-05-20 22:19 ` Mark Brown
  2014-05-21  6:42   ` Vasily Khoruzhick
  2014-05-21 13:28 ` [alsa-devel] " Tomasz Figa
  2 siblings, 1 reply; 16+ messages in thread
From: Mark Brown @ 2014-05-20 22:19 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: Sangbeom Kim, alsa-devel, Kukjin Kim, Liam Girdwood,
	Lars-Peter Clausen


[-- Attachment #1.1: Type: text/plain, Size: 217 bytes --]

On Tue, May 20, 2014 at 11:26:08PM +0300, Vasily Khoruzhick wrote:
> Use dmaengine instead of legacy s3c24xx DMA API for s3c24xx and s3c2412

Do these depend on any other code or can they just be applied
immediately?

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-20 22:19 ` [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API Mark Brown
@ 2014-05-21  6:42   ` Vasily Khoruzhick
  2014-05-21 10:49     ` Mark Brown
  0 siblings, 1 reply; 16+ messages in thread
From: Vasily Khoruzhick @ 2014-05-21  6:42 UTC (permalink / raw)
  To: Mark Brown
  Cc: Sangbeom Kim, alsa-devel, Kukjin Kim, Liam Girdwood,
	Lars-Peter Clausen

On Wed, May 21, 2014 at 1:19 AM, Mark Brown <broonie@kernel.org> wrote:
> On Tue, May 20, 2014 at 11:26:08PM +0300, Vasily Khoruzhick wrote:
>> Use dmaengine instead of legacy s3c24xx DMA API for s3c24xx and s3c2412
>
> Do these depend on any other code or can they just be applied
> immediately?

For compile time everything is present, for runtime they depend on
cyclic transfers support for s3c24xx-dmac (already submitted).
Also s3c24xx machines lack a platform device DMA (one-liner, not submitted yet).

Regards
Vasily

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21  6:42   ` Vasily Khoruzhick
@ 2014-05-21 10:49     ` Mark Brown
  2014-05-21 10:53       ` Vasily Khoruzhick
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Brown @ 2014-05-21 10:49 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: Sangbeom Kim, alsa-devel, Kukjin Kim, Liam Girdwood,
	Lars-Peter Clausen


[-- Attachment #1.1: Type: text/plain, Size: 872 bytes --]

On Wed, May 21, 2014 at 09:42:21AM +0300, Vasily Khoruzhick wrote:
> On Wed, May 21, 2014 at 1:19 AM, Mark Brown <broonie@kernel.org> wrote:
> > On Tue, May 20, 2014 at 11:26:08PM +0300, Vasily Khoruzhick wrote:
> >> Use dmaengine instead of legacy s3c24xx DMA API for s3c24xx and s3c2412

> > Do these depend on any other code or can they just be applied
> > immediately?

> For compile time everything is present, for runtime they depend on
> cyclic transfers support for s3c24xx-dmac (already submitted).
> Also s3c24xx machines lack a platform device DMA (one-liner, not submitted yet).

OK, in that case I think it might be better to hold off until either the
DMA patches are merged or after the merge window (should be very soon)
so that the driver still works in v3.16 - does that seem sensible?  The
changes look OK, just a question of getting them merged safely.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 10:49     ` Mark Brown
@ 2014-05-21 10:53       ` Vasily Khoruzhick
  0 siblings, 0 replies; 16+ messages in thread
From: Vasily Khoruzhick @ 2014-05-21 10:53 UTC (permalink / raw)
  To: Mark Brown
  Cc: Sangbeom Kim, alsa-devel, Kukjin Kim, Liam Girdwood,
	Lars-Peter Clausen

On Wed, May 21, 2014 at 1:49 PM, Mark Brown <broonie@kernel.org> wrote:
> On Wed, May 21, 2014 at 09:42:21AM +0300, Vasily Khoruzhick wrote:
>> On Wed, May 21, 2014 at 1:19 AM, Mark Brown <broonie@kernel.org> wrote:
>> > On Tue, May 20, 2014 at 11:26:08PM +0300, Vasily Khoruzhick wrote:
>> >> Use dmaengine instead of legacy s3c24xx DMA API for s3c24xx and s3c2412
>
>> > Do these depend on any other code or can they just be applied
>> > immediately?
>
>> For compile time everything is present, for runtime they depend on
>> cyclic transfers support for s3c24xx-dmac (already submitted).
>> Also s3c24xx machines lack a platform device DMA (one-liner, not submitted yet).
>
> OK, in that case I think it might be better to hold off until either the
> DMA patches are merged or after the merge window (should be very soon)
> so that the driver still works in v3.16 - does that seem sensible?  The
> changes look OK, just a question of getting them merged safely.

Mark, legacy dma does not work for me as for 3.14, tried on h1940
(s3c2410) and on rx1950 (s3c2442).
So merging them won't break anything, it's already broken.

Regards
Vasily

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-20 20:26 [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API Vasily Khoruzhick
  2014-05-20 20:26 ` [PATCH v2 2/2] ASoC: samsung: drop support for legacy S3C24XX DMA API Vasily Khoruzhick
  2014-05-20 22:19 ` [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API Mark Brown
@ 2014-05-21 13:28 ` Tomasz Figa
  2014-05-21 14:53   ` Vasily Khoruzhick
  2 siblings, 1 reply; 16+ messages in thread
From: Tomasz Figa @ 2014-05-21 13:28 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim, Sangbeom Kim,
	Lars-Peter Clausen, linux-samsung-soc@vger.kernel.org

Hi Vasily,

Please remember to keep linux-samsung-soc ML on Cc when sending patches
related to Samsung platforms. It is essential to let Samsung people
review them. Please resend the series with this in mind.

The patch in general looks good to me. Might be a good idea to specify
on what board(s) and how it was tested, though.

Best regards,
Tomasz

On 20.05.2014 22:26, Vasily Khoruzhick wrote:
> Use dmaengine instead of legacy s3c24xx DMA API for s3c24xx and s3c2412
> 
> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> ---
> v2: use hardcoded dma channel number
> 
>  sound/soc/samsung/Kconfig       |  9 +++----
>  sound/soc/samsung/dmaengine.c   |  3 +++
>  sound/soc/samsung/s3c-i2s-v2.c  | 17 +------------
>  sound/soc/samsung/s3c2412-i2s.c | 47 +++++++++++++++++-----------------
>  sound/soc/samsung/s3c24xx-i2s.c | 56 +++++++++++++++++++----------------------
>  5 files changed, 56 insertions(+), 76 deletions(-)
> 
> diff --git a/sound/soc/samsung/Kconfig b/sound/soc/samsung/Kconfig
> index 3507574..022c7a4 100644
> --- a/sound/soc/samsung/Kconfig
> +++ b/sound/soc/samsung/Kconfig
> @@ -1,11 +1,10 @@
>  config SND_SOC_SAMSUNG
>  	tristate "ASoC support for Samsung"
>  	depends on PLAT_SAMSUNG
> -	select S3C2410_DMA if ARCH_S3C24XX
> +	select S3C24XX_DMAC if ARCH_S3C24XX
>  	select S3C64XX_PL080 if ARCH_S3C64XX
> -	select SND_S3C_DMA if !ARCH_S3C24XX
> -	select SND_S3C_DMA_LEGACY if ARCH_S3C24XX
> -	select SND_SOC_GENERIC_DMAENGINE_PCM if !ARCH_S3C24XX
> +	select SND_S3C_DMA
> +	select SND_SOC_GENERIC_DMAENGINE_PCM
>  	help
>  	  Say Y or M if you want to add support for codecs attached to
>  	  the Samsung SoCs' Audio interfaces. You will also need to
> @@ -19,7 +18,6 @@ config SND_S3C_DMA_LEGACY
>  
>  config SND_S3C24XX_I2S
>  	tristate
> -	select S3C24XX_DMA
>  
>  config SND_S3C_I2SV2_SOC
>  	tristate
> @@ -27,7 +25,6 @@ config SND_S3C_I2SV2_SOC
>  config SND_S3C2412_SOC_I2S
>  	tristate
>  	select SND_S3C_I2SV2_SOC
> -	select S3C2410_DMA
>  
>  config SND_SAMSUNG_PCM
>  	tristate
> diff --git a/sound/soc/samsung/dmaengine.c b/sound/soc/samsung/dmaengine.c
> index 750ce58..72f27d1 100644
> --- a/sound/soc/samsung/dmaengine.c
> +++ b/sound/soc/samsung/dmaengine.c
> @@ -17,6 +17,7 @@
>  
>  #include <linux/module.h>
>  #include <linux/amba/pl08x.h>
> +#include <linux/platform_data/dma-s3c24xx.h>
>  
>  #include <sound/core.h>
>  #include <sound/pcm.h>
> @@ -29,6 +30,8 @@
>  
>  #ifdef CONFIG_ARCH_S3C64XX
>  #define filter_fn pl08x_filter_id
> +#elif defined(CONFIG_ARCH_S3C24XX)
> +#define filter_fn s3c24xx_dma_filter
>  #else
>  #define filter_fn NULL
>  #endif
> diff --git a/sound/soc/samsung/s3c-i2s-v2.c b/sound/soc/samsung/s3c-i2s-v2.c
> index 79e7efb..1a74051 100644
> --- a/sound/soc/samsung/s3c-i2s-v2.c
> +++ b/sound/soc/samsung/s3c-i2s-v2.c
> @@ -392,8 +392,6 @@ static int s3c2412_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
>  	int capture = (substream->stream == SNDRV_PCM_STREAM_CAPTURE);
>  	unsigned long irqs;
>  	int ret = 0;
> -	struct s3c_dma_params *dma_data =
> -		snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
>  
>  	pr_debug("Entered %s\n", __func__);
>  
> @@ -424,13 +422,6 @@ static int s3c2412_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
>  
>  		local_irq_restore(irqs);
>  
> -		/*
> -		 * Load the next buffer to DMA to meet the reqirement
> -		 * of the auto reload mechanism of S3C24XX.
> -		 * This call won't bother S3C64XX.
> -		 */
> -		s3c2410_dma_ctrl(dma_data->channel, S3C2410_DMAOP_STARTED);
> -
>  		break;
>  
>  	case SNDRV_PCM_TRIGGER_STOP:
> @@ -644,12 +635,6 @@ int s3c_i2sv2_probe(struct snd_soc_dai *dai,
>  	/* record our i2s structure for later use in the callbacks */
>  	snd_soc_dai_set_drvdata(dai, i2s);
>  
> -	i2s->regs = ioremap(base, 0x100);
> -	if (i2s->regs == NULL) {
> -		dev_err(dev, "cannot ioremap registers\n");
> -		return -ENXIO;
> -	}
> -
>  	i2s->iis_pclk = clk_get(dev, "iis");
>  	if (IS_ERR(i2s->iis_pclk)) {
>  		dev_err(dev, "failed to get iis_clock\n");
> @@ -729,7 +714,7 @@ int s3c_i2sv2_register_component(struct device *dev, int id,
>  			   struct snd_soc_component_driver *cmp_drv,
>  			   struct snd_soc_dai_driver *dai_drv)
>  {
> -	struct snd_soc_dai_ops *ops = dai_drv->ops;
> +	struct snd_soc_dai_ops *ops = (struct snd_soc_dai_ops *)dai_drv->ops;
>  
>  	ops->trigger = s3c2412_i2s_trigger;
>  	if (!ops->hw_params)
> diff --git a/sound/soc/samsung/s3c2412-i2s.c b/sound/soc/samsung/s3c2412-i2s.c
> index d079445..ba084e3 100644
> --- a/sound/soc/samsung/s3c2412-i2s.c
> +++ b/sound/soc/samsung/s3c2412-i2s.c
> @@ -33,25 +33,19 @@
>  #include "regs-i2s-v2.h"
>  #include "s3c2412-i2s.h"
>  
> -static struct s3c2410_dma_client s3c2412_dma_client_out = {
> -	.name		= "I2S PCM Stereo out"
> -};
> -
> -static struct s3c2410_dma_client s3c2412_dma_client_in = {
> -	.name		= "I2S PCM Stereo in"
> -};
> -
>  static struct s3c_dma_params s3c2412_i2s_pcm_stereo_out = {
> -	.client		= &s3c2412_dma_client_out,
> +	.client		=
> +		(struct s3c2410_dma_client *)&s3c2412_i2s_pcm_stereo_out,
>  	.channel	= DMACH_I2S_OUT,
> -	.dma_addr	= S3C2410_PA_IIS + S3C2412_IISTXD,
> +	.ch_name	= "tx",
>  	.dma_size	= 4,
>  };
>  
>  static struct s3c_dma_params s3c2412_i2s_pcm_stereo_in = {
> -	.client		= &s3c2412_dma_client_in,
> +	.client		=
> +		(struct s3c2410_dma_client *)&s3c2412_i2s_pcm_stereo_in,
>  	.channel	= DMACH_I2S_IN,
> -	.dma_addr	= S3C2410_PA_IIS + S3C2412_IISRXD,
> +	.ch_name	= "rx",
>  	.dma_size	= 4,
>  };
>  
> @@ -63,6 +57,9 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai)
>  
>  	pr_debug("Entered %s\n", __func__);
>  
> +	samsung_asoc_init_dma_data(dai, &s3c2412_i2s_pcm_stereo_out,
> +		&s3c2412_i2s_pcm_stereo_in);
> +
>  	ret = s3c_i2sv2_probe(dai, &s3c2412_i2s, S3C2410_PA_IIS);
>  	if (ret)
>  		return ret;
> @@ -70,10 +67,9 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai)
>  	s3c2412_i2s.dma_capture = &s3c2412_i2s_pcm_stereo_in;
>  	s3c2412_i2s.dma_playback = &s3c2412_i2s_pcm_stereo_out;
>  
> -	s3c2412_i2s.iis_cclk = clk_get(dai->dev, "i2sclk");
> +	s3c2412_i2s.iis_cclk = devm_clk_get(dai->dev, "i2sclk");
>  	if (IS_ERR(s3c2412_i2s.iis_cclk)) {
>  		pr_err("failed to get i2sclk clock\n");
> -		iounmap(s3c2412_i2s.regs);
>  		return PTR_ERR(s3c2412_i2s.iis_cclk);
>  	}
>  
> @@ -94,8 +90,6 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai)
>  static int s3c2412_i2s_remove(struct snd_soc_dai *dai)
>  {
>  	clk_disable(s3c2412_i2s.iis_cclk);
> -	clk_put(s3c2412_i2s.iis_cclk);
> -	iounmap(s3c2412_i2s.regs);
>  
>  	return 0;
>  }
> @@ -105,18 +99,10 @@ static int s3c2412_i2s_hw_params(struct snd_pcm_substream *substream,
>  				 struct snd_soc_dai *cpu_dai)
>  {
>  	struct s3c_i2sv2_info *i2s = snd_soc_dai_get_drvdata(cpu_dai);
> -	struct s3c_dma_params *dma_data;
>  	u32 iismod;
>  
>  	pr_debug("Entered %s\n", __func__);
>  
> -	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> -		dma_data = i2s->dma_playback;
> -	else
> -		dma_data = i2s->dma_capture;
> -
> -	snd_soc_dai_set_dma_data(cpu_dai, substream, dma_data);
> -
>  	iismod = readl(i2s->regs + S3C2412_IISMOD);
>  	pr_debug("%s: r: IISMOD: %x\n", __func__, iismod);
>  
> @@ -169,6 +155,19 @@ static const struct snd_soc_component_driver s3c2412_i2s_component = {
>  static int s3c2412_iis_dev_probe(struct platform_device *pdev)
>  {
>  	int ret = 0;
> +	struct resource *res;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	if (!res) {
> +		dev_err(&pdev->dev, "Can't get IO resource.\n");
> +		return -ENOENT;
> +	}
> +	s3c2412_i2s.regs = devm_ioremap_resource(&pdev->dev, res);
> +	if (s3c2412_i2s.regs == NULL)
> +		return -ENXIO;
> +
> +	s3c2412_i2s_pcm_stereo_out.dma_addr = res->start + S3C2412_IISTXD;
> +	s3c2412_i2s_pcm_stereo_in.dma_addr = res->start + S3C2412_IISRXD;
>  
>  	ret = s3c_i2sv2_register_component(&pdev->dev, -1,
>  					   &s3c2412_i2s_component,
> diff --git a/sound/soc/samsung/s3c24xx-i2s.c b/sound/soc/samsung/s3c24xx-i2s.c
> index f31e916..97600df 100644
> --- a/sound/soc/samsung/s3c24xx-i2s.c
> +++ b/sound/soc/samsung/s3c24xx-i2s.c
> @@ -31,25 +31,19 @@
>  #include "dma.h"
>  #include "s3c24xx-i2s.h"
>  
> -static struct s3c2410_dma_client s3c24xx_dma_client_out = {
> -	.name = "I2S PCM Stereo out"
> -};
> -
> -static struct s3c2410_dma_client s3c24xx_dma_client_in = {
> -	.name = "I2S PCM Stereo in"
> -};
> -
>  static struct s3c_dma_params s3c24xx_i2s_pcm_stereo_out = {
> -	.client		= &s3c24xx_dma_client_out,
> +	.client		=
> +		(struct s3c2410_dma_client *)&s3c24xx_i2s_pcm_stereo_out,
>  	.channel	= DMACH_I2S_OUT,
> -	.dma_addr	= S3C2410_PA_IIS + S3C2410_IISFIFO,
> +	.ch_name	= "tx",
>  	.dma_size	= 2,
>  };
>  
>  static struct s3c_dma_params s3c24xx_i2s_pcm_stereo_in = {
> -	.client		= &s3c24xx_dma_client_in,
> +	.client		=
> +		(struct s3c2410_dma_client *)&s3c24xx_i2s_pcm_stereo_in,
>  	.channel	= DMACH_I2S_IN,
> -	.dma_addr	= S3C2410_PA_IIS + S3C2410_IISFIFO,
> +	.ch_name	= "rx",
>  	.dma_size	= 2,
>  };
>  
> @@ -231,18 +225,12 @@ static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,
>  				 struct snd_pcm_hw_params *params,
>  				 struct snd_soc_dai *dai)
>  {
> -	struct snd_soc_pcm_runtime *rtd = substream->private_data;
> -	struct s3c_dma_params *dma_data;
> +	struct snd_dmaengine_dai_dma_data *dma_data;
>  	u32 iismod;
>  
>  	pr_debug("Entered %s\n", __func__);
>  
> -	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> -		dma_data = &s3c24xx_i2s_pcm_stereo_out;
> -	else
> -		dma_data = &s3c24xx_i2s_pcm_stereo_in;
> -
> -	snd_soc_dai_set_dma_data(rtd->cpu_dai, substream, dma_data);
> +	dma_data = snd_soc_dai_get_dma_data(dai, substream);
>  
>  	/* Working copies of register */
>  	iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
> @@ -251,11 +239,11 @@ static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,
>  	switch (params_format(params)) {
>  	case SNDRV_PCM_FORMAT_S8:
>  		iismod &= ~S3C2410_IISMOD_16BIT;
> -		dma_data->dma_size = 1;
> +		dma_data->addr_width = 1;
>  		break;
>  	case SNDRV_PCM_FORMAT_S16_LE:
>  		iismod |= S3C2410_IISMOD_16BIT;
> -		dma_data->dma_size = 2;
> +		dma_data->addr_width = 2;
>  		break;
>  	default:
>  		return -EINVAL;
> @@ -270,8 +258,6 @@ static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
>  			       struct snd_soc_dai *dai)
>  {
>  	int ret = 0;
> -	struct s3c_dma_params *dma_data =
> -		snd_soc_dai_get_dma_data(dai, substream);
>  
>  	pr_debug("Entered %s\n", __func__);
>  
> @@ -290,7 +276,6 @@ static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
>  		else
>  			s3c24xx_snd_txctrl(1);
>  
> -		s3c2410_dma_ctrl(dma_data->channel, S3C2410_DMAOP_STARTED);
>  		break;
>  	case SNDRV_PCM_TRIGGER_STOP:
>  	case SNDRV_PCM_TRIGGER_SUSPEND:
> @@ -380,14 +365,12 @@ static int s3c24xx_i2s_probe(struct snd_soc_dai *dai)
>  {
>  	pr_debug("Entered %s\n", __func__);
>  
> -	s3c24xx_i2s.regs = ioremap(S3C2410_PA_IIS, 0x100);
> -	if (s3c24xx_i2s.regs == NULL)
> -		return -ENXIO;
> +	samsung_asoc_init_dma_data(dai, &s3c24xx_i2s_pcm_stereo_out,
> +		&s3c24xx_i2s_pcm_stereo_in);
>  
> -	s3c24xx_i2s.iis_clk = clk_get(dai->dev, "iis");
> +	s3c24xx_i2s.iis_clk = devm_clk_get(dai->dev, "iis");
>  	if (IS_ERR(s3c24xx_i2s.iis_clk)) {
>  		pr_err("failed to get iis_clock\n");
> -		iounmap(s3c24xx_i2s.regs);
>  		return PTR_ERR(s3c24xx_i2s.iis_clk);
>  	}
>  	clk_enable(s3c24xx_i2s.iis_clk);
> @@ -474,6 +457,19 @@ static const struct snd_soc_component_driver s3c24xx_i2s_component = {
>  static int s3c24xx_iis_dev_probe(struct platform_device *pdev)
>  {
>  	int ret = 0;
> +	struct resource *res;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	if (!res) {
> +		dev_err(&pdev->dev, "Can't get IO resource.\n");
> +		return -ENOENT;
> +	}
> +	s3c24xx_i2s.regs = devm_ioremap_resource(&pdev->dev, res);
> +	if (s3c24xx_i2s.regs == NULL)
> +		return -ENXIO;
> +
> +	s3c24xx_i2s_pcm_stereo_out.dma_addr = res->start + S3C2410_IISFIFO;
> +	s3c24xx_i2s_pcm_stereo_in.dma_addr = res->start + S3C2410_IISFIFO;
>  
>  	ret = snd_soc_register_component(&pdev->dev, &s3c24xx_i2s_component,
>  					 &s3c24xx_i2s_dai, 1);
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 13:28 ` [alsa-devel] " Tomasz Figa
@ 2014-05-21 14:53   ` Vasily Khoruzhick
  2014-05-21 15:07     ` Tomasz Figa
  0 siblings, 1 reply; 16+ messages in thread
From: Vasily Khoruzhick @ 2014-05-21 14:53 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim, Sangbeom Kim,
	Lars-Peter Clausen, linux-samsung-soc@vger.kernel.org

On Wed, May 21, 2014 at 4:28 PM, Tomasz Figa <t.figa@samsung.com> wrote:
> Hi Vasily,

Hi Tomasz,

> Please remember to keep linux-samsung-soc ML on Cc when sending patches
> related to Samsung platforms. It is essential to let Samsung people
> review them.

Ok, I'll keep it in mind. I've just checked and get_maintainer.pl
outputs linux-samsung-soc ML for these
patches. I've omitted it occasionally, because it wasn't necessary to
keep it in CC back in 2011
(year of my last sound-related patch for s3c24xx).

> Please resend the series with this in mind.

Is it really necessary? This patch is supposed to go through ASoC
tree, not through Samsung's.
And I really doubt that Samsung guys test kernel for s3c24xx boards nowadays.

> The patch in general looks good to me. Might be a good idea to specify
> on what board(s) and how it was tested, though.

It was tested on s3c2410-based iPAQ h1940, s3c2412 part was only
compile-tested, as I don't have s3c2412 hardware.

> Best regards,
> Tomasz

Regards
Vasily

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 14:53   ` Vasily Khoruzhick
@ 2014-05-21 15:07     ` Tomasz Figa
  2014-05-21 15:20       ` Vasily Khoruzhick
  2014-05-21 15:29       ` Heiko Stübner
  0 siblings, 2 replies; 16+ messages in thread
From: Tomasz Figa @ 2014-05-21 15:07 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim, Sangbeom Kim,
	Lars-Peter Clausen, linux-samsung-soc@vger.kernel.org,
	Heiko Stübner

On 21.05.2014 16:53, Vasily Khoruzhick wrote:
> On Wed, May 21, 2014 at 4:28 PM, Tomasz Figa <t.figa@samsung.com> wrote:
>> Hi Vasily,
> 
> Hi Tomasz,
> 
>> Please remember to keep linux-samsung-soc ML on Cc when sending patches
>> related to Samsung platforms. It is essential to let Samsung people
>> review them.
> 
> Ok, I'll keep it in mind. I've just checked and get_maintainer.pl
> outputs linux-samsung-soc ML for these
> patches. I've omitted it occasionally, because it wasn't necessary to
> keep it in CC back in 2011
> (year of my last sound-related patch for s3c24xx).
> 
>> Please resend the series with this in mind.
> 
> Is it really necessary? This patch is supposed to go through ASoC
> tree, not through Samsung's.
> And I really doubt that Samsung guys test kernel for s3c24xx boards nowadays.

Maybe not test, but at least review the code. Also there might be other
people following that list that might be interested in looking at this
series, while not subscribed to alsa-devel - I can name at least Heiko
Stübner, who should be able to test it on further s3c24xx-based boards.

> 
>> The patch in general looks good to me. Might be a good idea to specify
>> on what board(s) and how it was tested, though.
> 
> It was tested on s3c2410-based iPAQ h1940, s3c2412 part was only
> compile-tested, as I don't have s3c2412 hardware.

OK, thanks.

Best regards,
Tomasz

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 15:07     ` Tomasz Figa
@ 2014-05-21 15:20       ` Vasily Khoruzhick
  2014-05-21 15:29       ` Heiko Stübner
  1 sibling, 0 replies; 16+ messages in thread
From: Vasily Khoruzhick @ 2014-05-21 15:20 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim, Sangbeom Kim,
	Lars-Peter Clausen, linux-samsung-soc@vger.kernel.org,
	Heiko Stübner

On Wed, May 21, 2014 at 6:07 PM, Tomasz Figa <t.figa@samsung.com> wrote:

>>
>> Is it really necessary? This patch is supposed to go through ASoC
>> tree, not through Samsung's.
>> And I really doubt that Samsung guys test kernel for s3c24xx boards nowadays.
>
> Maybe not test, but at least review the code. Also there might be other
> people following that list that might be interested in looking at this
> series, while not subscribed to alsa-devel - I can name at least Heiko
> Stübner, who should be able to test it on further s3c24xx-based boards.

Ok, will resend tonight.

Regards
Vasily

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 15:07     ` Tomasz Figa
  2014-05-21 15:20       ` Vasily Khoruzhick
@ 2014-05-21 15:29       ` Heiko Stübner
  2014-05-21 15:39         ` Vasily Khoruzhick
  1 sibling, 1 reply; 16+ messages in thread
From: Heiko Stübner @ 2014-05-21 15:29 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Vasily Khoruzhick, Liam Girdwood, Mark Brown, alsa-devel,
	Kukjin Kim, Sangbeom Kim, Lars-Peter Clausen,
	linux-samsung-soc@vger.kernel.org

Am Mittwoch, 21. Mai 2014, 17:07:47 schrieb Tomasz Figa:
> On 21.05.2014 16:53, Vasily Khoruzhick wrote:
> > On Wed, May 21, 2014 at 4:28 PM, Tomasz Figa <t.figa@samsung.com> wrote:
> >> Please remember to keep linux-samsung-soc ML on Cc when sending patches
> >> related to Samsung platforms. It is essential to let Samsung people
> >> review them.
> > 
> > Ok, I'll keep it in mind. I've just checked and get_maintainer.pl
> > outputs linux-samsung-soc ML for these
> > patches. I've omitted it occasionally, because it wasn't necessary to
> > keep it in CC back in 2011
> > (year of my last sound-related patch for s3c24xx).
> > 
> >> Please resend the series with this in mind.
> > 
> > Is it really necessary? This patch is supposed to go through ASoC
> > tree, not through Samsung's.
> > And I really doubt that Samsung guys test kernel for s3c24xx boards
> > nowadays.
> Maybe not test, but at least review the code. Also there might be other
> people following that list that might be interested in looking at this
> series, while not subscribed to alsa-devel - I can name at least Heiko
> Stübner, who should be able to test it on further s3c24xx-based boards.

Sadly, I don't have a working sound setup on my 2 s3c boards.


Heiko

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 15:29       ` Heiko Stübner
@ 2014-05-21 15:39         ` Vasily Khoruzhick
  2014-05-21 15:56           ` Heiko Stübner
  0 siblings, 1 reply; 16+ messages in thread
From: Vasily Khoruzhick @ 2014-05-21 15:39 UTC (permalink / raw)
  To: Heiko Stübner
  Cc: Tomasz Figa, Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim,
	Sangbeom Kim, Lars-Peter Clausen,
	linux-samsung-soc@vger.kernel.org

On Wed, May 21, 2014 at 6:29 PM, Heiko Stübner <heiko@sntech.de> wrote:
> Am Mittwoch, 21. Mai 2014, 17:07:47 schrieb Tomasz Figa:
>> On 21.05.2014 16:53, Vasily Khoruzhick wrote:
>> > On Wed, May 21, 2014 at 4:28 PM, Tomasz Figa <t.figa@samsung.com> wrote:
>> >> Please remember to keep linux-samsung-soc ML on Cc when sending patches
>> >> related to Samsung platforms. It is essential to let Samsung people
>> >> review them.
>> >
>> > Ok, I'll keep it in mind. I've just checked and get_maintainer.pl
>> > outputs linux-samsung-soc ML for these
>> > patches. I've omitted it occasionally, because it wasn't necessary to
>> > keep it in CC back in 2011
>> > (year of my last sound-related patch for s3c24xx).
>> >
>> >> Please resend the series with this in mind.
>> >
>> > Is it really necessary? This patch is supposed to go through ASoC
>> > tree, not through Samsung's.
>> > And I really doubt that Samsung guys test kernel for s3c24xx boards
>> > nowadays.
>> Maybe not test, but at least review the code. Also there might be other
>> people following that list that might be interested in looking at this
>> series, while not subscribed to alsa-devel - I can name at least Heiko
>> Stübner, who should be able to test it on further s3c24xx-based boards.
>
> Sadly, I don't have a working sound setup on my 2 s3c boards.

What are they btw? Is it too time-consuming to make sound working on them?
It would be nice if anyone except me could test these patches.

> Heiko

Regards
Vasily

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 15:39         ` Vasily Khoruzhick
@ 2014-05-21 15:56           ` Heiko Stübner
  2014-05-21 16:09             ` Vasily Khoruzhick
  0 siblings, 1 reply; 16+ messages in thread
From: Heiko Stübner @ 2014-05-21 15:56 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: Tomasz Figa, Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim,
	Sangbeom Kim, Lars-Peter Clausen,
	linux-samsung-soc@vger.kernel.org

Am Mittwoch, 21. Mai 2014, 18:39:26 schrieb Vasily Khoruzhick:
> On Wed, May 21, 2014 at 6:29 PM, Heiko Stübner <heiko@sntech.de> wrote:
> > Am Mittwoch, 21. Mai 2014, 17:07:47 schrieb Tomasz Figa:
> >> On 21.05.2014 16:53, Vasily Khoruzhick wrote:
> >> > On Wed, May 21, 2014 at 4:28 PM, Tomasz Figa <t.figa@samsung.com> wrote:
> >> >> Please remember to keep linux-samsung-soc ML on Cc when sending
> >> >> patches
> >> >> related to Samsung platforms. It is essential to let Samsung people
> >> >> review them.
> >> > 
> >> > Ok, I'll keep it in mind. I've just checked and get_maintainer.pl
> >> > outputs linux-samsung-soc ML for these
> >> > patches. I've omitted it occasionally, because it wasn't necessary to
> >> > keep it in CC back in 2011
> >> > (year of my last sound-related patch for s3c24xx).
> >> > 
> >> >> Please resend the series with this in mind.
> >> > 
> >> > Is it really necessary? This patch is supposed to go through ASoC
> >> > tree, not through Samsung's.
> >> > And I really doubt that Samsung guys test kernel for s3c24xx boards
> >> > nowadays.
> >> 
> >> Maybe not test, but at least review the code. Also there might be other
> >> people following that list that might be interested in looking at this
> >> series, while not subscribed to alsa-devel - I can name at least Heiko
> >> Stübner, who should be able to test it on further s3c24xx-based boards.
> > 
> > Sadly, I don't have a working sound setup on my 2 s3c boards.
> 
> What are they btw? Is it too time-consuming to make sound working on them?
> It would be nice if anyone except me could test these patches.

Openmoko Freerunner (S3C2440) where there may be sound reachable someway and a 
"Oyo" ebook-reader (S3C2416) whose i2s is I think compatible with the s3c64xx 
instead of the s3c24xx ones and with a completely unsupported codec.

But in general I'm fairly confident that if you hear sounds on your device your 
conversion would be fine test-wise :-)


Heiko

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 15:56           ` Heiko Stübner
@ 2014-05-21 16:09             ` Vasily Khoruzhick
  2014-05-21 16:20               ` Mark Brown
  2014-05-21 16:24               ` Heiko Stübner
  0 siblings, 2 replies; 16+ messages in thread
From: Vasily Khoruzhick @ 2014-05-21 16:09 UTC (permalink / raw)
  To: Heiko Stübner
  Cc: Tomasz Figa, Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim,
	Sangbeom Kim, Lars-Peter Clausen,
	linux-samsung-soc@vger.kernel.org

On Wed, May 21, 2014 at 6:56 PM, Heiko Stübner <heiko@sntech.de> wrote:
>
> Openmoko Freerunner (S3C2440) where there may be sound reachable someway and a
> "Oyo" ebook-reader (S3C2416) whose i2s is I think compatible with the s3c64xx
> instead of the s3c24xx ones and with a completely unsupported codec.

Freerunner is s3c2442, and actually I can test s3c2442 on my iPAQ rx1950.
s3c2416 may be supported by s3c2412-i2s, I have no spec at the hand,
so I can't check.

Regards
Vasily

> But in general I'm fairly confident that if you hear sounds on your device your
> conversion would be fine test-wise :-)
>
>
> Heiko

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 16:09             ` Vasily Khoruzhick
@ 2014-05-21 16:20               ` Mark Brown
  2014-05-21 16:24               ` Heiko Stübner
  1 sibling, 0 replies; 16+ messages in thread
From: Mark Brown @ 2014-05-21 16:20 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: Heiko Stübner, Tomasz Figa, Liam Girdwood, alsa-devel,
	Kukjin Kim, Sangbeom Kim, Lars-Peter Clausen,
	linux-samsung-soc@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 694 bytes --]

On Wed, May 21, 2014 at 07:09:19PM +0300, Vasily Khoruzhick wrote:
> On Wed, May 21, 2014 at 6:56 PM, Heiko Stübner <heiko@sntech.de> wrote:

> > Openmoko Freerunner (S3C2440) where there may be sound reachable someway and a
> > "Oyo" ebook-reader (S3C2416) whose i2s is I think compatible with the s3c64xx
> > instead of the s3c24xx ones and with a completely unsupported codec.

> Freerunner is s3c2442, and actually I can test s3c2442 on my iPAQ rx1950.
> s3c2416 may be supported by s3c2412-i2s, I have no spec at the hand,
> so I can't check.

The OpenMoko should work in mainline with an appropraite audio route set
up - there's an earpiece and (2.5mm sadly) headphone jack.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API
  2014-05-21 16:09             ` Vasily Khoruzhick
  2014-05-21 16:20               ` Mark Brown
@ 2014-05-21 16:24               ` Heiko Stübner
  1 sibling, 0 replies; 16+ messages in thread
From: Heiko Stübner @ 2014-05-21 16:24 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: Tomasz Figa, Liam Girdwood, Mark Brown, alsa-devel, Kukjin Kim,
	Sangbeom Kim, Lars-Peter Clausen,
	linux-samsung-soc@vger.kernel.org

Am Mittwoch, 21. Mai 2014, 19:09:19 schrieb Vasily Khoruzhick:
> On Wed, May 21, 2014 at 6:56 PM, Heiko Stübner <heiko@sntech.de> wrote:
> > Openmoko Freerunner (S3C2440) where there may be sound reachable someway
> > and a "Oyo" ebook-reader (S3C2416) whose i2s is I think compatible with
> > the s3c64xx instead of the s3c24xx ones and with a completely unsupported
> > codec.
> Freerunner is s3c2442, and actually I can test s3c2442 on my iPAQ rx1950.
> s3c2416 may be supported by s3c2412-i2s, I have no spec at the hand,
> so I can't check.

I'm quite sure, s3c2416 shares the s3c64xx i2s ... at some point I matched the 
registers and it also shares the hsspi, sdhci and fb drivers with the newer 
generations (s3c64xx onward).

Heiko

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2014-05-21 16:24 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-20 20:26 [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API Vasily Khoruzhick
2014-05-20 20:26 ` [PATCH v2 2/2] ASoC: samsung: drop support for legacy S3C24XX DMA API Vasily Khoruzhick
2014-05-20 22:19 ` [PATCH v2 1/2] ASoC: samsung: s3c24{xx, 12}-i2s: port to use generic dmaengine API Mark Brown
2014-05-21  6:42   ` Vasily Khoruzhick
2014-05-21 10:49     ` Mark Brown
2014-05-21 10:53       ` Vasily Khoruzhick
2014-05-21 13:28 ` [alsa-devel] " Tomasz Figa
2014-05-21 14:53   ` Vasily Khoruzhick
2014-05-21 15:07     ` Tomasz Figa
2014-05-21 15:20       ` Vasily Khoruzhick
2014-05-21 15:29       ` Heiko Stübner
2014-05-21 15:39         ` Vasily Khoruzhick
2014-05-21 15:56           ` Heiko Stübner
2014-05-21 16:09             ` Vasily Khoruzhick
2014-05-21 16:20               ` Mark Brown
2014-05-21 16:24               ` Heiko Stübner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).