Commit a641ed5e authored by Mark Brown's avatar Mark Brown

Merge remote-tracking branches 'asoc/topic/blackfin', 'asoc/topic/build',...

Merge remote-tracking branches 'asoc/topic/blackfin', 'asoc/topic/build', 'asoc/topic/cirrus' and 'asoc/topic/compress' into asoc-next
...@@ -308,7 +308,7 @@ static int bf5xx_pcm_copy_user(struct snd_pcm_substream *substream, ...@@ -308,7 +308,7 @@ static int bf5xx_pcm_copy_user(struct snd_pcm_substream *substream,
} }
#endif #endif
static struct snd_pcm_ops bf5xx_pcm_ac97_ops = { static const struct snd_pcm_ops bf5xx_pcm_ac97_ops = {
.open = bf5xx_pcm_open, .open = bf5xx_pcm_open,
.ioctl = snd_pcm_lib_ioctl, .ioctl = snd_pcm_lib_ioctl,
.hw_params = bf5xx_pcm_hw_params, .hw_params = bf5xx_pcm_hw_params,
......
...@@ -318,7 +318,7 @@ static int bf5xx_pcm_silence(struct snd_pcm_substream *substream, ...@@ -318,7 +318,7 @@ static int bf5xx_pcm_silence(struct snd_pcm_substream *substream,
return 0; return 0;
} }
static struct snd_pcm_ops bf5xx_pcm_i2s_ops = { static const struct snd_pcm_ops bf5xx_pcm_i2s_ops = {
.open = bf5xx_pcm_open, .open = bf5xx_pcm_open,
.ioctl = snd_pcm_lib_ioctl, .ioctl = snd_pcm_lib_ioctl,
.hw_params = bf5xx_pcm_hw_params, .hw_params = bf5xx_pcm_hw_params,
......
...@@ -164,7 +164,7 @@ static int bfin_i2s_resume(struct snd_soc_dai *dai) ...@@ -164,7 +164,7 @@ static int bfin_i2s_resume(struct snd_soc_dai *dai)
#define BFIN_I2S_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE | \ #define BFIN_I2S_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops bfin_i2s_dai_ops = { static const struct snd_soc_dai_ops bfin_i2s_dai_ops = {
.hw_params = bfin_i2s_hw_params, .hw_params = bfin_i2s_hw_params,
.set_fmt = bfin_i2s_set_dai_fmt, .set_fmt = bfin_i2s_set_dai_fmt,
}; };
......
...@@ -129,7 +129,7 @@ static void setup_desc(struct dmasg *desc, void *buf, int fragcount, ...@@ -129,7 +129,7 @@ static void setup_desc(struct dmasg *desc, void *buf, int fragcount,
for (i = 0; i < fragcount; ++i) { for (i = 0; i < fragcount; ++i) {
desc[i].next_desc_addr = &(desc[i + 1]); desc[i].next_desc_addr = &(desc[i + 1]);
desc[i].start_addr = (unsigned long)buf + i*fragsize; desc[i].start_addr = (unsigned long)buf + i * fragsize;
desc[i].cfg = cfg; desc[i].cfg = cfg;
desc[i].x_count = count; desc[i].x_count = count;
desc[i].x_modify = wdsize; desc[i].x_modify = wdsize;
...@@ -138,7 +138,7 @@ static void setup_desc(struct dmasg *desc, void *buf, int fragcount, ...@@ -138,7 +138,7 @@ static void setup_desc(struct dmasg *desc, void *buf, int fragcount,
} }
/* make circular */ /* make circular */
desc[fragcount-1].next_desc_addr = desc; desc[fragcount - 1].next_desc_addr = desc;
} }
int sport_config_tx_dma(struct sport_device *sport, void *buf, int sport_config_tx_dma(struct sport_device *sport, void *buf,
...@@ -148,7 +148,7 @@ int sport_config_tx_dma(struct sport_device *sport, void *buf, ...@@ -148,7 +148,7 @@ int sport_config_tx_dma(struct sport_device *sport, void *buf,
unsigned int cfg; unsigned int cfg;
dma_addr_t addr; dma_addr_t addr;
count = fragsize/sport->wdsize; count = fragsize / sport->wdsize;
if (sport->tx_desc) if (sport->tx_desc)
dma_free_coherent(NULL, sport->tx_desc_size, dma_free_coherent(NULL, sport->tx_desc_size,
...@@ -166,8 +166,7 @@ int sport_config_tx_dma(struct sport_device *sport, void *buf, ...@@ -166,8 +166,7 @@ int sport_config_tx_dma(struct sport_device *sport, void *buf,
cfg = DMAFLOW_LIST | DI_EN | compute_wdsize(sport->wdsize) | NDSIZE_6; cfg = DMAFLOW_LIST | DI_EN | compute_wdsize(sport->wdsize) | NDSIZE_6;
setup_desc(sport->tx_desc, buf, fragcount, fragsize, setup_desc(sport->tx_desc, buf, fragcount, fragsize,
cfg|DMAEN, count, sport->wdsize); cfg | DMAEN, count, sport->wdsize);
return 0; return 0;
} }
EXPORT_SYMBOL(sport_config_tx_dma); EXPORT_SYMBOL(sport_config_tx_dma);
...@@ -179,7 +178,7 @@ int sport_config_rx_dma(struct sport_device *sport, void *buf, ...@@ -179,7 +178,7 @@ int sport_config_rx_dma(struct sport_device *sport, void *buf,
unsigned int cfg; unsigned int cfg;
dma_addr_t addr; dma_addr_t addr;
count = fragsize/sport->wdsize; count = fragsize / sport->wdsize;
if (sport->rx_desc) if (sport->rx_desc)
dma_free_coherent(NULL, sport->rx_desc_size, dma_free_coherent(NULL, sport->rx_desc_size,
...@@ -198,8 +197,7 @@ int sport_config_rx_dma(struct sport_device *sport, void *buf, ...@@ -198,8 +197,7 @@ int sport_config_rx_dma(struct sport_device *sport, void *buf,
| WNR | NDSIZE_6; | WNR | NDSIZE_6;
setup_desc(sport->rx_desc, buf, fragcount, fragsize, setup_desc(sport->rx_desc, buf, fragcount, fragsize,
cfg|DMAEN, count, sport->wdsize); cfg | DMAEN, count, sport->wdsize);
return 0; return 0;
} }
EXPORT_SYMBOL(sport_config_rx_dma); EXPORT_SYMBOL(sport_config_rx_dma);
...@@ -226,7 +224,7 @@ static irqreturn_t sport_tx_irq(int irq, void *dev_id) ...@@ -226,7 +224,7 @@ static irqreturn_t sport_tx_irq(int irq, void *dev_id)
static unsigned long status; static unsigned long status;
status = get_dma_curr_irqstat(sport->tx_dma_chan); status = get_dma_curr_irqstat(sport->tx_dma_chan);
if (status & (DMA_DONE|DMA_ERR)) { if (status & (DMA_DONE | DMA_ERR)) {
clear_dma_irqstat(sport->tx_dma_chan); clear_dma_irqstat(sport->tx_dma_chan);
SSYNC(); SSYNC();
} }
...@@ -241,7 +239,7 @@ static irqreturn_t sport_rx_irq(int irq, void *dev_id) ...@@ -241,7 +239,7 @@ static irqreturn_t sport_rx_irq(int irq, void *dev_id)
unsigned long status; unsigned long status;
status = get_dma_curr_irqstat(sport->rx_dma_chan); status = get_dma_curr_irqstat(sport->rx_dma_chan);
if (status & (DMA_DONE|DMA_ERR)) { if (status & (DMA_DONE | DMA_ERR)) {
clear_dma_irqstat(sport->rx_dma_chan); clear_dma_irqstat(sport->rx_dma_chan);
SSYNC(); SSYNC();
} }
...@@ -388,26 +386,24 @@ struct sport_device *sport_create(struct platform_device *pdev) ...@@ -388,26 +386,24 @@ struct sport_device *sport_create(struct platform_device *pdev)
int ret; int ret;
sport = kzalloc(sizeof(*sport), GFP_KERNEL); sport = kzalloc(sizeof(*sport), GFP_KERNEL);
if (!sport) { if (!sport)
dev_err(dev, "Unable to allocate memory for sport device\n");
return NULL; return NULL;
}
sport->pdev = pdev; sport->pdev = pdev;
ret = sport_get_resource(sport); ret = sport_get_resource(sport);
if (ret) { if (ret)
kfree(sport); goto free_data;
return NULL;
}
ret = sport_request_resource(sport); ret = sport_request_resource(sport);
if (ret) { if (ret)
kfree(sport); goto free_data;
return NULL;
}
dev_dbg(dev, "SPORT create success\n"); dev_dbg(dev, "SPORT create success\n");
return sport; return sport;
free_data:
kfree(sport);
return NULL;
} }
EXPORT_SYMBOL(sport_create); EXPORT_SYMBOL(sport_create);
......
...@@ -56,7 +56,7 @@ static int edb93xx_hw_params(struct snd_pcm_substream *substream, ...@@ -56,7 +56,7 @@ static int edb93xx_hw_params(struct snd_pcm_substream *substream,
SND_SOC_CLOCK_OUT); SND_SOC_CLOCK_OUT);
} }
static struct snd_soc_ops edb93xx_ops = { static const struct snd_soc_ops edb93xx_ops = {
.hw_params = edb93xx_hw_params, .hw_params = edb93xx_hw_params,
}; };
......
...@@ -45,7 +45,7 @@ static int snappercl15_hw_params(struct snd_pcm_substream *substream, ...@@ -45,7 +45,7 @@ static int snappercl15_hw_params(struct snd_pcm_substream *substream,
return 0; return 0;
} }
static struct snd_soc_ops snappercl15_ops = { static const struct snd_soc_ops snappercl15_ops = {
.hw_params = snappercl15_hw_params, .hw_params = snappercl15_hw_params,
}; };
......
...@@ -375,6 +375,7 @@ obj-$(CONFIG_SND_SOC_SIGMADSP_REGMAP) += snd-soc-sigmadsp-regmap.o ...@@ -375,6 +375,7 @@ obj-$(CONFIG_SND_SOC_SIGMADSP_REGMAP) += snd-soc-sigmadsp-regmap.o
obj-$(CONFIG_SND_SOC_SI476X) += snd-soc-si476x.o obj-$(CONFIG_SND_SOC_SI476X) += snd-soc-si476x.o
obj-$(CONFIG_SND_SOC_SN95031) +=snd-soc-sn95031.o obj-$(CONFIG_SND_SOC_SN95031) +=snd-soc-sn95031.o
obj-$(CONFIG_SND_SOC_SPDIF) += snd-soc-spdif-rx.o snd-soc-spdif-tx.o obj-$(CONFIG_SND_SOC_SPDIF) += snd-soc-spdif-rx.o snd-soc-spdif-tx.o
obj-$(CONFIG_SND_SOC_SIRF_AUDIO_CODEC) += sirf-audio-codec.o
obj-$(CONFIG_SND_SOC_SSM2518) += snd-soc-ssm2518.o obj-$(CONFIG_SND_SOC_SSM2518) += snd-soc-ssm2518.o
obj-$(CONFIG_SND_SOC_SSM2602) += snd-soc-ssm2602.o obj-$(CONFIG_SND_SOC_SSM2602) += snd-soc-ssm2602.o
obj-$(CONFIG_SND_SOC_SSM2602_SPI) += snd-soc-ssm2602-spi.o obj-$(CONFIG_SND_SOC_SSM2602_SPI) += snd-soc-ssm2602-spi.o
......
...@@ -432,10 +432,12 @@ static int sirf_audio_codec_remove(struct snd_soc_codec *codec) ...@@ -432,10 +432,12 @@ static int sirf_audio_codec_remove(struct snd_soc_codec *codec)
static const struct snd_soc_codec_driver soc_codec_device_sirf_audio_codec = { static const struct snd_soc_codec_driver soc_codec_device_sirf_audio_codec = {
.probe = sirf_audio_codec_probe, .probe = sirf_audio_codec_probe,
.remove = sirf_audio_codec_remove, .remove = sirf_audio_codec_remove,
.component_driver = {
.dapm_widgets = sirf_audio_codec_dapm_widgets, .dapm_widgets = sirf_audio_codec_dapm_widgets,
.num_dapm_widgets = ARRAY_SIZE(sirf_audio_codec_dapm_widgets), .num_dapm_widgets = ARRAY_SIZE(sirf_audio_codec_dapm_widgets),
.dapm_routes = sirf_audio_codec_map, .dapm_routes = sirf_audio_codec_map,
.num_dapm_routes = ARRAY_SIZE(sirf_audio_codec_map), .num_dapm_routes = ARRAY_SIZE(sirf_audio_codec_map),
},
.idle_bias_off = true, .idle_bias_off = true,
}; };
......
...@@ -737,9 +737,6 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) ...@@ -737,9 +737,6 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
} }
/* check client and interface hw capabilities */ /* check client and interface hw capabilities */
snprintf(new_name, sizeof(new_name), "%s %s-%d",
rtd->dai_link->stream_name, codec_dai->name, num);
if (codec_dai->driver->playback.channels_min) if (codec_dai->driver->playback.channels_min)
playback = 1; playback = 1;
if (codec_dai->driver->capture.channels_min) if (codec_dai->driver->capture.channels_min)
...@@ -758,21 +755,18 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) ...@@ -758,21 +755,18 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
return -EINVAL; return -EINVAL;
} }
if(playback) if (playback)
direction = SND_COMPRESS_PLAYBACK; direction = SND_COMPRESS_PLAYBACK;
else else
direction = SND_COMPRESS_CAPTURE; direction = SND_COMPRESS_CAPTURE;
compr = kzalloc(sizeof(*compr), GFP_KERNEL); compr = kzalloc(sizeof(*compr), GFP_KERNEL);
if (compr == NULL) { if (!compr)
snd_printk(KERN_ERR "Cannot allocate compr\n");
return -ENOMEM; return -ENOMEM;
}
compr->ops = devm_kzalloc(rtd->card->dev, sizeof(soc_compr_ops), compr->ops = devm_kzalloc(rtd->card->dev, sizeof(soc_compr_ops),
GFP_KERNEL); GFP_KERNEL);
if (compr->ops == NULL) { if (!compr->ops) {
dev_err(rtd->card->dev, "Cannot allocate compressed ops\n");
ret = -ENOMEM; ret = -ENOMEM;
goto compr_err; goto compr_err;
} }
...@@ -797,19 +791,18 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) ...@@ -797,19 +791,18 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
else if (rtd->dai_link->dpcm_capture) else if (rtd->dai_link->dpcm_capture)
be_pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream->private_data = rtd; be_pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream->private_data = rtd;
memcpy(compr->ops, &soc_compr_dyn_ops, sizeof(soc_compr_dyn_ops)); memcpy(compr->ops, &soc_compr_dyn_ops, sizeof(soc_compr_dyn_ops));
} else } else {
snprintf(new_name, sizeof(new_name), "%s %s-%d",
rtd->dai_link->stream_name, codec_dai->name, num);
memcpy(compr->ops, &soc_compr_ops, sizeof(soc_compr_ops)); memcpy(compr->ops, &soc_compr_ops, sizeof(soc_compr_ops));
}
/* Add copy callback for not memory mapped DSPs */ /* Add copy callback for not memory mapped DSPs */
if (platform->driver->compr_ops && platform->driver->compr_ops->copy) if (platform->driver->compr_ops && platform->driver->compr_ops->copy)
compr->ops->copy = soc_compr_copy; compr->ops->copy = soc_compr_copy;
mutex_init(&compr->lock); mutex_init(&compr->lock);
snprintf(new_name, sizeof(new_name), "%s %s-%d",
rtd->dai_link->stream_name,
rtd->codec_dai->name, num);
ret = snd_compress_new(rtd->card->snd_card, num, direction, ret = snd_compress_new(rtd->card->snd_card, num, direction,
new_name, compr); new_name, compr);
if (ret < 0) { if (ret < 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment