diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 2 | ||||
-rw-r--r-- | sound/soc/intel/Makefile | 2 | ||||
-rw-r--r-- | sound/soc/intel/atom/sst/sst_drv_interface.c | 14 | ||||
-rw-r--r-- | sound/soc/intel/boards/cht_bsw_max98090_ti.c | 4 | ||||
-rw-r--r-- | sound/soc/mediatek/mt8173-max98090.c | 17 | ||||
-rw-r--r-- | sound/soc/mediatek/mt8173-rt5650-rt5676.c | 19 | ||||
-rw-r--r-- | sound/soc/mediatek/mtk-afe-pcm.c | 2 |
7 files changed, 41 insertions, 19 deletions
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index c7647e066cfd..c0b940e2019f 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
@@ -633,7 +633,7 @@ static int fsl_ssi_set_bclk(struct snd_pcm_substream *substream, | |||
633 | sub *= 100000; | 633 | sub *= 100000; |
634 | do_div(sub, freq); | 634 | do_div(sub, freq); |
635 | 635 | ||
636 | if (sub < savesub) { | 636 | if (sub < savesub && !(i == 0 && psr == 0 && div2 == 0)) { |
637 | baudrate = tmprate; | 637 | baudrate = tmprate; |
638 | savesub = sub; | 638 | savesub = sub; |
639 | pm = i; | 639 | pm = i; |
diff --git a/sound/soc/intel/Makefile b/sound/soc/intel/Makefile index 3853ec2ddbc7..6de5d5cd3280 100644 --- a/sound/soc/intel/Makefile +++ b/sound/soc/intel/Makefile | |||
@@ -7,4 +7,4 @@ obj-$(CONFIG_SND_SOC_INTEL_BAYTRAIL) += baytrail/ | |||
7 | obj-$(CONFIG_SND_SST_MFLD_PLATFORM) += atom/ | 7 | obj-$(CONFIG_SND_SST_MFLD_PLATFORM) += atom/ |
8 | 8 | ||
9 | # Machine support | 9 | # Machine support |
10 | obj-$(CONFIG_SND_SOC_INTEL_SST) += boards/ | 10 | obj-$(CONFIG_SND_SOC) += boards/ |
diff --git a/sound/soc/intel/atom/sst/sst_drv_interface.c b/sound/soc/intel/atom/sst/sst_drv_interface.c index 620da1d1b9e3..0e0e4d9c021f 100644 --- a/sound/soc/intel/atom/sst/sst_drv_interface.c +++ b/sound/soc/intel/atom/sst/sst_drv_interface.c | |||
@@ -42,6 +42,11 @@ | |||
42 | #define MIN_FRAGMENT_SIZE (50 * 1024) | 42 | #define MIN_FRAGMENT_SIZE (50 * 1024) |
43 | #define MAX_FRAGMENT_SIZE (1024 * 1024) | 43 | #define MAX_FRAGMENT_SIZE (1024 * 1024) |
44 | #define SST_GET_BYTES_PER_SAMPLE(pcm_wd_sz) (((pcm_wd_sz + 15) >> 4) << 1) | 44 | #define SST_GET_BYTES_PER_SAMPLE(pcm_wd_sz) (((pcm_wd_sz + 15) >> 4) << 1) |
45 | #ifdef CONFIG_PM | ||
46 | #define GET_USAGE_COUNT(dev) (atomic_read(&dev->power.usage_count)) | ||
47 | #else | ||
48 | #define GET_USAGE_COUNT(dev) 1 | ||
49 | #endif | ||
45 | 50 | ||
46 | int free_stream_context(struct intel_sst_drv *ctx, unsigned int str_id) | 51 | int free_stream_context(struct intel_sst_drv *ctx, unsigned int str_id) |
47 | { | 52 | { |
@@ -141,15 +146,9 @@ static int sst_power_control(struct device *dev, bool state) | |||
141 | int ret = 0; | 146 | int ret = 0; |
142 | int usage_count = 0; | 147 | int usage_count = 0; |
143 | 148 | ||
144 | #ifdef CONFIG_PM | ||
145 | usage_count = atomic_read(&dev->power.usage_count); | ||
146 | #else | ||
147 | usage_count = 1; | ||
148 | #endif | ||
149 | |||
150 | if (state == true) { | 149 | if (state == true) { |
151 | ret = pm_runtime_get_sync(dev); | 150 | ret = pm_runtime_get_sync(dev); |
152 | 151 | usage_count = GET_USAGE_COUNT(dev); | |
153 | dev_dbg(ctx->dev, "Enable: pm usage count: %d\n", usage_count); | 152 | dev_dbg(ctx->dev, "Enable: pm usage count: %d\n", usage_count); |
154 | if (ret < 0) { | 153 | if (ret < 0) { |
155 | dev_err(ctx->dev, "Runtime get failed with err: %d\n", ret); | 154 | dev_err(ctx->dev, "Runtime get failed with err: %d\n", ret); |
@@ -164,6 +163,7 @@ static int sst_power_control(struct device *dev, bool state) | |||
164 | } | 163 | } |
165 | } | 164 | } |
166 | } else { | 165 | } else { |
166 | usage_count = GET_USAGE_COUNT(dev); | ||
167 | dev_dbg(ctx->dev, "Disable: pm usage count: %d\n", usage_count); | 167 | dev_dbg(ctx->dev, "Disable: pm usage count: %d\n", usage_count); |
168 | return sst_pm_runtime_put(ctx); | 168 | return sst_pm_runtime_put(ctx); |
169 | } | 169 | } |
diff --git a/sound/soc/intel/boards/cht_bsw_max98090_ti.c b/sound/soc/intel/boards/cht_bsw_max98090_ti.c index d604ee80eda4..70f832114a5a 100644 --- a/sound/soc/intel/boards/cht_bsw_max98090_ti.c +++ b/sound/soc/intel/boards/cht_bsw_max98090_ti.c | |||
@@ -69,12 +69,12 @@ static const struct snd_soc_dapm_route cht_audio_map[] = { | |||
69 | {"Headphone", NULL, "HPR"}, | 69 | {"Headphone", NULL, "HPR"}, |
70 | {"Ext Spk", NULL, "SPKL"}, | 70 | {"Ext Spk", NULL, "SPKL"}, |
71 | {"Ext Spk", NULL, "SPKR"}, | 71 | {"Ext Spk", NULL, "SPKR"}, |
72 | {"AIF1 Playback", NULL, "ssp2 Tx"}, | 72 | {"HiFi Playback", NULL, "ssp2 Tx"}, |
73 | {"ssp2 Tx", NULL, "codec_out0"}, | 73 | {"ssp2 Tx", NULL, "codec_out0"}, |
74 | {"ssp2 Tx", NULL, "codec_out1"}, | 74 | {"ssp2 Tx", NULL, "codec_out1"}, |
75 | {"codec_in0", NULL, "ssp2 Rx" }, | 75 | {"codec_in0", NULL, "ssp2 Rx" }, |
76 | {"codec_in1", NULL, "ssp2 Rx" }, | 76 | {"codec_in1", NULL, "ssp2 Rx" }, |
77 | {"ssp2 Rx", NULL, "AIF1 Capture"}, | 77 | {"ssp2 Rx", NULL, "HiFi Capture"}, |
78 | }; | 78 | }; |
79 | 79 | ||
80 | static const struct snd_kcontrol_new cht_mc_controls[] = { | 80 | static const struct snd_kcontrol_new cht_mc_controls[] = { |
diff --git a/sound/soc/mediatek/mt8173-max98090.c b/sound/soc/mediatek/mt8173-max98090.c index 4d44b5803e55..2d2536af141f 100644 --- a/sound/soc/mediatek/mt8173-max98090.c +++ b/sound/soc/mediatek/mt8173-max98090.c | |||
@@ -103,7 +103,6 @@ static struct snd_soc_dai_link mt8173_max98090_dais[] = { | |||
103 | .name = "MAX98090 Playback", | 103 | .name = "MAX98090 Playback", |
104 | .stream_name = "MAX98090 Playback", | 104 | .stream_name = "MAX98090 Playback", |
105 | .cpu_dai_name = "DL1", | 105 | .cpu_dai_name = "DL1", |
106 | .platform_name = "11220000.mt8173-afe-pcm", | ||
107 | .codec_name = "snd-soc-dummy", | 106 | .codec_name = "snd-soc-dummy", |
108 | .codec_dai_name = "snd-soc-dummy-dai", | 107 | .codec_dai_name = "snd-soc-dummy-dai", |
109 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, | 108 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, |
@@ -114,7 +113,6 @@ static struct snd_soc_dai_link mt8173_max98090_dais[] = { | |||
114 | .name = "MAX98090 Capture", | 113 | .name = "MAX98090 Capture", |
115 | .stream_name = "MAX98090 Capture", | 114 | .stream_name = "MAX98090 Capture", |
116 | .cpu_dai_name = "VUL", | 115 | .cpu_dai_name = "VUL", |
117 | .platform_name = "11220000.mt8173-afe-pcm", | ||
118 | .codec_name = "snd-soc-dummy", | 116 | .codec_name = "snd-soc-dummy", |
119 | .codec_dai_name = "snd-soc-dummy-dai", | 117 | .codec_dai_name = "snd-soc-dummy-dai", |
120 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, | 118 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, |
@@ -125,7 +123,6 @@ static struct snd_soc_dai_link mt8173_max98090_dais[] = { | |||
125 | { | 123 | { |
126 | .name = "Codec", | 124 | .name = "Codec", |
127 | .cpu_dai_name = "I2S", | 125 | .cpu_dai_name = "I2S", |
128 | .platform_name = "11220000.mt8173-afe-pcm", | ||
129 | .no_pcm = 1, | 126 | .no_pcm = 1, |
130 | .codec_dai_name = "HiFi", | 127 | .codec_dai_name = "HiFi", |
131 | .init = mt8173_max98090_init, | 128 | .init = mt8173_max98090_init, |
@@ -152,9 +149,21 @@ static struct snd_soc_card mt8173_max98090_card = { | |||
152 | static int mt8173_max98090_dev_probe(struct platform_device *pdev) | 149 | static int mt8173_max98090_dev_probe(struct platform_device *pdev) |
153 | { | 150 | { |
154 | struct snd_soc_card *card = &mt8173_max98090_card; | 151 | struct snd_soc_card *card = &mt8173_max98090_card; |
155 | struct device_node *codec_node; | 152 | struct device_node *codec_node, *platform_node; |
156 | int ret, i; | 153 | int ret, i; |
157 | 154 | ||
155 | platform_node = of_parse_phandle(pdev->dev.of_node, | ||
156 | "mediatek,platform", 0); | ||
157 | if (!platform_node) { | ||
158 | dev_err(&pdev->dev, "Property 'platform' missing or invalid\n"); | ||
159 | return -EINVAL; | ||
160 | } | ||
161 | for (i = 0; i < card->num_links; i++) { | ||
162 | if (mt8173_max98090_dais[i].platform_name) | ||
163 | continue; | ||
164 | mt8173_max98090_dais[i].platform_of_node = platform_node; | ||
165 | } | ||
166 | |||
158 | codec_node = of_parse_phandle(pdev->dev.of_node, | 167 | codec_node = of_parse_phandle(pdev->dev.of_node, |
159 | "mediatek,audio-codec", 0); | 168 | "mediatek,audio-codec", 0); |
160 | if (!codec_node) { | 169 | if (!codec_node) { |
diff --git a/sound/soc/mediatek/mt8173-rt5650-rt5676.c b/sound/soc/mediatek/mt8173-rt5650-rt5676.c index 094055323059..6f52eca05e26 100644 --- a/sound/soc/mediatek/mt8173-rt5650-rt5676.c +++ b/sound/soc/mediatek/mt8173-rt5650-rt5676.c | |||
@@ -138,7 +138,6 @@ static struct snd_soc_dai_link mt8173_rt5650_rt5676_dais[] = { | |||
138 | .name = "rt5650_rt5676 Playback", | 138 | .name = "rt5650_rt5676 Playback", |
139 | .stream_name = "rt5650_rt5676 Playback", | 139 | .stream_name = "rt5650_rt5676 Playback", |
140 | .cpu_dai_name = "DL1", | 140 | .cpu_dai_name = "DL1", |
141 | .platform_name = "11220000.mt8173-afe-pcm", | ||
142 | .codec_name = "snd-soc-dummy", | 141 | .codec_name = "snd-soc-dummy", |
143 | .codec_dai_name = "snd-soc-dummy-dai", | 142 | .codec_dai_name = "snd-soc-dummy-dai", |
144 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, | 143 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, |
@@ -149,7 +148,6 @@ static struct snd_soc_dai_link mt8173_rt5650_rt5676_dais[] = { | |||
149 | .name = "rt5650_rt5676 Capture", | 148 | .name = "rt5650_rt5676 Capture", |
150 | .stream_name = "rt5650_rt5676 Capture", | 149 | .stream_name = "rt5650_rt5676 Capture", |
151 | .cpu_dai_name = "VUL", | 150 | .cpu_dai_name = "VUL", |
152 | .platform_name = "11220000.mt8173-afe-pcm", | ||
153 | .codec_name = "snd-soc-dummy", | 151 | .codec_name = "snd-soc-dummy", |
154 | .codec_dai_name = "snd-soc-dummy-dai", | 152 | .codec_dai_name = "snd-soc-dummy-dai", |
155 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, | 153 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, |
@@ -161,7 +159,6 @@ static struct snd_soc_dai_link mt8173_rt5650_rt5676_dais[] = { | |||
161 | { | 159 | { |
162 | .name = "Codec", | 160 | .name = "Codec", |
163 | .cpu_dai_name = "I2S", | 161 | .cpu_dai_name = "I2S", |
164 | .platform_name = "11220000.mt8173-afe-pcm", | ||
165 | .no_pcm = 1, | 162 | .no_pcm = 1, |
166 | .codecs = mt8173_rt5650_rt5676_codecs, | 163 | .codecs = mt8173_rt5650_rt5676_codecs, |
167 | .num_codecs = 2, | 164 | .num_codecs = 2, |
@@ -209,7 +206,21 @@ static struct snd_soc_card mt8173_rt5650_rt5676_card = { | |||
209 | static int mt8173_rt5650_rt5676_dev_probe(struct platform_device *pdev) | 206 | static int mt8173_rt5650_rt5676_dev_probe(struct platform_device *pdev) |
210 | { | 207 | { |
211 | struct snd_soc_card *card = &mt8173_rt5650_rt5676_card; | 208 | struct snd_soc_card *card = &mt8173_rt5650_rt5676_card; |
212 | int ret; | 209 | struct device_node *platform_node; |
210 | int i, ret; | ||
211 | |||
212 | platform_node = of_parse_phandle(pdev->dev.of_node, | ||
213 | "mediatek,platform", 0); | ||
214 | if (!platform_node) { | ||
215 | dev_err(&pdev->dev, "Property 'platform' missing or invalid\n"); | ||
216 | return -EINVAL; | ||
217 | } | ||
218 | |||
219 | for (i = 0; i < card->num_links; i++) { | ||
220 | if (mt8173_rt5650_rt5676_dais[i].platform_name) | ||
221 | continue; | ||
222 | mt8173_rt5650_rt5676_dais[i].platform_of_node = platform_node; | ||
223 | } | ||
213 | 224 | ||
214 | mt8173_rt5650_rt5676_codecs[0].of_node = | 225 | mt8173_rt5650_rt5676_codecs[0].of_node = |
215 | of_parse_phandle(pdev->dev.of_node, "mediatek,audio-codec", 0); | 226 | of_parse_phandle(pdev->dev.of_node, "mediatek,audio-codec", 0); |
diff --git a/sound/soc/mediatek/mtk-afe-pcm.c b/sound/soc/mediatek/mtk-afe-pcm.c index cc228db5fb76..9863da73dfe0 100644 --- a/sound/soc/mediatek/mtk-afe-pcm.c +++ b/sound/soc/mediatek/mtk-afe-pcm.c | |||
@@ -1199,6 +1199,8 @@ err_pm_disable: | |||
1199 | static int mtk_afe_pcm_dev_remove(struct platform_device *pdev) | 1199 | static int mtk_afe_pcm_dev_remove(struct platform_device *pdev) |
1200 | { | 1200 | { |
1201 | pm_runtime_disable(&pdev->dev); | 1201 | pm_runtime_disable(&pdev->dev); |
1202 | if (!pm_runtime_status_suspended(&pdev->dev)) | ||
1203 | mtk_afe_runtime_suspend(&pdev->dev); | ||
1202 | snd_soc_unregister_component(&pdev->dev); | 1204 | snd_soc_unregister_component(&pdev->dev); |
1203 | snd_soc_unregister_platform(&pdev->dev); | 1205 | snd_soc_unregister_platform(&pdev->dev); |
1204 | return 0; | 1206 | return 0; |