aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/tlv320aic3x.c
diff options
context:
space:
mode:
authorJarkko Nikula <jarkko.nikula@nokia.com>2008-02-20 11:13:44 -0500
committerTakashi Iwai <tiwai@suse.de>2008-04-24 06:00:13 -0400
commit6876a5323f6169f9321354a398f7364b41ca82fa (patch)
tree2e85726835b544a0a6b7d93a8d5aa64c6e302d4d /sound/soc/codecs/tlv320aic3x.c
parent9e235323db4689e8b7e123252b998a4904806c38 (diff)
[ALSA] ASoC: Add support for 12 MHz MCLK in TLV320AIC3X
Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/soc/codecs/tlv320aic3x.c')
-rw-r--r--sound/soc/codecs/tlv320aic3x.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index 889a897d41ac..e6a730b0dd29 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -660,33 +660,43 @@ struct aic3x_rate_divs {
660/* AIC3X codec mclk clock divider coefficients */ 660/* AIC3X codec mclk clock divider coefficients */
661static const struct aic3x_rate_divs aic3x_divs[] = { 661static const struct aic3x_rate_divs aic3x_divs[] = {
662 /* 8k */ 662 /* 8k */
663 {12000000, 8000, 48000, 0xa, 16, 3840},
663 {22579200, 8000, 48000, 0xa, 8, 7075}, 664 {22579200, 8000, 48000, 0xa, 8, 7075},
664 {33868800, 8000, 48000, 0xa, 5, 8049}, 665 {33868800, 8000, 48000, 0xa, 5, 8049},
665 /* 11.025k */ 666 /* 11.025k */
667 {12000000, 11025, 44100, 0x6, 15, 528},
666 {22579200, 11025, 44100, 0x6, 8, 0}, 668 {22579200, 11025, 44100, 0x6, 8, 0},
667 {33868800, 11025, 44100, 0x6, 5, 3333}, 669 {33868800, 11025, 44100, 0x6, 5, 3333},
668 /* 16k */ 670 /* 16k */
671 {12000000, 16000, 48000, 0x4, 16, 3840},
669 {22579200, 16000, 48000, 0x4, 8, 7075}, 672 {22579200, 16000, 48000, 0x4, 8, 7075},
670 {33868800, 16000, 48000, 0x4, 5, 8049}, 673 {33868800, 16000, 48000, 0x4, 5, 8049},
671 /* 22.05k */ 674 /* 22.05k */
675 {12000000, 22050, 44100, 0x2, 15, 528},
672 {22579200, 22050, 44100, 0x2, 8, 0}, 676 {22579200, 22050, 44100, 0x2, 8, 0},
673 {33868800, 22050, 44100, 0x2, 5, 3333}, 677 {33868800, 22050, 44100, 0x2, 5, 3333},
674 /* 32k */ 678 /* 32k */
679 {12000000, 32000, 48000, 0x1, 16, 3840},
675 {22579200, 32000, 48000, 0x1, 8, 7075}, 680 {22579200, 32000, 48000, 0x1, 8, 7075},
676 {33868800, 32000, 48000, 0x1, 5, 8049}, 681 {33868800, 32000, 48000, 0x1, 5, 8049},
677 /* 44.1k */ 682 /* 44.1k */
683 {12000000, 44100, 44100, 0x0, 15, 528},
678 {22579200, 44100, 44100, 0x0, 8, 0}, 684 {22579200, 44100, 44100, 0x0, 8, 0},
679 {33868800, 44100, 44100, 0x0, 5, 3333}, 685 {33868800, 44100, 44100, 0x0, 5, 3333},
680 /* 48k */ 686 /* 48k */
687 {12000000, 48000, 48000, 0x0, 16, 3840},
681 {22579200, 48000, 48000, 0x0, 8, 7075}, 688 {22579200, 48000, 48000, 0x0, 8, 7075},
682 {33868800, 48000, 48000, 0x0, 5, 8049}, 689 {33868800, 48000, 48000, 0x0, 5, 8049},
683 /* 64k */ 690 /* 64k */
691 {12000000, 64000, 96000, 0x1, 16, 3840},
684 {22579200, 64000, 96000, 0x1, 8, 7075}, 692 {22579200, 64000, 96000, 0x1, 8, 7075},
685 {33868800, 64000, 96000, 0x1, 5, 8049}, 693 {33868800, 64000, 96000, 0x1, 5, 8049},
686 /* 88.2k */ 694 /* 88.2k */
695 {12000000, 88200, 88200, 0x0, 15, 528},
687 {22579200, 88200, 88200, 0x0, 8, 0}, 696 {22579200, 88200, 88200, 0x0, 8, 0},
688 {33868800, 88200, 88200, 0x0, 5, 3333}, 697 {33868800, 88200, 88200, 0x0, 5, 3333},
689 /* 96k */ 698 /* 96k */
699 {12000000, 96000, 96000, 0x0, 16, 3840},
690 {22579200, 96000, 96000, 0x0, 8, 7075}, 700 {22579200, 96000, 96000, 0x0, 8, 7075},
691 {33868800, 96000, 96000, 0x0, 5, 8049}, 701 {33868800, 96000, 96000, 0x0, 5, 8049},
692}; 702};
@@ -807,6 +817,7 @@ static int aic3x_set_dai_sysclk(struct snd_soc_codec_dai *codec_dai,
807 struct aic3x_priv *aic3x = codec->private_data; 817 struct aic3x_priv *aic3x = codec->private_data;
808 818
809 switch (freq) { 819 switch (freq) {
820 case 12000000:
810 case 22579200: 821 case 22579200:
811 case 33868800: 822 case 33868800:
812 aic3x->sysclk = freq; 823 aic3x->sysclk = freq;