Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 293501
b: refs/heads/master
c: 80f4814
h: refs/heads/master
i:
  293499: 55ac013
v: v3
  • Loading branch information
Mark Brown committed Mar 12, 2012
1 parent 1f426ee commit afd2367
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: aeb87073f00524dbc4017aba1de5469948d134d4
refs/heads/master: 80f48143ffde97c48c5e550e2fcd2c9f8e77e554
34 changes: 6 additions & 28 deletions trunk/sound/soc/soc-dapm.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,23 +206,7 @@ static int soc_widget_write(struct snd_soc_dapm_widget *w, int reg, int val)
return -1;
}

static inline void soc_widget_lock(struct snd_soc_dapm_widget *w)
{
if (w->codec && !w->codec->using_regmap)
mutex_lock(&w->codec->mutex);
else if (w->platform)
mutex_lock(&w->platform->mutex);
}

static inline void soc_widget_unlock(struct snd_soc_dapm_widget *w)
{
if (w->codec && !w->codec->using_regmap)
mutex_unlock(&w->codec->mutex);
else if (w->platform)
mutex_unlock(&w->platform->mutex);
}

static int soc_widget_update_bits_locked(struct snd_soc_dapm_widget *w,
static int soc_widget_update_bits(struct snd_soc_dapm_widget *w,
unsigned short reg, unsigned int mask, unsigned int value)
{
bool change;
Expand All @@ -235,24 +219,18 @@ static int soc_widget_update_bits_locked(struct snd_soc_dapm_widget *w,
if (ret != 0)
return ret;
} else {
soc_widget_lock(w);
ret = soc_widget_read(w, reg);
if (ret < 0) {
soc_widget_unlock(w);
if (ret < 0)
return ret;
}

old = ret;
new = (old & ~mask) | (value & mask);
change = old != new;
if (change) {
ret = soc_widget_write(w, reg, new);
if (ret < 0) {
soc_widget_unlock(w);
if (ret < 0)
return ret;
}
}
soc_widget_unlock(w);
}

return change;
Expand Down Expand Up @@ -869,7 +847,7 @@ int dapm_reg_event(struct snd_soc_dapm_widget *w,
else
val = w->off_val;

soc_widget_update_bits_locked(w, -(w->reg + 1),
soc_widget_update_bits(w, -(w->reg + 1),
w->mask << w->shift, val << w->shift);

return 0;
Expand Down Expand Up @@ -1127,7 +1105,7 @@ static void dapm_seq_run_coalesced(struct snd_soc_dapm_context *dapm,
"pop test : Applying 0x%x/0x%x to %x in %dms\n",
value, mask, reg, card->pop_time);
pop_wait(card->pop_time);
soc_widget_update_bits_locked(w, reg, mask, value);
soc_widget_update_bits(w, reg, mask, value);
}

list_for_each_entry(w, pending, power_list) {
Expand Down Expand Up @@ -1257,7 +1235,7 @@ static void dapm_widget_update(struct snd_soc_dapm_context *dapm)
w->name, ret);
}

ret = soc_widget_update_bits_locked(w, update->reg, update->mask,
ret = snd_soc_update_bits(w->codec, update->reg, update->mask,
update->val);
if (ret < 0)
pr_err("%s DAPM update failed: %d\n", w->name, ret);
Expand Down

0 comments on commit afd2367

Please sign in to comment.