ASoC: core - Optimise and refactor pcm_new() to pass only rtd
Currently pcm_new() passes in 3 arguments :- card, pcm and DAI. Refactor this to only pass in 1 argument (i.e. the rtd) since struct rtd contains card, pcm and DAI along with other members too that are useful too. Signed-off-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
		
					parent
					
						
							
								cf3383fbb0
							
						
					
				
			
			
				commit
				
					
						552d1ef6b5
					
				
			
		
					 27 changed files with 96 additions and 61 deletions
				
			
		|  | @ -624,8 +624,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__); | ||||
|  |  | |||
|  | @ -248,9 +248,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) | ||||
|  |  | |||
|  | @ -833,9 +833,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) | ||||
|  |  | |||
|  | @ -402,9 +402,10 @@ static void sst_pcm_free(struct snd_pcm *pcm) | |||
| 	snd_pcm_lib_preallocate_free_for_all(pcm); | ||||
| } | ||||
| 
 | ||||
| int sst_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, | ||||
| 			struct snd_pcm *pcm) | ||||
| int sst_pcm_new(struct snd_soc_pcm_runtime *rtd) | ||||
| { | ||||
| 	struct snd_soc_dai *dai = rtd->cpu_dai; | ||||
| 	struct snd_pcm *pcm = rtd->pcm; | ||||
| 	int retval = 0; | ||||
| 
 | ||||
| 	pr_debug("sst_pcm_new called\n"); | ||||
|  |  | |||
|  | @ -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) | ||||
| 	 */ | ||||
|  |  | |||
|  | @ -1168,10 +1168,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; | ||||
|  |  | |||
|  | @ -2143,8 +2143,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; | ||||
|  |  | |||
|  | @ -322,9 +322,11 @@ static void tegra_pcm_deallocate_dma_buffer(struct snd_pcm *pcm, int stream) | |||
| 
 | ||||
| static u64 tegra_dma_mask = DMA_BIT_MASK(32); | ||||
| 
 | ||||
| static int tegra_pcm_new(struct snd_card *card, | ||||
| 				struct snd_soc_dai *dai, struct snd_pcm *pcm) | ||||
| static int tegra_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) | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Liam Girdwood
				Liam Girdwood