rz-ssi.c (fc30eea1542dd787c6aa46e970014e97e390c5b2) | rz-ssi.c (c75ed9f54ce8d349fee557f2b471a4d637ed2a6b) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2// 3// Renesas RZ/G2L ASoC Serial Sound Interface (SSIF-2) Driver 4// 5// Copyright (C) 2021 Renesas Electronics Corp. 6// Copyright (C) 2019 Chris Brandt. 7// 8 --- 753 unchanged lines hidden (view full) --- 762 return ret; 763} 764 765static int rz_ssi_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) 766{ 767 struct rz_ssi_priv *ssi = snd_soc_dai_get_drvdata(dai); 768 769 switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) { | 1// SPDX-License-Identifier: GPL-2.0 2// 3// Renesas RZ/G2L ASoC Serial Sound Interface (SSIF-2) Driver 4// 5// Copyright (C) 2021 Renesas Electronics Corp. 6// Copyright (C) 2019 Chris Brandt. 7// 8 --- 753 unchanged lines hidden (view full) --- 762 return ret; 763} 764 765static int rz_ssi_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) 766{ 767 struct rz_ssi_priv *ssi = snd_soc_dai_get_drvdata(dai); 768 769 switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) { |
770 case SND_SOC_DAIFMT_CBC_CFC: | 770 case SND_SOC_DAIFMT_BP_FP: |
771 break; 772 default: 773 dev_err(ssi->dev, "Codec should be clk and frame consumer\n"); 774 return -EINVAL; 775 } 776 777 /* 778 * set clock polarity --- 122 unchanged lines hidden (view full) --- 901 .channels_min = SSI_CHAN_MIN, 902 .channels_max = SSI_CHAN_MAX, 903 }, 904 .ops = &rz_ssi_dai_ops, 905 }, 906}; 907 908static const struct snd_soc_component_driver rz_ssi_soc_component = { | 771 break; 772 default: 773 dev_err(ssi->dev, "Codec should be clk and frame consumer\n"); 774 return -EINVAL; 775 } 776 777 /* 778 * set clock polarity --- 122 unchanged lines hidden (view full) --- 901 .channels_min = SSI_CHAN_MIN, 902 .channels_max = SSI_CHAN_MAX, 903 }, 904 .ops = &rz_ssi_dai_ops, 905 }, 906}; 907 908static const struct snd_soc_component_driver rz_ssi_soc_component = { |
909 .name = "rz-ssi", 910 .open = rz_ssi_pcm_open, 911 .pointer = rz_ssi_pcm_pointer, 912 .pcm_construct = rz_ssi_pcm_new, | 909 .name = "rz-ssi", 910 .open = rz_ssi_pcm_open, 911 .pointer = rz_ssi_pcm_pointer, 912 .pcm_construct = rz_ssi_pcm_new, 913 .legacy_dai_naming = 1, |
913}; 914 915static int rz_ssi_probe(struct platform_device *pdev) 916{ 917 struct rz_ssi_priv *ssi; 918 struct clk *audio_clk; 919 struct resource *res; 920 int ret; --- 90 unchanged lines hidden (view full) --- 1011 dev_name(&pdev->dev), ssi); 1012 if (ret < 0) 1013 return dev_err_probe(&pdev->dev, ret, 1014 "irq request error (dma_rx)\n"); 1015 } 1016 1017 ssi->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL); 1018 if (IS_ERR(ssi->rstc)) { | 914}; 915 916static int rz_ssi_probe(struct platform_device *pdev) 917{ 918 struct rz_ssi_priv *ssi; 919 struct clk *audio_clk; 920 struct resource *res; 921 int ret; --- 90 unchanged lines hidden (view full) --- 1012 dev_name(&pdev->dev), ssi); 1013 if (ret < 0) 1014 return dev_err_probe(&pdev->dev, ret, 1015 "irq request error (dma_rx)\n"); 1016 } 1017 1018 ssi->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL); 1019 if (IS_ERR(ssi->rstc)) { |
1019 rz_ssi_release_dma_channels(ssi); 1020 return PTR_ERR(ssi->rstc); | 1020 ret = PTR_ERR(ssi->rstc); 1021 goto err_reset; |
1021 } 1022 1023 reset_control_deassert(ssi->rstc); 1024 pm_runtime_enable(&pdev->dev); 1025 ret = pm_runtime_resume_and_get(&pdev->dev); 1026 if (ret < 0) { | 1022 } 1023 1024 reset_control_deassert(ssi->rstc); 1025 pm_runtime_enable(&pdev->dev); 1026 ret = pm_runtime_resume_and_get(&pdev->dev); 1027 if (ret < 0) { |
1027 rz_ssi_release_dma_channels(ssi); 1028 pm_runtime_disable(ssi->dev); 1029 reset_control_assert(ssi->rstc); 1030 return dev_err_probe(ssi->dev, ret, "pm_runtime_resume_and_get failed\n"); | 1028 dev_err(&pdev->dev, "pm_runtime_resume_and_get failed\n"); 1029 goto err_pm; |
1031 } 1032 1033 ret = devm_snd_soc_register_component(&pdev->dev, &rz_ssi_soc_component, 1034 rz_ssi_soc_dai, 1035 ARRAY_SIZE(rz_ssi_soc_dai)); 1036 if (ret < 0) { | 1030 } 1031 1032 ret = devm_snd_soc_register_component(&pdev->dev, &rz_ssi_soc_component, 1033 rz_ssi_soc_dai, 1034 ARRAY_SIZE(rz_ssi_soc_dai)); 1035 if (ret < 0) { |
1037 rz_ssi_release_dma_channels(ssi); 1038 1039 pm_runtime_put(ssi->dev); 1040 pm_runtime_disable(ssi->dev); 1041 reset_control_assert(ssi->rstc); | |
1042 dev_err(&pdev->dev, "failed to register snd component\n"); | 1036 dev_err(&pdev->dev, "failed to register snd component\n"); |
1037 goto err_snd_soc; |
|
1043 } 1044 | 1038 } 1039 |
1040 return 0; 1041 1042err_snd_soc: 1043 pm_runtime_put(ssi->dev); 1044err_pm: 1045 pm_runtime_disable(ssi->dev); 1046 reset_control_assert(ssi->rstc); 1047err_reset: 1048 rz_ssi_release_dma_channels(ssi); 1049 |
|
1045 return ret; 1046} 1047 1048static int rz_ssi_remove(struct platform_device *pdev) 1049{ 1050 struct rz_ssi_priv *ssi = dev_get_drvdata(&pdev->dev); 1051 1052 rz_ssi_release_dma_channels(ssi); --- 28 unchanged lines hidden --- | 1050 return ret; 1051} 1052 1053static int rz_ssi_remove(struct platform_device *pdev) 1054{ 1055 struct rz_ssi_priv *ssi = dev_get_drvdata(&pdev->dev); 1056 1057 rz_ssi_release_dma_channels(ssi); --- 28 unchanged lines hidden --- |