提交 180c329d 编写于 作者: T Timur Tabi 提交者: Mark Brown

ASoC: let snd_soc_update_bits() return an error code

Update snd_soc_update_bits() so that it returns a negative error code if the
the read or write operation fails.

Note that currently, a lot of the lower-level read functions have an unsigned
integer return type (and some of them even try to return a negative number),
but this code still appears to work in those cases.

An examination of the code shows that all current callers are compatible with
this change.
Signed-off-by: NTimur Tabi <timur@freescale.com>
Acked-by: NLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 4fde768e
...@@ -2137,19 +2137,27 @@ EXPORT_SYMBOL_GPL(snd_soc_write); ...@@ -2137,19 +2137,27 @@ EXPORT_SYMBOL_GPL(snd_soc_write);
* *
* Writes new register value. * Writes new register value.
* *
* Returns 1 for change else 0. * Returns 1 for change, 0 for no change, or negative error code.
*/ */
int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg,
unsigned int mask, unsigned int value) unsigned int mask, unsigned int value)
{ {
int change; int change;
unsigned int old, new; unsigned int old, new;
int ret;
old = snd_soc_read(codec, reg); ret = snd_soc_read(codec, reg);
if (ret < 0)
return ret;
old = ret;
new = (old & ~mask) | value; new = (old & ~mask) | value;
change = old != new; change = old != new;
if (change) if (change) {
snd_soc_write(codec, reg, new); ret = snd_soc_write(codec, reg, new);
if (ret < 0)
return ret;
}
return change; return change;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册