diff options
-rw-r--r-- | sound/soc/sh/rcar/core.c | 41 | ||||
-rw-r--r-- | sound/soc/sh/rcar/dvc.c | 13 | ||||
-rw-r--r-- | sound/soc/sh/rcar/rsnd.h | 15 | ||||
-rw-r--r-- | sound/soc/sh/rcar/src.c | 25 | ||||
-rw-r--r-- | sound/soc/sh/rcar/ssi.c | 39 |
5 files changed, 60 insertions, 73 deletions
diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index 74e2c4214058..6fa8709571ff 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c | |||
@@ -414,7 +414,7 @@ u32 rsnd_get_adinr(struct rsnd_mod *mod) | |||
414 | /* | 414 | /* |
415 | * rsnd_dai functions | 415 | * rsnd_dai functions |
416 | */ | 416 | */ |
417 | #define __rsnd_mod_call(mod, func, rdai...) \ | 417 | #define __rsnd_mod_call(mod, func, param...) \ |
418 | ({ \ | 418 | ({ \ |
419 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); \ | 419 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); \ |
420 | struct device *dev = rsnd_priv_to_dev(priv); \ | 420 | struct device *dev = rsnd_priv_to_dev(priv); \ |
@@ -424,18 +424,18 @@ u32 rsnd_get_adinr(struct rsnd_mod *mod) | |||
424 | if ((mod->status & mask) == call) { \ | 424 | if ((mod->status & mask) == call) { \ |
425 | dev_dbg(dev, "%s[%d] %s\n", \ | 425 | dev_dbg(dev, "%s[%d] %s\n", \ |
426 | rsnd_mod_name(mod), rsnd_mod_id(mod), #func); \ | 426 | rsnd_mod_name(mod), rsnd_mod_id(mod), #func); \ |
427 | ret = (mod)->ops->func(mod, rdai); \ | 427 | ret = (mod)->ops->func(mod, param); \ |
428 | mod->status = (mod->status & ~mask) | (~call & mask); \ | 428 | mod->status = (mod->status & ~mask) | (~call & mask); \ |
429 | } \ | 429 | } \ |
430 | ret; \ | 430 | ret; \ |
431 | }) | 431 | }) |
432 | 432 | ||
433 | #define rsnd_mod_call(mod, func, rdai...) \ | 433 | #define rsnd_mod_call(mod, func, param...) \ |
434 | (!(mod) ? -ENODEV : \ | 434 | (!(mod) ? -ENODEV : \ |
435 | !((mod)->ops->func) ? 0 : \ | 435 | !((mod)->ops->func) ? 0 : \ |
436 | __rsnd_mod_call(mod, func, rdai)) | 436 | __rsnd_mod_call(mod, func, param)) |
437 | 437 | ||
438 | #define rsnd_dai_call(fn, io, rdai...) \ | 438 | #define rsnd_dai_call(fn, io, param...) \ |
439 | ({ \ | 439 | ({ \ |
440 | struct rsnd_mod *mod; \ | 440 | struct rsnd_mod *mod; \ |
441 | int ret = 0, i; \ | 441 | int ret = 0, i; \ |
@@ -443,7 +443,7 @@ u32 rsnd_get_adinr(struct rsnd_mod *mod) | |||
443 | mod = (io)->mod[i]; \ | 443 | mod = (io)->mod[i]; \ |
444 | if (!mod) \ | 444 | if (!mod) \ |
445 | continue; \ | 445 | continue; \ |
446 | ret = rsnd_mod_call(mod, fn, rdai); \ | 446 | ret = rsnd_mod_call(mod, fn, param); \ |
447 | if (ret < 0) \ | 447 | if (ret < 0) \ |
448 | break; \ | 448 | break; \ |
449 | } \ | 449 | } \ |
@@ -585,20 +585,20 @@ static int rsnd_soc_dai_trigger(struct snd_pcm_substream *substream, int cmd, | |||
585 | if (ret < 0) | 585 | if (ret < 0) |
586 | goto dai_trigger_end; | 586 | goto dai_trigger_end; |
587 | 587 | ||
588 | ret = rsnd_dai_call(init, io, rdai); | 588 | ret = rsnd_dai_call(init, io, priv); |
589 | if (ret < 0) | 589 | if (ret < 0) |
590 | goto dai_trigger_end; | 590 | goto dai_trigger_end; |
591 | 591 | ||
592 | ret = rsnd_dai_call(start, io, rdai); | 592 | ret = rsnd_dai_call(start, io, priv); |
593 | if (ret < 0) | 593 | if (ret < 0) |
594 | goto dai_trigger_end; | 594 | goto dai_trigger_end; |
595 | break; | 595 | break; |
596 | case SNDRV_PCM_TRIGGER_STOP: | 596 | case SNDRV_PCM_TRIGGER_STOP: |
597 | ret = rsnd_dai_call(stop, io, rdai); | 597 | ret = rsnd_dai_call(stop, io, priv); |
598 | if (ret < 0) | 598 | if (ret < 0) |
599 | goto dai_trigger_end; | 599 | goto dai_trigger_end; |
600 | 600 | ||
601 | ret = rsnd_dai_call(quit, io, rdai); | 601 | ret = rsnd_dai_call(quit, io, priv); |
602 | if (ret < 0) | 602 | if (ret < 0) |
603 | goto dai_trigger_end; | 603 | goto dai_trigger_end; |
604 | 604 | ||
@@ -1109,11 +1109,11 @@ static int rsnd_pcm_new(struct snd_soc_pcm_runtime *rtd) | |||
1109 | struct rsnd_dai *rdai = rsnd_dai_to_rdai(dai); | 1109 | struct rsnd_dai *rdai = rsnd_dai_to_rdai(dai); |
1110 | int ret; | 1110 | int ret; |
1111 | 1111 | ||
1112 | ret = rsnd_dai_call(pcm_new, &rdai->playback, rdai, rtd); | 1112 | ret = rsnd_dai_call(pcm_new, &rdai->playback, rtd); |
1113 | if (ret) | 1113 | if (ret) |
1114 | return ret; | 1114 | return ret; |
1115 | 1115 | ||
1116 | ret = rsnd_dai_call(pcm_new, &rdai->capture, rdai, rtd); | 1116 | ret = rsnd_dai_call(pcm_new, &rdai->capture, rtd); |
1117 | if (ret) | 1117 | if (ret) |
1118 | return ret; | 1118 | return ret; |
1119 | 1119 | ||
@@ -1136,10 +1136,9 @@ static const struct snd_soc_component_driver rsnd_soc_component = { | |||
1136 | static int rsnd_rdai_continuance_probe(struct rsnd_priv *priv, | 1136 | static int rsnd_rdai_continuance_probe(struct rsnd_priv *priv, |
1137 | struct rsnd_dai_stream *io) | 1137 | struct rsnd_dai_stream *io) |
1138 | { | 1138 | { |
1139 | struct rsnd_dai *rdai = rsnd_io_to_rdai(io); | ||
1140 | int ret; | 1139 | int ret; |
1141 | 1140 | ||
1142 | ret = rsnd_dai_call(probe, io, rdai); | 1141 | ret = rsnd_dai_call(probe, io, priv); |
1143 | if (ret == -EAGAIN) { | 1142 | if (ret == -EAGAIN) { |
1144 | /* | 1143 | /* |
1145 | * Fallback to PIO mode | 1144 | * Fallback to PIO mode |
@@ -1152,7 +1151,7 @@ static int rsnd_rdai_continuance_probe(struct rsnd_priv *priv, | |||
1152 | * rsnd_dma_init() | 1151 | * rsnd_dma_init() |
1153 | * rsnd_ssi_fallback() | 1152 | * rsnd_ssi_fallback() |
1154 | */ | 1153 | */ |
1155 | rsnd_dai_call(remove, io, rdai); | 1154 | rsnd_dai_call(remove, io, priv); |
1156 | 1155 | ||
1157 | /* | 1156 | /* |
1158 | * remove SRC/DVC from DAI, | 1157 | * remove SRC/DVC from DAI, |
@@ -1163,13 +1162,13 @@ static int rsnd_rdai_continuance_probe(struct rsnd_priv *priv, | |||
1163 | /* | 1162 | /* |
1164 | * fallback | 1163 | * fallback |
1165 | */ | 1164 | */ |
1166 | rsnd_dai_call(fallback, io, rdai); | 1165 | rsnd_dai_call(fallback, io, priv); |
1167 | 1166 | ||
1168 | /* | 1167 | /* |
1169 | * retry to "probe". | 1168 | * retry to "probe". |
1170 | * DAI has SSI which is PIO mode only now. | 1169 | * DAI has SSI which is PIO mode only now. |
1171 | */ | 1170 | */ |
1172 | ret = rsnd_dai_call(probe, io, rdai); | 1171 | ret = rsnd_dai_call(probe, io, priv); |
1173 | } | 1172 | } |
1174 | 1173 | ||
1175 | return ret; | 1174 | return ret; |
@@ -1272,8 +1271,8 @@ exit_snd_soc: | |||
1272 | snd_soc_unregister_platform(dev); | 1271 | snd_soc_unregister_platform(dev); |
1273 | exit_snd_probe: | 1272 | exit_snd_probe: |
1274 | for_each_rsnd_dai(rdai, priv, i) { | 1273 | for_each_rsnd_dai(rdai, priv, i) { |
1275 | rsnd_dai_call(remove, &rdai->playback, rdai); | 1274 | rsnd_dai_call(remove, &rdai->playback, priv); |
1276 | rsnd_dai_call(remove, &rdai->capture, rdai); | 1275 | rsnd_dai_call(remove, &rdai->capture, priv); |
1277 | } | 1276 | } |
1278 | 1277 | ||
1279 | return ret; | 1278 | return ret; |
@@ -1288,8 +1287,8 @@ static int rsnd_remove(struct platform_device *pdev) | |||
1288 | pm_runtime_disable(&pdev->dev); | 1287 | pm_runtime_disable(&pdev->dev); |
1289 | 1288 | ||
1290 | for_each_rsnd_dai(rdai, priv, i) { | 1289 | for_each_rsnd_dai(rdai, priv, i) { |
1291 | ret |= rsnd_dai_call(remove, &rdai->playback, rdai); | 1290 | ret |= rsnd_dai_call(remove, &rdai->playback, priv); |
1292 | ret |= rsnd_dai_call(remove, &rdai->capture, rdai); | 1291 | ret |= rsnd_dai_call(remove, &rdai->capture, priv); |
1293 | } | 1292 | } |
1294 | 1293 | ||
1295 | return ret; | 1294 | return ret; |
diff --git a/sound/soc/sh/rcar/dvc.c b/sound/soc/sh/rcar/dvc.c index e24db9e4ee25..4ddca4f380c7 100644 --- a/sound/soc/sh/rcar/dvc.c +++ b/sound/soc/sh/rcar/dvc.c | |||
@@ -117,9 +117,8 @@ static void rsnd_dvc_volume_update(struct rsnd_mod *mod) | |||
117 | } | 117 | } |
118 | 118 | ||
119 | static int rsnd_dvc_probe_gen2(struct rsnd_mod *mod, | 119 | static int rsnd_dvc_probe_gen2(struct rsnd_mod *mod, |
120 | struct rsnd_dai *rdai) | 120 | struct rsnd_priv *priv) |
121 | { | 121 | { |
122 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
123 | struct device *dev = rsnd_priv_to_dev(priv); | 122 | struct device *dev = rsnd_priv_to_dev(priv); |
124 | 123 | ||
125 | dev_dbg(dev, "%s[%d] (Gen2) is probed\n", | 124 | dev_dbg(dev, "%s[%d] (Gen2) is probed\n", |
@@ -129,10 +128,9 @@ static int rsnd_dvc_probe_gen2(struct rsnd_mod *mod, | |||
129 | } | 128 | } |
130 | 129 | ||
131 | static int rsnd_dvc_init(struct rsnd_mod *dvc_mod, | 130 | static int rsnd_dvc_init(struct rsnd_mod *dvc_mod, |
132 | struct rsnd_dai *rdai) | 131 | struct rsnd_priv *priv) |
133 | { | 132 | { |
134 | struct rsnd_dai_stream *io = rsnd_mod_to_io(dvc_mod); | 133 | struct rsnd_dai_stream *io = rsnd_mod_to_io(dvc_mod); |
135 | struct rsnd_priv *priv = rsnd_mod_to_priv(dvc_mod); | ||
136 | struct rsnd_mod *src_mod = rsnd_io_to_mod_src(io); | 134 | struct rsnd_mod *src_mod = rsnd_io_to_mod_src(io); |
137 | struct device *dev = rsnd_priv_to_dev(priv); | 135 | struct device *dev = rsnd_priv_to_dev(priv); |
138 | int dvc_id = rsnd_mod_id(dvc_mod); | 136 | int dvc_id = rsnd_mod_id(dvc_mod); |
@@ -177,7 +175,7 @@ static int rsnd_dvc_init(struct rsnd_mod *dvc_mod, | |||
177 | } | 175 | } |
178 | 176 | ||
179 | static int rsnd_dvc_quit(struct rsnd_mod *mod, | 177 | static int rsnd_dvc_quit(struct rsnd_mod *mod, |
180 | struct rsnd_dai *rdai) | 178 | struct rsnd_priv *priv) |
181 | { | 179 | { |
182 | rsnd_mod_hw_stop(mod); | 180 | rsnd_mod_hw_stop(mod); |
183 | 181 | ||
@@ -185,7 +183,7 @@ static int rsnd_dvc_quit(struct rsnd_mod *mod, | |||
185 | } | 183 | } |
186 | 184 | ||
187 | static int rsnd_dvc_start(struct rsnd_mod *mod, | 185 | static int rsnd_dvc_start(struct rsnd_mod *mod, |
188 | struct rsnd_dai *rdai) | 186 | struct rsnd_priv *priv) |
189 | { | 187 | { |
190 | rsnd_mod_write(mod, CMD_CTRL, 0x10); | 188 | rsnd_mod_write(mod, CMD_CTRL, 0x10); |
191 | 189 | ||
@@ -193,7 +191,7 @@ static int rsnd_dvc_start(struct rsnd_mod *mod, | |||
193 | } | 191 | } |
194 | 192 | ||
195 | static int rsnd_dvc_stop(struct rsnd_mod *mod, | 193 | static int rsnd_dvc_stop(struct rsnd_mod *mod, |
196 | struct rsnd_dai *rdai) | 194 | struct rsnd_priv *priv) |
197 | { | 195 | { |
198 | rsnd_mod_write(mod, CMD_CTRL, 0); | 196 | rsnd_mod_write(mod, CMD_CTRL, 0); |
199 | 197 | ||
@@ -201,7 +199,6 @@ static int rsnd_dvc_stop(struct rsnd_mod *mod, | |||
201 | } | 199 | } |
202 | 200 | ||
203 | static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, | 201 | static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, |
204 | struct rsnd_dai *rdai, | ||
205 | struct snd_soc_pcm_runtime *rtd) | 202 | struct snd_soc_pcm_runtime *rtd) |
206 | { | 203 | { |
207 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); | 204 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); |
diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h index aaba717b8fd3..61545357f036 100644 --- a/sound/soc/sh/rcar/rsnd.h +++ b/sound/soc/sh/rcar/rsnd.h | |||
@@ -200,22 +200,21 @@ struct rsnd_mod_ops { | |||
200 | char *name; | 200 | char *name; |
201 | char* (*dma_name)(struct rsnd_mod *mod); | 201 | char* (*dma_name)(struct rsnd_mod *mod); |
202 | int (*probe)(struct rsnd_mod *mod, | 202 | int (*probe)(struct rsnd_mod *mod, |
203 | struct rsnd_dai *rdai); | 203 | struct rsnd_priv *priv); |
204 | int (*remove)(struct rsnd_mod *mod, | 204 | int (*remove)(struct rsnd_mod *mod, |
205 | struct rsnd_dai *rdai); | 205 | struct rsnd_priv *priv); |
206 | int (*init)(struct rsnd_mod *mod, | 206 | int (*init)(struct rsnd_mod *mod, |
207 | struct rsnd_dai *rdai); | 207 | struct rsnd_priv *priv); |
208 | int (*quit)(struct rsnd_mod *mod, | 208 | int (*quit)(struct rsnd_mod *mod, |
209 | struct rsnd_dai *rdai); | 209 | struct rsnd_priv *priv); |
210 | int (*start)(struct rsnd_mod *mod, | 210 | int (*start)(struct rsnd_mod *mod, |
211 | struct rsnd_dai *rdai); | 211 | struct rsnd_priv *priv); |
212 | int (*stop)(struct rsnd_mod *mod, | 212 | int (*stop)(struct rsnd_mod *mod, |
213 | struct rsnd_dai *rdai); | 213 | struct rsnd_priv *priv); |
214 | int (*pcm_new)(struct rsnd_mod *mod, | 214 | int (*pcm_new)(struct rsnd_mod *mod, |
215 | struct rsnd_dai *rdai, | ||
216 | struct snd_soc_pcm_runtime *rtd); | 215 | struct snd_soc_pcm_runtime *rtd); |
217 | int (*fallback)(struct rsnd_mod *mod, | 216 | int (*fallback)(struct rsnd_mod *mod, |
218 | struct rsnd_dai *rdai); | 217 | struct rsnd_priv *priv); |
219 | }; | 218 | }; |
220 | 219 | ||
221 | struct rsnd_dai_stream; | 220 | struct rsnd_dai_stream; |
diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c index 31e19a00655f..0d136cdc4ada 100644 --- a/sound/soc/sh/rcar/src.c +++ b/sound/soc/sh/rcar/src.c | |||
@@ -294,10 +294,9 @@ static int rsnd_src_init(struct rsnd_mod *mod) | |||
294 | } | 294 | } |
295 | 295 | ||
296 | static int rsnd_src_quit(struct rsnd_mod *mod, | 296 | static int rsnd_src_quit(struct rsnd_mod *mod, |
297 | struct rsnd_dai *rdai) | 297 | struct rsnd_priv *priv) |
298 | { | 298 | { |
299 | struct rsnd_src *src = rsnd_mod_to_src(mod); | 299 | struct rsnd_src *src = rsnd_mod_to_src(mod); |
300 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
301 | struct device *dev = rsnd_priv_to_dev(priv); | 300 | struct device *dev = rsnd_priv_to_dev(priv); |
302 | 301 | ||
303 | rsnd_mod_hw_stop(mod); | 302 | rsnd_mod_hw_stop(mod); |
@@ -449,9 +448,8 @@ static int rsnd_src_set_convert_rate_gen1(struct rsnd_mod *mod) | |||
449 | } | 448 | } |
450 | 449 | ||
451 | static int rsnd_src_probe_gen1(struct rsnd_mod *mod, | 450 | static int rsnd_src_probe_gen1(struct rsnd_mod *mod, |
452 | struct rsnd_dai *rdai) | 451 | struct rsnd_priv *priv) |
453 | { | 452 | { |
454 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
455 | struct device *dev = rsnd_priv_to_dev(priv); | 453 | struct device *dev = rsnd_priv_to_dev(priv); |
456 | 454 | ||
457 | dev_dbg(dev, "%s[%d] (Gen1) is probed\n", | 455 | dev_dbg(dev, "%s[%d] (Gen1) is probed\n", |
@@ -461,7 +459,7 @@ static int rsnd_src_probe_gen1(struct rsnd_mod *mod, | |||
461 | } | 459 | } |
462 | 460 | ||
463 | static int rsnd_src_init_gen1(struct rsnd_mod *mod, | 461 | static int rsnd_src_init_gen1(struct rsnd_mod *mod, |
464 | struct rsnd_dai *rdai) | 462 | struct rsnd_priv *priv) |
465 | { | 463 | { |
466 | int ret; | 464 | int ret; |
467 | 465 | ||
@@ -485,7 +483,7 @@ static int rsnd_src_init_gen1(struct rsnd_mod *mod, | |||
485 | } | 483 | } |
486 | 484 | ||
487 | static int rsnd_src_start_gen1(struct rsnd_mod *mod, | 485 | static int rsnd_src_start_gen1(struct rsnd_mod *mod, |
488 | struct rsnd_dai *rdai) | 486 | struct rsnd_priv *priv) |
489 | { | 487 | { |
490 | int id = rsnd_mod_id(mod); | 488 | int id = rsnd_mod_id(mod); |
491 | 489 | ||
@@ -495,7 +493,7 @@ static int rsnd_src_start_gen1(struct rsnd_mod *mod, | |||
495 | } | 493 | } |
496 | 494 | ||
497 | static int rsnd_src_stop_gen1(struct rsnd_mod *mod, | 495 | static int rsnd_src_stop_gen1(struct rsnd_mod *mod, |
498 | struct rsnd_dai *rdai) | 496 | struct rsnd_priv *priv) |
499 | { | 497 | { |
500 | int id = rsnd_mod_id(mod); | 498 | int id = rsnd_mod_id(mod); |
501 | 499 | ||
@@ -691,9 +689,8 @@ static int rsnd_src_set_convert_timing_gen2(struct rsnd_mod *mod) | |||
691 | } | 689 | } |
692 | 690 | ||
693 | static int rsnd_src_probe_gen2(struct rsnd_mod *mod, | 691 | static int rsnd_src_probe_gen2(struct rsnd_mod *mod, |
694 | struct rsnd_dai *rdai) | 692 | struct rsnd_priv *priv) |
695 | { | 693 | { |
696 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
697 | struct rsnd_src *src = rsnd_mod_to_src(mod); | 694 | struct rsnd_src *src = rsnd_mod_to_src(mod); |
698 | struct device *dev = rsnd_priv_to_dev(priv); | 695 | struct device *dev = rsnd_priv_to_dev(priv); |
699 | int irq = src->info->irq; | 696 | int irq = src->info->irq; |
@@ -733,15 +730,15 @@ rsnd_src_probe_gen2_fail: | |||
733 | } | 730 | } |
734 | 731 | ||
735 | static int rsnd_src_remove_gen2(struct rsnd_mod *mod, | 732 | static int rsnd_src_remove_gen2(struct rsnd_mod *mod, |
736 | struct rsnd_dai *rdai) | 733 | struct rsnd_priv *priv) |
737 | { | 734 | { |
738 | rsnd_dma_quit(rsnd_mod_to_priv(mod), rsnd_mod_to_dma(mod)); | 735 | rsnd_dma_quit(priv, rsnd_mod_to_dma(mod)); |
739 | 736 | ||
740 | return 0; | 737 | return 0; |
741 | } | 738 | } |
742 | 739 | ||
743 | static int rsnd_src_init_gen2(struct rsnd_mod *mod, | 740 | static int rsnd_src_init_gen2(struct rsnd_mod *mod, |
744 | struct rsnd_dai *rdai) | 741 | struct rsnd_priv *priv) |
745 | { | 742 | { |
746 | int ret; | 743 | int ret; |
747 | 744 | ||
@@ -761,7 +758,7 @@ static int rsnd_src_init_gen2(struct rsnd_mod *mod, | |||
761 | } | 758 | } |
762 | 759 | ||
763 | static int rsnd_src_start_gen2(struct rsnd_mod *mod, | 760 | static int rsnd_src_start_gen2(struct rsnd_mod *mod, |
764 | struct rsnd_dai *rdai) | 761 | struct rsnd_priv *priv) |
765 | { | 762 | { |
766 | rsnd_dma_start(rsnd_mod_to_dma(mod)); | 763 | rsnd_dma_start(rsnd_mod_to_dma(mod)); |
767 | 764 | ||
@@ -769,7 +766,7 @@ static int rsnd_src_start_gen2(struct rsnd_mod *mod, | |||
769 | } | 766 | } |
770 | 767 | ||
771 | static int rsnd_src_stop_gen2(struct rsnd_mod *mod, | 768 | static int rsnd_src_stop_gen2(struct rsnd_mod *mod, |
772 | struct rsnd_dai *rdai) | 769 | struct rsnd_priv *priv) |
773 | { | 770 | { |
774 | int ret; | 771 | int ret; |
775 | 772 | ||
diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index 6e36c53e7b8f..b5a2fd61029d 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c | |||
@@ -270,10 +270,11 @@ static void rsnd_ssi_hw_stop(struct rsnd_ssi *ssi) | |||
270 | * SSI mod common functions | 270 | * SSI mod common functions |
271 | */ | 271 | */ |
272 | static int rsnd_ssi_init(struct rsnd_mod *mod, | 272 | static int rsnd_ssi_init(struct rsnd_mod *mod, |
273 | struct rsnd_dai *rdai) | 273 | struct rsnd_priv *priv) |
274 | { | 274 | { |
275 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); | 275 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); |
276 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); | 276 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); |
277 | struct rsnd_dai *rdai = rsnd_io_to_rdai(io); | ||
277 | struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); | 278 | struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); |
278 | u32 cr; | 279 | u32 cr; |
279 | 280 | ||
@@ -320,10 +321,9 @@ static int rsnd_ssi_init(struct rsnd_mod *mod, | |||
320 | } | 321 | } |
321 | 322 | ||
322 | static int rsnd_ssi_quit(struct rsnd_mod *mod, | 323 | static int rsnd_ssi_quit(struct rsnd_mod *mod, |
323 | struct rsnd_dai *rdai) | 324 | struct rsnd_priv *priv) |
324 | { | 325 | { |
325 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); | 326 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); |
326 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
327 | struct device *dev = rsnd_priv_to_dev(priv); | 327 | struct device *dev = rsnd_priv_to_dev(priv); |
328 | 328 | ||
329 | if (ssi->err > 0) | 329 | if (ssi->err > 0) |
@@ -347,7 +347,7 @@ static void rsnd_ssi_record_error(struct rsnd_ssi *ssi, u32 status) | |||
347 | } | 347 | } |
348 | 348 | ||
349 | static int rsnd_ssi_start(struct rsnd_mod *mod, | 349 | static int rsnd_ssi_start(struct rsnd_mod *mod, |
350 | struct rsnd_dai *rdai) | 350 | struct rsnd_priv *priv) |
351 | { | 351 | { |
352 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); | 352 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); |
353 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); | 353 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); |
@@ -362,7 +362,7 @@ static int rsnd_ssi_start(struct rsnd_mod *mod, | |||
362 | } | 362 | } |
363 | 363 | ||
364 | static int rsnd_ssi_stop(struct rsnd_mod *mod, | 364 | static int rsnd_ssi_stop(struct rsnd_mod *mod, |
365 | struct rsnd_dai *rdai) | 365 | struct rsnd_priv *priv) |
366 | { | 366 | { |
367 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); | 367 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); |
368 | 368 | ||
@@ -381,8 +381,8 @@ static irqreturn_t rsnd_ssi_interrupt(int irq, void *data) | |||
381 | { | 381 | { |
382 | struct rsnd_ssi *ssi = data; | 382 | struct rsnd_ssi *ssi = data; |
383 | struct rsnd_mod *mod = &ssi->mod; | 383 | struct rsnd_mod *mod = &ssi->mod; |
384 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
384 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); | 385 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); |
385 | struct rsnd_dai *rdai = rsnd_io_to_rdai(io); | ||
386 | u32 status = rsnd_mod_read(mod, SSISR); | 386 | u32 status = rsnd_mod_read(mod, SSISR); |
387 | 387 | ||
388 | if (!io) | 388 | if (!io) |
@@ -409,14 +409,13 @@ static irqreturn_t rsnd_ssi_interrupt(int irq, void *data) | |||
409 | 409 | ||
410 | /* PIO / DMA */ | 410 | /* PIO / DMA */ |
411 | if (status & (UIRQ | OIRQ)) { | 411 | if (status & (UIRQ | OIRQ)) { |
412 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
413 | struct device *dev = rsnd_priv_to_dev(priv); | 412 | struct device *dev = rsnd_priv_to_dev(priv); |
414 | 413 | ||
415 | /* | 414 | /* |
416 | * restart SSI | 415 | * restart SSI |
417 | */ | 416 | */ |
418 | rsnd_ssi_stop(mod, rdai); | 417 | rsnd_ssi_stop(mod, priv); |
419 | rsnd_ssi_start(mod, rdai); | 418 | rsnd_ssi_start(mod, priv); |
420 | 419 | ||
421 | dev_dbg(dev, "%s[%d] restart\n", | 420 | dev_dbg(dev, "%s[%d] restart\n", |
422 | rsnd_mod_name(mod), rsnd_mod_id(mod)); | 421 | rsnd_mod_name(mod), rsnd_mod_id(mod)); |
@@ -431,9 +430,8 @@ static irqreturn_t rsnd_ssi_interrupt(int irq, void *data) | |||
431 | * SSI PIO | 430 | * SSI PIO |
432 | */ | 431 | */ |
433 | static int rsnd_ssi_pio_probe(struct rsnd_mod *mod, | 432 | static int rsnd_ssi_pio_probe(struct rsnd_mod *mod, |
434 | struct rsnd_dai *rdai) | 433 | struct rsnd_priv *priv) |
435 | { | 434 | { |
436 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
437 | struct device *dev = rsnd_priv_to_dev(priv); | 435 | struct device *dev = rsnd_priv_to_dev(priv); |
438 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); | 436 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); |
439 | int ret; | 437 | int ret; |
@@ -462,9 +460,8 @@ static struct rsnd_mod_ops rsnd_ssi_pio_ops = { | |||
462 | }; | 460 | }; |
463 | 461 | ||
464 | static int rsnd_ssi_dma_probe(struct rsnd_mod *mod, | 462 | static int rsnd_ssi_dma_probe(struct rsnd_mod *mod, |
465 | struct rsnd_dai *rdai) | 463 | struct rsnd_priv *priv) |
466 | { | 464 | { |
467 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
468 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); | 465 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); |
469 | struct device *dev = rsnd_priv_to_dev(priv); | 466 | struct device *dev = rsnd_priv_to_dev(priv); |
470 | int dma_id = ssi->info->dma_id; | 467 | int dma_id = ssi->info->dma_id; |
@@ -497,14 +494,13 @@ rsnd_ssi_dma_probe_fail: | |||
497 | } | 494 | } |
498 | 495 | ||
499 | static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, | 496 | static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, |
500 | struct rsnd_dai *rdai) | 497 | struct rsnd_priv *priv) |
501 | { | 498 | { |
502 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
503 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); | 499 | struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); |
504 | struct device *dev = rsnd_priv_to_dev(priv); | 500 | struct device *dev = rsnd_priv_to_dev(priv); |
505 | int irq = ssi->info->irq; | 501 | int irq = ssi->info->irq; |
506 | 502 | ||
507 | rsnd_dma_quit(rsnd_mod_to_priv(mod), rsnd_mod_to_dma(mod)); | 503 | rsnd_dma_quit(priv, rsnd_mod_to_dma(mod)); |
508 | 504 | ||
509 | /* PIO will request IRQ again */ | 505 | /* PIO will request IRQ again */ |
510 | devm_free_irq(dev, irq, ssi); | 506 | devm_free_irq(dev, irq, ssi); |
@@ -513,9 +509,8 @@ static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, | |||
513 | } | 509 | } |
514 | 510 | ||
515 | static int rsnd_ssi_fallback(struct rsnd_mod *mod, | 511 | static int rsnd_ssi_fallback(struct rsnd_mod *mod, |
516 | struct rsnd_dai *rdai) | 512 | struct rsnd_priv *priv) |
517 | { | 513 | { |
518 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
519 | struct device *dev = rsnd_priv_to_dev(priv); | 514 | struct device *dev = rsnd_priv_to_dev(priv); |
520 | 515 | ||
521 | /* | 516 | /* |
@@ -534,11 +529,11 @@ static int rsnd_ssi_fallback(struct rsnd_mod *mod, | |||
534 | } | 529 | } |
535 | 530 | ||
536 | static int rsnd_ssi_dma_start(struct rsnd_mod *mod, | 531 | static int rsnd_ssi_dma_start(struct rsnd_mod *mod, |
537 | struct rsnd_dai *rdai) | 532 | struct rsnd_priv *priv) |
538 | { | 533 | { |
539 | struct rsnd_dma *dma = rsnd_mod_to_dma(mod); | 534 | struct rsnd_dma *dma = rsnd_mod_to_dma(mod); |
540 | 535 | ||
541 | rsnd_ssi_start(mod, rdai); | 536 | rsnd_ssi_start(mod, priv); |
542 | 537 | ||
543 | rsnd_dma_start(dma); | 538 | rsnd_dma_start(dma); |
544 | 539 | ||
@@ -546,13 +541,13 @@ static int rsnd_ssi_dma_start(struct rsnd_mod *mod, | |||
546 | } | 541 | } |
547 | 542 | ||
548 | static int rsnd_ssi_dma_stop(struct rsnd_mod *mod, | 543 | static int rsnd_ssi_dma_stop(struct rsnd_mod *mod, |
549 | struct rsnd_dai *rdai) | 544 | struct rsnd_priv *priv) |
550 | { | 545 | { |
551 | struct rsnd_dma *dma = rsnd_mod_to_dma(mod); | 546 | struct rsnd_dma *dma = rsnd_mod_to_dma(mod); |
552 | 547 | ||
553 | rsnd_dma_stop(dma); | 548 | rsnd_dma_stop(dma); |
554 | 549 | ||
555 | rsnd_ssi_stop(mod, rdai); | 550 | rsnd_ssi_stop(mod, priv); |
556 | 551 | ||
557 | return 0; | 552 | return 0; |
558 | } | 553 | } |