diff options
Diffstat (limited to 'sound/soc/amd')
-rw-r--r-- | sound/soc/amd/acp-pcm-dma.c | 63 | ||||
-rw-r--r-- | sound/soc/amd/raven/acp3x-pcm-dma.c | 56 |
2 files changed, 53 insertions, 66 deletions
diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c index 52225b4b6382..4b9a27e25206 100644 --- a/sound/soc/amd/acp-pcm-dma.c +++ b/sound/soc/amd/acp-pcm-dma.c @@ -759,14 +759,12 @@ static irqreturn_t dma_irq_handler(int irq, void *arg) return IRQ_NONE; } -static int acp_dma_open(struct snd_pcm_substream *substream) +static int acp_dma_open(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { u16 bank; int ret = 0; struct snd_pcm_runtime *runtime = substream->runtime; - struct snd_soc_pcm_runtime *prtd = substream->private_data; - struct snd_soc_component *component = snd_soc_rtdcom_lookup(prtd, - DRV_NAME); struct audio_drv_data *intr_data = dev_get_drvdata(component->dev); struct audio_substream_data *adata = kzalloc(sizeof(struct audio_substream_data), GFP_KERNEL); @@ -834,7 +832,8 @@ static int acp_dma_open(struct snd_pcm_substream *substream) return 0; } -static int acp_dma_hw_params(struct snd_pcm_substream *substream, +static int acp_dma_hw_params(struct snd_soc_component *component, + struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { int status; @@ -843,8 +842,6 @@ static int acp_dma_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_runtime *runtime; struct audio_substream_data *rtd; struct snd_soc_pcm_runtime *prtd = substream->private_data; - struct snd_soc_component *component = snd_soc_rtdcom_lookup(prtd, - DRV_NAME); struct audio_drv_data *adata = dev_get_drvdata(component->dev); struct snd_soc_card *card = prtd->card; struct acp_platform_info *pinfo = snd_soc_card_get_drvdata(card); @@ -995,7 +992,8 @@ static int acp_dma_hw_params(struct snd_pcm_substream *substream, return status; } -static int acp_dma_hw_free(struct snd_pcm_substream *substream) +static int acp_dma_hw_free(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { return snd_pcm_lib_free_pages(substream); } @@ -1011,7 +1009,8 @@ static u64 acp_get_byte_count(struct audio_substream_data *rtd) return byte_count.bytescount; } -static snd_pcm_uframes_t acp_dma_pointer(struct snd_pcm_substream *substream) +static snd_pcm_uframes_t acp_dma_pointer(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { u32 buffersize; u32 pos = 0; @@ -1053,13 +1052,15 @@ static snd_pcm_uframes_t acp_dma_pointer(struct snd_pcm_substream *substream) return bytes_to_frames(runtime, pos); } -static int acp_dma_mmap(struct snd_pcm_substream *substream, +static int acp_dma_mmap(struct snd_soc_component *component, + struct snd_pcm_substream *substream, struct vm_area_struct *vma) { return snd_pcm_lib_default_mmap(substream, vma); } -static int acp_dma_prepare(struct snd_pcm_substream *substream) +static int acp_dma_prepare(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { struct snd_pcm_runtime *runtime = substream->runtime; struct audio_substream_data *rtd = runtime->private_data; @@ -1086,7 +1087,8 @@ static int acp_dma_prepare(struct snd_pcm_substream *substream) return 0; } -static int acp_dma_trigger(struct snd_pcm_substream *substream, int cmd) +static int acp_dma_trigger(struct snd_soc_component *component, + struct snd_pcm_substream *substream, int cmd) { int ret; @@ -1132,10 +1134,9 @@ static int acp_dma_trigger(struct snd_pcm_substream *substream, int cmd) return ret; } -static int acp_dma_new(struct snd_soc_pcm_runtime *rtd) +static int acp_dma_new(struct snd_soc_component *component, + struct snd_soc_pcm_runtime *rtd) { - struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, - DRV_NAME); struct audio_drv_data *adata = dev_get_drvdata(component->dev); struct device *parent = component->dev->parent; @@ -1158,14 +1159,12 @@ static int acp_dma_new(struct snd_soc_pcm_runtime *rtd) return 0; } -static int acp_dma_close(struct snd_pcm_substream *substream) +static int acp_dma_close(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { u16 bank; struct snd_pcm_runtime *runtime = substream->runtime; struct audio_substream_data *rtd = runtime->private_data; - struct snd_soc_pcm_runtime *prtd = substream->private_data; - struct snd_soc_component *component = snd_soc_rtdcom_lookup(prtd, - DRV_NAME); struct audio_drv_data *adata = dev_get_drvdata(component->dev); if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { @@ -1216,22 +1215,18 @@ static int acp_dma_close(struct snd_pcm_substream *substream) return 0; } -static const struct snd_pcm_ops acp_dma_ops = { - .open = acp_dma_open, - .close = acp_dma_close, - .ioctl = snd_pcm_lib_ioctl, - .hw_params = acp_dma_hw_params, - .hw_free = acp_dma_hw_free, - .trigger = acp_dma_trigger, - .pointer = acp_dma_pointer, - .mmap = acp_dma_mmap, - .prepare = acp_dma_prepare, -}; - static const struct snd_soc_component_driver acp_asoc_platform = { - .name = DRV_NAME, - .ops = &acp_dma_ops, - .pcm_new = acp_dma_new, + .name = DRV_NAME, + .open = acp_dma_open, + .close = acp_dma_close, + .ioctl = snd_soc_pcm_lib_ioctl, + .hw_params = acp_dma_hw_params, + .hw_free = acp_dma_hw_free, + .trigger = acp_dma_trigger, + .pointer = acp_dma_pointer, + .mmap = acp_dma_mmap, + .prepare = acp_dma_prepare, + .pcm_construct = acp_dma_new, }; static int acp_audio_probe(struct platform_device *pdev) diff --git a/sound/soc/amd/raven/acp3x-pcm-dma.c b/sound/soc/amd/raven/acp3x-pcm-dma.c index bc4dfafdfcd1..60709e3ba99d 100644 --- a/sound/soc/amd/raven/acp3x-pcm-dma.c +++ b/sound/soc/amd/raven/acp3x-pcm-dma.c @@ -275,16 +275,12 @@ static void config_acp3x_dma(struct i2s_stream_instance *rtd, int direction) rtd->acp3x_base + mmACP_EXTERNAL_INTR_CNTL); } -static int acp3x_dma_open(struct snd_pcm_substream *substream) +static int acp3x_dma_open(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { int ret = 0; - struct snd_pcm_runtime *runtime = substream->runtime; - struct snd_soc_pcm_runtime *prtd = substream->private_data; - struct snd_soc_component *component = snd_soc_rtdcom_lookup(prtd, - DRV_NAME); struct i2s_dev_data *adata = dev_get_drvdata(component->dev); - struct i2s_stream_instance *i2s_data = kzalloc(sizeof(struct i2s_stream_instance), GFP_KERNEL); if (!i2s_data) @@ -334,7 +330,8 @@ static u64 acp_get_byte_count(struct i2s_stream_instance *rtd, int direction) return byte_count; } -static int acp3x_dma_hw_params(struct snd_pcm_substream *substream, +static int acp3x_dma_hw_params(struct snd_soc_component *component, + struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { int status; @@ -362,7 +359,8 @@ static int acp3x_dma_hw_params(struct snd_pcm_substream *substream, return status; } -static snd_pcm_uframes_t acp3x_dma_pointer(struct snd_pcm_substream *substream) +static snd_pcm_uframes_t acp3x_dma_pointer(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { u32 pos = 0; u32 buffersize = 0; @@ -379,33 +377,32 @@ static snd_pcm_uframes_t acp3x_dma_pointer(struct snd_pcm_substream *substream) return bytes_to_frames(substream->runtime, pos); } -static int acp3x_dma_new(struct snd_soc_pcm_runtime *rtd) +static int acp3x_dma_new(struct snd_soc_component *component, + struct snd_soc_pcm_runtime *rtd) { - struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, - DRV_NAME); struct device *parent = component->dev->parent; snd_pcm_lib_preallocate_pages_for_all(rtd->pcm, SNDRV_DMA_TYPE_DEV, parent, MIN_BUFFER, MAX_BUFFER); return 0; } -static int acp3x_dma_hw_free(struct snd_pcm_substream *substream) +static int acp3x_dma_hw_free(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { return snd_pcm_lib_free_pages(substream); } -static int acp3x_dma_mmap(struct snd_pcm_substream *substream, +static int acp3x_dma_mmap(struct snd_soc_component *component, + struct snd_pcm_substream *substream, struct vm_area_struct *vma) { return snd_pcm_lib_default_mmap(substream, vma); } -static int acp3x_dma_close(struct snd_pcm_substream *substream) +static int acp3x_dma_close(struct snd_soc_component *component, + struct snd_pcm_substream *substream) { - struct snd_soc_pcm_runtime *prtd = substream->private_data; struct i2s_stream_instance *rtd = substream->runtime->private_data; - struct snd_soc_component *component = snd_soc_rtdcom_lookup(prtd, - DRV_NAME); struct i2s_dev_data *adata = dev_get_drvdata(component->dev); if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) @@ -422,17 +419,6 @@ static int acp3x_dma_close(struct snd_pcm_substream *substream) return 0; } -static struct snd_pcm_ops acp3x_dma_ops = { - .open = acp3x_dma_open, - .close = acp3x_dma_close, - .ioctl = snd_pcm_lib_ioctl, - .hw_params = acp3x_dma_hw_params, - .hw_free = acp3x_dma_hw_free, - .pointer = acp3x_dma_pointer, - .mmap = acp3x_dma_mmap, -}; - - static int acp3x_dai_i2s_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) { @@ -610,9 +596,15 @@ static struct snd_soc_dai_driver acp3x_i2s_dai_driver = { }; static const struct snd_soc_component_driver acp3x_i2s_component = { - .name = DRV_NAME, - .ops = &acp3x_dma_ops, - .pcm_new = acp3x_dma_new, + .name = DRV_NAME, + .open = acp3x_dma_open, + .close = acp3x_dma_close, + .ioctl = snd_soc_pcm_lib_ioctl, + .hw_params = acp3x_dma_hw_params, + .hw_free = acp3x_dma_hw_free, + .pointer = acp3x_dma_pointer, + .mmap = acp3x_dma_mmap, + .pcm_construct = acp3x_dma_new, }; static int acp3x_audio_probe(struct platform_device *pdev) @@ -631,7 +623,7 @@ static int acp3x_audio_probe(struct platform_device *pdev) res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(&pdev->dev, "IORESOURCE_IRQ FAILED\n"); - return -ENODEV; + return -ENODEV; } adata = devm_kzalloc(&pdev->dev, sizeof(*adata), GFP_KERNEL); |