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 ---