[alsa-devel] [PATCH 0/4] ASoC: OMAP4: McPDM: Fix legacy support
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(-)
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; }
* 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
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,
* 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
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; }
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
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",
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
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?
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
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
* 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
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...
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
participants (4)
-
Liam Girdwood
-
Mark Brown
-
Peter Ujfalusi
-
Tony Lindgren