aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/sh/rcar/src.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/sh/rcar/src.c')
-rw-r--r--sound/soc/sh/rcar/src.c190
1 files changed, 65 insertions, 125 deletions
diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c
index 4d0720ed5a90..e3b078e7c3aa 100644
--- a/sound/soc/sh/rcar/src.c
+++ b/sound/soc/sh/rcar/src.c
@@ -18,21 +18,9 @@ struct rsnd_src {
18 18
19#define RSND_SRC_NAME_SIZE 16 19#define RSND_SRC_NAME_SIZE 16
20 20
21/*
22 * ADINR
23 */
24#define OTBL_24 (0 << 16)
25#define OTBL_22 (2 << 16)
26#define OTBL_20 (4 << 16)
27#define OTBL_18 (6 << 16)
28#define OTBL_16 (8 << 16)
29
30#define rsnd_src_mode_flags(p) ((p)->info->flags)
31#define rsnd_src_convert_rate(p) ((p)->info->convert_rate) 21#define rsnd_src_convert_rate(p) ((p)->info->convert_rate)
32#define rsnd_mod_to_src(_mod) \ 22#define rsnd_mod_to_src(_mod) \
33 container_of((_mod), struct rsnd_src, mod) 23 container_of((_mod), struct rsnd_src, mod)
34#define rsnd_src_hpbif_is_enable(src) \
35 (rsnd_src_mode_flags(src) & RSND_SCU_USE_HPBIF)
36#define rsnd_src_dma_available(src) \ 24#define rsnd_src_dma_available(src) \
37 rsnd_dma_available(rsnd_mod_to_dma(&(src)->mod)) 25 rsnd_dma_available(rsnd_mod_to_dma(&(src)->mod))
38 26
@@ -80,34 +68,35 @@ struct rsnd_src {
80 * 68 *
81 * This driver request 69 * This driver request
82 * struct rsnd_src_platform_info { 70 * struct rsnd_src_platform_info {
83 * u32 flags;
84 * u32 convert_rate; 71 * u32 convert_rate;
72 * int dma_id;
85 * } 73 * }
86 * 74 *
87 * rsnd_src_hpbif_is_enable() will be true
88 * if flags had RSND_SRC_USE_HPBIF,
89 * and it controls whether SSIU is used or not.
90 *
91 * rsnd_src_convert_rate() indicates 75 * rsnd_src_convert_rate() indicates
92 * above convert_rate, and it controls 76 * above convert_rate, and it controls
93 * whether SRC is used or not. 77 * whether SRC is used or not.
94 * 78 *
95 * ex) doesn't use SRC 79 * ex) doesn't use SRC
96 * struct rsnd_src_platform_info info = { 80 * static struct rsnd_dai_platform_info rsnd_dai = {
97 * .flags = 0, 81 * .playback = { .ssi = &rsnd_ssi[0], },
98 * .convert_rate = 0,
99 * }; 82 * };
100 * 83 *
101 * ex) uses SRC 84 * ex) uses SRC
102 * struct rsnd_src_platform_info info = { 85 * static struct rsnd_src_platform_info rsnd_src[] = {
103 * .flags = RSND_SRC_USE_HPBIF, 86 * RSND_SCU(48000, 0),
104 * .convert_rate = 48000, 87 * ...
88 * };
89 * static struct rsnd_dai_platform_info rsnd_dai = {
90 * .playback = { .ssi = &rsnd_ssi[0], .src = &rsnd_src[0] },
105 * }; 91 * };
106 * 92 *
107 * ex) uses SRC bypass mode 93 * ex) uses SRC bypass mode
108 * struct rsnd_src_platform_info info = { 94 * static struct rsnd_src_platform_info rsnd_src[] = {
109 * .flags = RSND_SRC_USE_HPBIF, 95 * RSND_SCU(0, 0),
110 * .convert_rate = 0, 96 * ...
97 * };
98 * static struct rsnd_dai_platform_info rsnd_dai = {
99 * .playback = { .ssi = &rsnd_ssi[0], .src = &rsnd_src[0] },
111 * }; 100 * };
112 * 101 *
113 */ 102 */
@@ -116,27 +105,17 @@ struct rsnd_src {
116 * Gen1/Gen2 common functions 105 * Gen1/Gen2 common functions
117 */ 106 */
118int rsnd_src_ssi_mode_init(struct rsnd_mod *ssi_mod, 107int rsnd_src_ssi_mode_init(struct rsnd_mod *ssi_mod,
119 struct rsnd_dai *rdai, 108 struct rsnd_dai *rdai)
120 struct rsnd_dai_stream *io)
121{ 109{
122 struct rsnd_priv *priv = rsnd_mod_to_priv(ssi_mod); 110 struct rsnd_dai_stream *io = rsnd_mod_to_io(ssi_mod);
123 struct rsnd_mod *src_mod = rsnd_io_to_mod_src(io); 111 struct rsnd_mod *src_mod = rsnd_io_to_mod_src(io);
124 struct rcar_snd_info *info = rsnd_priv_to_info(priv);
125 int ssi_id = rsnd_mod_id(ssi_mod); 112 int ssi_id = rsnd_mod_id(ssi_mod);
126 int has_src = 0;
127 113
128 /* 114 /*
129 * SSI_MODE0 115 * SSI_MODE0
130 */ 116 */
131 if (info->dai_info) {
132 has_src = !!src_mod;
133 } else {
134 struct rsnd_src *src = rsnd_mod_to_src(src_mod);
135 has_src = rsnd_src_hpbif_is_enable(src);
136 }
137
138 rsnd_mod_bset(ssi_mod, SSI_MODE0, (1 << ssi_id), 117 rsnd_mod_bset(ssi_mod, SSI_MODE0, (1 << ssi_id),
139 has_src ? 0 : (1 << ssi_id)); 118 src_mod ? 0 : (1 << ssi_id));
140 119
141 /* 120 /*
142 * SSI_MODE1 121 * SSI_MODE1
@@ -166,8 +145,7 @@ int rsnd_src_ssi_mode_init(struct rsnd_mod *ssi_mod,
166} 145}
167 146
168int rsnd_src_enable_ssi_irq(struct rsnd_mod *ssi_mod, 147int rsnd_src_enable_ssi_irq(struct rsnd_mod *ssi_mod,
169 struct rsnd_dai *rdai, 148 struct rsnd_dai *rdai)
170 struct rsnd_dai_stream *io)
171{ 149{
172 struct rsnd_priv *priv = rsnd_mod_to_priv(ssi_mod); 150 struct rsnd_priv *priv = rsnd_mod_to_priv(ssi_mod);
173 151
@@ -203,13 +181,12 @@ unsigned int rsnd_src_get_ssi_rate(struct rsnd_priv *priv,
203} 181}
204 182
205static int rsnd_src_set_convert_rate(struct rsnd_mod *mod, 183static int rsnd_src_set_convert_rate(struct rsnd_mod *mod,
206 struct rsnd_dai *rdai, 184 struct rsnd_dai *rdai)
207 struct rsnd_dai_stream *io)
208{ 185{
186 struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
209 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); 187 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
210 struct rsnd_src *src = rsnd_mod_to_src(mod); 188 struct rsnd_src *src = rsnd_mod_to_src(mod);
211 u32 convert_rate = rsnd_src_convert_rate(src); 189 u32 convert_rate = rsnd_src_convert_rate(src);
212 u32 adinr = runtime->channels;
213 u32 fsrate = 0; 190 u32 fsrate = 0;
214 191
215 if (convert_rate) 192 if (convert_rate)
@@ -226,17 +203,7 @@ static int rsnd_src_set_convert_rate(struct rsnd_mod *mod,
226 rsnd_mod_write(mod, SRC_SRCIR, 1); 203 rsnd_mod_write(mod, SRC_SRCIR, 1);
227 204
228 /* Set channel number and output bit length */ 205 /* Set channel number and output bit length */
229 switch (runtime->sample_bits) { 206 rsnd_mod_write(mod, SRC_ADINR, rsnd_get_adinr(mod));
230 case 16:
231 adinr |= OTBL_16;
232 break;
233 case 32:
234 adinr |= OTBL_24;
235 break;
236 default:
237 return -EIO;
238 }
239 rsnd_mod_write(mod, SRC_ADINR, adinr);
240 207
241 /* Enable the initial value of IFS */ 208 /* Enable the initial value of IFS */
242 if (fsrate) { 209 if (fsrate) {
@@ -253,8 +220,7 @@ static int rsnd_src_set_convert_rate(struct rsnd_mod *mod,
253} 220}
254 221
255static int rsnd_src_init(struct rsnd_mod *mod, 222static int rsnd_src_init(struct rsnd_mod *mod,
256 struct rsnd_dai *rdai, 223 struct rsnd_dai *rdai)
257 struct rsnd_dai_stream *io)
258{ 224{
259 struct rsnd_src *src = rsnd_mod_to_src(mod); 225 struct rsnd_src *src = rsnd_mod_to_src(mod);
260 226
@@ -264,8 +230,7 @@ static int rsnd_src_init(struct rsnd_mod *mod,
264} 230}
265 231
266static int rsnd_src_quit(struct rsnd_mod *mod, 232static int rsnd_src_quit(struct rsnd_mod *mod,
267 struct rsnd_dai *rdai, 233 struct rsnd_dai *rdai)
268 struct rsnd_dai_stream *io)
269{ 234{
270 struct rsnd_src *src = rsnd_mod_to_src(mod); 235 struct rsnd_src *src = rsnd_mod_to_src(mod);
271 236
@@ -275,8 +240,7 @@ static int rsnd_src_quit(struct rsnd_mod *mod,
275} 240}
276 241
277static int rsnd_src_start(struct rsnd_mod *mod, 242static int rsnd_src_start(struct rsnd_mod *mod,
278 struct rsnd_dai *rdai, 243 struct rsnd_dai *rdai)
279 struct rsnd_dai_stream *io)
280{ 244{
281 struct rsnd_src *src = rsnd_mod_to_src(mod); 245 struct rsnd_src *src = rsnd_mod_to_src(mod);
282 246
@@ -294,8 +258,7 @@ static int rsnd_src_start(struct rsnd_mod *mod,
294 258
295 259
296static int rsnd_src_stop(struct rsnd_mod *mod, 260static int rsnd_src_stop(struct rsnd_mod *mod,
297 struct rsnd_dai *rdai, 261 struct rsnd_dai *rdai)
298 struct rsnd_dai_stream *io)
299{ 262{
300 struct rsnd_src *src = rsnd_mod_to_src(mod); 263 struct rsnd_src *src = rsnd_mod_to_src(mod);
301 264
@@ -313,9 +276,9 @@ static struct rsnd_mod_ops rsnd_src_non_ops = {
313 * Gen1 functions 276 * Gen1 functions
314 */ 277 */
315static int rsnd_src_set_route_gen1(struct rsnd_mod *mod, 278static int rsnd_src_set_route_gen1(struct rsnd_mod *mod,
316 struct rsnd_dai *rdai, 279 struct rsnd_dai *rdai)
317 struct rsnd_dai_stream *io)
318{ 280{
281 struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
319 struct src_route_config { 282 struct src_route_config {
320 u32 mask; 283 u32 mask;
321 int shift; 284 int shift;
@@ -351,9 +314,9 @@ static int rsnd_src_set_route_gen1(struct rsnd_mod *mod,
351} 314}
352 315
353static int rsnd_src_set_convert_timing_gen1(struct rsnd_mod *mod, 316static int rsnd_src_set_convert_timing_gen1(struct rsnd_mod *mod,
354 struct rsnd_dai *rdai, 317 struct rsnd_dai *rdai)
355 struct rsnd_dai_stream *io)
356{ 318{
319 struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
357 struct rsnd_priv *priv = rsnd_mod_to_priv(mod); 320 struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
358 struct rsnd_src *src = rsnd_mod_to_src(mod); 321 struct rsnd_src *src = rsnd_mod_to_src(mod);
359 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); 322 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
@@ -410,12 +373,11 @@ static int rsnd_src_set_convert_timing_gen1(struct rsnd_mod *mod,
410} 373}
411 374
412static int rsnd_src_set_convert_rate_gen1(struct rsnd_mod *mod, 375static int rsnd_src_set_convert_rate_gen1(struct rsnd_mod *mod,
413 struct rsnd_dai *rdai, 376 struct rsnd_dai *rdai)
414 struct rsnd_dai_stream *io)
415{ 377{
416 int ret; 378 int ret;
417 379
418 ret = rsnd_src_set_convert_rate(mod, rdai, io); 380 ret = rsnd_src_set_convert_rate(mod, rdai);
419 if (ret < 0) 381 if (ret < 0)
420 return ret; 382 return ret;
421 383
@@ -432,24 +394,23 @@ static int rsnd_src_set_convert_rate_gen1(struct rsnd_mod *mod,
432} 394}
433 395
434static int rsnd_src_init_gen1(struct rsnd_mod *mod, 396static int rsnd_src_init_gen1(struct rsnd_mod *mod,
435 struct rsnd_dai *rdai, 397 struct rsnd_dai *rdai)
436 struct rsnd_dai_stream *io)
437{ 398{
438 int ret; 399 int ret;
439 400
440 ret = rsnd_src_init(mod, rdai, io); 401 ret = rsnd_src_init(mod, rdai);
441 if (ret < 0) 402 if (ret < 0)
442 return ret; 403 return ret;
443 404
444 ret = rsnd_src_set_route_gen1(mod, rdai, io); 405 ret = rsnd_src_set_route_gen1(mod, rdai);
445 if (ret < 0) 406 if (ret < 0)
446 return ret; 407 return ret;
447 408
448 ret = rsnd_src_set_convert_rate_gen1(mod, rdai, io); 409 ret = rsnd_src_set_convert_rate_gen1(mod, rdai);
449 if (ret < 0) 410 if (ret < 0)
450 return ret; 411 return ret;
451 412
452 ret = rsnd_src_set_convert_timing_gen1(mod, rdai, io); 413 ret = rsnd_src_set_convert_timing_gen1(mod, rdai);
453 if (ret < 0) 414 if (ret < 0)
454 return ret; 415 return ret;
455 416
@@ -457,25 +418,23 @@ static int rsnd_src_init_gen1(struct rsnd_mod *mod,
457} 418}
458 419
459static int rsnd_src_start_gen1(struct rsnd_mod *mod, 420static int rsnd_src_start_gen1(struct rsnd_mod *mod,
460 struct rsnd_dai *rdai, 421 struct rsnd_dai *rdai)
461 struct rsnd_dai_stream *io)
462{ 422{
463 int id = rsnd_mod_id(mod); 423 int id = rsnd_mod_id(mod);
464 424
465 rsnd_mod_bset(mod, SRC_ROUTE_CTRL, (1 << id), (1 << id)); 425 rsnd_mod_bset(mod, SRC_ROUTE_CTRL, (1 << id), (1 << id));
466 426
467 return rsnd_src_start(mod, rdai, io); 427 return rsnd_src_start(mod, rdai);
468} 428}
469 429
470static int rsnd_src_stop_gen1(struct rsnd_mod *mod, 430static int rsnd_src_stop_gen1(struct rsnd_mod *mod,
471 struct rsnd_dai *rdai, 431 struct rsnd_dai *rdai)
472 struct rsnd_dai_stream *io)
473{ 432{
474 int id = rsnd_mod_id(mod); 433 int id = rsnd_mod_id(mod);
475 434
476 rsnd_mod_bset(mod, SRC_ROUTE_CTRL, (1 << id), 0); 435 rsnd_mod_bset(mod, SRC_ROUTE_CTRL, (1 << id), 0);
477 436
478 return rsnd_src_stop(mod, rdai, io); 437 return rsnd_src_stop(mod, rdai);
479} 438}
480 439
481static struct rsnd_mod_ops rsnd_src_gen1_ops = { 440static struct rsnd_mod_ops rsnd_src_gen1_ops = {
@@ -490,17 +449,16 @@ static struct rsnd_mod_ops rsnd_src_gen1_ops = {
490 * Gen2 functions 449 * Gen2 functions
491 */ 450 */
492static int rsnd_src_set_convert_rate_gen2(struct rsnd_mod *mod, 451static int rsnd_src_set_convert_rate_gen2(struct rsnd_mod *mod,
493 struct rsnd_dai *rdai, 452 struct rsnd_dai *rdai)
494 struct rsnd_dai_stream *io)
495{ 453{
496 int ret; 454 int ret;
497 455
498 ret = rsnd_src_set_convert_rate(mod, rdai, io); 456 ret = rsnd_src_set_convert_rate(mod, rdai);
499 if (ret < 0) 457 if (ret < 0)
500 return ret; 458 return ret;
501 459
502 rsnd_mod_write(mod, SSI_BUSIF_ADINR, rsnd_mod_read(mod, SRC_ADINR)); 460 rsnd_mod_write(mod, SSI_BUSIF_ADINR, rsnd_get_adinr(mod));
503 rsnd_mod_write(mod, SSI_BUSIF_MODE, rsnd_mod_read(mod, SRC_BUSIF_MODE)); 461 rsnd_mod_write(mod, SSI_BUSIF_MODE, 1);
504 462
505 rsnd_mod_write(mod, SRC_SRCCR, 0x00011110); 463 rsnd_mod_write(mod, SRC_SRCCR, 0x00011110);
506 464
@@ -511,9 +469,9 @@ static int rsnd_src_set_convert_rate_gen2(struct rsnd_mod *mod,
511} 469}
512 470
513static int rsnd_src_set_convert_timing_gen2(struct rsnd_mod *mod, 471static int rsnd_src_set_convert_timing_gen2(struct rsnd_mod *mod,
514 struct rsnd_dai *rdai, 472 struct rsnd_dai *rdai)
515 struct rsnd_dai_stream *io)
516{ 473{
474 struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
517 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); 475 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
518 struct rsnd_src *src = rsnd_mod_to_src(mod); 476 struct rsnd_src *src = rsnd_mod_to_src(mod);
519 u32 convert_rate = rsnd_src_convert_rate(src); 477 u32 convert_rate = rsnd_src_convert_rate(src);
@@ -530,25 +488,16 @@ static int rsnd_src_set_convert_timing_gen2(struct rsnd_mod *mod,
530} 488}
531 489
532static int rsnd_src_probe_gen2(struct rsnd_mod *mod, 490static int rsnd_src_probe_gen2(struct rsnd_mod *mod,
533 struct rsnd_dai *rdai, 491 struct rsnd_dai *rdai)
534 struct rsnd_dai_stream *io)
535{ 492{
536 struct rsnd_priv *priv = rsnd_mod_to_priv(mod); 493 struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
537 struct rcar_snd_info *info = rsnd_priv_to_info(priv);
538 struct rsnd_src *src = rsnd_mod_to_src(mod); 494 struct rsnd_src *src = rsnd_mod_to_src(mod);
539 struct rsnd_mod *ssi = rsnd_ssi_mod_get(priv, rsnd_mod_id(mod));
540 struct device *dev = rsnd_priv_to_dev(priv); 495 struct device *dev = rsnd_priv_to_dev(priv);
541 int ret; 496 int ret;
542 int is_play;
543
544 if (info->dai_info)
545 is_play = rsnd_info_is_playback(priv, src);
546 else
547 is_play = rsnd_ssi_is_play(ssi);
548 497
549 ret = rsnd_dma_init(priv, 498 ret = rsnd_dma_init(priv,
550 rsnd_mod_to_dma(mod), 499 rsnd_mod_to_dma(mod),
551 is_play, 500 rsnd_info_is_playback(priv, src),
552 src->info->dma_id); 501 src->info->dma_id);
553 if (ret < 0) 502 if (ret < 0)
554 dev_err(dev, "SRC DMA failed\n"); 503 dev_err(dev, "SRC DMA failed\n");
@@ -557,8 +506,7 @@ static int rsnd_src_probe_gen2(struct rsnd_mod *mod,
557} 506}
558 507
559static int rsnd_src_remove_gen2(struct rsnd_mod *mod, 508static int rsnd_src_remove_gen2(struct rsnd_mod *mod,
560 struct rsnd_dai *rdai, 509 struct rsnd_dai *rdai)
561 struct rsnd_dai_stream *io)
562{ 510{
563 rsnd_dma_quit(rsnd_mod_to_priv(mod), rsnd_mod_to_dma(mod)); 511 rsnd_dma_quit(rsnd_mod_to_priv(mod), rsnd_mod_to_dma(mod));
564 512
@@ -566,20 +514,19 @@ static int rsnd_src_remove_gen2(struct rsnd_mod *mod,
566} 514}
567 515
568static int rsnd_src_init_gen2(struct rsnd_mod *mod, 516static int rsnd_src_init_gen2(struct rsnd_mod *mod,
569 struct rsnd_dai *rdai, 517 struct rsnd_dai *rdai)
570 struct rsnd_dai_stream *io)
571{ 518{
572 int ret; 519 int ret;
573 520
574 ret = rsnd_src_init(mod, rdai, io); 521 ret = rsnd_src_init(mod, rdai);
575 if (ret < 0) 522 if (ret < 0)
576 return ret; 523 return ret;
577 524
578 ret = rsnd_src_set_convert_rate_gen2(mod, rdai, io); 525 ret = rsnd_src_set_convert_rate_gen2(mod, rdai);
579 if (ret < 0) 526 if (ret < 0)
580 return ret; 527 return ret;
581 528
582 ret = rsnd_src_set_convert_timing_gen2(mod, rdai, io); 529 ret = rsnd_src_set_convert_timing_gen2(mod, rdai);
583 if (ret < 0) 530 if (ret < 0)
584 return ret; 531 return ret;
585 532
@@ -587,22 +534,22 @@ static int rsnd_src_init_gen2(struct rsnd_mod *mod,
587} 534}
588 535
589static int rsnd_src_start_gen2(struct rsnd_mod *mod, 536static int rsnd_src_start_gen2(struct rsnd_mod *mod,
590 struct rsnd_dai *rdai, 537 struct rsnd_dai *rdai)
591 struct rsnd_dai_stream *io)
592{ 538{
539 struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
593 struct rsnd_src *src = rsnd_mod_to_src(mod); 540 struct rsnd_src *src = rsnd_mod_to_src(mod);
541 u32 val = rsnd_io_to_mod_dvc(io) ? 0x01 : 0x11;
594 542
595 rsnd_dma_start(rsnd_mod_to_dma(&src->mod)); 543 rsnd_dma_start(rsnd_mod_to_dma(&src->mod));
596 544
597 rsnd_mod_write(mod, SSI_CTRL, 0x1); 545 rsnd_mod_write(mod, SSI_CTRL, 0x1);
598 rsnd_mod_write(mod, SRC_CTRL, 0x11); 546 rsnd_mod_write(mod, SRC_CTRL, val);
599 547
600 return rsnd_src_start(mod, rdai, io); 548 return rsnd_src_start(mod, rdai);
601} 549}
602 550
603static int rsnd_src_stop_gen2(struct rsnd_mod *mod, 551static int rsnd_src_stop_gen2(struct rsnd_mod *mod,
604 struct rsnd_dai *rdai, 552 struct rsnd_dai *rdai)
605 struct rsnd_dai_stream *io)
606{ 553{
607 struct rsnd_src *src = rsnd_mod_to_src(mod); 554 struct rsnd_src *src = rsnd_mod_to_src(mod);
608 555
@@ -611,7 +558,7 @@ static int rsnd_src_stop_gen2(struct rsnd_mod *mod,
611 558
612 rsnd_dma_stop(rsnd_mod_to_dma(&src->mod)); 559 rsnd_dma_stop(rsnd_mod_to_dma(&src->mod));
613 560
614 return rsnd_src_stop(mod, rdai, io); 561 return rsnd_src_stop(mod, rdai);
615} 562}
616 563
617static struct rsnd_mod_ops rsnd_src_gen2_ops = { 564static struct rsnd_mod_ops rsnd_src_gen2_ops = {
@@ -699,11 +646,6 @@ int rsnd_src_probe(struct platform_device *pdev,
699 snprintf(name, RSND_SRC_NAME_SIZE, "src.%d", i); 646 snprintf(name, RSND_SRC_NAME_SIZE, "src.%d", i);
700 647
701 clk = devm_clk_get(dev, name); 648 clk = devm_clk_get(dev, name);
702 if (IS_ERR(clk)) {
703 snprintf(name, RSND_SRC_NAME_SIZE, "scu.%d", i);
704 clk = devm_clk_get(dev, name);
705 }
706
707 if (IS_ERR(clk)) 649 if (IS_ERR(clk))
708 return PTR_ERR(clk); 650 return PTR_ERR(clk);
709 651
@@ -711,12 +653,10 @@ int rsnd_src_probe(struct platform_device *pdev,
711 src->clk = clk; 653 src->clk = clk;
712 654
713 ops = &rsnd_src_non_ops; 655 ops = &rsnd_src_non_ops;
714 if (rsnd_src_hpbif_is_enable(src)) { 656 if (rsnd_is_gen1(priv))
715 if (rsnd_is_gen1(priv)) 657 ops = &rsnd_src_gen1_ops;
716 ops = &rsnd_src_gen1_ops; 658 if (rsnd_is_gen2(priv))
717 if (rsnd_is_gen2(priv)) 659 ops = &rsnd_src_gen2_ops;
718 ops = &rsnd_src_gen2_ops;
719 }
720 660
721 rsnd_mod_init(priv, &src->mod, ops, RSND_MOD_SRC, i); 661 rsnd_mod_init(priv, &src->mod, ops, RSND_MOD_SRC, i);
722 662