Commit a1980987 authored by Mark Brown's avatar Mark Brown

Merge branch 'for-2.6.39' into for-2.6.40

parents 70da1dc0 39cca168
...@@ -918,7 +918,7 @@ static struct platform_driver sn95031_codec_driver = { ...@@ -918,7 +918,7 @@ static struct platform_driver sn95031_codec_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.probe = sn95031_device_probe, .probe = sn95031_device_probe,
.remove = sn95031_device_remove, .remove = __devexit_p(sn95031_device_remove),
}; };
static int __init sn95031_init(void) static int __init sn95031_init(void)
......
...@@ -740,12 +740,12 @@ static const struct snd_soc_dapm_route analogue_routes[] = { ...@@ -740,12 +740,12 @@ static const struct snd_soc_dapm_route analogue_routes[] = {
{ "SPKL", "Input Switch", "MIXINL" }, { "SPKL", "Input Switch", "MIXINL" },
{ "SPKL", "IN1LP Switch", "IN1LP" }, { "SPKL", "IN1LP Switch", "IN1LP" },
{ "SPKL", "Output Switch", "Left Output Mixer" }, { "SPKL", "Output Switch", "Left Output PGA" },
{ "SPKL", NULL, "TOCLK" }, { "SPKL", NULL, "TOCLK" },
{ "SPKR", "Input Switch", "MIXINR" }, { "SPKR", "Input Switch", "MIXINR" },
{ "SPKR", "IN1RP Switch", "IN1RP" }, { "SPKR", "IN1RP Switch", "IN1RP" },
{ "SPKR", "Output Switch", "Right Output Mixer" }, { "SPKR", "Output Switch", "Right Output PGA" },
{ "SPKR", NULL, "TOCLK" }, { "SPKR", NULL, "TOCLK" },
{ "SPKL Boost", "Direct Voice Switch", "Direct Voice" }, { "SPKL Boost", "Direct Voice Switch", "Direct Voice" },
...@@ -767,8 +767,8 @@ static const struct snd_soc_dapm_route analogue_routes[] = { ...@@ -767,8 +767,8 @@ static const struct snd_soc_dapm_route analogue_routes[] = {
{ "SPKOUTRP", NULL, "SPKR Driver" }, { "SPKOUTRP", NULL, "SPKR Driver" },
{ "SPKOUTRN", NULL, "SPKR Driver" }, { "SPKOUTRN", NULL, "SPKR Driver" },
{ "Left Headphone Mux", "Mixer", "Left Output Mixer" }, { "Left Headphone Mux", "Mixer", "Left Output PGA" },
{ "Right Headphone Mux", "Mixer", "Right Output Mixer" }, { "Right Headphone Mux", "Mixer", "Right Output PGA" },
{ "Headphone PGA", NULL, "Left Headphone Mux" }, { "Headphone PGA", NULL, "Left Headphone Mux" },
{ "Headphone PGA", NULL, "Right Headphone Mux" }, { "Headphone PGA", NULL, "Right Headphone Mux" },
......
...@@ -116,18 +116,20 @@ struct snd_soc_dai_driver sst_platform_dai[] = { ...@@ -116,18 +116,20 @@ struct snd_soc_dai_driver sst_platform_dai[] = {
static inline void sst_set_stream_status(struct sst_runtime_stream *stream, static inline void sst_set_stream_status(struct sst_runtime_stream *stream,
int state) int state)
{ {
spin_lock(&stream->status_lock); unsigned long flags;
spin_lock_irqsave(&stream->status_lock, flags);
stream->stream_status = state; stream->stream_status = state;
spin_unlock(&stream->status_lock); spin_unlock_irqrestore(&stream->status_lock, flags);
} }
static inline int sst_get_stream_status(struct sst_runtime_stream *stream) static inline int sst_get_stream_status(struct sst_runtime_stream *stream)
{ {
int state; int state;
unsigned long flags;
spin_lock(&stream->status_lock); spin_lock_irqsave(&stream->status_lock, flags);
state = stream->stream_status; state = stream->stream_status;
spin_unlock(&stream->status_lock); spin_unlock_irqrestore(&stream->status_lock, flags);
return state; return state;
} }
......
...@@ -350,8 +350,8 @@ static int s3c_pcm_set_fmt(struct snd_soc_dai *cpu_dai, ...@@ -350,8 +350,8 @@ static int s3c_pcm_set_fmt(struct snd_soc_dai *cpu_dai,
ctl = readl(regs + S3C_PCM_CTL); ctl = readl(regs + S3C_PCM_CTL);
switch (fmt & SND_SOC_DAIFMT_INV_MASK) { switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
case SND_SOC_DAIFMT_NB_NF: case SND_SOC_DAIFMT_IB_NF:
/* Nothing to do, NB_NF by default */ /* Nothing to do, IB_NF by default */
break; break;
default: default:
dev_err(pcm->dev, "Unsupported clock inversion!\n"); dev_err(pcm->dev, "Unsupported clock inversion!\n");
......
...@@ -1200,10 +1200,11 @@ static int fsi_probe(struct platform_device *pdev) ...@@ -1200,10 +1200,11 @@ static int fsi_probe(struct platform_device *pdev)
master->fsib.master = master; master->fsib.master = master;
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
pm_runtime_resume(&pdev->dev);
dev_set_drvdata(&pdev->dev, master); dev_set_drvdata(&pdev->dev, master);
pm_runtime_get_sync(&pdev->dev);
fsi_soft_all_reset(master); fsi_soft_all_reset(master);
pm_runtime_put_sync(&pdev->dev);
ret = request_irq(irq, &fsi_interrupt, IRQF_DISABLED, ret = request_irq(irq, &fsi_interrupt, IRQF_DISABLED,
id_entry->name, master); id_entry->name, master);
...@@ -1218,8 +1219,17 @@ static int fsi_probe(struct platform_device *pdev) ...@@ -1218,8 +1219,17 @@ static int fsi_probe(struct platform_device *pdev)
goto exit_free_irq; goto exit_free_irq;
} }
return snd_soc_register_dais(&pdev->dev, fsi_soc_dai, ARRAY_SIZE(fsi_soc_dai)); ret = snd_soc_register_dais(&pdev->dev, fsi_soc_dai,
ARRAY_SIZE(fsi_soc_dai));
if (ret < 0) {
dev_err(&pdev->dev, "cannot snd dai register\n");
goto exit_snd_soc;
}
return ret;
exit_snd_soc:
snd_soc_unregister_platform(&pdev->dev);
exit_free_irq: exit_free_irq:
free_irq(irq, master); free_irq(irq, master);
exit_iounmap: exit_iounmap:
...@@ -1238,12 +1248,11 @@ static int fsi_remove(struct platform_device *pdev) ...@@ -1238,12 +1248,11 @@ static int fsi_remove(struct platform_device *pdev)
master = dev_get_drvdata(&pdev->dev); master = dev_get_drvdata(&pdev->dev);
snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(fsi_soc_dai)); free_irq(master->irq, master);
snd_soc_unregister_platform(&pdev->dev);
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
free_irq(master->irq, master); snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(fsi_soc_dai));
snd_soc_unregister_platform(&pdev->dev);
iounmap(master->base); iounmap(master->base);
kfree(master); kfree(master);
......
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