All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support
@ 2011-08-02 11:34 Peter Ujfalusi
  2011-08-02 11:34 ` [PATCH 1/4] OMAP: McPDM: Convert McPDM device to omap_device Peter Ujfalusi
                   ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: Peter Ujfalusi @ 2011-08-02 11:34 UTC (permalink / raw)
  To: Liam Girdwood, Tony Lindgren, Mark Brown
  Cc: linux-omap, alsa-devel, Misael Lopez Cruz, Benoit Cousson,
	Sebastien Guiriec

Hello,

The OMAP4 McPDM driver in upstream has been broken for some time...
This series fixes that, and enables basic audio playback/capture over the
mcpdm interface.

Two patch in this series has been taken from the "OMAP4/ASoC: New McPDM driver"
series (patch 1, and 2) [1]. Since I was on holiday, I did not had time to
rewrite the driver rewrite patch, but I feel that fixing the basic audio support
for OMAP4 is needed.
The aim here is to have working audio in upstream kernel for 3.1, and have the
new McPDM driver stack up for the 3.2 release.

[1] http://mailman.alsa-project.org/pipermail/alsa-devel/2011-July/041687.html

Br,
Peter

---
Peter Ujfalusi (4):
  OMAP: McPDM: Convert McPDM device to omap_device
  OMAP4: hwmod: enable mcpdm hwmod device.
  ASoC: omap-mcpdm: Fix threshold and dma configuration
  ASoC: OMAP4: McPDM: Convert to hwmod/omap_device

 arch/arm/mach-omap2/devices.c              |   33 ++++++++++++++++++++++++
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    2 +-
 arch/arm/plat-omap/devices.c               |   36 --------------------------
 sound/soc/omap/mcpdm.c                     |   38 +++++++++++++++------------
 sound/soc/omap/mcpdm.h                     |    1 -
 sound/soc/omap/omap-mcpdm.c                |   19 +++++++++----
 sound/soc/omap/sdp4430.c                   |    2 +-
 7 files changed, 69 insertions(+), 62 deletions(-)

-- 
1.7.6


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

* [PATCH 1/4] OMAP: McPDM: Convert McPDM device to omap_device
  2011-08-02 11:34 [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Peter Ujfalusi
@ 2011-08-02 11:34 ` Peter Ujfalusi
  2011-08-19 13:02   ` Tony Lindgren
  2011-08-02 11:34 ` [PATCH 2/4] OMAP4: hwmod: enable mcpdm hwmod device Peter Ujfalusi
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Peter Ujfalusi @ 2011-08-02 11:34 UTC (permalink / raw)
  To: Liam Girdwood, Tony Lindgren, Mark Brown
  Cc: linux-omap, alsa-devel, Misael Lopez Cruz, Benoit Cousson,
	Sebastien Guiriec

McPDM device is converted to omap device.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Jorge Eduardo Candelaria
Signed-off-by: Margarita Olaya Cabrera
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 arch/arm/mach-omap2/devices.c |   33 +++++++++++++++++++++++++++++++++
 arch/arm/plat-omap/devices.c  |   36 ------------------------------------
 2 files changed, 33 insertions(+), 36 deletions(-)

diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 5b8ca68..d94e845 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -329,6 +329,38 @@ static void omap_init_audio(void)
 static inline void omap_init_audio(void) {}
 #endif
 
+#if defined(CONFIG_SND_OMAP_SOC_MCPDM) || \
+		defined(CONFIG_SND_OMAP_SOC_MCPDM_MODULE)
+
+static struct omap_device_pm_latency omap_mcpdm_latency[] = {
+	{
+		.deactivate_func = omap_device_idle_hwmods,
+		.activate_func = omap_device_enable_hwmods,
+		.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,
+	},
+};
+
+static void omap_init_mcpdm(void)
+{
+	struct omap_hwmod *oh;
+	struct omap_device *od;
+
+	oh = omap_hwmod_lookup("mcpdm");
+	if (!oh) {
+		printk(KERN_ERR "Could not look up mcpdm hw_mod\n");
+		return;
+	}
+
+	od = omap_device_build("omap-mcpdm", -1, oh, NULL, 0,
+				omap_mcpdm_latency,
+				ARRAY_SIZE(omap_mcpdm_latency), 0);
+	if (IS_ERR(od))
+		printk(KERN_ERR "Could not build omap_device for omap-mcpdm-dai\n");
+}
+#else
+static inline void omap_init_mcpdm(void) {}
+#endif
+
 #if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)
 
 #include <plat/mcspi.h>
@@ -682,6 +714,7 @@ static int __init omap2_init_devices(void)
 	 * in alphabetical order so they're easier to sort through.
 	 */
 	omap_init_audio();
+	omap_init_mcpdm();
 	omap_init_camera();
 	omap_init_mbox();
 	omap_init_mcspi();
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
index ea28f98..40eca9b 100644
--- a/arch/arm/plat-omap/devices.c
+++ b/arch/arm/plat-omap/devices.c
@@ -74,41 +74,6 @@ void omap_mcbsp_register_board_cfg(struct resource *res, int res_count,
 
 /*-------------------------------------------------------------------------*/
 
-#if defined(CONFIG_SND_OMAP_SOC_MCPDM) || \
-		defined(CONFIG_SND_OMAP_SOC_MCPDM_MODULE)
-
-static struct resource mcpdm_resources[] = {
-	{
-		.name		= "mcpdm_mem",
-		.start		= OMAP44XX_MCPDM_BASE,
-		.end		= OMAP44XX_MCPDM_BASE + SZ_4K,
-		.flags		= IORESOURCE_MEM,
-	},
-	{
-		.name		= "mcpdm_irq",
-		.start		= OMAP44XX_IRQ_MCPDM,
-		.end		= OMAP44XX_IRQ_MCPDM,
-		.flags		= IORESOURCE_IRQ,
-	},
-};
-
-static struct platform_device omap_mcpdm_device = {
-	.name		= "omap-mcpdm",
-	.id		= -1,
-	.num_resources	= ARRAY_SIZE(mcpdm_resources),
-	.resource	= mcpdm_resources,
-};
-
-static void omap_init_mcpdm(void)
-{
-	(void) platform_device_register(&omap_mcpdm_device);
-}
-#else
-static inline void omap_init_mcpdm(void) {}
-#endif
-
-/*-------------------------------------------------------------------------*/
-
 #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \
 	defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
 
@@ -291,7 +256,6 @@ static int __init omap_init_devices(void)
 	 * in alphabetical order so they're easier to sort through.
 	 */
 	omap_init_rng();
-	omap_init_mcpdm();
 	omap_init_uwire();
 	return 0;
 }
-- 
1.7.6


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

* [PATCH 2/4] OMAP4: hwmod: enable mcpdm hwmod device.
  2011-08-02 11:34 [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Peter Ujfalusi
  2011-08-02 11:34 ` [PATCH 1/4] OMAP: McPDM: Convert McPDM device to omap_device Peter Ujfalusi
@ 2011-08-02 11:34 ` Peter Ujfalusi
  2011-08-19 13:02   ` Tony Lindgren
  2011-08-02 11:34 ` [PATCH 3/4] ASoC: omap-mcpdm: Fix threshold and dma configuration Peter Ujfalusi
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Peter Ujfalusi @ 2011-08-02 11:34 UTC (permalink / raw)
  To: Liam Girdwood, Tony Lindgren, Mark Brown
  Cc: linux-omap, alsa-devel, Misael Lopez Cruz, Benoit Cousson,
	Sebastien Guiriec

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Jorge Eduardo Candelaria
Signed-off-by: Margarita Olaya Cabrera
Signed-off-by: Liam Girdwood <lrg@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Benoit Cousson <b-cousson@ti.com>
---
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index e1c69ff..63e7c41 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -5121,7 +5121,7 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
 	&omap44xx_mcbsp4_hwmod,
 
 	/* mcpdm class */
-/*	&omap44xx_mcpdm_hwmod, */
+	&omap44xx_mcpdm_hwmod,
 
 	/* mcspi class */
 	&omap44xx_mcspi1_hwmod,
-- 
1.7.6


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

* [PATCH 3/4] ASoC: omap-mcpdm: Fix threshold and dma configuration
  2011-08-02 11:34 [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Peter Ujfalusi
  2011-08-02 11:34 ` [PATCH 1/4] OMAP: McPDM: Convert McPDM device to omap_device Peter Ujfalusi
  2011-08-02 11:34 ` [PATCH 2/4] OMAP4: hwmod: enable mcpdm hwmod device Peter Ujfalusi
@ 2011-08-02 11:34 ` Peter Ujfalusi
  2011-08-02 15:50   ` Mark Brown
  2011-08-02 11:34 ` [PATCH 4/4] ASoC: OMAP4: McPDM: Convert to hwmod/omap_device Peter Ujfalusi
  2011-08-09  7:27 ` [alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Péter Ujfalusi
  4 siblings, 1 reply; 15+ messages in thread
From: Peter Ujfalusi @ 2011-08-02 11:34 UTC (permalink / raw)
  To: Liam Girdwood, Tony Lindgren, Mark Brown
  Cc: linux-omap, alsa-devel, Misael Lopez Cruz, Benoit Cousson,
	Sebastien Guiriec

DMA packet_size must be configured based on the McPDM FIFO threshold
value, number of channels.
Due to the FIFO operation the DMA muse be configured differently for
playback, and capture.
At the same time fix the McPDM threshold values used for playback, and
capture to avoid broken code.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
 sound/soc/omap/omap-mcpdm.c |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c
index bed09c2..7727de0 100644
--- a/sound/soc/omap/omap-mcpdm.c
+++ b/sound/soc/omap/omap-mcpdm.c
@@ -46,13 +46,13 @@ static struct omap_mcpdm_link omap_mcpdm_links[] = {
 	/* downlink */
 	{
 		.irq_mask = MCPDM_DN_IRQ_EMPTY | MCPDM_DN_IRQ_FULL,
-		.threshold = 1,
+		.threshold = 2,
 		.format = PDMOUTFORMAT_LJUST,
 	},
 	/* uplink */
 	{
 		.irq_mask = MCPDM_UP_IRQ_EMPTY | MCPDM_UP_IRQ_FULL,
-		.threshold = 1,
+		.threshold = UP_THRES_MAX - 3,
 		.format = PDMOUTFORMAT_LJUST,
 	},
 };
@@ -136,12 +136,11 @@ static int omap_mcpdm_dai_hw_params(struct snd_pcm_substream *substream,
 {
 	struct omap_mcpdm_data *mcpdm_priv = snd_soc_dai_get_drvdata(dai);
 	struct omap_mcpdm_link *mcpdm_links = mcpdm_priv->links;
+	struct omap_pcm_dma_data *dma_data;
+	int threshold;
 	int stream = substream->stream;
 	int channels, err, link_mask = 0;
 
-	snd_soc_dai_set_dma_data(dai, substream,
-				 &omap_mcpdm_dai_dma_params[stream]);
-
 	channels = params_channels(params);
 	switch (channels) {
 	case 4:
@@ -164,14 +163,22 @@ static int omap_mcpdm_dai_hw_params(struct snd_pcm_substream *substream,
 		return -EINVAL;
 	}
 
+	dma_data = &omap_mcpdm_dai_dma_params[stream];
+	threshold = mcpdm_links[stream].threshold;
+
 	if (stream == SNDRV_PCM_STREAM_PLAYBACK) {
 		mcpdm_links[stream].channels = link_mask << 3;
+		dma_data->packet_size = (DN_THRES_MAX - threshold) * channels;
+
 		err = omap_mcpdm_playback_open(&mcpdm_links[stream]);
 	} else {
 		mcpdm_links[stream].channels = link_mask << 0;
+		dma_data->packet_size = threshold * channels;
+
 		err = omap_mcpdm_capture_open(&mcpdm_links[stream]);
 	}
 
+	snd_soc_dai_set_dma_data(dai, substream, dma_data);
 	return err;
 }
 
-- 
1.7.6


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

* [PATCH 4/4] ASoC: OMAP4: McPDM: Convert to hwmod/omap_device
  2011-08-02 11:34 [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Peter Ujfalusi
                   ` (2 preceding siblings ...)
  2011-08-02 11:34 ` [PATCH 3/4] ASoC: omap-mcpdm: Fix threshold and dma configuration Peter Ujfalusi
@ 2011-08-02 11:34 ` Peter Ujfalusi
  2011-08-02 16:07   ` Mark Brown
  2011-08-03  7:58   ` [alsa-devel] " Péter Ujfalusi
  2011-08-09  7:27 ` [alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Péter Ujfalusi
  4 siblings, 2 replies; 15+ messages in thread
From: Peter Ujfalusi @ 2011-08-02 11:34 UTC (permalink / raw)
  To: Liam Girdwood, Tony Lindgren, Mark Brown
  Cc: linux-omap, alsa-devel, Misael Lopez Cruz, Benoit Cousson,
	Sebastien Guiriec

In order to probe, and operate correctly, the OMAP McPDM driver needs to
be converted to use hwmod.
The device name has been changed to probe the driver.
Replace the clk_* with pm_runtime_* calls to manage the clocks correctly.
Missing request_mem_region/release_mem_region added.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
 sound/soc/omap/mcpdm.c      |   38 +++++++++++++++++++++-----------------
 sound/soc/omap/mcpdm.h      |    1 -
 sound/soc/omap/omap-mcpdm.c |    2 +-
 sound/soc/omap/sdp4430.c    |    2 +-
 4 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/sound/soc/omap/mcpdm.c b/sound/soc/omap/mcpdm.c
index 928f037..d29cc98 100644
--- a/sound/soc/omap/mcpdm.c
+++ b/sound/soc/omap/mcpdm.c
@@ -28,7 +28,7 @@
 #include <linux/slab.h>
 #include <linux/interrupt.h>
 #include <linux/err.h>
-#include <linux/clk.h>
+#include <linux/pm_runtime.h>
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/irq.h>
@@ -322,11 +322,11 @@ static irqreturn_t omap_mcpdm_irq_handler(int irq, void *dev_id)
 	return IRQ_HANDLED;
 }
 
-int omap_mcpdm_request(void)
+			int omap_mcpdm_request(void)
 {
 	int ret;
 
-	clk_enable(mcpdm->clk);
+	pm_runtime_get_sync(mcpdm->dev);
 
 	spin_lock(&mcpdm->lock);
 
@@ -353,7 +353,8 @@ int omap_mcpdm_request(void)
 	return 0;
 
 err:
-	clk_disable(mcpdm->clk);
+	mcpdm->free = 1;
+	pm_runtime_put_sync(mcpdm->dev);
 	return ret;
 }
 
@@ -368,7 +369,7 @@ void omap_mcpdm_free(void)
 	mcpdm->free = 1;
 	spin_unlock(&mcpdm->lock);
 
-	clk_disable(mcpdm->clk);
+	pm_runtime_put_sync(mcpdm->dev);
 
 	free_irq(mcpdm->irq, (void *)mcpdm);
 }
@@ -421,28 +422,29 @@ int __devinit omap_mcpdm_probe(struct platform_device *pdev)
 
 	spin_lock_init(&mcpdm->lock);
 	mcpdm->free = 1;
+
+	if (!request_mem_region(res->start, resource_size(res), "McPDM")) {
+		ret = -EBUSY;
+		goto err_resource;
+	}
+
 	mcpdm->io_base = ioremap(res->start, resource_size(res));
 	if (!mcpdm->io_base) {
 		ret = -ENOMEM;
-		goto err_resource;
+		goto err_remap;
 	}
 
 	mcpdm->irq = platform_get_irq(pdev, 0);
 
-	mcpdm->clk = clk_get(&pdev->dev, "pdm_ck");
-	if (IS_ERR(mcpdm->clk)) {
-		ret = PTR_ERR(mcpdm->clk);
-		dev_err(&pdev->dev, "unable to get pdm_ck: %d\n", ret);
-		goto err_clk;
-	}
-
 	mcpdm->dev = &pdev->dev;
 	platform_set_drvdata(pdev, mcpdm);
 
+	pm_runtime_enable(mcpdm->dev);
+
 	return 0;
 
-err_clk:
-	iounmap(mcpdm->io_base);
+err_remap:
+	release_mem_region(res->start, resource_size(res));
 err_resource:
 	kfree(mcpdm);
 exit:
@@ -452,14 +454,16 @@ exit:
 int __devexit omap_mcpdm_remove(struct platform_device *pdev)
 {
 	struct omap_mcpdm *mcpdm_ptr = platform_get_drvdata(pdev);
+	struct resource *res;
 
 	platform_set_drvdata(pdev, NULL);
 
-	clk_put(mcpdm_ptr->clk);
+	pm_runtime_disable(mcpdm_ptr->dev);
 
 	iounmap(mcpdm_ptr->io_base);
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	release_mem_region(res->start, resource_size(res));
 
-	mcpdm_ptr->clk = NULL;
 	mcpdm_ptr->free = 0;
 	mcpdm_ptr->dev = NULL;
 
diff --git a/sound/soc/omap/mcpdm.h b/sound/soc/omap/mcpdm.h
index df3e16f..b055ad1 100644
--- a/sound/soc/omap/mcpdm.h
+++ b/sound/soc/omap/mcpdm.h
@@ -131,7 +131,6 @@ struct omap_mcpdm {
 
        spinlock_t lock;
        struct omap_mcpdm_platform_data *pdata;
-       struct clk *clk;
        struct omap_mcpdm_link *downlink;
        struct omap_mcpdm_link *uplink;
        struct completion irq_completion;
diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c
index 7727de0..0820b9e 100644
--- a/sound/soc/omap/omap-mcpdm.c
+++ b/sound/soc/omap/omap-mcpdm.c
@@ -254,7 +254,7 @@ static int __devexit asoc_mcpdm_remove(struct platform_device *pdev)
 
 static struct platform_driver asoc_mcpdm_driver = {
 	.driver = {
-			.name = "omap-mcpdm-dai",
+			.name = "omap-mcpdm",
 			.owner = THIS_MODULE,
 	},
 
diff --git a/sound/soc/omap/sdp4430.c b/sound/soc/omap/sdp4430.c
index 7b18ef8..eec77fe 100644
--- a/sound/soc/omap/sdp4430.c
+++ b/sound/soc/omap/sdp4430.c
@@ -165,7 +165,7 @@ static int sdp4430_twl6040_init(struct snd_soc_pcm_runtime *rtd)
 static struct snd_soc_dai_link sdp4430_dai = {
 	.name = "TWL6040",
 	.stream_name = "TWL6040",
-	.cpu_dai_name ="omap-mcpdm-dai",
+	.cpu_dai_name = "omap-mcpdm",
 	.codec_dai_name = "twl6040-hifi",
 	.platform_name = "omap-pcm-audio",
 	.codec_name = "twl6040-codec",
-- 
1.7.6


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

* Re: [PATCH 3/4] ASoC: omap-mcpdm: Fix threshold and dma configuration
  2011-08-02 11:34 ` [PATCH 3/4] ASoC: omap-mcpdm: Fix threshold and dma configuration Peter Ujfalusi
@ 2011-08-02 15:50   ` Mark Brown
  0 siblings, 0 replies; 15+ messages in thread
From: Mark Brown @ 2011-08-02 15:50 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: Liam Girdwood, Tony Lindgren, linux-omap, alsa-devel,
	Misael Lopez Cruz, Benoit Cousson, Sebastien Guiriec

On Tue, Aug 02, 2011 at 02:34:16PM +0300, Peter Ujfalusi wrote:
> DMA packet_size must be configured based on the McPDM FIFO threshold
> value, number of channels.
> Due to the FIFO operation the DMA muse be configured differently for
> playback, and capture.
> At the same time fix the McPDM threshold values used for playback, and
> capture to avoid broken code.

Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

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

* Re: [PATCH 4/4] ASoC: OMAP4: McPDM: Convert to hwmod/omap_device
  2011-08-02 11:34 ` [PATCH 4/4] ASoC: OMAP4: McPDM: Convert to hwmod/omap_device Peter Ujfalusi
@ 2011-08-02 16:07   ` Mark Brown
  2011-08-03  7:58   ` [alsa-devel] " Péter Ujfalusi
  1 sibling, 0 replies; 15+ messages in thread
From: Mark Brown @ 2011-08-02 16:07 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: Liam Girdwood, Tony Lindgren, linux-omap, alsa-devel,
	Misael Lopez Cruz, Benoit Cousson, Sebastien Guiriec

On Tue, Aug 02, 2011 at 02:34:17PM +0300, Peter Ujfalusi wrote:
> In order to probe, and operate correctly, the OMAP McPDM driver needs to
> be converted to use hwmod.
> The device name has been changed to probe the driver.
> Replace the clk_* with pm_runtime_* calls to manage the clocks correctly.
> Missing request_mem_region/release_mem_region added.
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

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

* Re: [alsa-devel] [PATCH 4/4] ASoC: OMAP4: McPDM: Convert to hwmod/omap_device
  2011-08-02 11:34 ` [PATCH 4/4] ASoC: OMAP4: McPDM: Convert to hwmod/omap_device Peter Ujfalusi
  2011-08-02 16:07   ` Mark Brown
@ 2011-08-03  7:58   ` Péter Ujfalusi
  1 sibling, 0 replies; 15+ messages in thread
From: Péter Ujfalusi @ 2011-08-03  7:58 UTC (permalink / raw)
  To: alsa-devel
  Cc: Girdwood, Liam, Tony Lindgren, Mark Brown, linux-omap, Cousson,
	Benoit, Guiriec, Sebastien, Sebastien, Lopez Cruz, Misael,
	Misael

On Tuesday 02 August 2011 13:34:17 Ujfalusi, Peter wrote:
> In order to probe, and operate correctly, the OMAP McPDM driver needs to
> be converted to use hwmod.
> The device name has been changed to probe the driver.
> Replace the clk_* with pm_runtime_* calls to manage the clocks correctly.
> Missing request_mem_region/release_mem_region added.
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> ---
>  sound/soc/omap/mcpdm.c      |   38 +++++++++++++++++++++-----------------
>  sound/soc/omap/mcpdm.h      |    1 -
>  sound/soc/omap/omap-mcpdm.c |    2 +-
>  sound/soc/omap/sdp4430.c    |    2 +-
>  4 files changed, 23 insertions(+), 20 deletions(-)
> 
> diff --git a/sound/soc/omap/mcpdm.c b/sound/soc/omap/mcpdm.c
> index 928f037..d29cc98 100644
> --- a/sound/soc/omap/mcpdm.c
> +++ b/sound/soc/omap/mcpdm.c
> @@ -28,7 +28,7 @@
>  #include <linux/slab.h>
>  #include <linux/interrupt.h>
>  #include <linux/err.h>
> -#include <linux/clk.h>
> +#include <linux/pm_runtime.h>
>  #include <linux/delay.h>
>  #include <linux/io.h>
>  #include <linux/irq.h>
> @@ -322,11 +322,11 @@ static irqreturn_t omap_mcpdm_irq_handler(int irq,
> void *dev_id) return IRQ_HANDLED;
>  }
> 
> -int omap_mcpdm_request(void)
> +			int omap_mcpdm_request(void)

Just noticed this one.
Going to resend, or Liam can you fix this up when you take the patches?

-- 
Péter
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support
  2011-08-02 11:34 [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Peter Ujfalusi
                   ` (3 preceding siblings ...)
  2011-08-02 11:34 ` [PATCH 4/4] ASoC: OMAP4: McPDM: Convert to hwmod/omap_device Peter Ujfalusi
@ 2011-08-09  7:27 ` Péter Ujfalusi
  2011-08-15 11:28   ` Péter Ujfalusi
  4 siblings, 1 reply; 15+ messages in thread
From: Péter Ujfalusi @ 2011-08-09  7:27 UTC (permalink / raw)
  To: alsa-devel
  Cc: Girdwood, Liam, Tony Lindgren, Mark Brown, linux-omap, Cousson,
	Benoit, Guiriec, Sebastien, Lopez Cruz, Misael

Hi Tony,

On Tuesday 02 August 2011 13:34:13 Ujfalusi, Peter wrote:
> Hello,
> 
> The OMAP4 McPDM driver in upstream has been broken for some time...
> This series fixes that, and enables basic audio playback/capture over the
> mcpdm interface.

Would you have time to look at this series?
Specially patch 1 (maybe 2 as well).
We are planning to send this series through audio for 3.1.

> 
> Two patch in this series has been taken from the "OMAP4/ASoC: New McPDM
> driver" series (patch 1, and 2) [1]. Since I was on holiday, I did not had
> time to rewrite the driver rewrite patch, but I feel that fixing the basic
> audio support for OMAP4 is needed.
> The aim here is to have working audio in upstream kernel for 3.1, and have
> the new McPDM driver stack up for the 3.2 release.
> 
> [1]
> http://mailman.alsa-project.org/pipermail/alsa-devel/2011-July/041687.html
> 
> Br,
> Peter
> 
> ---
> Peter Ujfalusi (4):
>   OMAP: McPDM: Convert McPDM device to omap_device
>   OMAP4: hwmod: enable mcpdm hwmod device.
>   ASoC: omap-mcpdm: Fix threshold and dma configuration
>   ASoC: OMAP4: McPDM: Convert to hwmod/omap_device
> 
>  arch/arm/mach-omap2/devices.c              |   33 ++++++++++++++++++++++++
>  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    2 +-
>  arch/arm/plat-omap/devices.c               |   36
> -------------------------- sound/soc/omap/mcpdm.c                     |  
> 38 +++++++++++++++------------ sound/soc/omap/mcpdm.h                     |
>    1 -
>  sound/soc/omap/omap-mcpdm.c                |   19 +++++++++----
>  sound/soc/omap/sdp4430.c                   |    2 +-
>  7 files changed, 69 insertions(+), 62 deletions(-)

Thanks,
Péter
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support
  2011-08-09  7:27 ` [alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Péter Ujfalusi
@ 2011-08-15 11:28   ` Péter Ujfalusi
  2011-08-19 13:04     ` Re: [alsa-devel] " Tony Lindgren
  0 siblings, 1 reply; 15+ messages in thread
From: Péter Ujfalusi @ 2011-08-15 11:28 UTC (permalink / raw)
  To: alsa-devel, Tony Lindgren
  Cc: Cousson, Benoit, Brown, Guiriec, Sebastien, Lopez Cruz, Misael,
	linux-omap, Girdwood, Liam

Hi Tony,

On Tuesday 09 August 2011 09:27:17 Ujfalusi, Peter wrote:
> Hi Tony,
> 
> On Tuesday 02 August 2011 13:34:13 Ujfalusi, Peter wrote:
> > Hello,
> > 
> > The OMAP4 McPDM driver in upstream has been broken for some time...
> > This series fixes that, and enables basic audio playback/capture over
> > the
> > mcpdm interface.
> 
> Would you have time to look at this series?
> Specially patch 1 (maybe 2 as well).
> We are planning to send this series through audio for 3.1.

Do you have time to look at this series.
Currently the mcpdm (omap4 audio) is broken in upstream without this series, 
and I'd like to have it fixed in time for 3.1.
 
> > Two patch in this series has been taken from the "OMAP4/ASoC: New McPDM
> > driver" series (patch 1, and 2) [1]. Since I was on holiday, I did not
> > had time to rewrite the driver rewrite patch, but I feel that fixing
> > the basic audio support for OMAP4 is needed.
> > The aim here is to have working audio in upstream kernel for 3.1, and
> > have the new McPDM driver stack up for the 3.2 release.

Thank you,
Péter

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

* Re: [PATCH 1/4] OMAP: McPDM: Convert McPDM device to omap_device
  2011-08-02 11:34 ` [PATCH 1/4] OMAP: McPDM: Convert McPDM device to omap_device Peter Ujfalusi
@ 2011-08-19 13:02   ` Tony Lindgren
  0 siblings, 0 replies; 15+ messages in thread
From: Tony Lindgren @ 2011-08-19 13:02 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: Liam Girdwood, Mark Brown, linux-omap, alsa-devel,
	Misael Lopez Cruz, Benoit Cousson, Sebastien Guiriec

* Peter Ujfalusi <peter.ujfalusi@ti.com> [110802 14:28]:
> McPDM device is converted to omap device.
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Signed-off-by: Jorge Eduardo Candelaria
> Signed-off-by: Margarita Olaya Cabrera
> Signed-off-by: Liam Girdwood <lrg@ti.com>
> Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

Acked-by: Tony Lindgren <tony@atomide.com>

> ---
>  arch/arm/mach-omap2/devices.c |   33 +++++++++++++++++++++++++++++++++
>  arch/arm/plat-omap/devices.c  |   36 ------------------------------------
>  2 files changed, 33 insertions(+), 36 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
> index 5b8ca68..d94e845 100644
> --- a/arch/arm/mach-omap2/devices.c
> +++ b/arch/arm/mach-omap2/devices.c
> @@ -329,6 +329,38 @@ static void omap_init_audio(void)
>  static inline void omap_init_audio(void) {}
>  #endif
>  
> +#if defined(CONFIG_SND_OMAP_SOC_MCPDM) || \
> +		defined(CONFIG_SND_OMAP_SOC_MCPDM_MODULE)
> +
> +static struct omap_device_pm_latency omap_mcpdm_latency[] = {
> +	{
> +		.deactivate_func = omap_device_idle_hwmods,
> +		.activate_func = omap_device_enable_hwmods,
> +		.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,
> +	},
> +};
> +
> +static void omap_init_mcpdm(void)
> +{
> +	struct omap_hwmod *oh;
> +	struct omap_device *od;
> +
> +	oh = omap_hwmod_lookup("mcpdm");
> +	if (!oh) {
> +		printk(KERN_ERR "Could not look up mcpdm hw_mod\n");
> +		return;
> +	}
> +
> +	od = omap_device_build("omap-mcpdm", -1, oh, NULL, 0,
> +				omap_mcpdm_latency,
> +				ARRAY_SIZE(omap_mcpdm_latency), 0);
> +	if (IS_ERR(od))
> +		printk(KERN_ERR "Could not build omap_device for omap-mcpdm-dai\n");
> +}
> +#else
> +static inline void omap_init_mcpdm(void) {}
> +#endif
> +
>  #if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)
>  
>  #include <plat/mcspi.h>
> @@ -682,6 +714,7 @@ static int __init omap2_init_devices(void)
>  	 * in alphabetical order so they're easier to sort through.
>  	 */
>  	omap_init_audio();
> +	omap_init_mcpdm();
>  	omap_init_camera();
>  	omap_init_mbox();
>  	omap_init_mcspi();
> diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
> index ea28f98..40eca9b 100644
> --- a/arch/arm/plat-omap/devices.c
> +++ b/arch/arm/plat-omap/devices.c
> @@ -74,41 +74,6 @@ void omap_mcbsp_register_board_cfg(struct resource *res, int res_count,
>  
>  /*-------------------------------------------------------------------------*/
>  
> -#if defined(CONFIG_SND_OMAP_SOC_MCPDM) || \
> -		defined(CONFIG_SND_OMAP_SOC_MCPDM_MODULE)
> -
> -static struct resource mcpdm_resources[] = {
> -	{
> -		.name		= "mcpdm_mem",
> -		.start		= OMAP44XX_MCPDM_BASE,
> -		.end		= OMAP44XX_MCPDM_BASE + SZ_4K,
> -		.flags		= IORESOURCE_MEM,
> -	},
> -	{
> -		.name		= "mcpdm_irq",
> -		.start		= OMAP44XX_IRQ_MCPDM,
> -		.end		= OMAP44XX_IRQ_MCPDM,
> -		.flags		= IORESOURCE_IRQ,
> -	},
> -};
> -
> -static struct platform_device omap_mcpdm_device = {
> -	.name		= "omap-mcpdm",
> -	.id		= -1,
> -	.num_resources	= ARRAY_SIZE(mcpdm_resources),
> -	.resource	= mcpdm_resources,
> -};
> -
> -static void omap_init_mcpdm(void)
> -{
> -	(void) platform_device_register(&omap_mcpdm_device);
> -}
> -#else
> -static inline void omap_init_mcpdm(void) {}
> -#endif
> -
> -/*-------------------------------------------------------------------------*/
> -
>  #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \
>  	defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
>  
> @@ -291,7 +256,6 @@ static int __init omap_init_devices(void)
>  	 * in alphabetical order so they're easier to sort through.
>  	 */
>  	omap_init_rng();
> -	omap_init_mcpdm();
>  	omap_init_uwire();
>  	return 0;
>  }
> -- 
> 1.7.6
> 

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

* Re: [PATCH 2/4] OMAP4: hwmod: enable mcpdm hwmod device.
  2011-08-02 11:34 ` [PATCH 2/4] OMAP4: hwmod: enable mcpdm hwmod device Peter Ujfalusi
@ 2011-08-19 13:02   ` Tony Lindgren
  0 siblings, 0 replies; 15+ messages in thread
From: Tony Lindgren @ 2011-08-19 13:02 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: Liam Girdwood, Mark Brown, linux-omap, alsa-devel,
	Misael Lopez Cruz, Benoit Cousson, Sebastien Guiriec

* Peter Ujfalusi <peter.ujfalusi@ti.com> [110802 14:28]:
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Signed-off-by: Jorge Eduardo Candelaria
> Signed-off-by: Margarita Olaya Cabrera
> Signed-off-by: Liam Girdwood <lrg@ti.com>
> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> Acked-by: Benoit Cousson <b-cousson@ti.com>

Acked-by: Tony Lindgren <tony@atomide.com>

> ---
>  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> index e1c69ff..63e7c41 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> @@ -5121,7 +5121,7 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
>  	&omap44xx_mcbsp4_hwmod,
>  
>  	/* mcpdm class */
> -/*	&omap44xx_mcpdm_hwmod, */
> +	&omap44xx_mcpdm_hwmod,
>  
>  	/* mcspi class */
>  	&omap44xx_mcspi1_hwmod,
> -- 
> 1.7.6
> 

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

* Re: Re: [alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support
  2011-08-15 11:28   ` Péter Ujfalusi
@ 2011-08-19 13:04     ` Tony Lindgren
  2011-08-22  7:13       ` Péter Ujfalusi
  0 siblings, 1 reply; 15+ messages in thread
From: Tony Lindgren @ 2011-08-19 13:04 UTC (permalink / raw)
  To: Péter Ujfalusi
  Cc: alsa-devel, Cousson, Benoit, Brown, Guiriec, Sebastien,
	Lopez Cruz, Misael, linux-omap, Girdwood, Liam

* Péter Ujfalusi <peter.ujfalusi@ti.com> [110815 13:56]:
> Hi Tony,
> 
> On Tuesday 09 August 2011 09:27:17 Ujfalusi, Peter wrote:
> > Hi Tony,
> > 
> > On Tuesday 02 August 2011 13:34:13 Ujfalusi, Peter wrote:
> > > Hello,
> > > 
> > > The OMAP4 McPDM driver in upstream has been broken for some time...
> > > This series fixes that, and enables basic audio playback/capture over
> > > the
> > > mcpdm interface.
> > 
> > Would you have time to look at this series?
> > Specially patch 1 (maybe 2 as well).
> > We are planning to send this series through audio for 3.1.
> 
> Do you have time to look at this series.
> Currently the mcpdm (omap4 audio) is broken in upstream without this series, 
> and I'd like to have it fixed in time for 3.1.

It seems OK to me. But for the -rc cycle it has potential for
"fixes for features that never worked" flame bait. If you guys
are OK to deal with that then go ahead.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: Re: Re: [alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support
  2011-08-19 13:04     ` Re: [alsa-devel] " Tony Lindgren
@ 2011-08-22  7:13       ` Péter Ujfalusi
  2011-08-22  7:38         ` Liam Girdwood
  0 siblings, 1 reply; 15+ messages in thread
From: Péter Ujfalusi @ 2011-08-22  7:13 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: alsa-devel, Cousson, Benoit, Brown, Guiriec, Sebastien,
	Lopez Cruz, Misael, linux-omap, Girdwood, Liam

On Friday 19 August 2011 15:04:20 Tony Lindgren wrote:
> It seems OK to me.

Thanks!

> But for the -rc cycle it has potential for
> "fixes for features that never worked" flame bait. If you guys
> are OK to deal with that then go ahead.

Hrm, I have not thought about this. Not sure, if we want to go there...

-- 
Péter
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support
  2011-08-22  7:13       ` Péter Ujfalusi
@ 2011-08-22  7:38         ` Liam Girdwood
  0 siblings, 0 replies; 15+ messages in thread
From: Liam Girdwood @ 2011-08-22  7:38 UTC (permalink / raw)
  To: Ujfalusi, Peter
  Cc: Tony Lindgren, alsa-devel, Cousson, Benoit, Brown, Guiriec,
	Sebastien, Lopez Cruz, Misael, linux-omap

On 22/08/11 08:13, Ujfalusi, Peter wrote:
> On Friday 19 August 2011 15:04:20 Tony Lindgren wrote:
>> It seems OK to me.
> 
> Thanks!
> 
>> But for the -rc cycle it has potential for
>> "fixes for features that never worked" flame bait. If you guys
>> are OK to deal with that then go ahead.
> 
> Hrm, I have not thought about this. Not sure, if we want to go there...
> 

Yeah, lets take it for 3.2

Liam

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

end of thread, other threads:[~2011-08-22  7:38 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-02 11:34 [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Peter Ujfalusi
2011-08-02 11:34 ` [PATCH 1/4] OMAP: McPDM: Convert McPDM device to omap_device Peter Ujfalusi
2011-08-19 13:02   ` Tony Lindgren
2011-08-02 11:34 ` [PATCH 2/4] OMAP4: hwmod: enable mcpdm hwmod device Peter Ujfalusi
2011-08-19 13:02   ` Tony Lindgren
2011-08-02 11:34 ` [PATCH 3/4] ASoC: omap-mcpdm: Fix threshold and dma configuration Peter Ujfalusi
2011-08-02 15:50   ` Mark Brown
2011-08-02 11:34 ` [PATCH 4/4] ASoC: OMAP4: McPDM: Convert to hwmod/omap_device Peter Ujfalusi
2011-08-02 16:07   ` Mark Brown
2011-08-03  7:58   ` [alsa-devel] " Péter Ujfalusi
2011-08-09  7:27 ` [alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support Péter Ujfalusi
2011-08-15 11:28   ` Péter Ujfalusi
2011-08-19 13:04     ` Re: [alsa-devel] " Tony Lindgren
2011-08-22  7:13       ` Péter Ujfalusi
2011-08-22  7:38         ` Liam Girdwood

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.