File: 813-cthulhu.diff

package info (click to toggle)
git-delta 0.18.2-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,452 kB
  • sloc: sh: 751; makefile: 117
file content (1495 lines) | stat: -rw-r--r-- 191,895 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
commit 2cde51fbd0f310c8a2c5f977e665c0ac3945b46d
Merge: 7471c5c9f58e c097d5fdf3b5 74c375cb85d7 04c3a852f51f 5095f55d7cc3 4f534777c130 2f54d2a1cf7e 56d37d85438d 192043cf6089 f467a0f513ad bbe580302d33 3990c516de66 d754fa9ad18d 516ea4b58433 69ae8489076f 25c1a63f43ca f52c91921553 111bd7b18e13 aafa85e71a75 dd407a324323 71467e46414d 0f7f3d1f17c2 8778ac6be25a 0406a40a095c 308a0f3f24db 2650bc4f6d0c 8cb7a36eb3a8 323702b4e06d ef749400434c 3cec159cfb3f 72aa62bed3ea 328089a47112 11db0da831b1 e1771bcf99b0 f60e5473e678 a010ff628c09 5e8154332f48 58381da68774 626bcacb89f9 38136bde7691 06b2bd23057f 8c5178fca4ce 8e6ad35a31e7 008ef947d0c5 f58c4fc4a3bf 2309d6757900 5c1537163ce7 b65ab73e5d62 26090a834b49 9ea6fbc66d15 2c4864334c4d 1769267bb013 f3f9a60f7947 f25cf3496982 3f3002692ce8 fbbf7fea8e80 c3e8494c001c e40e0b5da87b 50c969732043 63587116811b 0112b62b12e1 a0a05916cf67 b888edbc68fb d44008b35858 9a199b8e9933 784cbf8ab464
Author: Mark Brown <broonie@linaro.org>
Date:   Thu Jan 2 13:01:55 2014 +0000

    Merge remote-tracking branches 'asoc/topic/ad1836', 'asoc/topic/ad193x', 'asoc/topic/adav80x', 'asoc/topic/adsp', 'asoc/topic/ak4641', 'asoc/topic/ak4642', 'asoc/topic/arizona', 'asoc/topic/atmel', 'asoc/topic/au1x', 'asoc/topic/axi', 'asoc/topic/bcm2835', 'asoc/topic/blackfin', 'asoc/topic/cs4271', 'asoc/topic/cs42l52', 'asoc/topic/da7210', 'asoc/topic/davinci', 'asoc/topic/ep93xx', 'asoc/topic/fsl', 'asoc/topic/fsl-mxs', 'asoc/topic/generic', 'asoc/topic/hdmi', 'asoc/topic/jack', 'asoc/topic/jz4740', 'asoc/topic/max98090', 'asoc/topic/mxs', 'asoc/topic/omap', 'asoc/topic/pxa', 'asoc/topic/rcar', 'asoc/topic/s6000', 'asoc/topic/sai', 'asoc/topic/samsung', 'asoc/topic/sgtl5000', 'asoc/topic/spear', 'asoc/topic/ssm2518', 'asoc/topic/ssm2602', 'asoc/topic/tegra', 'asoc/topic/tlv320aic3x', 'asoc/topic/twl6040', 'asoc/topic/txx9', 'asoc/topic/uda1380', 'asoc/topic/width', 'asoc/topic/wm8510', 'asoc/topic/wm8523', 'asoc/topic/wm8580', 'asoc/topic/wm8711', 'asoc/topic/wm8728', 'asoc/topic/wm8731', 'asoc/topic/wm8741', 'asoc/topic/wm8750', 'asoc/topic/wm8753', 'asoc/topic/wm8776', 'asoc/topic/wm8804', 'asoc/topic/wm8900', 'asoc/topic/wm8901', 'asoc/topic/wm8940', 'asoc/topic/wm8962', 'asoc/topic/wm8974', 'asoc/topic/wm8985', 'asoc/topic/wm8988', 'asoc/topic/wm8990', 'asoc/topic/wm8991', 'asoc/topic/wm8994', 'asoc/topic/wm8995', 'asoc/topic/wm9081' and 'asoc/topic/x86' into asoc-next

diff --cc include/sound/soc.h
index 1cda7d343d16,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1cda7d343d16,1f741cb24f33,1f741cb24f33,1f741cb24f33,f7e1fac51bba,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1cda7d343d16,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33..5a049d969c59
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -444,17 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 +444,17 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int snd_soc_jack_add_gpios(struct snd_s
  ++                                                              			struct snd_soc_jack_gpio *gpios);
  ++                                                              void snd_soc_jack_free_gpios(struct snd_soc_jack *jack, int count,
  ++                                                              			struct snd_soc_jack_gpio *gpios);
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  #else
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  static inline int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  					 struct snd_soc_jack_gpio *gpios)
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  	return 0;
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  }
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  static inline void snd_soc_jack_free_gpios(struct snd_soc_jack *jack, int count,
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  					   struct snd_soc_jack_gpio *gpios)
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  }
  +                                                               #endif
  +                                                               
  +                                                               /* codec register bit access */
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -879,8 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,8 -879,6 -879,6 -879,6 -886,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,8 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 +886,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ struct snd_soc_dai_link 
  ++                                                              
  ++                                                              	/* Symmetry requirements */
  ++                                                              	unsigned int symmetric_rates:1;
++++++++++++++++++ ++++++++++++++++ ++++++++++++++++++++++++++++  	unsigned int symmetric_channels:1;
++++++++++++++++++ ++++++++++++++++ ++++++++++++++++++++++++++++  	unsigned int symmetric_samplebits:1;
  +                                                               
  +                                                               	/* Do not create a PCM for this DAI link (Backend link) */
  +                                                               	unsigned int no_pcm:1;
diff --cc sound/soc/Kconfig
index 5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,866dfec4b6b5,a5e3a70c0d3d,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,463a9e25e04f..d62ce483a443
--- a/sound/soc/Kconfig
+++ b/sound/soc/Kconfig
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,9 -31,9 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 +31,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ config SND_SOC_GENERIC_DMAENGINE_PC
  ++                                                              	select SND_DMAENGINE_PCM
  ++                                                              
  ++                                                              # All the supported SoCs
++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++  source "sound/soc/adi/Kconfig"
  +                                                               source "sound/soc/atmel/Kconfig"
  +                                                               source "sound/soc/au1x/Kconfig"
+++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++  source "sound/soc/bcm/Kconfig"
  +                                                               source "sound/soc/blackfin/Kconfig"
  +                                                               source "sound/soc/cirrus/Kconfig"
  +                                                               source "sound/soc/davinci/Kconfig"
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -43,7 -43,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 +44,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ source "sound/soc/jz4740/Kconfig
  ++                                                              source "sound/soc/nuc900/Kconfig"
  ++                                                              source "sound/soc/omap/Kconfig"
  ++                                                              source "sound/soc/kirkwood/Kconfig"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  source "sound/soc/intel/Kconfig"
  +                                                               source "sound/soc/mxs/Kconfig"
  +                                                               source "sound/soc/pxa/Kconfig"
  +                                                               source "sound/soc/samsung/Kconfig"
diff --cc sound/soc/Makefile
index 8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,c70c7f76d2df,b52d4aad0716,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,ff291d3e60af..62a1822e77bf
--- a/sound/soc/Makefile
+++ b/sound/soc/Makefile
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,16 -8,16 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 +8,17 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ endi
  ++                                                              obj-$(CONFIG_SND_SOC)	+= snd-soc-core.o
  ++                                                              obj-$(CONFIG_SND_SOC)	+= codecs/
  ++                                                              obj-$(CONFIG_SND_SOC)	+= generic/
++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++  obj-$(CONFIG_SND_SOC)	+= adi/
  +                                                               obj-$(CONFIG_SND_SOC)	+= atmel/
  +                                                               obj-$(CONFIG_SND_SOC)	+= au1x/
+++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++  obj-$(CONFIG_SND_SOC)	+= bcm/
  +                                                               obj-$(CONFIG_SND_SOC)	+= blackfin/
  +                                                               obj-$(CONFIG_SND_SOC)	+= cirrus/
  +                                                               obj-$(CONFIG_SND_SOC)	+= davinci/
  ++                                                              obj-$(CONFIG_SND_SOC)	+= dwc/
  ++                                                              obj-$(CONFIG_SND_SOC)	+= fsl/
  ++                                                              obj-$(CONFIG_SND_SOC)	+= jz4740/
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  obj-$(CONFIG_SND_SOC)	+= intel/
  +                                                               obj-$(CONFIG_SND_SOC)	+= mxs/
  +                                                               obj-$(CONFIG_SND_SOC)	+= nuc900/
  +                                                               obj-$(CONFIG_SND_SOC)	+= omap/
diff --cc sound/soc/atmel/sam9x5_wm8731.c
index 7d6a9055874b,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,6f4e812d6e61,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15..3188036a18f0
--- a/sound/soc/atmel/sam9x5_wm8731.c
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -97,8 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 +97,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int sam9x5_wm8731_driver_probe(s
  ++                                                              		goto out;
  ++                                                              	}
  ++                                                              
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	snd_soc_card_set_drvdata(card, priv);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	card->dev = &pdev->dev;
  +                                                               	card->owner = THIS_MODULE;
  +                                                               	card->dai_link = dai;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -109,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 +109,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	dai->stream_name = "WM8731 PCM";
  ++                                                              	dai->codec_dai_name = "wm8731-hifi";
  ++                                                              	dai->init = sam9x5_wm8731_init;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	dai->dai_fmt = SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_NB_NF
  +                                                               		| SND_SOC_DAIFMT_CBM_CFM;
  +                                                               
  +                                                               	ret = snd_soc_of_parse_card_name(card, "atmel,model");
diff --cc sound/soc/codecs/wm5110.c
index 0ab2dc296474,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,f3d96eae031a,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,bbd64384ca1c,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181..22bd7dd80bba
--- a/sound/soc/codecs/wm5110.c
+++ b/sound/soc/codecs/wm5110.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,51 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,10 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 +30,51 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              #include <linux/mfd/arizona/registers.h>
  ++                                                              
  ++                                                              #include "arizona.h"
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  #include "wm_adsp.h"
  +                                                               #include "wm5110.h"
  +                                                               
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  #define WM5110_NUM_ADSP 4
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               struct wm5110_priv {
  +                                                               	struct arizona_priv core;
  +                                                               	struct arizona_fll fll[2];
  ++                                                              };
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region wm5110_dsp1_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_PM, .base = 0x100000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_ZM, .base = 0x180000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_XM, .base = 0x190000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_YM, .base = 0x1a8000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region wm5110_dsp2_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_PM, .base = 0x200000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_ZM, .base = 0x280000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_XM, .base = 0x290000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_YM, .base = 0x2a8000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region wm5110_dsp3_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_PM, .base = 0x300000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_ZM, .base = 0x380000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_XM, .base = 0x390000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_YM, .base = 0x3a8000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region wm5110_dsp4_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_PM, .base = 0x400000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_ZM, .base = 0x480000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_XM, .base = 0x490000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_YM, .base = 0x4a8000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region *wm5110_dsp_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	wm5110_dsp1_regions,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	wm5110_dsp2_regions,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	wm5110_dsp3_regions,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	wm5110_dsp4_regions,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                         +                                     static const struct reg_default wm5110_sysclk_revd_patch[] = {
  +                         +                                     	{ 0x3093, 0x1001 },
  +                         +                                     	{ 0x30E3, 0x1301 },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -105,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -40,0 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 +105,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm5110_sysclk_ev(struct snd_
  ++                        +                                     	case SND_SOC_DAPM_POST_PMU:
  ++                        +                                     		if (patch)
  ++                        +                                     			for (i = 0; i < patch_size; i++)
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  				regmap_write_async(regmap, patch[i].reg,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  						   patch[i].def);
  +                         +                                     		break;
  +                         +                                     
  +                         +                                     	default:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -155,25 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -76,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 +155,25 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SOC_SINGLE_RANGE_TLV("IN3L Volume", ARI
  ++                                                              SOC_SINGLE_RANGE_TLV("IN3R Volume", ARIZONA_IN3R_CONTROL,
  ++                                                              		     ARIZONA_IN3R_PGA_VOL_SHIFT, 0x40, 0x5f, 0, ana_tlv),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_ENUM("IN HPF Cutoff Frequency", arizona_in_hpf_cut_enum),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN1L HPF Switch", ARIZONA_IN1L_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN1L_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN1R HPF Switch", ARIZONA_IN1R_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN1R_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN2L HPF Switch", ARIZONA_IN2L_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN2L_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN2R HPF Switch", ARIZONA_IN2R_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN2R_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN3L HPF Switch", ARIZONA_IN3L_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN3L_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN3R HPF Switch", ARIZONA_IN3R_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN3R_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN4L HPF Switch", ARIZONA_IN4L_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN4L_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN4R HPF Switch", ARIZONA_IN4R_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN4R_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               SOC_SINGLE_TLV("IN1L Digital Volume", ARIZONA_ADC_DIGITAL_VOLUME_1L,
  +                                                               	       ARIZONA_IN1L_DIG_VOL_SHIFT, 0xbf, 0, digital_tlv),
  +                                                               SOC_SINGLE_TLV("IN1R Digital Volume", ARIZONA_ADC_DIGITAL_VOLUME_1R,
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -277,14 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -179,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 +277,14 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SOC_ENUM("LHPF2 Mode", arizona_lhpf2_mo
  ++                                                              SOC_ENUM("LHPF3 Mode", arizona_lhpf3_mode),
  ++                                                              SOC_ENUM("LHPF4 Mode", arizona_lhpf4_mode),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC1 FSL", arizona_isrc_fsl[0]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC2 FSL", arizona_isrc_fsl[1]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC3 FSL", arizona_isrc_fsl[2]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC1 FSH", arizona_isrc_fsh[0]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC2 FSH", arizona_isrc_fsh[1]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC3 FSH", arizona_isrc_fsh[2]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ASRC RATE 1", arizona_asrc_rate1),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               ARIZONA_MIXER_CONTROLS("DSP1L", ARIZONA_DSP1LMIX_INPUT_1_SOURCE),
  +                                                               ARIZONA_MIXER_CONTROLS("DSP1R", ARIZONA_DSP1RMIX_INPUT_1_SOURCE),
  +                                                               ARIZONA_MIXER_CONTROLS("DSP2L", ARIZONA_DSP2LMIX_INPUT_1_SOURCE),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -285,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -375,13 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -269,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 +350,13 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SOC_DOUBLE("SPKDAT1 Switch", ARIZONA_PD
  ++                                                              SOC_DOUBLE("SPKDAT2 Switch", ARIZONA_PDM_SPK2_CTRL_1, ARIZONA_SPK2L_MUTE_SHIFT,
  ++                                                              	   ARIZONA_SPK2R_MUTE_SHIFT, 1, 1),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_DOUBLE("HPOUT1 DRE Switch", ARIZONA_DRE_ENABLE,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_DRE1L_ENA_SHIFT, ARIZONA_DRE1R_ENA_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_DOUBLE("HPOUT2 DRE Switch", ARIZONA_DRE_ENABLE,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_DRE2L_ENA_SHIFT, ARIZONA_DRE2R_ENA_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_DOUBLE("HPOUT3 DRE Switch", ARIZONA_DRE_ENABLE,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_DRE3L_ENA_SHIFT, ARIZONA_DRE3R_ENA_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               SOC_ENUM("Output Ramp Up", arizona_out_vi_ramp),
  +                                                               SOC_ENUM("Output Ramp Down", arizona_out_vd_ramp),
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -318,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -415,10 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -302,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 +390,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MIXER_CONTROLS("AIF1TX8", ARIZO
  ++                                                              
  ++                                                              ARIZONA_MIXER_CONTROLS("AIF2TX1", ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE),
  ++                                                              ARIZONA_MIXER_CONTROLS("AIF2TX2", ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_CONTROLS("AIF2TX3", ARIZONA_AIF2TX3MIX_INPUT_1_SOURCE),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_CONTROLS("AIF2TX4", ARIZONA_AIF2TX4MIX_INPUT_1_SOURCE),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_CONTROLS("AIF2TX5", ARIZONA_AIF2TX5MIX_INPUT_1_SOURCE),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_CONTROLS("AIF2TX6", ARIZONA_AIF2TX6MIX_INPUT_1_SOURCE),
  +                                                               
  +                                                               ARIZONA_MIXER_CONTROLS("AIF3TX1", ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE),
  +                                                               ARIZONA_MIXER_CONTROLS("AIF3TX2", ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -347,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -448,22 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -331,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 +423,22 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MIXER_ENUMS(LHPF2, ARIZONA_HPLP
  ++                                                              ARIZONA_MIXER_ENUMS(LHPF3, ARIZONA_HPLP3MIX_INPUT_1_SOURCE);
  ++                                                              ARIZONA_MIXER_ENUMS(LHPF4, ARIZONA_HPLP4MIX_INPUT_1_SOURCE);
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP1L, ARIZONA_DSP1LMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP1R, ARIZONA_DSP1RMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_AUX_ENUMS(DSP1, ARIZONA_DSP1AUX1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP2L, ARIZONA_DSP2LMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP2R, ARIZONA_DSP2RMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_AUX_ENUMS(DSP2, ARIZONA_DSP2AUX1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP3L, ARIZONA_DSP3LMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP3R, ARIZONA_DSP3RMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_AUX_ENUMS(DSP3, ARIZONA_DSP3AUX1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP4L, ARIZONA_DSP4LMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP4R, ARIZONA_DSP4RMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_AUX_ENUMS(DSP4, ARIZONA_DSP4AUX1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               ARIZONA_MIXER_ENUMS(Mic, ARIZONA_MICMIX_INPUT_1_SOURCE);
  +                                                               ARIZONA_MIXER_ENUMS(Noise, ARIZONA_NOISEMIX_INPUT_1_SOURCE);
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -377,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -494,10 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -361,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 +469,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MIXER_ENUMS(AIF1TX8, ARIZONA_AI
  ++                                                              
  ++                                                              ARIZONA_MIXER_ENUMS(AIF2TX1, ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE);
  ++                                                              ARIZONA_MIXER_ENUMS(AIF2TX2, ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(AIF2TX3, ARIZONA_AIF2TX3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(AIF2TX4, ARIZONA_AIF2TX4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(AIF2TX5, ARIZONA_AIF2TX5MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(AIF2TX6, ARIZONA_AIF2TX6MIX_INPUT_1_SOURCE);
  +                                                               
  +                                                               ARIZONA_MIXER_ENUMS(AIF3TX1, ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE);
  +                                                               ARIZONA_MIXER_ENUMS(AIF3TX2, ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE);
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -395,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -516,36 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -379,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 +491,36 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MUX_ENUMS(ASRC1R, ARIZONA_ASRC1
  ++                                                              ARIZONA_MUX_ENUMS(ASRC2L, ARIZONA_ASRC2LMIX_INPUT_1_SOURCE);
  ++                                                              ARIZONA_MUX_ENUMS(ASRC2R, ARIZONA_ASRC2RMIX_INPUT_1_SOURCE);
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1INT1, ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1INT2, ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1INT3, ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1INT4, ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1DEC1, ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1DEC2, ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1DEC3, ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1DEC4, ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2INT1, ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2INT2, ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2INT3, ARIZONA_ISRC2INT3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2INT4, ARIZONA_ISRC2INT4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2DEC1, ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2DEC2, ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2DEC3, ARIZONA_ISRC2DEC3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2DEC4, ARIZONA_ISRC2DEC4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3INT1, ARIZONA_ISRC3INT1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3INT2, ARIZONA_ISRC3INT2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3INT3, ARIZONA_ISRC3INT3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3INT4, ARIZONA_ISRC3INT4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3DEC1, ARIZONA_ISRC3DEC1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3DEC2, ARIZONA_ISRC3DEC2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3DEC3, ARIZONA_ISRC3DEC3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3DEC4, ARIZONA_ISRC3DEC4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               static const char *wm5110_aec_loopback_texts[] = {
  +                                                               	"HPOUT1L", "HPOUT1R", "HPOUT2L", "HPOUT2R", "HPOUT3L", "HPOUT3R",
  +                                                               	"SPKOUTL", "SPKOUTR", "SPKDAT1L", "SPKDAT1R", "SPKDAT2L", "SPKDAT2R",
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -535,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -686,65 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -519,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 +661,65 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SND_SOC_DAPM_PGA("ASRC2L", ARIZONA_ASRC
  ++                                                              SND_SOC_DAPM_PGA("ASRC2R", ARIZONA_ASRC_ENABLE, ARIZONA_ASRC2R_ENA_SHIFT, 0,
  ++                                                              		 NULL, 0),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WM_ADSP2("DSP1", 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WM_ADSP2("DSP2", 1),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WM_ADSP2("DSP3", 2),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WM_ADSP2("DSP4", 3),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1INT1", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_INT0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1INT2", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_INT1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1INT3", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_INT2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1INT4", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_INT3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1DEC1", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_DEC0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1DEC2", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_DEC1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1DEC3", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_DEC2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1DEC4", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_DEC3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2INT1", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_INT0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2INT2", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_INT1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2INT3", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_INT2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2INT4", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_INT3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2DEC1", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_DEC0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2DEC2", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_DEC1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2DEC3", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_DEC2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2DEC4", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_DEC3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3INT1", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_INT0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3INT2", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_INT1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3INT3", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_INT2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3INT4", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_INT3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3DEC1", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_DEC0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3DEC2", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_DEC1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3DEC3", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_DEC2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3DEC4", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_DEC3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               SND_SOC_DAPM_VALUE_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1,
  +                                                               		       ARIZONA_AEC_LOOPBACK_ENA_SHIFT, 0,
  +                                                               		       &wm5110_aec_loopback_mux),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -577,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -787,27 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -561,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 +762,27 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SND_SOC_DAPM_AIF_OUT("AIF2TX1", NULL, 0
  ++                                                              		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX1_ENA_SHIFT, 0),
  ++                                                              SND_SOC_DAPM_AIF_OUT("AIF2TX2", NULL, 0,
  ++                                                              		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX2_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_OUT("AIF2TX3", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX3_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_OUT("AIF2TX4", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX4_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_OUT("AIF2TX5", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX5_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_OUT("AIF2TX6", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX6_ENA_SHIFT, 0),
  +                                                               
  +                                                               SND_SOC_DAPM_AIF_IN("AIF2RX1", NULL, 0,
  +                                                               		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX1_ENA_SHIFT, 0),
  ++                                                              SND_SOC_DAPM_AIF_IN("AIF2RX2", NULL, 0,
  ++                                                              		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX2_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_IN("AIF2RX3", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX3_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_IN("AIF2RX4", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX4_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_IN("AIF2RX5", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX5_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_IN("AIF2RX6", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX6_ENA_SHIFT, 0),
  +                                                               
  +                                                               SND_SOC_DAPM_AIF_IN("SLIMRX1", NULL, 0,
  +                                                               		    ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE,
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -719,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -945,10 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -703,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 +920,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MIXER_WIDGETS(AIF1TX8, "AIF1TX8
  ++                                                              
  ++                                                              ARIZONA_MIXER_WIDGETS(AIF2TX1, "AIF2TX1"),
  ++                                                              ARIZONA_MIXER_WIDGETS(AIF2TX2, "AIF2TX2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_WIDGETS(AIF2TX3, "AIF2TX3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_WIDGETS(AIF2TX4, "AIF2TX4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_WIDGETS(AIF2TX5, "AIF2TX5"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_WIDGETS(AIF2TX6, "AIF2TX6"),
  +                                                               
  +                                                               ARIZONA_MIXER_WIDGETS(AIF3TX1, "AIF3TX1"),
  +                                                               ARIZONA_MIXER_WIDGETS(AIF3TX2, "AIF3TX2"),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -737,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -967,41 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -721,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 +942,41 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MUX_WIDGETS(ASRC1R, "ASRC1R")
  ++                                                              ARIZONA_MUX_WIDGETS(ASRC2L, "ASRC2L"),
  ++                                                              ARIZONA_MUX_WIDGETS(ASRC2R, "ASRC2R"),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_WIDGETS(DSP1, "DSP1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_WIDGETS(DSP2, "DSP2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_WIDGETS(DSP3, "DSP3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_WIDGETS(DSP4, "DSP4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1DEC1, "ISRC1DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1DEC2, "ISRC1DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1DEC3, "ISRC1DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1DEC4, "ISRC1DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1INT1, "ISRC1INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1INT2, "ISRC1INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1INT3, "ISRC1INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1INT4, "ISRC1INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2DEC1, "ISRC2DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2DEC2, "ISRC2DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2DEC3, "ISRC2DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2DEC4, "ISRC2DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2INT1, "ISRC2INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2INT2, "ISRC2INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2INT3, "ISRC2INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2INT4, "ISRC2INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3DEC1, "ISRC3DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3DEC2, "ISRC3DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3DEC3, "ISRC3DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3DEC4, "ISRC3DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3INT1, "ISRC3INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3INT2, "ISRC3INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3INT3, "ISRC3INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3INT4, "ISRC3INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               SND_SOC_DAPM_OUTPUT("HPOUT1L"),
  +                                                               SND_SOC_DAPM_OUTPUT("HPOUT1R"),
  +                                                               SND_SOC_DAPM_OUTPUT("HPOUT2L"),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -780,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -1045,10 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -764,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 +1020,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SND_SOC_DAPM_OUTPUT("MICSUPP")
  ++                                                              	{ name, "AIF1RX8", "AIF1RX8" }, \
  ++                                                              	{ name, "AIF2RX1", "AIF2RX1" }, \
  ++                                                              	{ name, "AIF2RX2", "AIF2RX2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "AIF2RX3", "AIF2RX3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "AIF2RX4", "AIF2RX4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "AIF2RX5", "AIF2RX5" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "AIF2RX6", "AIF2RX6" }, \
  +                                                               	{ name, "AIF3RX1", "AIF3RX1" }, \
  +                                                               	{ name, "AIF3RX2", "AIF3RX2" }, \
  +                                                               	{ name, "SLIMRX1", "SLIMRX1" }, \
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -805,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -1074,55 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -789,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 +1049,55 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	{ name, "ASRC1L", "ASRC1L" }, \
  ++                                                              	{ name, "ASRC1R", "ASRC1R" }, \
  ++                                                              	{ name, "ASRC2L", "ASRC2L" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ASRC2R", "ASRC2R" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1DEC1", "ISRC1DEC1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1DEC2", "ISRC1DEC2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1DEC3", "ISRC1DEC3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1DEC4", "ISRC1DEC4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1INT1", "ISRC1INT1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1INT2", "ISRC1INT2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1INT3", "ISRC1INT3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1INT4", "ISRC1INT4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2DEC1", "ISRC2DEC1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2DEC2", "ISRC2DEC2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2DEC3", "ISRC2DEC3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2DEC4", "ISRC2DEC4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2INT1", "ISRC2INT1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2INT2", "ISRC2INT2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2INT3", "ISRC2INT3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2INT4", "ISRC2INT4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3DEC1", "ISRC3DEC1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3DEC2", "ISRC3DEC2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3DEC3", "ISRC3DEC3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3DEC4", "ISRC3DEC4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3INT1", "ISRC3INT1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3INT2", "ISRC3INT2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3INT3", "ISRC3INT3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3INT4", "ISRC3INT4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.1", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.2", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.3", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.4", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.5", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.6", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.1", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.2", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.3", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.4", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.5", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.6", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.1", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.2", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.3", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.4", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.5", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.6", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.1", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.2", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.3", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.4", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.5", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.6", "DSP4" }
  +                                                               
  +                                                               static const struct snd_soc_dapm_route wm5110_dapm_routes[] = {
  +                                                               	{ "AIF2 Capture", NULL, "DBVDD2" },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -877,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -1194,17 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -861,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 +1169,17 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              
  ++                                                              	{ "AIF2 Capture", NULL, "AIF2TX1" },
  ++                                                              	{ "AIF2 Capture", NULL, "AIF2TX2" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2 Capture", NULL, "AIF2TX3" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2 Capture", NULL, "AIF2TX4" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2 Capture", NULL, "AIF2TX5" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2 Capture", NULL, "AIF2TX6" },
  +                                                               
  +                                                               	{ "AIF2RX1", NULL, "AIF2 Playback" },
  +                                                               	{ "AIF2RX2", NULL, "AIF2 Playback" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2RX3", NULL, "AIF2 Playback" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2RX4", NULL, "AIF2 Playback" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2RX5", NULL, "AIF2 Playback" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2RX6", NULL, "AIF2 Playback" },
  +                                                               
  +                                                               	{ "AIF3 Capture", NULL, "AIF3TX1" },
  +                                                               	{ "AIF3 Capture", NULL, "AIF3TX2" },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -963,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -1288,10 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -947,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 +1263,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              
  ++                                                              	ARIZONA_MIXER_ROUTES("AIF2TX1", "AIF2TX1"),
  ++                                                              	ARIZONA_MIXER_ROUTES("AIF2TX2", "AIF2TX2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MIXER_ROUTES("AIF2TX3", "AIF2TX3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MIXER_ROUTES("AIF2TX4", "AIF2TX4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MIXER_ROUTES("AIF2TX5", "AIF2TX5"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MIXER_ROUTES("AIF2TX6", "AIF2TX6"),
  +                                                               
  +                                                               	ARIZONA_MIXER_ROUTES("AIF3TX1", "AIF3TX1"),
  +                                                               	ARIZONA_MIXER_ROUTES("AIF3TX2", "AIF3TX2"),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -999,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1328,41 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -983,4 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 +1303,41 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	ARIZONA_MUX_ROUTES("ASRC2L", "ASRC2L"),
  ++                                                              	ARIZONA_MUX_ROUTES("ASRC2R", "ASRC2R"),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_DSP_ROUTES("DSP1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_DSP_ROUTES("DSP2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_DSP_ROUTES("DSP3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_DSP_ROUTES("DSP4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1INT1", "ISRC1INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1INT2", "ISRC1INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1INT3", "ISRC1INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1INT4", "ISRC1INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1DEC1", "ISRC1DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1DEC2", "ISRC1DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1DEC3", "ISRC1DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1DEC4", "ISRC1DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2INT1", "ISRC2INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2INT2", "ISRC2INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2INT3", "ISRC2INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2INT4", "ISRC2INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2DEC1", "ISRC2DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2DEC2", "ISRC2DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2DEC3", "ISRC2DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2DEC4", "ISRC2DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3INT1", "ISRC3INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3INT2", "ISRC3INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3INT3", "ISRC3INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3INT4", "ISRC3INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3DEC1", "ISRC3DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3DEC2", "ISRC3DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3DEC3", "ISRC3DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3DEC4", "ISRC3DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                         +                                     	{ "AEC Loopback", "HPOUT1L", "OUT1L" },
  +                         +                                     	{ "AEC Loopback", "HPOUT1R", "OUT1R" },
  +                                                               	{ "HPOUT1L", NULL, "OUT1L" },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1012,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1376,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -992,4 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 +1351,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                        +                                     	{ "AEC Loopback", "HPOUT3L", "OUT3L" },
  ++                        +                                     	{ "AEC Loopback", "HPOUT3R", "OUT3R" },
  ++                                                              	{ "HPOUT3L", NULL, "OUT3L" },
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "HPOUT3R", NULL, "OUT3R" },
  +                                                               
  +                         +                                     	{ "AEC Loopback", "SPKOUTL", "OUT4L" },
  +                                                               	{ "SPKOUTLN", NULL, "OUT4L" },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1095,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1459,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1067,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 +1434,14 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static struct snd_soc_dai_driver wm5110
  ++                                                              		.playback = {
  ++                                                              			.stream_name = "AIF2 Playback",
  ++                                                              			.channels_min = 1,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			.channels_max = 6,
  +                                                               			.rates = WM5110_RATES,
  +                                                               			.formats = WM5110_FORMATS,
  +                                                               		},
  ++                                                              		.capture = {
  ++                                                              			 .stream_name = "AIF2 Capture",
  ++                                                              			 .channels_min = 1,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			 .channels_max = 6,
  +                                                               			 .rates = WM5110_RATES,
  +                                                               			 .formats = WM5110_FORMATS,
  +                                                               		 },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1204,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1568,10 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1176,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 +1543,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm5110_codec_probe(struct sn
  ++                                                              	arizona_init_spk(codec);
  ++                                                              	arizona_init_gpio(codec);
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ret = snd_soc_add_codec_controls(codec, wm_adsp2_fw_controls, 8);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	if (ret != 0)
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		return ret;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	snd_soc_dapm_disable_pin(&codec->dapm, "HAPTICS");
  +                                                               
  +                                                               	priv->core.arizona->dapm = &codec->dapm;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1258,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1626,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1230,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 +1601,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm5110_probe(struct platform
  ++                                                              {
  ++                                                              	struct arizona *arizona = dev_get_drvdata(pdev->dev.parent);
  ++                                                              	struct wm5110_priv *wm5110;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	int i, ret;
  +                                                               
  +                                                               	wm5110 = devm_kzalloc(&pdev->dev, sizeof(struct wm5110_priv),
  +                                                               			      GFP_KERNEL);
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1269,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1637,24 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1241,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 +1612,24 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	wm5110->core.arizona = arizona;
  ++                                                              	wm5110->core.num_inputs = 8;
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	for (i = 0; i < WM5110_NUM_ADSP; i++) {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].part = "wm5110";
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].num = i + 1;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].type = WMFW_ADSP2;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].dev = arizona->dev;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].regmap = arizona->regmap;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].base = ARIZONA_DSP1_CONTROL_1
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			+ (0x100 * i);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].mem = wm5110_dsp_regions[i];
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].num_mems
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			= ARRAY_SIZE(wm5110_dsp1_regions);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		ret = wm_adsp2_init(&wm5110->core.adsp[i], false);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		if (ret != 0)
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			return ret;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	}
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	for (i = 0; i < ARRAY_SIZE(wm5110->fll); i++)
  +                                                               		wm5110->fll[i].vco_mult = 3;
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1279,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1665,12 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1251,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 +1640,12 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              			 ARIZONA_IRQ_FLL2_LOCK, ARIZONA_IRQ_FLL2_CLOCK_OK,
  ++                                                              			 &wm5110->fll[1]);
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	/* SR2 fixed at 8kHz, SR3 fixed at 16kHz */
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	regmap_update_bits(arizona->regmap, ARIZONA_SAMPLE_RATE_2,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			   ARIZONA_SAMPLE_RATE_2_MASK, 0x11);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	regmap_update_bits(arizona->regmap, ARIZONA_SAMPLE_RATE_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			   ARIZONA_SAMPLE_RATE_3_MASK, 0x12);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	for (i = 0; i < ARRAY_SIZE(wm5110_dai); i++)
  +                                                               		arizona_init_dai(&wm5110->core, i);
  +                                                               
diff --cc sound/soc/codecs/wm8731.c
index bc7472c968e3,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,6117107ea560,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759,456bb8c6d759..029720366ff8
--- a/sound/soc/codecs/wm8731.c
+++ b/sound/soc/codecs/wm8731.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,8 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 -447,10 +447,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm8731_set_dai_fmt(struct sn
  ++                                                              		iface |= 0x0001;
  ++                                                              		break;
  ++                                                              	case SND_SOC_DAIFMT_DSP_A:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		iface |= 0x0013;
  +                                                               		break;
  +                                                               	case SND_SOC_DAIFMT_DSP_B:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		iface |= 0x0003;
  +                                                               		break;
  +                                                               	default:
  +                                                               		return -EINVAL;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -730,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 -732,7 +732,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static struct spi_driver wm8731_spi_dri
  ++                                                              };
  ++                                                              #endif /* CONFIG_SPI_MASTER */
  ++                                                              
+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++  #if IS_ENABLED(CONFIG_I2C)
  +                                                               static int wm8731_i2c_probe(struct i2c_client *i2c,
  +                                                               			    const struct i2c_device_id *id)
  +                                                               {
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -789,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 -791,7 +791,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static struct i2c_driver wm8731_i2c_dri
  ++                                                              static int __init wm8731_modinit(void)
  ++                                                              {
  ++                                                              	int ret = 0;
+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++  #if IS_ENABLED(CONFIG_I2C)
  +                                                               	ret = i2c_add_driver(&wm8731_i2c_driver);
  +                                                               	if (ret != 0) {
  +                                                               		printk(KERN_ERR "Failed to register WM8731 I2C driver: %d\n",
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -809,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 -811,7 +811,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ module_init(wm8731_modinit)
  ++                                                              
  ++                                                              static void __exit wm8731_exit(void)
  ++                                                              {
+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++  #if IS_ENABLED(CONFIG_I2C)
  +                                                               	i2c_del_driver(&wm8731_i2c_driver);
  +                                                               #endif
  +                                                               #if defined(CONFIG_SPI_MASTER)
diff --cc sound/soc/codecs/wm8962.c
index 0f17ed3e29f4,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,2bf9ee7c5407,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,07da601f8343,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6,543c5c2631b6..97db3b45b411
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 -74,7 +74,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ struct wm8962_priv 
  ++                                                              	struct regulator_bulk_data supplies[WM8962_NUM_SUPPLIES];
  ++                                                              	struct notifier_block disable_nb[WM8962_NUM_SUPPLIES];
  ++                                                              
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++  #if IS_ENABLED(CONFIG_INPUT)
  +                                                               	struct input_dev *beep;
  +                                                               	struct work_struct beep_work;
  +                                                               	int beep_rate;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -2439,20 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2431,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 -2439,7 +2439,20 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static void wm8962_configure_bclk(struc
  ++                                                              	snd_soc_update_bits(codec, WM8962_CLOCKING_4,
  ++                                                              			    WM8962_SYSCLK_RATE_MASK, clocking4);
  ++                                                              
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	/* DSPCLK_DIV can be only generated correctly after enabling SYSCLK.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	 * So we here provisionally enable it and then disable it afterward
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	 * if current bias_level hasn't reached SND_SOC_BIAS_ON.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	 */
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	if (codec->dapm.bias_level != SND_SOC_BIAS_ON)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		snd_soc_update_bits(codec, WM8962_CLOCKING2,
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  				WM8962_SYSCLK_ENA_MASK, WM8962_SYSCLK_ENA);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	dspclk = snd_soc_read(codec, WM8962_CLOCKING1);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	if (codec->dapm.bias_level != SND_SOC_BIAS_ON)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		snd_soc_update_bits(codec, WM8962_CLOCKING2,
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  				WM8962_SYSCLK_ENA_MASK, 0);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	if (dspclk < 0) {
  +                                                               		dev_err(codec->dev, "Failed to read DSPCLK: %d\n", dspclk);
  +                                                               		return;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -3121,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3100,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 -3108,7 +3121,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int wm8962_mic_detect(struct snd_soc_co
  ++                                                              }
  ++                                                              EXPORT_SYMBOL_GPL(wm8962_mic_detect);
  ++                                                              
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++  #if IS_ENABLED(CONFIG_INPUT)
  +                                                               static int beep_rates[] = {
  +                                                               	500, 1000, 2000, 4000,
  +                                                               };
diff --cc sound/soc/codecs/wm_adsp.c
index 4fbcab63e61f,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,8f720ded27c4,46ec0e9744d4,46ec0e9744d4,b42f9af163c8,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,b38f3506418f,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4,46ec0e9744d4..fb0c678939bf
--- a/sound/soc/codecs/wm_adsp.c
+++ b/sound/soc/codecs/wm_adsp.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,7 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1282,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 -1286,6 +1286,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm_adsp_load_coeff(struct wm
  ++                                                              					reg = wm_adsp_region_to_reg(mem,
  ++                                                              								    reg);
  ++                                                              					reg += offset;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  					break;
  +                                                               				}
  +                                                               			}
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1468,23 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1469,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1455,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 -1468,19 +1469,23 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm_adsp2_ena(struct wm_adsp 
  ++                                                              	unsigned int val;
  ++                                                              	int ret, count;
  ++                                                              
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ret = regmap_update_bits_async(dsp->regmap, dsp->base + ADSP2_CONTROL,
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  				       ADSP2_SYS_ENA, ADSP2_SYS_ENA);
  +                                                               	if (ret != 0)
  +                                                               		return ret;
  +                                                               
  ++                                                              	/* Wait for the RAM to start, should be near instantaneous */
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	for (count = 0; count < 10; ++count) {
  +                                                               		ret = regmap_read(dsp->regmap, dsp->base + ADSP2_STATUS1,
  +                                                               				  &val);
  +                                                               		if (ret != 0)
  ++                                                              			return ret;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		if (val & ADSP2_RAM_RDY)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			break;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		msleep(1);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	}
  +                                                               
  +                                                               	if (!(val & ADSP2_RAM_RDY)) {
  +                                                               		adsp_err(dsp, "Failed to start DSP RAM\n");
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1525,9 -1521,9 -1521,9 -1521,9 -1520,9 -1521,9 -1521,9 -1522,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1508,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 -1521,9 +1525,9 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int wm_adsp2_event(struct snd_soc_dapm_
  ++                                                              		val = (val & ARIZONA_SYSCLK_FREQ_MASK)
  ++                                                              			>> ARIZONA_SYSCLK_FREQ_SHIFT;
  ++                                                              
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		ret = regmap_update_bits_async(dsp->regmap,
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  					       dsp->base + ADSP2_CLOCKING,
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  					       ADSP2_CLK_SEL_MASK, val);
  +                                                               		if (ret != 0) {
  +                                                               			adsp_err(dsp, "Failed to set clock rate: %d\n",
  +                                                               				 ret);
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1590,10 -1586,10 -1586,10 -1586,10 -1585,10 -1586,10 -1586,10 -1587,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1573,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 -1586,10 +1590,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              		if (ret != 0)
  ++                                                              			goto err;
  ++                                                              
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		ret = regmap_update_bits_async(dsp->regmap,
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  					       dsp->base + ADSP2_CONTROL,
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  					       ADSP2_CORE_ENA | ADSP2_START,
++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  					       ADSP2_CORE_ENA | ADSP2_START);
  +                                                               		if (ret != 0)
  +                                                               			goto err;
  +                                                               
diff --cc sound/soc/fsl/Kconfig
index 8c10b8f80ace,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,ac4fe4ea15a9,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1,b7ab71f2ccc1..514c275c6108
--- a/sound/soc/fsl/Kconfig
+++ b/sound/soc/fsl/Kconfig
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,7 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 +1,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++  config SND_SOC_FSL_SAI
++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++  	tristate
++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++  	select SND_SOC_GENERIC_DMAENGINE_PCM
++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++  
  +                                                               config SND_SOC_FSL_SSI
  +                                                               	tristate
  +                                                               
diff --cc sound/soc/fsl/imx-spdif.c
index e656245d24c9,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,980dd1fc9113,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08,8499d5292f08..e1dc40143600
--- a/sound/soc/fsl/imx-spdif.c
+++ b/sound/soc/fsl/imx-spdif.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -14,15 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 -14,17 +14,15 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              #include <sound/soc.h>
  ++                                                              
  ++                                                              struct imx_spdif_data {
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	struct snd_soc_dai_link dai;
  +                                                               	struct snd_soc_card card;
------------------------------------------------------------------	struct platform_device *txdev;
------------------------------------------------------------------	struct platform_device *rxdev;
  +                                                               };
  +                                                               
  +                                                               static int imx_spdif_audio_probe(struct platform_device *pdev)
  ++                                                              {
  ++                                                              	struct device_node *spdif_np, *np = pdev->dev.of_node;
  ++                                                              	struct imx_spdif_data *data;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	int ret = 0;
  +                                                               
  +                                                               	spdif_np = of_parse_phandle(np, "spdif-controller", 0);
  +                                                               	if (!spdif_np) {
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -38,38 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -39,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 -40,57 +37,38 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              		goto end;
  ++                                                              	}
  ++                                                              
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->dai.name = "S/PDIF PCM";
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->dai.stream_name = "S/PDIF PCM";
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->dai.codec_dai_name = "snd-soc-dummy-dai";
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->dai.codec_name = "snd-soc-dummy";
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->dai.cpu_of_node = spdif_np;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->dai.platform_of_node = spdif_np;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->dai.playback_only = true;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->dai.capture_only = true;
  +                                                               
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	if (of_property_read_bool(np, "spdif-out"))
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		data->dai.capture_only = false;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	if (of_property_read_bool(np, "spdif-in"))
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		data->dai.playback_only = false;
  +                                                               
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	if (data->dai.playback_only && data->dai.capture_only) {
  +                                                               		dev_err(&pdev->dev, "no enabled S/PDIF DAI link\n");
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		goto end;
  +                                                               	}
  +                                                               
  +                                                               	data->card.dev = &pdev->dev;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->card.dai_link = &data->dai;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	data->card.num_links = 1;
  +                                                               
  +                                                               	ret = snd_soc_of_parse_card_name(&data->card, "model");
  +                                                               	if (ret)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		goto end;
  +                                                               
  +                                                               	ret = devm_snd_soc_register_card(&pdev->dev, &data->card);
  +                                                               	if (ret) {
  ++                                                              		dev_err(&pdev->dev, "snd_soc_register_card failed: %d\n", ret);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		goto end;
  +                                                               	}
  +                                                               
  +                                                               	platform_set_drvdata(pdev, data);
diff --cc sound/soc/generic/simple-card.c
index be7c1db5388f,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,58c217e403ae,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c,b2fbb7075a6c..c0d928138c88
--- a/sound/soc/generic/simple-card.c
+++ b/sound/soc/generic/simple-card.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -8,8 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,8 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 -8,7 +8,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                               * it under the terms of the GNU General Public License version 2 as
  ++                                                               * published by the Free Software Foundation.
  ++                                                               */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  #include <linux/clk.h>
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  #include <linux/of.h>
  +                                                               #include <linux/platform_device.h>
  +                                                               #include <linux/module.h>
  +                                                               #include <sound/simple_card.h>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -25,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -25,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 -24,7 +25,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int __asoc_simple_card_dai_init(
  ++                                                              
  ++                                                              	daifmt |= set->fmt;
  ++                                                              
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (daifmt)
  +                                                               		ret = snd_soc_dai_set_fmt(dai, daifmt);
  +                                                               
  +                                                               	if (ret == -ENOTSUPP) {
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -58,147 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -58,167 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 -57,11 +58,170 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int asoc_simple_card_dai_init(st
  ++                                                              	return 0;
  ++                                                              }
  ++                                                              
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  static int
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  asoc_simple_card_sub_parse_of(struct device_node *np,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			      struct asoc_simple_dai *dai,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			      struct device_node **node)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	struct clk *clk;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	int ret;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/*
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 * get node via "sound-dai = <&phandle port>"
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 * it will be used as xxx_of_node on soc_bind_dai_link()
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	*node = of_parse_phandle(np, "sound-dai", 0);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (!*node)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		return -ENODEV;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/* get dai->name */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	ret = snd_soc_of_get_dai_name(np, &dai->name);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (ret < 0)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		goto parse_error;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/*
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 * bitclock-inversion, frame-inversion
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 * bitclock-master,    frame-master
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 * and specific "format" if it has
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	dai->fmt = snd_soc_of_parse_daifmt(np, NULL);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/*
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 * dai->sysclk come from
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 *  "clocks = <&xxx>" (if system has common clock)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 *  or "system-clock-frequency = <xxx>"
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 *  or device's module clock.
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	 */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (of_property_read_bool(np, "clocks")) {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		clk = of_clk_get(np, 0);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		if (IS_ERR(clk)) {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			ret = PTR_ERR(clk);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			goto parse_error;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		}
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		dai->sysclk = clk_get_rate(clk);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	} else if (of_property_read_bool(np, "system-clock-frequency")) {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		of_property_read_u32(np,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				     "system-clock-frequency",
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				     &dai->sysclk);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	} else {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		clk = of_clk_get(*node, 0);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		if (IS_ERR(clk)) {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			ret = PTR_ERR(clk);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			goto parse_error;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		}
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		dai->sysclk = clk_get_rate(clk);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	}
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	ret = 0;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  parse_error:
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	of_node_put(*node);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	return ret;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  }
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  static int asoc_simple_card_parse_of(struct device_node *node,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				     struct asoc_simple_card_info *info,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				     struct device *dev,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				     struct device_node **of_cpu,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				     struct device_node **of_codec,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				     struct device_node **of_platform)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	struct device_node *np;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	char *name;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	int ret;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/* get CPU/CODEC common format via simple-audio-card,format */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	info->daifmt = snd_soc_of_parse_daifmt(node, "simple-audio-card,") &
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		(SND_SOC_DAIFMT_FORMAT_MASK | SND_SOC_DAIFMT_INV_MASK);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/* DAPM routes */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	ret = snd_soc_of_parse_audio_routing(&info->snd_card,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  					"simple-audio-routing");
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (ret)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		return ret;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/* CPU sub-node */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	ret = -EINVAL;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	np = of_get_child_by_name(node, "simple-audio-card,cpu");
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (np)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		ret = asoc_simple_card_sub_parse_of(np,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  						  &info->cpu_dai,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  						  of_cpu);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (ret < 0)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		return ret;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/* CODEC sub-node */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	ret = -EINVAL;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	np = of_get_child_by_name(node, "simple-audio-card,codec");
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (np)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		ret = asoc_simple_card_sub_parse_of(np,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  						  &info->codec_dai,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  						  of_codec);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (ret < 0)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		return ret;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	if (!info->cpu_dai.name || !info->codec_dai.name)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		return -EINVAL;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/* card name is created from CPU/CODEC dai name */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	name = devm_kzalloc(dev,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			    strlen(info->cpu_dai.name)   +
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			    strlen(info->codec_dai.name) + 2,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			    GFP_KERNEL);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	sprintf(name, "%s-%s", info->cpu_dai.name, info->codec_dai.name);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	info->name = info->card = name;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	/* simple-card assumes platform == cpu */
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	*of_platform = *of_cpu;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	dev_dbg(dev, "card-name : %s\n", info->card);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	dev_dbg(dev, "platform : %04x\n", info->daifmt);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	dev_dbg(dev, "cpu : %s / %04x / %d\n",
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		info->cpu_dai.name,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		info->cpu_dai.fmt,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		info->cpu_dai.sysclk);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	dev_dbg(dev, "codec : %s / %04x / %d\n",
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		info->codec_dai.name,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		info->codec_dai.fmt,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		info->codec_dai.sysclk);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	return 0;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  }
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
  +                                                               static int asoc_simple_card_probe(struct platform_device *pdev)
  +                                                               {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	struct asoc_simple_card_info *cinfo;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	struct device_node *np = pdev->dev.of_node;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	struct device_node *of_cpu, *of_codec, *of_platform;
  +                                                               	struct device *dev = &pdev->dev;
  +                                                               
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	cinfo		= NULL;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	of_cpu		= NULL;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	of_codec	= NULL;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	of_platform	= NULL;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	if (np && of_device_is_available(np)) {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		cinfo = devm_kzalloc(dev, sizeof(*cinfo), GFP_KERNEL);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		if (cinfo) {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			int ret;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			cinfo->snd_card.dev = &pdev->dev;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			ret = asoc_simple_card_parse_of(np, cinfo, dev,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  							&of_cpu,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  							&of_codec,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  							&of_platform);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			if (ret < 0) {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				if (ret != -EPROBE_DEFER)
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  					dev_err(dev, "parse error %d\n", ret);
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  				return ret;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  			}
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		}
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	} else {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		cinfo->snd_card.dev = &pdev->dev;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		cinfo = pdev->dev.platform_data;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	}
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	if (!cinfo) {
  +                                                               		dev_err(dev, "no info for asoc-simple-card\n");
  +                                                               		return -EINVAL;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -206,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -226,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 -69,10 +229,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              
  ++                                                              	if (!cinfo->name	||
  ++                                                              	    !cinfo->card	||
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	    !cinfo->codec_dai.name	||
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	    !(cinfo->codec		|| of_codec)	||
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	    !(cinfo->platform		|| of_platform)	||
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	    !(cinfo->cpu_dai.name	|| of_cpu)) {
  +                                                               		dev_err(dev, "insufficient asoc_simple_card_info settings\n");
  +                                                               		return -EINVAL;
  +                                                               	}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -223,9 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -243,9 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 -86,6 +246,9 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	cinfo->snd_link.platform_name	= cinfo->platform;
  ++                                                              	cinfo->snd_link.codec_name	= cinfo->codec;
  ++                                                              	cinfo->snd_link.codec_dai_name	= cinfo->codec_dai.name;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	cinfo->snd_link.cpu_of_node	= of_cpu;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	cinfo->snd_link.codec_of_node	= of_codec;
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	cinfo->snd_link.platform_of_node = of_platform;
  +                                                               	cinfo->snd_link.init		= asoc_simple_card_dai_init;
  +                                                               
  +                                                               	/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -235,32 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -255,23 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 -95,25 +258,23 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	cinfo->snd_card.owner		= THIS_MODULE;
  ++                                                              	cinfo->snd_card.dai_link	= &cinfo->snd_link;
  ++                                                              	cinfo->snd_card.num_links	= 1;
-------------------- ---------------------------------------------	cinfo->snd_card.dev		= &pdev->dev;
-                                                               - 
-                                                               - 	return snd_soc_register_card(&cinfo->snd_card);
-                                                               - }
-                                                               - 
-                                                               - static int asoc_simple_card_remove(struct platform_device *pdev)
-                                                               - {
-                                                               - 	struct asoc_simple_card_info *cinfo = pdev->dev.platform_data;
  +                                                               
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	return devm_snd_soc_register_card(&pdev->dev, &cinfo->snd_card);
  +                                                               }
  +                                                               
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  static const struct of_device_id asoc_simple_of_match[] = {
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	{ .compatible = "simple-audio-card", },
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  	{},
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  };
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  MODULE_DEVICE_TABLE(of, asoc_simple_of_match);
  +                                                               
  +                                                               static struct platform_driver asoc_simple_card = {
  +                                                               	.driver = {
  ++                                                              		.name	= "asoc-simple-card",
  ++                                                              		.owner = THIS_MODULE,
++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++  		.of_match_table = asoc_simple_of_match,
  +                                                               	},
  +                                                               	.probe		= asoc_simple_card_probe,
-------------------- ---------------------------------------------	.remove		= asoc_simple_card_remove,
  +                                                               };
  +                                                               
  +                                                               module_platform_driver(asoc_simple_card);
diff --cc sound/soc/mxs/mxs-saif.c
index 54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,d6cb9a51dd57,d6cb9a51dd57,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,92db74dc3177,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33,54e622acac33..231d7e7b0711
--- a/sound/soc/mxs/mxs-saif.c
+++ b/sound/soc/mxs/mxs-saif.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 -50,9 +50,9 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static struct mxs_saif *mxs_saif[2]
  ++                                                               * This also means that both SAIFs must operate at the same sample rate.
  ++                                                               *
  ++                                                               * We abstract this as each saif has a master, the master could be
++++++++++++++++++  ++++++++++++++++++++++++++++++++++++++++++++   * itself or other saifs. In the generic saif driver, saif does not need
++++++++++++++++++  ++++++++++++++++++++++++++++++++++++++++++++   * to know the different clkmux. Saif only needs to know who is its master
++++++++++++++++++  ++++++++++++++++++++++++++++++++++++++++++++   * and operating its master to generate the proper clock rate for it.
  +                                                                * The master id is provided in mach-specific layer according to different
  +                                                                * clkmux setting.
  +                                                                */
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 -76,7 +76,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int mxs_saif_set_dai_sysclk(stru
  ++                                                               * Since SAIF may work on EXTMASTER mode, IOW, it's working BITCLK&LRCLK
  ++                                                               * is provided by other SAIF, we provide a interface here to get its master
  ++                                                               * from its master_id.
++++++++++++++++++  ++++++++++++++++++++++++++++++++++++++++++++   * Note that the master could be itself.
  +                                                                */
  +                                                               static inline struct mxs_saif *mxs_saif_get_master(struct mxs_saif * saif)
  +                                                               {
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 -516,7 +516,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int mxs_saif_trigger(struct snd_
  ++                                                              		}
  ++                                                              
  ++                                                              		/*
++++++++++++++++++  ++++++++++++++++++++++++++++++++++++++++++++  		 * If the saif's master is not itself, we also need to enable
  +                                                               		 * itself clk for its internal basic logic to work.
  +                                                               		 */
  +                                                               		if (saif != master_saif) {
diff --cc sound/soc/sh/rcar/scu.c
index fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,1406dd8d9ed2,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9,fa8fa15860b9..9bb08bb1d455
--- a/sound/soc/sh/rcar/scu.c
+++ b/sound/soc/sh/rcar/scu.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,13 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 -13,9 +13,13 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              struct rsnd_scu {
  ++                                                              	struct rsnd_scu_platform_info *info; /* rcar_snd.h */
  ++                                                              	struct rsnd_mod mod;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct clk *clk;
  +                                                               };
  +                                                               
  +                                                               #define rsnd_scu_mode_flags(p) ((p)->info->flags)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  #define rsnd_scu_convert_rate(p) ((p)->info->convert_rate)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  #define RSND_SCU_NAME_SIZE 16
  +                                                               
  +                                                               /*
  +                                                                * ADINR
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -30,15 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 -26,6 +30,15 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              #define OTBL_18		(6 << 16)
  ++                                                              #define OTBL_16		(8 << 16)
  ++                                                              
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  /*
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++   *		image of SRC (Sampling Rate Converter)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++   *
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++   * 96kHz   <-> +-----+	48kHz	+-----+	 48kHz	+-------+
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++   * 48kHz   <-> | SRC | <------>	| SSI |	<----->	| codec |
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++   * 44.1kHz <-> +-----+		+-----+		+-------+
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++   * ...
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++   *
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++   */
  +                                                               
  +                                                               #define rsnd_mod_to_scu(_mod)	\
  +                                                               	container_of((_mod), struct rsnd_scu, mod)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -49,8 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 -36,7 +49,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              		     ((pos) = (struct rsnd_scu *)(priv)->scu + i);	\
  ++                                                              	     i++)
  ++                                                              
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  /* Gen1 only */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  static int rsnd_src_set_route_if_gen1(struct rsnd_priv *priv,
  +                                                               			      struct rsnd_mod *mod,
  +                                                               			      struct rsnd_dai *rdai,
  +                                                               			      struct rsnd_dai_stream *io)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -69,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 -55,7 +69,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              		{ 0x3, 28, }, /* 7 */
  ++                                                              		{ 0x3, 30, }, /* 8 */
  ++                                                              	};
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
  +                                                               	u32 mask;
  +                                                               	u32 val;
  +                                                               	int shift;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -99,18 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 -85,9 +99,18 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	 */
  ++                                                              	shift	= (id % 4) * 8;
  ++                                                              	mask	= 0x1F << shift;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/*
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	 * ADG is used as source clock if SRC was used,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	 * then, SSI WS is used as destination clock.
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	 * SSI WS is used as source clock if SRC is not used
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	 * (when playback, source/destination become reverse when capture)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	 */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (rsnd_scu_convert_rate(scu))	/* use ADG */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		val = 0;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	else if (8 == id)		/* use SSI WS, but SRU8 is special */
  +                                                               		val = id << shift;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	else				/* use SSI WS */
  +                                                               		val = (id + 1) << shift;
  +                                                               
  +                                                               	switch (id / 4) {
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -128,45 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 -105,30 +128,45 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	return 0;
  ++                                                              }
  ++                                                              
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  unsigned int rsnd_scu_get_ssi_rate(struct rsnd_priv *priv,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				   struct rsnd_mod *ssi_mod,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				   struct snd_pcm_runtime *runtime)
  +                                                               {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct rsnd_scu *scu;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	unsigned int rate;
  +                                                               
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/* this function is assuming SSI id = SCU id here */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	scu = rsnd_mod_to_scu(rsnd_scu_mod_get(priv, rsnd_mod_id(ssi_mod)));
  +                                                               
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/*
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	 * return convert rate if SRC is used,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	 * otherwise, return runtime->rate as usual
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	 */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	rate = rsnd_scu_convert_rate(scu);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (!rate)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rate = runtime->rate;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	return rate;
  +                                                               }
  +                                                               
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  static int rsnd_scu_convert_rate_ctrl(struct rsnd_priv *priv,
  +                                                               			      struct rsnd_mod *mod,
  +                                                               			      struct rsnd_dai *rdai,
  +                                                               			      struct rsnd_dai_stream *io)
  ++                                                              {
  ++                                                              	struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	u32 convert_rate = rsnd_scu_convert_rate(scu);
  +                                                               	u32 adinr = runtime->channels;
  +                                                               
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/* set/clear soft reset */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	rsnd_mod_write(mod, SRC_SWRSR, 0);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	rsnd_mod_write(mod, SRC_SWRSR, 1);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/* Initialize the operation of the SRC internal circuits */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	rsnd_mod_write(mod, SRC_SRCIR, 1);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/* Set channel number and output bit length */
  +                                                               	switch (runtime->sample_bits) {
  +                                                               	case 16:
  +                                                               		adinr |= OTBL_16;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -177,81 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 -139,9 +177,81 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	default:
  ++                                                              		return -EIO;
  ++                                                              	}
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	rsnd_mod_write(mod, SRC_ADINR, adinr);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (convert_rate) {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		u32 fsrate = 0x0400000 / convert_rate * runtime->rate;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		int ret;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		/* Enable the initial value of IFS */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_write(mod, SRC_IFSCR, 1);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		/* Set initial value of IFS */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_write(mod, SRC_IFSVR, fsrate);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		/* Select SRC mode (fixed value) */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_write(mod, SRC_SRCCR, 0x00010110);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		/* Set the restriction value of the FS ratio (98%) */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_write(mod, SRC_MNFSR, fsrate / 100 * 98);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		if (rsnd_is_gen1(priv)) {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  			/* no SRC_BFSSR settings, since SRC_SRCCR::BUFMD is 0 */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		}
  +                                                               
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		/* set convert clock */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		ret = rsnd_adg_set_convert_clk(priv, mod,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  					       runtime->rate,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  					       convert_rate);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		if (ret < 0)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  			return ret;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	}
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/* Cancel the initialization and operate the SRC function */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	rsnd_mod_write(mod, SRC_SRCIR, 0);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/* use DMA transfer */
  +                                                               	rsnd_mod_write(mod, BUSIF_MODE, 1);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	return 0;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  }
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  static int rsnd_scu_transfer_start(struct rsnd_priv *priv,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				   struct rsnd_mod *mod,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				   struct rsnd_dai *rdai,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				   struct rsnd_dai_stream *io)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	int id = rsnd_mod_id(mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	u32 val;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (rsnd_is_gen1(priv)) {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		val = (1 << id);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_bset(mod, SRC_ROUTE_CTRL, val, val);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	}
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (rsnd_scu_convert_rate(scu))
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_write(mod, SRC_ROUTE_MODE0, 1);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	return 0;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  }
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  static int rsnd_scu_transfer_stop(struct rsnd_priv *priv,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				  struct rsnd_mod *mod,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				  struct rsnd_dai *rdai,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				  struct rsnd_dai_stream *io)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	int id = rsnd_mod_id(mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	u32 mask;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (rsnd_is_gen1(priv)) {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		mask = (1 << id);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_bset(mod, SRC_ROUTE_CTRL, mask, 0);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	}
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (rsnd_scu_convert_rate(scu))
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_write(mod, SRC_ROUTE_MODE0, 0);
  +                                                               
  +                                                               	return 0;
  +                                                               }
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -269,7 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 -159,6 +269,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int rsnd_scu_start(struct rsnd_m
  ++                                                              			  struct rsnd_dai_stream *io)
  ++                                                              {
  ++                                                              	struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
  +                                                               	struct device *dev = rsnd_priv_to_dev(priv);
  +                                                               	int ret;
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -284,19 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 -173,16 +284,19 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              		return 0;
  ++                                                              	}
  ++                                                              
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	clk_enable(scu->clk);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
  +                                                               	/* it use DMA transter */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	ret = rsnd_src_set_route_if_gen1(priv, mod, rdai, io);
  +                                                               	if (ret < 0)
  +                                                               		return ret;
  +                                                               
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	ret = rsnd_scu_convert_rate_ctrl(priv, mod, rdai, io);
  +                                                               	if (ret < 0)
  +                                                               		return ret;
  +                                                               
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	ret = rsnd_scu_transfer_start(priv, mod, rdai, io);
  +                                                               	if (ret < 0)
  +                                                               		return ret;
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -305,27 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 -191,9 +305,27 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	return 0;
  ++                                                              }
  ++                                                              
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  static int rsnd_scu_stop(struct rsnd_mod *mod,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  			  struct rsnd_dai *rdai,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  			  struct rsnd_dai_stream *io)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (!rsnd_scu_hpbif_is_enable(mod))
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		return 0;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	rsnd_scu_transfer_stop(priv, mod, rdai, io);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	clk_disable(scu->clk);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	return 0;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  }
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
  +                                                               static struct rsnd_mod_ops rsnd_scu_ops = {
  +                                                               	.name	= "scu",
  +                                                               	.start	= rsnd_scu_start,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	.stop	= rsnd_scu_stop,
  +                                                               };
  +                                                               
  +                                                               struct rsnd_mod *rsnd_scu_mod_get(struct rsnd_priv *priv, int id)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -341,8 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 -210,6 +342,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int rsnd_scu_probe(struct platform_devi
  ++                                                              {
  ++                                                              	struct device *dev = rsnd_priv_to_dev(priv);
  ++                                                              	struct rsnd_scu *scu;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct clk *clk;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	char name[RSND_SCU_NAME_SIZE];
  +                                                               	int i, nr;
  +                                                               
  +                                                               	/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -359,16 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 -226,9 +360,16 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	priv->scu	= scu;
  ++                                                              
  ++                                                              	for_each_rsnd_scu(scu, priv, i) {
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		snprintf(name, RSND_SCU_NAME_SIZE, "scu.%d", i);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		clk = devm_clk_get(dev, name);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		if (IS_ERR(clk))
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  			return PTR_ERR(clk);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
  +                                                               		rsnd_mod_init(priv, &scu->mod,
  +                                                               			      &rsnd_scu_ops, i);
  +                                                               		scu->info = &info->scu_info[i];
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		scu->clk = clk;
  +                                                               
  +                                                               		dev_dbg(dev, "SCU%d probed\n", i);
  +                                                               	}
diff --cc sound/soc/sh/rcar/ssi.c
index 5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,b7cd06be9436,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006,5ac20cd5e006..4b8cf7ca9d19
--- a/sound/soc/sh/rcar/ssi.c
+++ b/sound/soc/sh/rcar/ssi.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,10 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 -187,9 +187,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static void rsnd_ssi_status_check(struc
  ++                                                              }
  ++                                                              
  ++                                                              static int rsnd_ssi_master_clk_start(struct rsnd_ssi *ssi,
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				     struct rsnd_dai_stream *io)
  +                                                               {
  +                                                               	struct rsnd_priv *priv = rsnd_mod_to_priv(&ssi->mod);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
  +                                                               	struct device *dev = rsnd_priv_to_dev(priv);
  +                                                               	int i, j, ret;
  +                                                               	int adg_clk_div_table[] = {
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -200,7 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 -199,6 +200,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              		1, 2, 4, 8, 16, 6, 12,
  ++                                                              	};
  ++                                                              	unsigned int main_rate;
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	unsigned int rate = rsnd_scu_get_ssi_rate(priv, &ssi->mod, runtime);
  +                                                               
  +                                                               	/*
  +                                                               	 * Find best clock, and try to start ADG
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -211,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 -209,7 +211,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              			/*
  ++                                                              			 * this driver is assuming that
  ++                                                              			 * system word is 64fs (= 2 x 32bit)
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  			 * see rsnd_ssi_init()
  +                                                               			 */
  +                                                               			main_rate = rate / adg_clk_div_table[i]
  +                                                               				* 32 * 2 * ssi_clk_mul_table[j];
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -256,7 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 -254,11 +256,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static void rsnd_ssi_hw_start(struct rs
  ++                                                              			if (rsnd_ssi_clk_from_parent(ssi))
  ++                                                              				rsnd_ssi_hw_start(ssi->parent, rdai, io);
  ++                                                              			else
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  				rsnd_ssi_master_clk_start(ssi, io);
  +                                                               		}
  +                                                               	}
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -455,10 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 -457,6 +455,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int rsnd_ssi_pio_start(struct rs
  ++                                                              	/* enable PIO IRQ */
  ++                                                              	ssi->cr_etc = UIEN | OIEN | DIEN;
  ++                                                              
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	/* enable PIO interrupt if gen2 */
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  	if (rsnd_is_gen2(priv))
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		rsnd_mod_write(&ssi->mod, INT_ENABLE, 0x0f000000);
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  
  +                                                               	rsnd_ssi_hw_start(ssi, rdai, io);
  +                                                               
  +                                                               	dev_dbg(dev, "%s.%d start\n", rsnd_mod_name(mod), rsnd_mod_id(mod));
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -651,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 -650,7 +652,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int rsnd_ssi_probe(struct platform_devi
  ++                                                              
  ++                                                              		snprintf(name, RSND_SSI_NAME_SIZE, "ssi.%d", i);
  ++                                                              
++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++  		clk = devm_clk_get(dev, name);
  +                                                               		if (IS_ERR(clk))
  +                                                               			return PTR_ERR(clk);
  +