Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(390)

Side by Side Diff: sound/soc/davinci/davinci-mcasp.c

Issue 6577007: CHROMIUM: ASoC: Import entire upstream ASoC tree (Closed)
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sound/soc/davinci/davinci-i2s.c ('k') | sound/soc/davinci/davinci-sffsdr.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * ALSA SoC McASP Audio Layer for TI DAVINCI processor 2 * ALSA SoC McASP Audio Layer for TI DAVINCI processor
3 * 3 *
4 * Multi-channel Audio Serial Port Driver 4 * Multi-channel Audio Serial Port Driver
5 * 5 *
6 * Author: Nirmal Pandey <n-pandey@ti.com>, 6 * Author: Nirmal Pandey <n-pandey@ti.com>,
7 * Suresh Rajashekara <suresh.r@ti.com> 7 * Suresh Rajashekara <suresh.r@ti.com>
8 * Steve Chen <schen@.mvista.com> 8 * Steve Chen <schen@.mvista.com>
9 * 9 *
10 * Copyright: (C) 2009 MontaVista Software, Inc., <source@mvista.com> 10 * Copyright: (C) 2009 MontaVista Software, Inc., <source@mvista.com>
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after
861 return -ENOMEM; 861 return -ENOMEM;
862 862
863 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 863 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
864 if (!mem) { 864 if (!mem) {
865 dev_err(&pdev->dev, "no mem resource?\n"); 865 dev_err(&pdev->dev, "no mem resource?\n");
866 ret = -ENODEV; 866 ret = -ENODEV;
867 goto err_release_data; 867 goto err_release_data;
868 } 868 }
869 869
870 ioarea = request_mem_region(mem->start, 870 ioarea = request_mem_region(mem->start,
871 » » » (mem->end - mem->start) + 1, pdev->name); 871 » » » resource_size(mem), pdev->name);
872 if (!ioarea) { 872 if (!ioarea) {
873 dev_err(&pdev->dev, "Audio region already claimed\n"); 873 dev_err(&pdev->dev, "Audio region already claimed\n");
874 ret = -EBUSY; 874 ret = -EBUSY;
875 goto err_release_data; 875 goto err_release_data;
876 } 876 }
877 877
878 pdata = pdev->dev.platform_data; 878 pdata = pdev->dev.platform_data;
879 dev->clk = clk_get(&pdev->dev, NULL); 879 dev->clk = clk_get(&pdev->dev, NULL);
880 if (IS_ERR(dev->clk)) { 880 if (IS_ERR(dev->clk)) {
881 ret = -ENODEV; 881 ret = -ENODEV;
882 goto err_release_region; 882 goto err_release_region;
883 } 883 }
884 884
885 clk_enable(dev->clk); 885 clk_enable(dev->clk);
886 dev->clk_active = 1; 886 dev->clk_active = 1;
887 887
888 » dev->base = (void __iomem *)IO_ADDRESS(mem->start); 888 » dev->base = ioremap(mem->start, resource_size(mem));
889 » if (!dev->base) {
890 » » dev_err(&pdev->dev, "ioremap failed\n");
891 » » ret = -ENOMEM;
892 » » goto err_release_clk;
893 » }
894
889 dev->op_mode = pdata->op_mode; 895 dev->op_mode = pdata->op_mode;
890 dev->tdm_slots = pdata->tdm_slots; 896 dev->tdm_slots = pdata->tdm_slots;
891 dev->num_serializer = pdata->num_serializer; 897 dev->num_serializer = pdata->num_serializer;
892 dev->serial_dir = pdata->serial_dir; 898 dev->serial_dir = pdata->serial_dir;
893 dev->codec_fmt = pdata->codec_fmt; 899 dev->codec_fmt = pdata->codec_fmt;
894 dev->version = pdata->version; 900 dev->version = pdata->version;
895 dev->txnumevt = pdata->txnumevt; 901 dev->txnumevt = pdata->txnumevt;
896 dev->rxnumevt = pdata->rxnumevt; 902 dev->rxnumevt = pdata->rxnumevt;
897 903
898 dma_data = &dev->dma_params[SNDRV_PCM_STREAM_PLAYBACK]; 904 dma_data = &dev->dma_params[SNDRV_PCM_STREAM_PLAYBACK];
899 dma_data->asp_chan_q = pdata->asp_chan_q; 905 dma_data->asp_chan_q = pdata->asp_chan_q;
900 dma_data->ram_chan_q = pdata->ram_chan_q; 906 dma_data->ram_chan_q = pdata->ram_chan_q;
901 dma_data->dma_addr = (dma_addr_t) (pdata->tx_dma_offset + 907 dma_data->dma_addr = (dma_addr_t) (pdata->tx_dma_offset +
902 » » » » » » » io_v2p(dev->base)); 908 » » » » » » » mem->start);
903 909
904 /* first TX, then RX */ 910 /* first TX, then RX */
905 res = platform_get_resource(pdev, IORESOURCE_DMA, 0); 911 res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
906 if (!res) { 912 if (!res) {
907 dev_err(&pdev->dev, "no DMA resource\n"); 913 dev_err(&pdev->dev, "no DMA resource\n");
908 ret = -ENODEV; 914 ret = -ENODEV;
909 » » goto err_release_region; 915 » » goto err_iounmap;
910 } 916 }
911 917
912 dma_data->channel = res->start; 918 dma_data->channel = res->start;
913 919
914 dma_data = &dev->dma_params[SNDRV_PCM_STREAM_CAPTURE]; 920 dma_data = &dev->dma_params[SNDRV_PCM_STREAM_CAPTURE];
915 dma_data->asp_chan_q = pdata->asp_chan_q; 921 dma_data->asp_chan_q = pdata->asp_chan_q;
916 dma_data->ram_chan_q = pdata->ram_chan_q; 922 dma_data->ram_chan_q = pdata->ram_chan_q;
917 dma_data->dma_addr = (dma_addr_t)(pdata->rx_dma_offset + 923 dma_data->dma_addr = (dma_addr_t)(pdata->rx_dma_offset +
918 » » » » » » » io_v2p(dev->base)); 924 » » » » » » » mem->start);
919 925
920 res = platform_get_resource(pdev, IORESOURCE_DMA, 1); 926 res = platform_get_resource(pdev, IORESOURCE_DMA, 1);
921 if (!res) { 927 if (!res) {
922 dev_err(&pdev->dev, "no DMA resource\n"); 928 dev_err(&pdev->dev, "no DMA resource\n");
923 ret = -ENODEV; 929 ret = -ENODEV;
924 » » goto err_release_region; 930 » » goto err_iounmap;
925 } 931 }
926 932
927 dma_data->channel = res->start; 933 dma_data->channel = res->start;
928 dev_set_drvdata(&pdev->dev, dev); 934 dev_set_drvdata(&pdev->dev, dev);
929 ret = snd_soc_register_dai(&pdev->dev, &davinci_mcasp_dai[pdata->op_mode ]); 935 ret = snd_soc_register_dai(&pdev->dev, &davinci_mcasp_dai[pdata->op_mode ]);
930 936
931 if (ret != 0) 937 if (ret != 0)
932 » » goto err_release_region; 938 » » goto err_iounmap;
933 return 0; 939 return 0;
934 940
941 err_iounmap:
942 iounmap(dev->base);
943 err_release_clk:
944 clk_disable(dev->clk);
945 clk_put(dev->clk);
935 err_release_region: 946 err_release_region:
936 » release_mem_region(mem->start, (mem->end - mem->start) + 1); 947 » release_mem_region(mem->start, resource_size(mem));
937 err_release_data: 948 err_release_data:
938 kfree(dev); 949 kfree(dev);
939 950
940 return ret; 951 return ret;
941 } 952 }
942 953
943 static int davinci_mcasp_remove(struct platform_device *pdev) 954 static int davinci_mcasp_remove(struct platform_device *pdev)
944 { 955 {
945 struct davinci_audio_dev *dev = dev_get_drvdata(&pdev->dev); 956 struct davinci_audio_dev *dev = dev_get_drvdata(&pdev->dev);
946 struct resource *mem; 957 struct resource *mem;
947 958
948 snd_soc_unregister_dai(&pdev->dev); 959 snd_soc_unregister_dai(&pdev->dev);
949 clk_disable(dev->clk); 960 clk_disable(dev->clk);
950 clk_put(dev->clk); 961 clk_put(dev->clk);
951 dev->clk = NULL; 962 dev->clk = NULL;
952 963
953 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 964 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
954 » release_mem_region(mem->start, (mem->end - mem->start) + 1); 965 » release_mem_region(mem->start, resource_size(mem));
955 966
956 kfree(dev); 967 kfree(dev);
957 968
958 return 0; 969 return 0;
959 } 970 }
960 971
961 static struct platform_driver davinci_mcasp_driver = { 972 static struct platform_driver davinci_mcasp_driver = {
962 .probe = davinci_mcasp_probe, 973 .probe = davinci_mcasp_probe,
963 .remove = davinci_mcasp_remove, 974 .remove = davinci_mcasp_remove,
964 .driver = { 975 .driver = {
(...skipping 11 matching lines...) Expand all
976 static void __exit davinci_mcasp_exit(void) 987 static void __exit davinci_mcasp_exit(void)
977 { 988 {
978 platform_driver_unregister(&davinci_mcasp_driver); 989 platform_driver_unregister(&davinci_mcasp_driver);
979 } 990 }
980 module_exit(davinci_mcasp_exit); 991 module_exit(davinci_mcasp_exit);
981 992
982 MODULE_AUTHOR("Steve Chen"); 993 MODULE_AUTHOR("Steve Chen");
983 MODULE_DESCRIPTION("TI DAVINCI McASP SoC Interface"); 994 MODULE_DESCRIPTION("TI DAVINCI McASP SoC Interface");
984 MODULE_LICENSE("GPL"); 995 MODULE_LICENSE("GPL");
985 996
OLDNEW
« no previous file with comments | « sound/soc/davinci/davinci-i2s.c ('k') | sound/soc/davinci/davinci-sffsdr.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698