pxa-ssp.c (aa4ef01de5f2e7ed948b88f9f1cfc93c8e0c3f25) | pxa-ssp.c (6335d05548eece40092000aa91b64a50310d69d5) |
---|---|
1#define DEBUG 2/* 3 * pxa-ssp.c -- ALSA Soc Audio Layer 4 * 5 * Copyright 2005,2008 Wolfson Microelectronics PLC. 6 * Author: Liam Girdwood 7 * Mark Brown <broonie@opensource.wolfsonmicro.com> 8 * --- 630 unchanged lines hidden (view full) --- 639 sscr0 = ssp_read_reg(ssp, SSCR0); 640 switch (params_format(params)) { 641 case SNDRV_PCM_FORMAT_S16_LE: 642#ifdef CONFIG_PXA3xx 643 if (cpu_is_pxa3xx()) 644 sscr0 |= SSCR0_FPCKE; 645#endif 646 sscr0 |= SSCR0_DataSize(16); | 1#define DEBUG 2/* 3 * pxa-ssp.c -- ALSA Soc Audio Layer 4 * 5 * Copyright 2005,2008 Wolfson Microelectronics PLC. 6 * Author: Liam Girdwood 7 * Mark Brown <broonie@opensource.wolfsonmicro.com> 8 * --- 630 unchanged lines hidden (view full) --- 639 sscr0 = ssp_read_reg(ssp, SSCR0); 640 switch (params_format(params)) { 641 case SNDRV_PCM_FORMAT_S16_LE: 642#ifdef CONFIG_PXA3xx 643 if (cpu_is_pxa3xx()) 644 sscr0 |= SSCR0_FPCKE; 645#endif 646 sscr0 |= SSCR0_DataSize(16); |
647 /* use network mode (2 slots) for 16 bit stereo */ | 647 if (params_channels(params) > 1) 648 sscr0 |= SSCR0_EDSS; |
648 break; 649 case SNDRV_PCM_FORMAT_S24_LE: 650 sscr0 |= (SSCR0_EDSS | SSCR0_DataSize(8)); 651 /* we must be in network mode (2 slots) for 24 bit stereo */ 652 break; 653 case SNDRV_PCM_FORMAT_S32_LE: 654 sscr0 |= (SSCR0_EDSS | SSCR0_DataSize(16)); 655 /* we must be in network mode (2 slots) for 32 bit stereo */ --- 122 unchanged lines hidden (view full) --- 778 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | \ 779 SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | \ 780 SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000) 781 782#define PXA_SSP_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ 783 SNDRV_PCM_FMTBIT_S24_LE | \ 784 SNDRV_PCM_FMTBIT_S32_LE) 785 | 649 break; 650 case SNDRV_PCM_FORMAT_S24_LE: 651 sscr0 |= (SSCR0_EDSS | SSCR0_DataSize(8)); 652 /* we must be in network mode (2 slots) for 24 bit stereo */ 653 break; 654 case SNDRV_PCM_FORMAT_S32_LE: 655 sscr0 |= (SSCR0_EDSS | SSCR0_DataSize(16)); 656 /* we must be in network mode (2 slots) for 32 bit stereo */ --- 122 unchanged lines hidden (view full) --- 779 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | \ 780 SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | \ 781 SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000) 782 783#define PXA_SSP_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ 784 SNDRV_PCM_FMTBIT_S24_LE | \ 785 SNDRV_PCM_FMTBIT_S32_LE) 786 |
787static struct snd_soc_dai_ops pxa_ssp_dai_ops = { 788 .startup = pxa_ssp_startup, 789 .shutdown = pxa_ssp_shutdown, 790 .trigger = pxa_ssp_trigger, 791 .hw_params = pxa_ssp_hw_params, 792 .set_sysclk = pxa_ssp_set_dai_sysclk, 793 .set_clkdiv = pxa_ssp_set_dai_clkdiv, 794 .set_pll = pxa_ssp_set_dai_pll, 795 .set_fmt = pxa_ssp_set_dai_fmt, 796 .set_tdm_slot = pxa_ssp_set_dai_tdm_slot, 797 .set_tristate = pxa_ssp_set_dai_tristate, 798}; 799 |
|
786struct snd_soc_dai pxa_ssp_dai[] = { 787 { 788 .name = "pxa2xx-ssp1", 789 .id = 0, 790 .probe = pxa_ssp_probe, 791 .remove = pxa_ssp_remove, 792 .suspend = pxa_ssp_suspend, 793 .resume = pxa_ssp_resume, --- 4 unchanged lines hidden (view full) --- 798 .formats = PXA_SSP_FORMATS, 799 }, 800 .capture = { 801 .channels_min = 1, 802 .channels_max = 2, 803 .rates = PXA_SSP_RATES, 804 .formats = PXA_SSP_FORMATS, 805 }, | 800struct snd_soc_dai pxa_ssp_dai[] = { 801 { 802 .name = "pxa2xx-ssp1", 803 .id = 0, 804 .probe = pxa_ssp_probe, 805 .remove = pxa_ssp_remove, 806 .suspend = pxa_ssp_suspend, 807 .resume = pxa_ssp_resume, --- 4 unchanged lines hidden (view full) --- 812 .formats = PXA_SSP_FORMATS, 813 }, 814 .capture = { 815 .channels_min = 1, 816 .channels_max = 2, 817 .rates = PXA_SSP_RATES, 818 .formats = PXA_SSP_FORMATS, 819 }, |
806 .ops = { 807 .startup = pxa_ssp_startup, 808 .shutdown = pxa_ssp_shutdown, 809 .trigger = pxa_ssp_trigger, 810 .hw_params = pxa_ssp_hw_params, 811 .set_sysclk = pxa_ssp_set_dai_sysclk, 812 .set_clkdiv = pxa_ssp_set_dai_clkdiv, 813 .set_pll = pxa_ssp_set_dai_pll, 814 .set_fmt = pxa_ssp_set_dai_fmt, 815 .set_tdm_slot = pxa_ssp_set_dai_tdm_slot, 816 .set_tristate = pxa_ssp_set_dai_tristate, 817 }, | 820 .ops = &pxa_ssp_dai_ops, |
818 }, 819 { .name = "pxa2xx-ssp2", 820 .id = 1, 821 .probe = pxa_ssp_probe, 822 .remove = pxa_ssp_remove, 823 .suspend = pxa_ssp_suspend, 824 .resume = pxa_ssp_resume, 825 .playback = { 826 .channels_min = 1, 827 .channels_max = 2, 828 .rates = PXA_SSP_RATES, 829 .formats = PXA_SSP_FORMATS, 830 }, 831 .capture = { 832 .channels_min = 1, 833 .channels_max = 2, 834 .rates = PXA_SSP_RATES, 835 .formats = PXA_SSP_FORMATS, 836 }, | 821 }, 822 { .name = "pxa2xx-ssp2", 823 .id = 1, 824 .probe = pxa_ssp_probe, 825 .remove = pxa_ssp_remove, 826 .suspend = pxa_ssp_suspend, 827 .resume = pxa_ssp_resume, 828 .playback = { 829 .channels_min = 1, 830 .channels_max = 2, 831 .rates = PXA_SSP_RATES, 832 .formats = PXA_SSP_FORMATS, 833 }, 834 .capture = { 835 .channels_min = 1, 836 .channels_max = 2, 837 .rates = PXA_SSP_RATES, 838 .formats = PXA_SSP_FORMATS, 839 }, |
837 .ops = { 838 .startup = pxa_ssp_startup, 839 .shutdown = pxa_ssp_shutdown, 840 .trigger = pxa_ssp_trigger, 841 .hw_params = pxa_ssp_hw_params, 842 .set_sysclk = pxa_ssp_set_dai_sysclk, 843 .set_clkdiv = pxa_ssp_set_dai_clkdiv, 844 .set_pll = pxa_ssp_set_dai_pll, 845 .set_fmt = pxa_ssp_set_dai_fmt, 846 .set_tdm_slot = pxa_ssp_set_dai_tdm_slot, 847 .set_tristate = pxa_ssp_set_dai_tristate, 848 }, | 840 .ops = &pxa_ssp_dai_ops, |
849 }, 850 { 851 .name = "pxa2xx-ssp3", 852 .id = 2, 853 .probe = pxa_ssp_probe, 854 .remove = pxa_ssp_remove, 855 .suspend = pxa_ssp_suspend, 856 .resume = pxa_ssp_resume, --- 4 unchanged lines hidden (view full) --- 861 .formats = PXA_SSP_FORMATS, 862 }, 863 .capture = { 864 .channels_min = 1, 865 .channels_max = 2, 866 .rates = PXA_SSP_RATES, 867 .formats = PXA_SSP_FORMATS, 868 }, | 841 }, 842 { 843 .name = "pxa2xx-ssp3", 844 .id = 2, 845 .probe = pxa_ssp_probe, 846 .remove = pxa_ssp_remove, 847 .suspend = pxa_ssp_suspend, 848 .resume = pxa_ssp_resume, --- 4 unchanged lines hidden (view full) --- 853 .formats = PXA_SSP_FORMATS, 854 }, 855 .capture = { 856 .channels_min = 1, 857 .channels_max = 2, 858 .rates = PXA_SSP_RATES, 859 .formats = PXA_SSP_FORMATS, 860 }, |
869 .ops = { 870 .startup = pxa_ssp_startup, 871 .shutdown = pxa_ssp_shutdown, 872 .trigger = pxa_ssp_trigger, 873 .hw_params = pxa_ssp_hw_params, 874 .set_sysclk = pxa_ssp_set_dai_sysclk, 875 .set_clkdiv = pxa_ssp_set_dai_clkdiv, 876 .set_pll = pxa_ssp_set_dai_pll, 877 .set_fmt = pxa_ssp_set_dai_fmt, 878 .set_tdm_slot = pxa_ssp_set_dai_tdm_slot, 879 .set_tristate = pxa_ssp_set_dai_tristate, 880 }, | 861 .ops = &pxa_ssp_dai_ops, |
881 }, 882 { 883 .name = "pxa2xx-ssp4", 884 .id = 3, 885 .probe = pxa_ssp_probe, 886 .remove = pxa_ssp_remove, 887 .suspend = pxa_ssp_suspend, 888 .resume = pxa_ssp_resume, --- 4 unchanged lines hidden (view full) --- 893 .formats = PXA_SSP_FORMATS, 894 }, 895 .capture = { 896 .channels_min = 1, 897 .channels_max = 2, 898 .rates = PXA_SSP_RATES, 899 .formats = PXA_SSP_FORMATS, 900 }, | 862 }, 863 { 864 .name = "pxa2xx-ssp4", 865 .id = 3, 866 .probe = pxa_ssp_probe, 867 .remove = pxa_ssp_remove, 868 .suspend = pxa_ssp_suspend, 869 .resume = pxa_ssp_resume, --- 4 unchanged lines hidden (view full) --- 874 .formats = PXA_SSP_FORMATS, 875 }, 876 .capture = { 877 .channels_min = 1, 878 .channels_max = 2, 879 .rates = PXA_SSP_RATES, 880 .formats = PXA_SSP_FORMATS, 881 }, |
901 .ops = { 902 .startup = pxa_ssp_startup, 903 .shutdown = pxa_ssp_shutdown, 904 .trigger = pxa_ssp_trigger, 905 .hw_params = pxa_ssp_hw_params, 906 .set_sysclk = pxa_ssp_set_dai_sysclk, 907 .set_clkdiv = pxa_ssp_set_dai_clkdiv, 908 .set_pll = pxa_ssp_set_dai_pll, 909 .set_fmt = pxa_ssp_set_dai_fmt, 910 .set_tdm_slot = pxa_ssp_set_dai_tdm_slot, 911 .set_tristate = pxa_ssp_set_dai_tristate, 912 }, | 882 .ops = &pxa_ssp_dai_ops, |
913 }, 914}; 915EXPORT_SYMBOL_GPL(pxa_ssp_dai); 916 917static int __init pxa_ssp_init(void) 918{ 919 return snd_soc_register_dais(pxa_ssp_dai, ARRAY_SIZE(pxa_ssp_dai)); 920} --- 12 unchanged lines hidden --- | 883 }, 884}; 885EXPORT_SYMBOL_GPL(pxa_ssp_dai); 886 887static int __init pxa_ssp_init(void) 888{ 889 return snd_soc_register_dais(pxa_ssp_dai, ARRAY_SIZE(pxa_ssp_dai)); 890} --- 12 unchanged lines hidden --- |