ASoC: core - refactor pcm_new() to pass only rtd
In preparation for ASoC DSP support. Currently pcm_new() passes in card, pcm and DAI. Refactor this to only pass in rtd since rtd contains card, pcm and DAI. Struct rtd also contain other members too that are useful to DSPs. Signed-off-by: Liam Girdwood <lrg@ti.com>
This commit is contained in:
committed by
Sebastien Guiriec
parent
0218408592
commit
c6ac984059
@@ -627,8 +627,7 @@ struct snd_soc_platform_driver {
|
||||
int (*resume)(struct snd_soc_dai *dai);
|
||||
|
||||
/* pcm creation and destruction */
|
||||
int (*pcm_new)(struct snd_card *, struct snd_soc_dai *,
|
||||
struct snd_pcm *);
|
||||
int (*pcm_new)(struct snd_soc_pcm_runtime *);
|
||||
void (*pcm_free)(struct snd_pcm *);
|
||||
|
||||
/*
|
||||
|
||||
@@ -364,9 +364,11 @@ static struct snd_pcm_ops atmel_pcm_ops = {
|
||||
\*--------------------------------------------------------------------------*/
|
||||
static u64 atmel_pcm_dmamask = 0xffffffff;
|
||||
|
||||
static int atmel_pcm_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai, struct snd_pcm *pcm)
|
||||
static int atmel_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -319,10 +319,11 @@ static void au1xpsc_pcm_free_dma_buffers(struct snd_pcm *pcm)
|
||||
snd_pcm_lib_preallocate_free_for_all(pcm);
|
||||
}
|
||||
|
||||
static int au1xpsc_pcm_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int au1xpsc_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
|
||||
card->dev, AU1XPSC_BUFFER_MIN_BYTES, (4096 * 1024) - 1);
|
||||
|
||||
|
||||
@@ -418,9 +418,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
|
||||
|
||||
static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32);
|
||||
|
||||
int bf5xx_pcm_ac97_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
int bf5xx_pcm_ac97_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
pr_debug("%s enter\n", __func__);
|
||||
|
||||
@@ -257,9 +257,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
|
||||
|
||||
static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32);
|
||||
|
||||
int bf5xx_pcm_i2s_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
int bf5xx_pcm_i2s_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
pr_debug("%s enter\n", __func__);
|
||||
|
||||
@@ -283,9 +283,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
|
||||
|
||||
static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32);
|
||||
|
||||
static int bf5xx_pcm_tdm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int bf5xx_pcm_tdm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -811,9 +811,11 @@ static void davinci_pcm_free(struct snd_pcm *pcm)
|
||||
|
||||
static u64 davinci_pcm_dmamask = 0xffffffff;
|
||||
|
||||
static int davinci_pcm_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai, struct snd_pcm *pcm)
|
||||
static int davinci_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -266,9 +266,11 @@ static void ep93xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
|
||||
|
||||
static u64 ep93xx_pcm_dmamask = 0xffffffff;
|
||||
|
||||
static int ep93xx_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int ep93xx_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -294,9 +294,11 @@ static irqreturn_t fsl_dma_isr(int irq, void *dev_id)
|
||||
* Regardless of where the memory is actually allocated, since the device can
|
||||
* technically DMA to any 36-bit address, we do need to set the DMA mask to 36.
|
||||
*/
|
||||
static int fsl_dma_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int fsl_dma_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
static u64 fsl_dma_dmamask = DMA_BIT_MASK(36);
|
||||
int ret;
|
||||
|
||||
|
||||
@@ -299,10 +299,11 @@ static struct snd_pcm_ops psc_dma_ops = {
|
||||
};
|
||||
|
||||
static u64 psc_dma_dmamask = 0xffffffff;
|
||||
static int psc_dma_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int psc_dma_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = pcm->private_data;
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai);
|
||||
size_t size = psc_dma_hardware.buffer_bytes_max;
|
||||
int rc = 0;
|
||||
|
||||
@@ -238,12 +238,14 @@ static struct snd_pcm_ops imx_pcm_ops = {
|
||||
|
||||
static int ssi_irq = 0;
|
||||
|
||||
static int imx_pcm_fiq_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int imx_pcm_fiq_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret;
|
||||
|
||||
ret = imx_pcm_new(card, dai, pcm);
|
||||
ret = imx_pcm_new(rtd);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -388,10 +388,11 @@ static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
|
||||
|
||||
static u64 imx_pcm_dmamask = DMA_BIT_MASK(32);
|
||||
|
||||
int imx_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
int imx_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -225,8 +225,7 @@ struct snd_soc_platform *imx_ssi_dma_mx2_init(struct platform_device *pdev,
|
||||
struct imx_ssi *ssi);
|
||||
|
||||
int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma);
|
||||
int imx_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm);
|
||||
int imx_pcm_new(struct snd_soc_pcm_runtime *rtd);
|
||||
void imx_pcm_free(struct snd_pcm *pcm);
|
||||
|
||||
/*
|
||||
|
||||
@@ -299,9 +299,11 @@ static void jz4740_pcm_free(struct snd_pcm *pcm)
|
||||
|
||||
static u64 jz4740_pcm_dmamask = DMA_BIT_MASK(32);
|
||||
|
||||
int jz4740_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
int jz4740_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -312,9 +312,11 @@ static int kirkwood_dma_preallocate_dma_buffer(struct snd_pcm *pcm,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int kirkwood_dma_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai, struct snd_pcm *pcm)
|
||||
static int kirkwood_dma_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -315,9 +315,12 @@ static void nuc900_dma_free_dma_buffers(struct snd_pcm *pcm)
|
||||
}
|
||||
|
||||
static u64 nuc900_pcm_dmamask = DMA_BIT_MASK(32);
|
||||
static int nuc900_dma_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai, struct snd_pcm *pcm)
|
||||
static int nuc900_dma_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
card->dev->dma_mask = &nuc900_pcm_dmamask;
|
||||
if (!card->dev->coherent_dma_mask)
|
||||
|
||||
@@ -366,9 +366,11 @@ static void omap_pcm_free_dma_buffers(struct snd_pcm *pcm)
|
||||
}
|
||||
}
|
||||
|
||||
static int omap_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int omap_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -85,9 +85,11 @@ static struct snd_pcm_ops pxa2xx_pcm_ops = {
|
||||
|
||||
static u64 pxa2xx_pcm_dmamask = DMA_BIT_MASK(32);
|
||||
|
||||
static int pxa2xx_soc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int pxa2xx_soc_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
if (!card->dev->dma_mask)
|
||||
|
||||
@@ -443,10 +443,11 @@ static void s6000_pcm_free(struct snd_pcm *pcm)
|
||||
|
||||
static u64 s6000_pcm_dmamask = DMA_BIT_MASK(32);
|
||||
|
||||
static int s6000_pcm_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai, struct snd_pcm *pcm)
|
||||
static int s6000_pcm_new(struct snd_soc_pcm_runtime *runtime)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *runtime = pcm->private_data;
|
||||
struct snd_card *card = runtime->card->snd_card;
|
||||
struct snd_soc_dai *dai = runtime->cpu_dai;
|
||||
struct snd_pcm *pcm = runtime->pcm;
|
||||
struct s6000_pcm_dma_params *params;
|
||||
int res;
|
||||
|
||||
|
||||
@@ -425,9 +425,11 @@ static void dma_free_dma_buffers(struct snd_pcm *pcm)
|
||||
|
||||
static u64 dma_mask = DMA_BIT_MASK(32);
|
||||
|
||||
static int dma_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai, struct snd_pcm *pcm)
|
||||
static int dma_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
int ret = 0;
|
||||
|
||||
pr_debug("Entered %s\n", __func__);
|
||||
|
||||
@@ -327,10 +327,10 @@ static void camelot_pcm_free(struct snd_pcm *pcm)
|
||||
snd_pcm_lib_preallocate_free_for_all(pcm);
|
||||
}
|
||||
|
||||
static int camelot_pcm_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int camelot_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
|
||||
/* dont use SNDRV_DMA_TYPE_DEV, since it will oops the SH kernel
|
||||
* in MMAP mode (i.e. aplay -M)
|
||||
*/
|
||||
|
||||
@@ -1129,10 +1129,10 @@ static void fsi_pcm_free(struct snd_pcm *pcm)
|
||||
snd_pcm_lib_preallocate_free_for_all(pcm);
|
||||
}
|
||||
|
||||
static int fsi_pcm_new(struct snd_card *card,
|
||||
struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int fsi_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
|
||||
/*
|
||||
* dont use SNDRV_DMA_TYPE_DEV, since it will oops the SH kernel
|
||||
* in MMAP mode (i.e. aplay -M)
|
||||
|
||||
@@ -527,10 +527,11 @@ static snd_pcm_uframes_t siu_pcm_pointer_dma(struct snd_pcm_substream *ss)
|
||||
return bytes_to_frames(ss->runtime, ptr);
|
||||
}
|
||||
|
||||
static int siu_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int siu_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
/* card->dev == socdev->dev, see snd_soc_new_pcms() */
|
||||
struct snd_card *card = rtd->card->snd_card;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
struct siu_info *info = siu_i2s_data;
|
||||
struct platform_device *pdev = to_platform_device(card->dev);
|
||||
int ret;
|
||||
|
||||
@@ -2166,8 +2166,7 @@ static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
|
||||
snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &soc_pcm_ops);
|
||||
|
||||
if (platform->driver->pcm_new) {
|
||||
ret = platform->driver->pcm_new(rtd->card->snd_card,
|
||||
codec_dai, pcm);
|
||||
ret = platform->driver->pcm_new(rtd);
|
||||
if (ret < 0) {
|
||||
pr_err("asoc: platform pcm constructor failed\n");
|
||||
return ret;
|
||||
|
||||
@@ -288,9 +288,10 @@ static void txx9aclc_pcm_free_dma_buffers(struct snd_pcm *pcm)
|
||||
snd_pcm_lib_preallocate_free_for_all(pcm);
|
||||
}
|
||||
|
||||
static int txx9aclc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
||||
struct snd_pcm *pcm)
|
||||
static int txx9aclc_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_dai *dai = rtd->cpu_dai;
|
||||
struct snd_pcm *pcm = rtd->pcm;
|
||||
struct platform_device *pdev = to_platform_device(dai->platform->dev);
|
||||
struct txx9aclc_soc_device *dev;
|
||||
struct resource *r;
|
||||
|
||||
Reference in New Issue
Block a user