Date: | 2009-12-01 07:55:13 (11 years 1 month ago) |
---|---|
Author: | xiangfu |
Commit: | 8490d6df809d289e1b260e7b4761c5ada1fb7294 |
Message: | 410-soc-32bit-regs.patch |
Files: |
include/sound/soc.h (2 diffs) sound/soc/soc-core.c (13 diffs) sound/soc/soc-dapm.c (8 diffs) |
Change Details
include/sound/soc.h | ||
---|---|---|
215 | 215 | #endif |
216 | 216 | |
217 | 217 | /* codec register bit access */ |
218 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, | |
219 | unsigned short mask, unsigned short value); | |
220 | int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg, | |
221 | unsigned short mask, unsigned short value); | |
218 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned int reg, | |
219 | unsigned int mask, unsigned int value); | |
220 | int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned int reg, | |
221 | unsigned int mask, unsigned int value); | |
222 | 222 | |
223 | 223 | int snd_soc_new_ac97_codec(struct snd_soc_codec *codec, |
224 | 224 | struct snd_ac97_bus_ops *ops, int num); |
... | ... | |
492 | 492 | |
493 | 493 | /* enumerated kcontrol */ |
494 | 494 | struct soc_enum { |
495 | unsigned short reg; | |
496 | unsigned short reg2; | |
495 | unsigned int reg; | |
496 | unsigned int reg2; | |
497 | 497 | unsigned char shift_l; |
498 | 498 | unsigned char shift_r; |
499 | 499 | unsigned int max; |
sound/soc/soc-core.c | ||
---|---|---|
500 | 500 | if (cpu_dai->ops->hw_params) { |
501 | 501 | ret = cpu_dai->ops->hw_params(substream, params, cpu_dai); |
502 | 502 | if (ret < 0) { |
503 | printk(KERN_ERR "asoc: interface %s hw params failed\n", | |
504 | cpu_dai->name); | |
503 | printk(KERN_ERR "asoc: interface %s hw params failed: %d\n", | |
504 | cpu_dai->name, ret); | |
505 | 505 | goto interface_err; |
506 | 506 | } |
507 | 507 | } |
... | ... | |
842 | 842 | * DAIs currently; we can't do this per link since some AC97 |
843 | 843 | * codecs have non-AC97 DAIs. |
844 | 844 | */ |
845 | if (!ac97) | |
845 | if (!ac97) { | |
846 | 846 | for (i = 0; i < card->num_links; i++) { |
847 | 847 | found = 0; |
848 | 848 | list_for_each_entry(dai, &dai_list, list) |
... | ... | |
856 | 856 | return; |
857 | 857 | } |
858 | 858 | } |
859 | } | |
859 | 860 | |
860 | 861 | /* Note that we do not current check for codec components */ |
861 | 862 | |
... | ... | |
1263 | 1264 | * |
1264 | 1265 | * Returns 1 for change else 0. |
1265 | 1266 | */ |
1266 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, | |
1267 | unsigned short mask, unsigned short value) | |
1267 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned int reg, | |
1268 | unsigned int mask, unsigned int value) | |
1268 | 1269 | { |
1269 | 1270 | int change; |
1270 | unsigned short old, new; | |
1271 | unsigned int old, new; | |
1271 | 1272 | |
1272 | 1273 | mutex_lock(&io_mutex); |
1273 | 1274 | old = snd_soc_read(codec, reg); |
... | ... | |
1293 | 1294 | * |
1294 | 1295 | * Returns 1 for change else 0. |
1295 | 1296 | */ |
1296 | int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg, | |
1297 | unsigned short mask, unsigned short value) | |
1297 | int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned int reg, | |
1298 | unsigned int mask, unsigned int value) | |
1298 | 1299 | { |
1299 | 1300 | int change; |
1300 | unsigned short old, new; | |
1301 | unsigned int old, new; | |
1301 | 1302 | |
1302 | 1303 | mutex_lock(&io_mutex); |
1303 | 1304 | old = snd_soc_read(codec, reg); |
... | ... | |
1586 | 1587 | { |
1587 | 1588 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
1588 | 1589 | struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; |
1589 | unsigned short val, bitmask; | |
1590 | unsigned int val, bitmask; | |
1590 | 1591 | |
1591 | 1592 | for (bitmask = 1; bitmask < e->max; bitmask <<= 1) |
1592 | 1593 | ; |
... | ... | |
1615 | 1616 | { |
1616 | 1617 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
1617 | 1618 | struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; |
1618 | unsigned short val; | |
1619 | unsigned short mask, bitmask; | |
1619 | unsigned int val; | |
1620 | unsigned int mask, bitmask; | |
1620 | 1621 | |
1621 | 1622 | for (bitmask = 1; bitmask < e->max; bitmask <<= 1) |
1622 | 1623 | ; |
... | ... | |
1652 | 1653 | { |
1653 | 1654 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
1654 | 1655 | struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; |
1655 | unsigned short reg_val, val, mux; | |
1656 | unsigned int reg_val, val, mux; | |
1656 | 1657 | |
1657 | 1658 | reg_val = snd_soc_read(codec, e->reg); |
1658 | 1659 | val = (reg_val >> e->shift_l) & e->mask; |
... | ... | |
1691 | 1692 | { |
1692 | 1693 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
1693 | 1694 | struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; |
1694 | unsigned short val; | |
1695 | unsigned short mask; | |
1695 | unsigned int val; | |
1696 | unsigned int mask; | |
1696 | 1697 | |
1697 | 1698 | if (ucontrol->value.enumerated.item[0] > e->max - 1) |
1698 | 1699 | return -EINVAL; |
... | ... | |
1852 | 1853 | int max = mc->max; |
1853 | 1854 | unsigned int mask = (1 << fls(max)) - 1; |
1854 | 1855 | unsigned int invert = mc->invert; |
1855 | unsigned short val, val2, val_mask; | |
1856 | unsigned int val, val2, val_mask; | |
1856 | 1857 | |
1857 | 1858 | val = (ucontrol->value.integer.value[0] & mask); |
1858 | 1859 | if (invert) |
... | ... | |
1958 | 1959 | unsigned int mask = (1 << fls(max)) - 1; |
1959 | 1960 | unsigned int invert = mc->invert; |
1960 | 1961 | int err; |
1961 | unsigned short val, val2, val_mask; | |
1962 | unsigned int val, val2, val_mask; | |
1962 | 1963 | |
1963 | 1964 | val_mask = mask << shift; |
1964 | 1965 | val = (ucontrol->value.integer.value[0] & mask); |
... | ... | |
2050 | 2051 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
2051 | 2052 | unsigned int reg = mc->reg; |
2052 | 2053 | int min = mc->min; |
2053 | unsigned short val; | |
2054 | unsigned int val; | |
2054 | 2055 | |
2055 | 2056 | val = (ucontrol->value.integer.value[0]+min) & 0xff; |
2056 | 2057 | val |= ((ucontrol->value.integer.value[1]+min) & 0xff) << 8; |
... | ... | |
2251 | 2252 | if (!dai->ops) |
2252 | 2253 | dai->ops = &null_dai_ops; |
2253 | 2254 | |
2255 | ||
2254 | 2256 | INIT_LIST_HEAD(&dai->list); |
2255 | 2257 | |
2256 | 2258 | mutex_lock(&client_mutex); |
sound/soc/soc-dapm.c | ||
---|---|---|
268 | 268 | static int dapm_update_bits(struct snd_soc_dapm_widget *widget) |
269 | 269 | { |
270 | 270 | int change, power; |
271 | unsigned short old, new; | |
271 | unsigned int old, new; | |
272 | 272 | struct snd_soc_codec *codec = widget->codec; |
273 | 273 | |
274 | 274 | /* check for valid widgets */ |
... | ... | |
1246 | 1246 | /** |
1247 | 1247 | * snd_soc_dapm_new_widgets - add new dapm widgets |
1248 | 1248 | * @codec: audio codec |
1249 | * | |
1250 | 1249 | * Checks the codec for any new dapm widgets and creates them if found. |
1251 | 1250 | * |
1252 | 1251 | * Returns 0 for success. |
... | ... | |
1336 | 1335 | |
1337 | 1336 | ucontrol->value.integer.value[0] = |
1338 | 1337 | (snd_soc_read(widget->codec, reg) >> shift) & mask; |
1339 | if (shift != rshift) | |
1338 | ||
1339 | if (shift != rshift) | |
1340 | 1340 | ucontrol->value.integer.value[1] = |
1341 | 1341 | (snd_soc_read(widget->codec, reg) >> rshift) & mask; |
1342 | 1342 | if (invert) { |
... | ... | |
1372 | 1372 | int max = mc->max; |
1373 | 1373 | unsigned int mask = (1 << fls(max)) - 1; |
1374 | 1374 | unsigned int invert = mc->invert; |
1375 | unsigned short val, val2, val_mask; | |
1375 | unsigned int val, val2, val_mask; | |
1376 | 1376 | int ret; |
1377 | 1377 | |
1378 | 1378 | val = (ucontrol->value.integer.value[0] & mask); |
... | ... | |
1436 | 1436 | { |
1437 | 1437 | struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol); |
1438 | 1438 | struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; |
1439 | unsigned short val, bitmask; | |
1439 | unsigned int val, bitmask; | |
1440 | 1440 | |
1441 | 1441 | for (bitmask = 1; bitmask < e->max; bitmask <<= 1) |
1442 | 1442 | ; |
... | ... | |
1464 | 1464 | { |
1465 | 1465 | struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol); |
1466 | 1466 | struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; |
1467 | unsigned short val, mux; | |
1468 | unsigned short mask, bitmask; | |
1467 | unsigned int val, mux; | |
1468 | unsigned int mask, bitmask; | |
1469 | 1469 | int ret = 0; |
1470 | 1470 | |
1471 | 1471 | for (bitmask = 1; bitmask < e->max; bitmask <<= 1) |
... | ... | |
1523 | 1523 | { |
1524 | 1524 | struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol); |
1525 | 1525 | struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; |
1526 | unsigned short reg_val, val, mux; | |
1526 | unsigned int reg_val, val, mux; | |
1527 | 1527 | |
1528 | 1528 | reg_val = snd_soc_read(widget->codec, e->reg); |
1529 | 1529 | val = (reg_val >> e->shift_l) & e->mask; |
... | ... | |
1563 | 1563 | { |
1564 | 1564 | struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol); |
1565 | 1565 | struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; |
1566 | unsigned short val, mux; | |
1567 | unsigned short mask; | |
1566 | unsigned int val, mux; | |
1567 | unsigned int mask; | |
1568 | 1568 | int ret = 0; |
1569 | 1569 | |
1570 | 1570 | if (ucontrol->value.enumerated.item[0] > e->max - 1) |
Branches:
ben-wpan
ben-wpan-stefan
5396a9238205f20f811ea57898980d3ca82df0b6
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9