diff options
author | Charles Keepax <ckeepax@opensource.wolfsonmicro.com> | 2014-09-01 10:48:52 -0400 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2014-09-26 03:15:52 -0400 |
commit | c24084db223aec7793201b94f0712cfdfa7e9fe7 (patch) | |
tree | c310a08ea10c8923acb2b7e9b2c5942e7cb0926b | |
parent | 9bb9e29c78f8d8ee310987fd58a2b908a4ce0c40 (diff) |
mfd: arizona: Add ASYNC_SAMPLE_RATE_2 registers
Some arizona devices have a second asynchronous sample rate, add the
registers necessary to support this.
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Acked-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
-rw-r--r-- | drivers/mfd/wm5102-tables.c | 3 | ||||
-rw-r--r-- | drivers/mfd/wm5110-tables.c | 4 | ||||
-rw-r--r-- | include/linux/mfd/arizona/registers.h | 28 | ||||
-rw-r--r-- | sound/soc/codecs/arizona.c | 2 |
4 files changed, 30 insertions, 7 deletions
diff --git a/drivers/mfd/wm5102-tables.c b/drivers/mfd/wm5102-tables.c index 6d9b7f832bf5..d6f35bbf795b 100644 --- a/drivers/mfd/wm5102-tables.c +++ b/drivers/mfd/wm5102-tables.c | |||
@@ -1059,6 +1059,8 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1059 | case ARIZONA_ASYNC_CLOCK_1: | 1059 | case ARIZONA_ASYNC_CLOCK_1: |
1060 | case ARIZONA_ASYNC_SAMPLE_RATE_1: | 1060 | case ARIZONA_ASYNC_SAMPLE_RATE_1: |
1061 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | 1061 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: |
1062 | case ARIZONA_ASYNC_SAMPLE_RATE_2: | ||
1063 | case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS: | ||
1062 | case ARIZONA_OUTPUT_SYSTEM_CLOCK: | 1064 | case ARIZONA_OUTPUT_SYSTEM_CLOCK: |
1063 | case ARIZONA_OUTPUT_ASYNC_CLOCK: | 1065 | case ARIZONA_OUTPUT_ASYNC_CLOCK: |
1064 | case ARIZONA_RATE_ESTIMATOR_1: | 1066 | case ARIZONA_RATE_ESTIMATOR_1: |
@@ -1892,6 +1894,7 @@ static bool wm5102_volatile_register(struct device *dev, unsigned int reg) | |||
1892 | case ARIZONA_SAMPLE_RATE_3_STATUS: | 1894 | case ARIZONA_SAMPLE_RATE_3_STATUS: |
1893 | case ARIZONA_HAPTICS_STATUS: | 1895 | case ARIZONA_HAPTICS_STATUS: |
1894 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | 1896 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: |
1897 | case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS: | ||
1895 | case ARIZONA_FLL1_NCO_TEST_0: | 1898 | case ARIZONA_FLL1_NCO_TEST_0: |
1896 | case ARIZONA_FLL2_NCO_TEST_0: | 1899 | case ARIZONA_FLL2_NCO_TEST_0: |
1897 | case ARIZONA_DAC_COMP_1: | 1900 | case ARIZONA_DAC_COMP_1: |
diff --git a/drivers/mfd/wm5110-tables.c b/drivers/mfd/wm5110-tables.c index beae0a397ee1..4642b5b816a0 100644 --- a/drivers/mfd/wm5110-tables.c +++ b/drivers/mfd/wm5110-tables.c | |||
@@ -702,6 +702,7 @@ static const struct reg_default wm5110_reg_default[] = { | |||
702 | { 0x00000104, 0x0011 }, /* R260 - Sample rate 3 */ | 702 | { 0x00000104, 0x0011 }, /* R260 - Sample rate 3 */ |
703 | { 0x00000112, 0x0305 }, /* R274 - Async clock 1 */ | 703 | { 0x00000112, 0x0305 }, /* R274 - Async clock 1 */ |
704 | { 0x00000113, 0x0011 }, /* R275 - Async sample rate 1 */ | 704 | { 0x00000113, 0x0011 }, /* R275 - Async sample rate 1 */ |
705 | { 0x00000114, 0x0011 }, /* R276 - Async sample rate 2 */ | ||
705 | { 0x00000149, 0x0000 }, /* R329 - Output system clock */ | 706 | { 0x00000149, 0x0000 }, /* R329 - Output system clock */ |
706 | { 0x0000014A, 0x0000 }, /* R330 - Output async clock */ | 707 | { 0x0000014A, 0x0000 }, /* R330 - Output async clock */ |
707 | { 0x00000152, 0x0000 }, /* R338 - Rate Estimator 1 */ | 708 | { 0x00000152, 0x0000 }, /* R338 - Rate Estimator 1 */ |
@@ -1738,6 +1739,8 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg) | |||
1738 | case ARIZONA_ASYNC_CLOCK_1: | 1739 | case ARIZONA_ASYNC_CLOCK_1: |
1739 | case ARIZONA_ASYNC_SAMPLE_RATE_1: | 1740 | case ARIZONA_ASYNC_SAMPLE_RATE_1: |
1740 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | 1741 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: |
1742 | case ARIZONA_ASYNC_SAMPLE_RATE_2: | ||
1743 | case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS: | ||
1741 | case ARIZONA_OUTPUT_SYSTEM_CLOCK: | 1744 | case ARIZONA_OUTPUT_SYSTEM_CLOCK: |
1742 | case ARIZONA_OUTPUT_ASYNC_CLOCK: | 1745 | case ARIZONA_OUTPUT_ASYNC_CLOCK: |
1743 | case ARIZONA_RATE_ESTIMATOR_1: | 1746 | case ARIZONA_RATE_ESTIMATOR_1: |
@@ -2820,6 +2823,7 @@ static bool wm5110_volatile_register(struct device *dev, unsigned int reg) | |||
2820 | case ARIZONA_SAMPLE_RATE_2_STATUS: | 2823 | case ARIZONA_SAMPLE_RATE_2_STATUS: |
2821 | case ARIZONA_SAMPLE_RATE_3_STATUS: | 2824 | case ARIZONA_SAMPLE_RATE_3_STATUS: |
2822 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | 2825 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: |
2826 | case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS: | ||
2823 | case ARIZONA_MIC_DETECT_3: | 2827 | case ARIZONA_MIC_DETECT_3: |
2824 | case ARIZONA_HEADPHONE_DETECT_2: | 2828 | case ARIZONA_HEADPHONE_DETECT_2: |
2825 | case ARIZONA_INPUT_ENABLES_STATUS: | 2829 | case ARIZONA_INPUT_ENABLES_STATUS: |
diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h index 68913ec90969..c0b075f6bc35 100644 --- a/include/linux/mfd/arizona/registers.h +++ b/include/linux/mfd/arizona/registers.h | |||
@@ -71,7 +71,9 @@ | |||
71 | #define ARIZONA_SAMPLE_RATE_3_STATUS 0x10C | 71 | #define ARIZONA_SAMPLE_RATE_3_STATUS 0x10C |
72 | #define ARIZONA_ASYNC_CLOCK_1 0x112 | 72 | #define ARIZONA_ASYNC_CLOCK_1 0x112 |
73 | #define ARIZONA_ASYNC_SAMPLE_RATE_1 0x113 | 73 | #define ARIZONA_ASYNC_SAMPLE_RATE_1 0x113 |
74 | #define ARIZONA_ASYNC_SAMPLE_RATE_2 0x114 | ||
74 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS 0x11B | 75 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS 0x11B |
76 | #define ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS 0x11C | ||
75 | #define ARIZONA_OUTPUT_SYSTEM_CLOCK 0x149 | 77 | #define ARIZONA_OUTPUT_SYSTEM_CLOCK 0x149 |
76 | #define ARIZONA_OUTPUT_ASYNC_CLOCK 0x14A | 78 | #define ARIZONA_OUTPUT_ASYNC_CLOCK 0x14A |
77 | #define ARIZONA_RATE_ESTIMATOR_1 0x152 | 79 | #define ARIZONA_RATE_ESTIMATOR_1 0x152 |
@@ -1665,16 +1667,30 @@ | |||
1665 | /* | 1667 | /* |
1666 | * R275 (0x113) - Async sample rate 1 | 1668 | * R275 (0x113) - Async sample rate 1 |
1667 | */ | 1669 | */ |
1668 | #define ARIZONA_ASYNC_SAMPLE_RATE_MASK 0x001F /* ASYNC_SAMPLE_RATE - [4:0] */ | 1670 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_MASK 0x001F /* ASYNC_SAMPLE_RATE_1 - [4:0] */ |
1669 | #define ARIZONA_ASYNC_SAMPLE_RATE_SHIFT 0 /* ASYNC_SAMPLE_RATE - [4:0] */ | 1671 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_SHIFT 0 /* ASYNC_SAMPLE_RATE_1 - [4:0] */ |
1670 | #define ARIZONA_ASYNC_SAMPLE_RATE_WIDTH 5 /* ASYNC_SAMPLE_RATE - [4:0] */ | 1672 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_WIDTH 5 /* ASYNC_SAMPLE_RATE_1 - [4:0] */ |
1673 | |||
1674 | /* | ||
1675 | * R276 (0x114) - Async sample rate 2 | ||
1676 | */ | ||
1677 | #define ARIZONA_ASYNC_SAMPLE_RATE_2_MASK 0x001F /* ASYNC_SAMPLE_RATE_2 - [4:0] */ | ||
1678 | #define ARIZONA_ASYNC_SAMPLE_RATE_2_SHIFT 0 /* ASYNC_SAMPLE_RATE_2 - [4:0] */ | ||
1679 | #define ARIZONA_ASYNC_SAMPLE_RATE_2_WIDTH 5 /* ASYNC_SAMPLE_RATE_2 - [4:0] */ | ||
1671 | 1680 | ||
1672 | /* | 1681 | /* |
1673 | * R283 (0x11B) - Async sample rate 1 status | 1682 | * R283 (0x11B) - Async sample rate 1 status |
1674 | */ | 1683 | */ |
1675 | #define ARIZONA_ASYNC_SAMPLE_RATE_STS_MASK 0x001F /* ASYNC_SAMPLE_RATE_STS - [4:0] */ | 1684 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_STS_MASK 0x001F /* ASYNC_SAMPLE_RATE_1_STS - [4:0] */ |
1676 | #define ARIZONA_ASYNC_SAMPLE_RATE_STS_SHIFT 0 /* ASYNC_SAMPLE_RATE_STS - [4:0] */ | 1685 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_STS_SHIFT 0 /* ASYNC_SAMPLE_RATE_1_STS - [4:0] */ |
1677 | #define ARIZONA_ASYNC_SAMPLE_RATE_STS_WIDTH 5 /* ASYNC_SAMPLE_RATE_STS - [4:0] */ | 1686 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_STS_WIDTH 5 /* ASYNC_SAMPLE_RATE_1_STS - [4:0] */ |
1687 | |||
1688 | /* | ||
1689 | * R284 (0x11C) - Async sample rate 2 status | ||
1690 | */ | ||
1691 | #define ARIZONA_ASYNC_SAMPLE_RATE_2_STS_MASK 0x001F /* ASYNC_SAMPLE_RATE_2_STS - [4:0] */ | ||
1692 | #define ARIZONA_ASYNC_SAMPLE_RATE_2_STS_SHIFT 0 /* ASYNC_SAMPLE_RATE_2_STS - [4:0] */ | ||
1693 | #define ARIZONA_ASYNC_SAMPLE_RATE_2_STS_WIDTH 5 /* ASYNC_SAMPLE_RATE_2_STS - [4:0] */ | ||
1678 | 1694 | ||
1679 | /* | 1695 | /* |
1680 | * R329 (0x149) - Output system clock | 1696 | * R329 (0x149) - Output system clock |
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c index 2c71f16bd661..0c05e7a7945f 100644 --- a/sound/soc/codecs/arizona.c +++ b/sound/soc/codecs/arizona.c | |||
@@ -1220,7 +1220,7 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream, | |||
1220 | break; | 1220 | break; |
1221 | case ARIZONA_CLK_ASYNCCLK: | 1221 | case ARIZONA_CLK_ASYNCCLK: |
1222 | snd_soc_update_bits(codec, ARIZONA_ASYNC_SAMPLE_RATE_1, | 1222 | snd_soc_update_bits(codec, ARIZONA_ASYNC_SAMPLE_RATE_1, |
1223 | ARIZONA_ASYNC_SAMPLE_RATE_MASK, sr_val); | 1223 | ARIZONA_ASYNC_SAMPLE_RATE_1_MASK, sr_val); |
1224 | if (base) | 1224 | if (base) |
1225 | snd_soc_update_bits(codec, base + ARIZONA_AIF_RATE_CTRL, | 1225 | snd_soc_update_bits(codec, base + ARIZONA_AIF_RATE_CTRL, |
1226 | ARIZONA_AIF1_RATE_MASK, | 1226 | ARIZONA_AIF1_RATE_MASK, |