* [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM @ 2012-10-11 21:33 Matt Porter 2012-10-11 21:33 ` [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc Matt Porter ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Matt Porter @ 2012-10-11 21:33 UTC (permalink / raw) To: Mark Brown, gururaja.hebbar, Sekhar Nori Cc: Linux Kernel Mailing List, Alsa Devel List, Linux DaVinci Kernel List, Ben Gardiner, Daniel Mack Changes since v1: - Rebased against uio_pruss/genalloc series v4 patches, requiring another header to be included. This series converts davinci ASoC to use genalloc and enables that support on DA850. It applies to mainline on top of the uio_pruss/genalloc series [1] which allows DaVinci to provide a gen_pool via pdata for driver use. I've tested this on the AM180x EVM. Note that prior to this, the SRAM paths in the driver were completely unused. I've only enabled ping-pong buffering on the platform I can test as it's best to allow those with DM644x and similar platforms to set the playback/capture sram size to something that's known to work for them. [1] https://lkml.org/lkml/2012/10/5/425 Matt Porter (2): ASoC: davinci: replace private sram api with genalloc ARM: davinci: enable SRAM ping ping buffering on DA850 arch/arm/mach-davinci/board-da850-evm.c | 25 +++++++++++++++---------- include/linux/platform_data/davinci_asp.h | 3 +++ sound/soc/davinci/davinci-mcasp.c | 2 ++ sound/soc/davinci/davinci-pcm.c | 18 ++++++++++++------ sound/soc/davinci/davinci-pcm.h | 2 ++ 5 files changed, 34 insertions(+), 16 deletions(-) -- 1.7.9.5 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc 2012-10-11 21:33 [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Matt Porter @ 2012-10-11 21:33 ` Matt Porter 2012-10-12 17:15 ` Daniel Mack 2012-10-11 21:33 ` [PATCH v2 2/2] ARM: davinci: enable SRAM ping ping buffering on DA850 Matt Porter 2012-10-17 13:51 ` [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Mark Brown 2 siblings, 1 reply; 12+ messages in thread From: Matt Porter @ 2012-10-11 21:33 UTC (permalink / raw) To: Mark Brown, gururaja.hebbar, Sekhar Nori Cc: Linux Kernel Mailing List, Alsa Devel List, Linux DaVinci Kernel List, Ben Gardiner, Daniel Mack Removes the DaVinci private SRAM API and replaces it with the genalloc API. The SRAM gen_pool is passed in pdata since DaVinci is in the early stages of DT conversion. Signed-off-by: Matt Porter <mporter@ti.com> --- include/linux/platform_data/davinci_asp.h | 3 +++ sound/soc/davinci/davinci-mcasp.c | 2 ++ sound/soc/davinci/davinci-pcm.c | 18 ++++++++++++------ sound/soc/davinci/davinci-pcm.h | 2 ++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/include/linux/platform_data/davinci_asp.h b/include/linux/platform_data/davinci_asp.h index d0c5825..f3d6e4f 100644 --- a/include/linux/platform_data/davinci_asp.h +++ b/include/linux/platform_data/davinci_asp.h @@ -16,6 +16,8 @@ #ifndef __DAVINCI_ASP_H #define __DAVINCI_ASP_H +#include <linux/genalloc.h> + struct snd_platform_data { u32 tx_dma_offset; u32 rx_dma_offset; @@ -30,6 +32,7 @@ struct snd_platform_data { unsigned enable_channel_combine:1; unsigned sram_size_playback; unsigned sram_size_capture; + struct gen_pool *sram_pool; /* * If McBSP peripheral gets the clock from an external pin, diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c index 714e51e..52194bb 100644 --- a/sound/soc/davinci/davinci-mcasp.c +++ b/sound/soc/davinci/davinci-mcasp.c @@ -1098,6 +1098,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) dma_data = &dev->dma_params[SNDRV_PCM_STREAM_PLAYBACK]; dma_data->asp_chan_q = pdata->asp_chan_q; dma_data->ram_chan_q = pdata->ram_chan_q; + dma_data->sram_pool = pdata->sram_pool; dma_data->sram_size = pdata->sram_size_playback; dma_data->dma_addr = (dma_addr_t) (pdata->tx_dma_offset + mem->start); @@ -1115,6 +1116,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) dma_data = &dev->dma_params[SNDRV_PCM_STREAM_CAPTURE]; dma_data->asp_chan_q = pdata->asp_chan_q; dma_data->ram_chan_q = pdata->ram_chan_q; + dma_data->sram_pool = pdata->sram_pool; dma_data->sram_size = pdata->sram_size_capture; dma_data->dma_addr = (dma_addr_t)(pdata->rx_dma_offset + mem->start); diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c index 93ea3bf..d2cc169 100644 --- a/sound/soc/davinci/davinci-pcm.c +++ b/sound/soc/davinci/davinci-pcm.c @@ -16,6 +16,7 @@ #include <linux/slab.h> #include <linux/dma-mapping.h> #include <linux/kernel.h> +#include <linux/genalloc.h> #include <sound/core.h> #include <sound/pcm.h> @@ -23,7 +24,6 @@ #include <sound/soc.h> #include <asm/dma.h> -#include <mach/sram.h> #include "davinci-pcm.h" @@ -259,7 +259,8 @@ static void davinci_pcm_dma_irq(unsigned link, u16 ch_status, void *data) } } -static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, +static int allocate_sram(struct snd_pcm_substream *substream, + struct gen_pool *sram_pool, unsigned size, struct snd_pcm_hardware *ppcm) { struct snd_dma_buffer *buf = &substream->dma_buffer; @@ -271,9 +272,10 @@ static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, return 0; ppcm->period_bytes_max = size; - iram_virt = sram_alloc(size, &iram_phys); + iram_virt = (void *)gen_pool_alloc(sram_pool, size); if (!iram_virt) goto exit1; + iram_phys = gen_pool_virt_to_phys(sram_pool, (unsigned)iram_virt); iram_dma = kzalloc(sizeof(*iram_dma), GFP_KERNEL); if (!iram_dma) goto exit2; @@ -285,7 +287,7 @@ static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, return 0; exit2: if (iram_virt) - sram_free(iram_virt, size); + gen_pool_free(sram_pool, (unsigned)iram_virt, size); exit1: return -ENOMEM; } @@ -676,7 +678,7 @@ static int davinci_pcm_open(struct snd_pcm_substream *substream) ppcm = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ? &pcm_hardware_playback : &pcm_hardware_capture; - allocate_sram(substream, params->sram_size, ppcm); + allocate_sram(substream, params->sram_pool, params->sram_size, ppcm); snd_soc_set_runtime_hwparams(substream, ppcm); /* ensure that buffer size is a multiple of period size */ ret = snd_pcm_hw_constraint_integer(runtime, @@ -819,7 +821,11 @@ static void davinci_pcm_free(struct snd_pcm *pcm) buf->area = NULL; iram_dma = buf->private_data; if (iram_dma) { - sram_free(iram_dma->area, iram_dma->bytes); + struct davinci_runtime_data *prtd = + substream->runtime->private_data; + struct gen_pool *sram_pool = prtd->params->sram_pool; + gen_pool_free(sram_pool, (unsigned)iram_dma->area, + iram_dma->bytes); kfree(iram_dma); } } diff --git a/sound/soc/davinci/davinci-pcm.h b/sound/soc/davinci/davinci-pcm.h index fc4d01c..b6ef703 100644 --- a/sound/soc/davinci/davinci-pcm.h +++ b/sound/soc/davinci/davinci-pcm.h @@ -12,6 +12,7 @@ #ifndef _DAVINCI_PCM_H #define _DAVINCI_PCM_H +#include <linux/genalloc.h> #include <linux/platform_data/davinci_asp.h> #include <mach/edma.h> @@ -20,6 +21,7 @@ struct davinci_pcm_dma_params { unsigned short acnt; dma_addr_t dma_addr; /* device physical address for DMA */ unsigned sram_size; + struct gen_pool *sram_pool; /* SRAM gen_pool for ping pong */ enum dma_event_q asp_chan_q; /* event queue number for ASP channel */ enum dma_event_q ram_chan_q; /* event queue number for RAM channel */ unsigned char data_type; /* xfer data type */ -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc 2012-10-11 21:33 ` [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc Matt Porter @ 2012-10-12 17:15 ` Daniel Mack 2012-10-18 15:21 ` Matt Porter 0 siblings, 1 reply; 12+ messages in thread From: Daniel Mack @ 2012-10-12 17:15 UTC (permalink / raw) To: Matt Porter Cc: Mark Brown, gururaja.hebbar, Sekhar Nori, Linux Kernel Mailing List, Alsa Devel List, Linux DaVinci Kernel List, Ben Gardiner Hi Matt, On 11.10.2012 23:33, Matt Porter wrote: > Removes the DaVinci private SRAM API and replaces it with > the genalloc API. The SRAM gen_pool is passed in pdata since > DaVinci is in the early stages of DT conversion. > > Signed-off-by: Matt Porter <mporter@ti.com> > --- > include/linux/platform_data/davinci_asp.h | 3 +++ > sound/soc/davinci/davinci-mcasp.c | 2 ++ > sound/soc/davinci/davinci-pcm.c | 18 ++++++++++++------ > sound/soc/davinci/davinci-pcm.h | 2 ++ > 4 files changed, 19 insertions(+), 6 deletions(-) > > diff --git a/include/linux/platform_data/davinci_asp.h b/include/linux/platform_data/davinci_asp.h > index d0c5825..f3d6e4f 100644 > --- a/include/linux/platform_data/davinci_asp.h > +++ b/include/linux/platform_data/davinci_asp.h > @@ -16,6 +16,8 @@ > #ifndef __DAVINCI_ASP_H > #define __DAVINCI_ASP_H > > +#include <linux/genalloc.h> > + > struct snd_platform_data { > u32 tx_dma_offset; > u32 rx_dma_offset; > @@ -30,6 +32,7 @@ struct snd_platform_data { > unsigned enable_channel_combine:1; > unsigned sram_size_playback; > unsigned sram_size_capture; > + struct gen_pool *sram_pool; > > /* > * If McBSP peripheral gets the clock from an external pin, > diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c > index 714e51e..52194bb 100644 > --- a/sound/soc/davinci/davinci-mcasp.c > +++ b/sound/soc/davinci/davinci-mcasp.c > @@ -1098,6 +1098,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) > dma_data = &dev->dma_params[SNDRV_PCM_STREAM_PLAYBACK]; > dma_data->asp_chan_q = pdata->asp_chan_q; > dma_data->ram_chan_q = pdata->ram_chan_q; > + dma_data->sram_pool = pdata->sram_pool; > dma_data->sram_size = pdata->sram_size_playback; > dma_data->dma_addr = (dma_addr_t) (pdata->tx_dma_offset + > mem->start); > @@ -1115,6 +1116,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) > dma_data = &dev->dma_params[SNDRV_PCM_STREAM_CAPTURE]; > dma_data->asp_chan_q = pdata->asp_chan_q; > dma_data->ram_chan_q = pdata->ram_chan_q; > + dma_data->sram_pool = pdata->sram_pool; > dma_data->sram_size = pdata->sram_size_capture; > dma_data->dma_addr = (dma_addr_t)(pdata->rx_dma_offset + > mem->start); > diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c > index 93ea3bf..d2cc169 100644 > --- a/sound/soc/davinci/davinci-pcm.c > +++ b/sound/soc/davinci/davinci-pcm.c > @@ -16,6 +16,7 @@ > #include <linux/slab.h> > #include <linux/dma-mapping.h> > #include <linux/kernel.h> > +#include <linux/genalloc.h> > > #include <sound/core.h> > #include <sound/pcm.h> > @@ -23,7 +24,6 @@ > #include <sound/soc.h> > > #include <asm/dma.h> > -#include <mach/sram.h> > > #include "davinci-pcm.h" > > @@ -259,7 +259,8 @@ static void davinci_pcm_dma_irq(unsigned link, u16 ch_status, void *data) > } > } > > -static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, > +static int allocate_sram(struct snd_pcm_substream *substream, > + struct gen_pool *sram_pool, unsigned size, > struct snd_pcm_hardware *ppcm) > { > struct snd_dma_buffer *buf = &substream->dma_buffer; > @@ -271,9 +272,10 @@ static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, > return 0; > > ppcm->period_bytes_max = size; > - iram_virt = sram_alloc(size, &iram_phys); > + iram_virt = (void *)gen_pool_alloc(sram_pool, size); Did you see my patch that stubs out all functions that use gen_pool_* functions for !CONFIG_GENERIC_ALLOCATOR configs? It should still apply nicely on top of this one, and is necessary for AM33xx-only builds. Daniel > if (!iram_virt) > goto exit1; > + iram_phys = gen_pool_virt_to_phys(sram_pool, (unsigned)iram_virt); > iram_dma = kzalloc(sizeof(*iram_dma), GFP_KERNEL); > if (!iram_dma) > goto exit2; > @@ -285,7 +287,7 @@ static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, > return 0; > exit2: > if (iram_virt) > - sram_free(iram_virt, size); > + gen_pool_free(sram_pool, (unsigned)iram_virt, size); > exit1: > return -ENOMEM; > } > @@ -676,7 +678,7 @@ static int davinci_pcm_open(struct snd_pcm_substream *substream) > > ppcm = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ? > &pcm_hardware_playback : &pcm_hardware_capture; > - allocate_sram(substream, params->sram_size, ppcm); > + allocate_sram(substream, params->sram_pool, params->sram_size, ppcm); > snd_soc_set_runtime_hwparams(substream, ppcm); > /* ensure that buffer size is a multiple of period size */ > ret = snd_pcm_hw_constraint_integer(runtime, > @@ -819,7 +821,11 @@ static void davinci_pcm_free(struct snd_pcm *pcm) > buf->area = NULL; > iram_dma = buf->private_data; > if (iram_dma) { > - sram_free(iram_dma->area, iram_dma->bytes); > + struct davinci_runtime_data *prtd = > + substream->runtime->private_data; > + struct gen_pool *sram_pool = prtd->params->sram_pool; > + gen_pool_free(sram_pool, (unsigned)iram_dma->area, > + iram_dma->bytes); > kfree(iram_dma); > } > } > diff --git a/sound/soc/davinci/davinci-pcm.h b/sound/soc/davinci/davinci-pcm.h > index fc4d01c..b6ef703 100644 > --- a/sound/soc/davinci/davinci-pcm.h > +++ b/sound/soc/davinci/davinci-pcm.h > @@ -12,6 +12,7 @@ > #ifndef _DAVINCI_PCM_H > #define _DAVINCI_PCM_H > > +#include <linux/genalloc.h> > #include <linux/platform_data/davinci_asp.h> > #include <mach/edma.h> > > @@ -20,6 +21,7 @@ struct davinci_pcm_dma_params { > unsigned short acnt; > dma_addr_t dma_addr; /* device physical address for DMA */ > unsigned sram_size; > + struct gen_pool *sram_pool; /* SRAM gen_pool for ping pong */ > enum dma_event_q asp_chan_q; /* event queue number for ASP channel */ > enum dma_event_q ram_chan_q; /* event queue number for RAM channel */ > unsigned char data_type; /* xfer data type */ > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc 2012-10-12 17:15 ` Daniel Mack @ 2012-10-18 15:21 ` Matt Porter 2012-10-18 15:24 ` Daniel Mack 0 siblings, 1 reply; 12+ messages in thread From: Matt Porter @ 2012-10-18 15:21 UTC (permalink / raw) To: Daniel Mack Cc: Linux DaVinci Kernel List, Mark Brown, Alsa Devel List, Linux Kernel Mailing List On Fri, Oct 12, 2012 at 07:15:53PM +0200, Daniel Mack wrote: > Hi Matt, > > On 11.10.2012 23:33, Matt Porter wrote: > > Removes the DaVinci private SRAM API and replaces it with > > the genalloc API. The SRAM gen_pool is passed in pdata since > > DaVinci is in the early stages of DT conversion. > > > > Signed-off-by: Matt Porter <mporter@ti.com> > > --- > > include/linux/platform_data/davinci_asp.h | 3 +++ > > sound/soc/davinci/davinci-mcasp.c | 2 ++ > > sound/soc/davinci/davinci-pcm.c | 18 ++++++++++++------ > > sound/soc/davinci/davinci-pcm.h | 2 ++ > > 4 files changed, 19 insertions(+), 6 deletions(-) > > > > diff --git a/include/linux/platform_data/davinci_asp.h b/include/linux/platform_data/davinci_asp.h > > index d0c5825..f3d6e4f 100644 > > --- a/include/linux/platform_data/davinci_asp.h > > +++ b/include/linux/platform_data/davinci_asp.h > > @@ -16,6 +16,8 @@ > > #ifndef __DAVINCI_ASP_H > > #define __DAVINCI_ASP_H > > > > +#include <linux/genalloc.h> > > + > > struct snd_platform_data { > > u32 tx_dma_offset; > > u32 rx_dma_offset; > > @@ -30,6 +32,7 @@ struct snd_platform_data { > > unsigned enable_channel_combine:1; > > unsigned sram_size_playback; > > unsigned sram_size_capture; > > + struct gen_pool *sram_pool; > > > > /* > > * If McBSP peripheral gets the clock from an external pin, > > diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c > > index 714e51e..52194bb 100644 > > --- a/sound/soc/davinci/davinci-mcasp.c > > +++ b/sound/soc/davinci/davinci-mcasp.c > > @@ -1098,6 +1098,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) > > dma_data = &dev->dma_params[SNDRV_PCM_STREAM_PLAYBACK]; > > dma_data->asp_chan_q = pdata->asp_chan_q; > > dma_data->ram_chan_q = pdata->ram_chan_q; > > + dma_data->sram_pool = pdata->sram_pool; > > dma_data->sram_size = pdata->sram_size_playback; > > dma_data->dma_addr = (dma_addr_t) (pdata->tx_dma_offset + > > mem->start); > > @@ -1115,6 +1116,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) > > dma_data = &dev->dma_params[SNDRV_PCM_STREAM_CAPTURE]; > > dma_data->asp_chan_q = pdata->asp_chan_q; > > dma_data->ram_chan_q = pdata->ram_chan_q; > > + dma_data->sram_pool = pdata->sram_pool; > > dma_data->sram_size = pdata->sram_size_capture; > > dma_data->dma_addr = (dma_addr_t)(pdata->rx_dma_offset + > > mem->start); > > diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c > > index 93ea3bf..d2cc169 100644 > > --- a/sound/soc/davinci/davinci-pcm.c > > +++ b/sound/soc/davinci/davinci-pcm.c > > @@ -16,6 +16,7 @@ > > #include <linux/slab.h> > > #include <linux/dma-mapping.h> > > #include <linux/kernel.h> > > +#include <linux/genalloc.h> > > > > #include <sound/core.h> > > #include <sound/pcm.h> > > @@ -23,7 +24,6 @@ > > #include <sound/soc.h> > > > > #include <asm/dma.h> > > -#include <mach/sram.h> > > > > #include "davinci-pcm.h" > > > > @@ -259,7 +259,8 @@ static void davinci_pcm_dma_irq(unsigned link, u16 ch_status, void *data) > > } > > } > > > > -static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, > > +static int allocate_sram(struct snd_pcm_substream *substream, > > + struct gen_pool *sram_pool, unsigned size, > > struct snd_pcm_hardware *ppcm) > > { > > struct snd_dma_buffer *buf = &substream->dma_buffer; > > @@ -271,9 +272,10 @@ static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, > > return 0; > > > > ppcm->period_bytes_max = size; > > - iram_virt = sram_alloc(size, &iram_phys); > > + iram_virt = (void *)gen_pool_alloc(sram_pool, size); > > Did you see my patch that stubs out all functions that use gen_pool_* > functions for !CONFIG_GENERIC_ALLOCATOR configs? It should still apply > nicely on top of this one, and is necessary for AM33xx-only builds. Sorry, I've had the last week of list traffic go to /dev/null. Catching up now and I do see that. I'm assuming that will all be in your updated series with these patches squashed in? -Matt > > if (!iram_virt) > > goto exit1; > > + iram_phys = gen_pool_virt_to_phys(sram_pool, (unsigned)iram_virt); > > iram_dma = kzalloc(sizeof(*iram_dma), GFP_KERNEL); > > if (!iram_dma) > > goto exit2; > > @@ -285,7 +287,7 @@ static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, > > return 0; > > exit2: > > if (iram_virt) > > - sram_free(iram_virt, size); > > + gen_pool_free(sram_pool, (unsigned)iram_virt, size); > > exit1: > > return -ENOMEM; > > } > > @@ -676,7 +678,7 @@ static int davinci_pcm_open(struct snd_pcm_substream *substream) > > > > ppcm = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ? > > &pcm_hardware_playback : &pcm_hardware_capture; > > - allocate_sram(substream, params->sram_size, ppcm); > > + allocate_sram(substream, params->sram_pool, params->sram_size, ppcm); > > snd_soc_set_runtime_hwparams(substream, ppcm); > > /* ensure that buffer size is a multiple of period size */ > > ret = snd_pcm_hw_constraint_integer(runtime, > > @@ -819,7 +821,11 @@ static void davinci_pcm_free(struct snd_pcm *pcm) > > buf->area = NULL; > > iram_dma = buf->private_data; > > if (iram_dma) { > > - sram_free(iram_dma->area, iram_dma->bytes); > > + struct davinci_runtime_data *prtd = > > + substream->runtime->private_data; > > + struct gen_pool *sram_pool = prtd->params->sram_pool; > > + gen_pool_free(sram_pool, (unsigned)iram_dma->area, > > + iram_dma->bytes); > > kfree(iram_dma); > > } > > } > > diff --git a/sound/soc/davinci/davinci-pcm.h b/sound/soc/davinci/davinci-pcm.h > > index fc4d01c..b6ef703 100644 > > --- a/sound/soc/davinci/davinci-pcm.h > > +++ b/sound/soc/davinci/davinci-pcm.h > > @@ -12,6 +12,7 @@ > > #ifndef _DAVINCI_PCM_H > > #define _DAVINCI_PCM_H > > > > +#include <linux/genalloc.h> > > #include <linux/platform_data/davinci_asp.h> > > #include <mach/edma.h> > > > > @@ -20,6 +21,7 @@ struct davinci_pcm_dma_params { > > unsigned short acnt; > > dma_addr_t dma_addr; /* device physical address for DMA */ > > unsigned sram_size; > > + struct gen_pool *sram_pool; /* SRAM gen_pool for ping pong */ > > enum dma_event_q asp_chan_q; /* event queue number for ASP channel */ > > enum dma_event_q ram_chan_q; /* event queue number for RAM channel */ > > unsigned char data_type; /* xfer data type */ > > > > _______________________________________________ > Davinci-linux-open-source mailing list > Davinci-linux-open-source@linux.davincidsp.com > http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc 2012-10-18 15:21 ` Matt Porter @ 2012-10-18 15:24 ` Daniel Mack 0 siblings, 0 replies; 12+ messages in thread From: Daniel Mack @ 2012-10-18 15:24 UTC (permalink / raw) To: Matt Porter Cc: Linux DaVinci Kernel List, Mark Brown, Alsa Devel List, Linux Kernel Mailing List On 18.10.2012 17:21, Matt Porter wrote: > On Fri, Oct 12, 2012 at 07:15:53PM +0200, Daniel Mack wrote: >> Hi Matt, >> >> On 11.10.2012 23:33, Matt Porter wrote: >>> Removes the DaVinci private SRAM API and replaces it with >>> the genalloc API. The SRAM gen_pool is passed in pdata since >>> DaVinci is in the early stages of DT conversion. >>> >>> Signed-off-by: Matt Porter <mporter@ti.com> >>> --- >>> include/linux/platform_data/davinci_asp.h | 3 +++ >>> sound/soc/davinci/davinci-mcasp.c | 2 ++ >>> sound/soc/davinci/davinci-pcm.c | 18 ++++++++++++------ >>> sound/soc/davinci/davinci-pcm.h | 2 ++ >>> 4 files changed, 19 insertions(+), 6 deletions(-) >>> >>> diff --git a/include/linux/platform_data/davinci_asp.h b/include/linux/platform_data/davinci_asp.h >>> index d0c5825..f3d6e4f 100644 >>> --- a/include/linux/platform_data/davinci_asp.h >>> +++ b/include/linux/platform_data/davinci_asp.h >>> @@ -16,6 +16,8 @@ >>> #ifndef __DAVINCI_ASP_H >>> #define __DAVINCI_ASP_H >>> >>> +#include <linux/genalloc.h> >>> + >>> struct snd_platform_data { >>> u32 tx_dma_offset; >>> u32 rx_dma_offset; >>> @@ -30,6 +32,7 @@ struct snd_platform_data { >>> unsigned enable_channel_combine:1; >>> unsigned sram_size_playback; >>> unsigned sram_size_capture; >>> + struct gen_pool *sram_pool; >>> >>> /* >>> * If McBSP peripheral gets the clock from an external pin, >>> diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c >>> index 714e51e..52194bb 100644 >>> --- a/sound/soc/davinci/davinci-mcasp.c >>> +++ b/sound/soc/davinci/davinci-mcasp.c >>> @@ -1098,6 +1098,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) >>> dma_data = &dev->dma_params[SNDRV_PCM_STREAM_PLAYBACK]; >>> dma_data->asp_chan_q = pdata->asp_chan_q; >>> dma_data->ram_chan_q = pdata->ram_chan_q; >>> + dma_data->sram_pool = pdata->sram_pool; >>> dma_data->sram_size = pdata->sram_size_playback; >>> dma_data->dma_addr = (dma_addr_t) (pdata->tx_dma_offset + >>> mem->start); >>> @@ -1115,6 +1116,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) >>> dma_data = &dev->dma_params[SNDRV_PCM_STREAM_CAPTURE]; >>> dma_data->asp_chan_q = pdata->asp_chan_q; >>> dma_data->ram_chan_q = pdata->ram_chan_q; >>> + dma_data->sram_pool = pdata->sram_pool; >>> dma_data->sram_size = pdata->sram_size_capture; >>> dma_data->dma_addr = (dma_addr_t)(pdata->rx_dma_offset + >>> mem->start); >>> diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c >>> index 93ea3bf..d2cc169 100644 >>> --- a/sound/soc/davinci/davinci-pcm.c >>> +++ b/sound/soc/davinci/davinci-pcm.c >>> @@ -16,6 +16,7 @@ >>> #include <linux/slab.h> >>> #include <linux/dma-mapping.h> >>> #include <linux/kernel.h> >>> +#include <linux/genalloc.h> >>> >>> #include <sound/core.h> >>> #include <sound/pcm.h> >>> @@ -23,7 +24,6 @@ >>> #include <sound/soc.h> >>> >>> #include <asm/dma.h> >>> -#include <mach/sram.h> >>> >>> #include "davinci-pcm.h" >>> >>> @@ -259,7 +259,8 @@ static void davinci_pcm_dma_irq(unsigned link, u16 ch_status, void *data) >>> } >>> } >>> >>> -static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, >>> +static int allocate_sram(struct snd_pcm_substream *substream, >>> + struct gen_pool *sram_pool, unsigned size, >>> struct snd_pcm_hardware *ppcm) >>> { >>> struct snd_dma_buffer *buf = &substream->dma_buffer; >>> @@ -271,9 +272,10 @@ static int allocate_sram(struct snd_pcm_substream *substream, unsigned size, >>> return 0; >>> >>> ppcm->period_bytes_max = size; >>> - iram_virt = sram_alloc(size, &iram_phys); >>> + iram_virt = (void *)gen_pool_alloc(sram_pool, size); >> >> Did you see my patch that stubs out all functions that use gen_pool_* >> functions for !CONFIG_GENERIC_ALLOCATOR configs? It should still apply >> nicely on top of this one, and is necessary for AM33xx-only builds. > > Sorry, I've had the last week of list traffic go to /dev/null. Catching > up now and I do see that. I'm assuming that will all be in your updated > series with these patches squashed in? Yes, exactly. I already sent them out yesterday. Daniel ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 2/2] ARM: davinci: enable SRAM ping ping buffering on DA850 2012-10-11 21:33 [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Matt Porter 2012-10-11 21:33 ` [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc Matt Porter @ 2012-10-11 21:33 ` Matt Porter 2012-10-12 17:11 ` Sergei Shtylyov 2012-10-17 13:51 ` [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Mark Brown 2 siblings, 1 reply; 12+ messages in thread From: Matt Porter @ 2012-10-11 21:33 UTC (permalink / raw) To: Mark Brown, gururaja.hebbar, Sekhar Nori Cc: Linux Kernel Mailing List, Alsa Devel List, Linux DaVinci Kernel List, Ben Gardiner, Daniel Mack Passes the DA850 shared SRAM gen_pool to the McASP driver and enables the ping-pong buffer DMA support. Signed-off-by: Matt Porter <mporter@ti.com> --- arch/arm/mach-davinci/board-da850-evm.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 9e7f954..df87866 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -41,6 +41,7 @@ #include <mach/cp_intc.h> #include <mach/da8xx.h> #include <mach/mux.h> +#include <mach/sram.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -749,16 +750,19 @@ static u8 da850_iis_serializer_direction[] = { }; static struct snd_platform_data da850_evm_snd_data = { - .tx_dma_offset = 0x2000, - .rx_dma_offset = 0x2000, - .op_mode = DAVINCI_MCASP_IIS_MODE, - .num_serializer = ARRAY_SIZE(da850_iis_serializer_direction), - .tdm_slots = 2, - .serial_dir = da850_iis_serializer_direction, - .asp_chan_q = EVENTQ_0, - .version = MCASP_VERSION_2, - .txnumevt = 1, - .rxnumevt = 1, + .tx_dma_offset = 0x2000, + .rx_dma_offset = 0x2000, + .op_mode = DAVINCI_MCASP_IIS_MODE, + .num_serializer = ARRAY_SIZE(da850_iis_serializer_direction), + .tdm_slots = 2, + .serial_dir = da850_iis_serializer_direction, + .asp_chan_q = EVENTQ_0, + .ram_chan_q = EVENTQ_1, + .version = MCASP_VERSION_2, + .txnumevt = 1, + .rxnumevt = 1, + .sram_size_playback = SZ_8K, + .sram_size_capture = SZ_8K, }; static const short da850_evm_mcasp_pins[] __initconst = { @@ -1333,6 +1337,7 @@ static __init void da850_evm_init(void) pr_warning("da850_evm_init: mcasp mux setup failed: %d\n", ret); + da850_evm_snd_data.sram_pool = sram_get_gen_pool(); da8xx_register_mcasp(0, &da850_evm_snd_data); ret = davinci_cfg_reg_list(da850_lcdcntl_pins); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/2] ARM: davinci: enable SRAM ping ping buffering on DA850 2012-10-11 21:33 ` [PATCH v2 2/2] ARM: davinci: enable SRAM ping ping buffering on DA850 Matt Porter @ 2012-10-12 17:11 ` Sergei Shtylyov 2012-10-18 15:18 ` Matt Porter 0 siblings, 1 reply; 12+ messages in thread From: Sergei Shtylyov @ 2012-10-12 17:11 UTC (permalink / raw) To: Matt Porter Cc: Mark Brown, gururaja.hebbar, Sekhar Nori, Linux DaVinci Kernel List, Alsa Devel List, Linux Kernel Mailing List, Daniel Mack Hello. On 11-10-2012 23:33, Matt Porter wrote: > Passes the DA850 shared SRAM gen_pool to the McASP driver > and enables the ping-pong buffer DMA support. Here "ping-pong is correct but the subject have a typo. > Signed-off-by: Matt Porter <mporter@ti.com> > WBR, Sergei ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/2] ARM: davinci: enable SRAM ping ping buffering on DA850 2012-10-12 17:11 ` Sergei Shtylyov @ 2012-10-18 15:18 ` Matt Porter 0 siblings, 0 replies; 12+ messages in thread From: Matt Porter @ 2012-10-18 15:18 UTC (permalink / raw) To: Sergei Shtylyov Cc: Linux DaVinci Kernel List, Alsa Devel List, Mark Brown, Linux Kernel Mailing List, Daniel Mack On Fri, Oct 12, 2012 at 07:11:06PM +0200, Sergei Shtylyov wrote: > Hello. > > On 11-10-2012 23:33, Matt Porter wrote: > > >Passes the DA850 shared SRAM gen_pool to the McASP driver > >and enables the ping-pong buffer DMA support. > > Here "ping-pong is correct but the subject have a typo. Thanks. Daniel: can you correct this when you squash these into your series? -Matt ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM 2012-10-11 21:33 [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Matt Porter 2012-10-11 21:33 ` [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc Matt Porter 2012-10-11 21:33 ` [PATCH v2 2/2] ARM: davinci: enable SRAM ping ping buffering on DA850 Matt Porter @ 2012-10-17 13:51 ` Mark Brown 2012-10-17 14:06 ` Daniel Mack 2012-10-18 14:40 ` Porter, Matt 2 siblings, 2 replies; 12+ messages in thread From: Mark Brown @ 2012-10-17 13:51 UTC (permalink / raw) To: Matt Porter Cc: gururaja.hebbar, Sekhar Nori, Linux Kernel Mailing List, Alsa Devel List, Linux DaVinci Kernel List, Ben Gardiner, Daniel Mack [-- Attachment #1: Type: text/plain, Size: 501 bytes --] On Thu, Oct 11, 2012 at 05:33:47PM -0400, Matt Porter wrote: > This series converts davinci ASoC to use genalloc and enables > that support on DA850. It applies to mainline on top of the > uio_pruss/genalloc series [1] which allows DaVinci to provide > a gen_pool via pdata for driver use. I tried to apply these patches but patch 2 doesn't apply against v3.7-rc1 I guess due to the series you mention. What's the plan for merging that series? It'd also be good to get Daniel's patch squashed in. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM 2012-10-17 13:51 ` [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Mark Brown @ 2012-10-17 14:06 ` Daniel Mack 2012-10-18 14:41 ` Porter, Matt 2012-10-18 14:40 ` Porter, Matt 1 sibling, 1 reply; 12+ messages in thread From: Daniel Mack @ 2012-10-17 14:06 UTC (permalink / raw) To: Mark Brown Cc: Matt Porter, gururaja.hebbar, Sekhar Nori, Linux Kernel Mailing List, Alsa Devel List, Linux DaVinci Kernel List, Ben Gardiner On 17.10.2012 15:51, Mark Brown wrote: > On Thu, Oct 11, 2012 at 05:33:47PM -0400, Matt Porter wrote: > >> This series converts davinci ASoC to use genalloc and enables >> that support on DA850. It applies to mainline on top of the >> uio_pruss/genalloc series [1] which allows DaVinci to provide >> a gen_pool via pdata for driver use. > > I tried to apply these patches but patch 2 doesn't apply against > v3.7-rc1 I guess due to the series you mention. What's the plan for > merging that series? It'd also be good to get Daniel's patch squashed > in. I'll resend the rebased patches from my 3.7-rc1 development branch with my patch squashed into 1/2. Matt, hope you're ok with that? Thanks, Daniel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM 2012-10-17 14:06 ` Daniel Mack @ 2012-10-18 14:41 ` Porter, Matt 0 siblings, 0 replies; 12+ messages in thread From: Porter, Matt @ 2012-10-18 14:41 UTC (permalink / raw) To: Daniel Mack Cc: Mark Brown, Hebbar, Gururaja, Nori, Sekhar, Linux Kernel Mailing List, Alsa Devel List, Linux DaVinci Kernel List, Ben Gardiner On Oct 17, 2012, at 10:06 AM, Daniel Mack wrote: > On 17.10.2012 15:51, Mark Brown wrote: >> On Thu, Oct 11, 2012 at 05:33:47PM -0400, Matt Porter wrote: >> >>> This series converts davinci ASoC to use genalloc and enables >>> that support on DA850. It applies to mainline on top of the >>> uio_pruss/genalloc series [1] which allows DaVinci to provide >>> a gen_pool via pdata for driver use. >> >> I tried to apply these patches but patch 2 doesn't apply against >> v3.7-rc1 I guess due to the series you mention. What's the plan for >> merging that series? It'd also be good to get Daniel's patch squashed >> in. > > I'll resend the rebased patches from my 3.7-rc1 development branch with > my patch squashed into 1/2. Matt, hope you're ok with that? Yes, thanks. -Matt ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM 2012-10-17 13:51 ` [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Mark Brown 2012-10-17 14:06 ` Daniel Mack @ 2012-10-18 14:40 ` Porter, Matt 1 sibling, 0 replies; 12+ messages in thread From: Porter, Matt @ 2012-10-18 14:40 UTC (permalink / raw) To: Mark Brown Cc: Hebbar, Gururaja, Nori, Sekhar, Linux Kernel Mailing List, Alsa Devel List, Linux DaVinci Kernel List, Ben Gardiner, Daniel Mack On Oct 17, 2012, at 9:51 AM, Mark Brown wrote: > On Thu, Oct 11, 2012 at 05:33:47PM -0400, Matt Porter wrote: > >> This series converts davinci ASoC to use genalloc and enables >> that support on DA850. It applies to mainline on top of the >> uio_pruss/genalloc series [1] which allows DaVinci to provide >> a gen_pool via pdata for driver use. > > I tried to apply these patches but patch 2 doesn't apply against > v3.7-rc1 I guess due to the series you mention. What's the plan for > merging that series? It'd also be good to get Daniel's patch squashed > in. I will ping Hans about the uio_pruss driver portion. Sekhar was waiting on a ack for that before applying all of the supporting genalloc patches for mach-davinci/ -Matt ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-10-18 15:30 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-10-11 21:33 [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Matt Porter 2012-10-11 21:33 ` [PATCH v2 1/2] ASoC: davinci: replace private sram api with genalloc Matt Porter 2012-10-12 17:15 ` Daniel Mack 2012-10-18 15:21 ` Matt Porter 2012-10-18 15:24 ` Daniel Mack 2012-10-11 21:33 ` [PATCH v2 2/2] ARM: davinci: enable SRAM ping ping buffering on DA850 Matt Porter 2012-10-12 17:11 ` Sergei Shtylyov 2012-10-18 15:18 ` Matt Porter 2012-10-17 13:51 ` [PATCH v2 0/2] Convert davinci ASoC to genalloc SRAM Mark Brown 2012-10-17 14:06 ` Daniel Mack 2012-10-18 14:41 ` Porter, Matt 2012-10-18 14:40 ` Porter, Matt
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).