summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-11-12 15:14:55 +0000
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-11-15 13:19:32 +0000
commitbcbb243396b82b0369465e9a547b7d5278cd26ad (patch)
treec65d85931047068e4d1c0080b65f133e38ef1bdb /sound/soc
parentccb3b84fa0fb6fb7b46b461881fd60440f579696 (diff)
downloadlinux-3.10-bcbb243396b82b0369465e9a547b7d5278cd26ad.tar.gz
linux-3.10-bcbb243396b82b0369465e9a547b7d5278cd26ad.tar.bz2
linux-3.10-bcbb243396b82b0369465e9a547b7d5278cd26ad.zip
ASoC: Fix dapm_seq_compare() for multi-component
Ensure that we keep all widget powerups in DAPM sequence by making the CODEC the last thing we compare on rather than the first thing. Also fix the fact that we're currently comparing the widget pointers rather than the CODEC pointers when we do the substraction so we won't get stable results. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/soc-dapm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 7d85c6496af..75ed6491222 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -683,12 +683,12 @@ static int dapm_seq_compare(struct snd_soc_dapm_widget *a,
struct snd_soc_dapm_widget *b,
int sort[])
{
- if (a->codec != b->codec)
- return (unsigned long)a - (unsigned long)b;
if (sort[a->id] != sort[b->id])
return sort[a->id] - sort[b->id];
if (a->reg != b->reg)
return a->reg - b->reg;
+ if (a->codec != b->codec)
+ return (unsigned long)a->codec - (unsigned long)b->codec;
return 0;
}