diff options
author | Mark Brown <broonie@linaro.org> | 2013-11-08 05:43:23 -0500 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-11-08 05:43:23 -0500 |
commit | 642cba752887b273da585cc9d41f8f33d5d5c5b0 (patch) | |
tree | 3067cff689758fe66b8a1cf2f9f611bea403c12c | |
parent | 74858f23ca3e2765a10e9f42869c753c0f1ec6b1 (diff) | |
parent | a9c9cafdde46d06a28f92e3a68b5534fa268e92d (diff) |
Merge remote-tracking branch 'asoc/topic/arizona' into asoc-next
-rw-r--r-- | sound/soc/codecs/arizona.c | 23 | ||||
-rw-r--r-- | sound/soc/codecs/wm5110.c | 12 |
2 files changed, 26 insertions, 9 deletions
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c index 657808ba1418..6f05b17d1965 100644 --- a/sound/soc/codecs/arizona.c +++ b/sound/soc/codecs/arizona.c | |||
@@ -1477,21 +1477,25 @@ static void arizona_enable_fll(struct arizona_fll *fll, | |||
1477 | { | 1477 | { |
1478 | struct arizona *arizona = fll->arizona; | 1478 | struct arizona *arizona = fll->arizona; |
1479 | int ret; | 1479 | int ret; |
1480 | bool use_sync = false; | ||
1480 | 1481 | ||
1481 | /* | 1482 | /* |
1482 | * If we have both REFCLK and SYNCCLK then enable both, | 1483 | * If we have both REFCLK and SYNCCLK then enable both, |
1483 | * otherwise apply the SYNCCLK settings to REFCLK. | 1484 | * otherwise apply the SYNCCLK settings to REFCLK. |
1484 | */ | 1485 | */ |
1485 | if (fll->ref_src >= 0 && fll->ref_src != fll->sync_src) { | 1486 | if (fll->ref_src >= 0 && fll->ref_freq && |
1487 | fll->ref_src != fll->sync_src) { | ||
1486 | regmap_update_bits(arizona->regmap, fll->base + 5, | 1488 | regmap_update_bits(arizona->regmap, fll->base + 5, |
1487 | ARIZONA_FLL1_OUTDIV_MASK, | 1489 | ARIZONA_FLL1_OUTDIV_MASK, |
1488 | ref->outdiv << ARIZONA_FLL1_OUTDIV_SHIFT); | 1490 | ref->outdiv << ARIZONA_FLL1_OUTDIV_SHIFT); |
1489 | 1491 | ||
1490 | arizona_apply_fll(arizona, fll->base, ref, fll->ref_src, | 1492 | arizona_apply_fll(arizona, fll->base, ref, fll->ref_src, |
1491 | false); | 1493 | false); |
1492 | if (fll->sync_src >= 0) | 1494 | if (fll->sync_src >= 0) { |
1493 | arizona_apply_fll(arizona, fll->base + 0x10, sync, | 1495 | arizona_apply_fll(arizona, fll->base + 0x10, sync, |
1494 | fll->sync_src, true); | 1496 | fll->sync_src, true); |
1497 | use_sync = true; | ||
1498 | } | ||
1495 | } else if (fll->sync_src >= 0) { | 1499 | } else if (fll->sync_src >= 0) { |
1496 | regmap_update_bits(arizona->regmap, fll->base + 5, | 1500 | regmap_update_bits(arizona->regmap, fll->base + 5, |
1497 | ARIZONA_FLL1_OUTDIV_MASK, | 1501 | ARIZONA_FLL1_OUTDIV_MASK, |
@@ -1511,7 +1515,7 @@ static void arizona_enable_fll(struct arizona_fll *fll, | |||
1511 | * Increase the bandwidth if we're not using a low frequency | 1515 | * Increase the bandwidth if we're not using a low frequency |
1512 | * sync source. | 1516 | * sync source. |
1513 | */ | 1517 | */ |
1514 | if (fll->sync_src >= 0 && fll->sync_freq > 100000) | 1518 | if (use_sync && fll->sync_freq > 100000) |
1515 | regmap_update_bits(arizona->regmap, fll->base + 0x17, | 1519 | regmap_update_bits(arizona->regmap, fll->base + 0x17, |
1516 | ARIZONA_FLL1_SYNC_BW, 0); | 1520 | ARIZONA_FLL1_SYNC_BW, 0); |
1517 | else | 1521 | else |
@@ -1526,8 +1530,7 @@ static void arizona_enable_fll(struct arizona_fll *fll, | |||
1526 | 1530 | ||
1527 | regmap_update_bits(arizona->regmap, fll->base + 1, | 1531 | regmap_update_bits(arizona->regmap, fll->base + 1, |
1528 | ARIZONA_FLL1_ENA, ARIZONA_FLL1_ENA); | 1532 | ARIZONA_FLL1_ENA, ARIZONA_FLL1_ENA); |
1529 | if (fll->ref_src >= 0 && fll->sync_src >= 0 && | 1533 | if (use_sync) |
1530 | fll->ref_src != fll->sync_src) | ||
1531 | regmap_update_bits(arizona->regmap, fll->base + 0x11, | 1534 | regmap_update_bits(arizona->regmap, fll->base + 0x11, |
1532 | ARIZONA_FLL1_SYNC_ENA, | 1535 | ARIZONA_FLL1_SYNC_ENA, |
1533 | ARIZONA_FLL1_SYNC_ENA); | 1536 | ARIZONA_FLL1_SYNC_ENA); |
@@ -1561,10 +1564,12 @@ int arizona_set_fll_refclk(struct arizona_fll *fll, int source, | |||
1561 | if (fll->ref_src == source && fll->ref_freq == Fref) | 1564 | if (fll->ref_src == source && fll->ref_freq == Fref) |
1562 | return 0; | 1565 | return 0; |
1563 | 1566 | ||
1564 | if (fll->fout && Fref > 0) { | 1567 | if (fll->fout) { |
1565 | ret = arizona_calc_fll(fll, &ref, Fref, fll->fout); | 1568 | if (Fref > 0) { |
1566 | if (ret != 0) | 1569 | ret = arizona_calc_fll(fll, &ref, Fref, fll->fout); |
1567 | return ret; | 1570 | if (ret != 0) |
1571 | return ret; | ||
1572 | } | ||
1568 | 1573 | ||
1569 | if (fll->sync_src >= 0) { | 1574 | if (fll->sync_src >= 0) { |
1570 | ret = arizona_calc_fll(fll, &sync, fll->sync_freq, | 1575 | ret = arizona_calc_fll(fll, &sync, fll->sync_freq, |
diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index bbd64384ca1c..8c91be5d67e3 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c | |||
@@ -983,24 +983,36 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = { | |||
983 | ARIZONA_MUX_ROUTES("ASRC2L", "ASRC2L"), | 983 | ARIZONA_MUX_ROUTES("ASRC2L", "ASRC2L"), |
984 | ARIZONA_MUX_ROUTES("ASRC2R", "ASRC2R"), | 984 | ARIZONA_MUX_ROUTES("ASRC2R", "ASRC2R"), |
985 | 985 | ||
986 | { "AEC Loopback", "HPOUT1L", "OUT1L" }, | ||
987 | { "AEC Loopback", "HPOUT1R", "OUT1R" }, | ||
986 | { "HPOUT1L", NULL, "OUT1L" }, | 988 | { "HPOUT1L", NULL, "OUT1L" }, |
987 | { "HPOUT1R", NULL, "OUT1R" }, | 989 | { "HPOUT1R", NULL, "OUT1R" }, |
988 | 990 | ||
991 | { "AEC Loopback", "HPOUT2L", "OUT2L" }, | ||
992 | { "AEC Loopback", "HPOUT2R", "OUT2R" }, | ||
989 | { "HPOUT2L", NULL, "OUT2L" }, | 993 | { "HPOUT2L", NULL, "OUT2L" }, |
990 | { "HPOUT2R", NULL, "OUT2R" }, | 994 | { "HPOUT2R", NULL, "OUT2R" }, |
991 | 995 | ||
996 | { "AEC Loopback", "HPOUT3L", "OUT3L" }, | ||
997 | { "AEC Loopback", "HPOUT3R", "OUT3R" }, | ||
992 | { "HPOUT3L", NULL, "OUT3L" }, | 998 | { "HPOUT3L", NULL, "OUT3L" }, |
993 | { "HPOUT3R", NULL, "OUT3L" }, | 999 | { "HPOUT3R", NULL, "OUT3L" }, |
994 | 1000 | ||
1001 | { "AEC Loopback", "SPKOUTL", "OUT4L" }, | ||
995 | { "SPKOUTLN", NULL, "OUT4L" }, | 1002 | { "SPKOUTLN", NULL, "OUT4L" }, |
996 | { "SPKOUTLP", NULL, "OUT4L" }, | 1003 | { "SPKOUTLP", NULL, "OUT4L" }, |
997 | 1004 | ||
1005 | { "AEC Loopback", "SPKOUTR", "OUT4R" }, | ||
998 | { "SPKOUTRN", NULL, "OUT4R" }, | 1006 | { "SPKOUTRN", NULL, "OUT4R" }, |
999 | { "SPKOUTRP", NULL, "OUT4R" }, | 1007 | { "SPKOUTRP", NULL, "OUT4R" }, |
1000 | 1008 | ||
1009 | { "AEC Loopback", "SPKDAT1L", "OUT5L" }, | ||
1010 | { "AEC Loopback", "SPKDAT1R", "OUT5R" }, | ||
1001 | { "SPKDAT1L", NULL, "OUT5L" }, | 1011 | { "SPKDAT1L", NULL, "OUT5L" }, |
1002 | { "SPKDAT1R", NULL, "OUT5R" }, | 1012 | { "SPKDAT1R", NULL, "OUT5R" }, |
1003 | 1013 | ||
1014 | { "AEC Loopback", "SPKDAT2L", "OUT6L" }, | ||
1015 | { "AEC Loopback", "SPKDAT2R", "OUT6R" }, | ||
1004 | { "SPKDAT2L", NULL, "OUT6L" }, | 1016 | { "SPKDAT2L", NULL, "OUT6L" }, |
1005 | { "SPKDAT2R", NULL, "OUT6R" }, | 1017 | { "SPKDAT2R", NULL, "OUT6R" }, |
1006 | 1018 | ||