@@ -234,8 +234,6 @@ enum graph_type {
234
234
#define GRAPH_NODENAME_DPCM "dpcm"
235
235
#define GRAPH_NODENAME_C2C "codec2codec"
236
236
237
- #define port_to_endpoint (port ) of_get_child_by_name(port, "endpoint")
238
-
239
237
#define ep_to_port (ep ) of_get_parent(ep)
240
238
static struct device_node * port_to_ports (struct device_node * port )
241
239
{
@@ -351,14 +349,9 @@ static struct device_node *graph_get_next_multi_ep(struct device_node **port)
351
349
* port@1 { rep1 };
352
350
* };
353
351
*/
354
- do {
355
- * port = of_get_next_child (ports , * port );
356
- if (!* port )
357
- break ;
358
- } while (!of_node_name_eq (* port , "port" ));
359
-
352
+ * port = of_graph_get_next_port (ports , * port );
360
353
if (* port ) {
361
- ep = port_to_endpoint (* port );
354
+ ep = of_graph_get_next_port_endpoint (* port , NULL );
362
355
rep = of_graph_get_remote_endpoint (ep );
363
356
}
364
357
@@ -530,67 +523,66 @@ static int graph_parse_node_multi_nm(struct snd_soc_dai_link *dai_link,
530
523
* };
531
524
* };
532
525
*/
533
- struct device_node * mcpu_ep = port_to_endpoint (mcpu_port );
534
- struct device_node * mcpu_ep_n = mcpu_ep ;
535
- struct device_node * mcpu_port_top = of_get_next_child ( port_to_ports ( mcpu_port ) , NULL );
536
- struct device_node * mcpu_ep_top = port_to_endpoint (mcpu_port_top );
526
+ struct device_node * mcpu_ep = of_graph_get_next_port_endpoint (mcpu_port , NULL );
527
+ struct device_node * mcpu_ports = port_to_ports ( mcpu_port ) ;
528
+ struct device_node * mcpu_port_top = of_graph_get_next_port ( mcpu_ports , NULL );
529
+ struct device_node * mcpu_ep_top = of_graph_get_next_port_endpoint (mcpu_port_top , NULL );
537
530
struct device_node * mcodec_ep_top = of_graph_get_remote_endpoint (mcpu_ep_top );
538
531
struct device_node * mcodec_port_top = ep_to_port (mcodec_ep_top );
539
532
struct device_node * mcodec_ports = port_to_ports (mcodec_port_top );
540
533
int nm_max = max (dai_link -> num_cpus , dai_link -> num_codecs );
541
- int ret = - EINVAL ;
534
+ int ret = 0 ;
542
535
543
- if (cpu_idx > dai_link -> num_cpus )
536
+ if (cpu_idx > dai_link -> num_cpus ) {
537
+ ret = - EINVAL ;
544
538
goto mcpu_err ;
539
+ }
545
540
546
- while ( 1 ) {
541
+ for_each_of_graph_port_endpoint ( mcpu_port , mcpu_ep_n ) {
547
542
struct device_node * mcodec_ep_n ;
548
- struct device_node * mcodec_port_i ;
549
543
struct device_node * mcodec_port ;
550
544
int codec_idx ;
551
545
546
+ /* ignore 1st ep which is for element */
547
+ if (mcpu_ep_n == mcpu_ep )
548
+ continue ;
549
+
552
550
if (* nm_idx > nm_max )
553
551
break ;
554
552
555
- mcpu_ep_n = of_get_next_child (mcpu_port , mcpu_ep_n );
556
- if (!mcpu_ep_n ) {
557
- ret = 0 ;
558
- break ;
559
- }
560
-
561
553
mcodec_ep_n = of_graph_get_remote_endpoint (mcpu_ep_n );
562
554
mcodec_port = ep_to_port (mcodec_ep_n );
563
555
564
- if (mcodec_ports != port_to_ports (mcodec_port ))
556
+ if (mcodec_ports != port_to_ports (mcodec_port )) {
557
+ ret = - EINVAL ;
565
558
goto mcpu_err ;
559
+ }
566
560
567
561
codec_idx = 0 ;
568
- mcodec_port_i = of_get_next_child (mcodec_ports , NULL );
569
- while (1 ) {
570
- if (codec_idx > dai_link -> num_codecs )
571
- goto mcodec_err ;
572
-
573
- mcodec_port_i = of_get_next_child (mcodec_ports , mcodec_port_i );
562
+ ret = - EINVAL ;
563
+ for_each_of_graph_port (mcodec_ports , mcodec_port_i ) {
574
564
575
- if (!mcodec_port_i )
576
- goto mcodec_err ;
565
+ /* ignore 1st port which is for pair connection */
566
+ if (mcodec_port_top == mcodec_port_i )
567
+ continue ;
577
568
578
- if (mcodec_port_i == mcodec_port )
569
+ if (codec_idx > dai_link -> num_codecs )
579
570
break ;
580
571
572
+ if (mcodec_port_i == mcodec_port ) {
573
+ dai_link -> ch_maps [* nm_idx ].cpu = cpu_idx ;
574
+ dai_link -> ch_maps [* nm_idx ].codec = codec_idx ;
575
+
576
+ (* nm_idx )++ ;
577
+ ret = 0 ;
578
+ break ;
579
+ }
581
580
codec_idx ++ ;
582
581
}
583
-
584
- dai_link -> ch_maps [* nm_idx ].cpu = cpu_idx ;
585
- dai_link -> ch_maps [* nm_idx ].codec = codec_idx ;
586
-
587
- (* nm_idx )++ ;
588
-
589
- of_node_put (mcodec_port_i );
590
- mcodec_err :
591
582
of_node_put (mcodec_port );
592
- of_node_put (mcpu_ep_n );
593
583
of_node_put (mcodec_ep_n );
584
+ if (ret < 0 )
585
+ break ;
594
586
}
595
587
mcpu_err :
596
588
of_node_put (mcpu_ep );
@@ -674,7 +666,7 @@ static int graph_parse_node_single(struct simple_util_priv *priv,
674
666
struct device_node * port ,
675
667
struct link_info * li , int is_cpu )
676
668
{
677
- struct device_node * ep = port_to_endpoint (port );
669
+ struct device_node * ep = of_graph_get_next_port_endpoint (port , NULL );
678
670
int ret = __graph_parse_node (priv , gtype , ep , li , is_cpu , 0 );
679
671
680
672
of_node_put (ep );
@@ -769,7 +761,7 @@ static void graph_link_init(struct simple_util_priv *priv,
769
761
of_node_put (port_cpu );
770
762
port_cpu = ep_to_port (ep_cpu );
771
763
} else {
772
- ep_cpu = port_to_endpoint (port_cpu );
764
+ ep_cpu = of_graph_get_next_port_endpoint (port_cpu , NULL );
773
765
}
774
766
ports_cpu = port_to_ports (port_cpu );
775
767
@@ -779,7 +771,7 @@ static void graph_link_init(struct simple_util_priv *priv,
779
771
of_node_put (port_cpu );
780
772
port_codec = ep_to_port (ep_codec );
781
773
} else {
782
- ep_codec = port_to_endpoint (port_codec );
774
+ ep_codec = of_graph_get_next_port_endpoint (port_codec , NULL );
783
775
}
784
776
ports_codec = port_to_ports (port_codec );
785
777
@@ -850,7 +842,7 @@ int audio_graph2_link_normal(struct simple_util_priv *priv,
850
842
struct link_info * li )
851
843
{
852
844
struct device_node * cpu_port = lnk ;
853
- struct device_node * cpu_ep = port_to_endpoint (cpu_port );
845
+ struct device_node * cpu_ep = of_graph_get_next_port_endpoint (cpu_port , NULL );
854
846
struct device_node * codec_port = of_graph_get_remote_port (cpu_ep );
855
847
int ret ;
856
848
@@ -883,7 +875,7 @@ int audio_graph2_link_dpcm(struct simple_util_priv *priv,
883
875
struct device_node * lnk ,
884
876
struct link_info * li )
885
877
{
886
- struct device_node * ep = port_to_endpoint (lnk );
878
+ struct device_node * ep = of_graph_get_next_port_endpoint (lnk , NULL );
887
879
struct device_node * rep = of_graph_get_remote_endpoint (ep );
888
880
struct device_node * cpu_port = NULL ;
889
881
struct device_node * codec_port = NULL ;
@@ -1007,7 +999,7 @@ int audio_graph2_link_c2c(struct simple_util_priv *priv,
1007
999
of_node_get (lnk );
1008
1000
port0 = lnk ;
1009
1001
ports = port_to_ports (port0 );
1010
- port1 = of_get_next_child (ports , lnk );
1002
+ port1 = of_graph_get_next_port (ports , port0 );
1011
1003
1012
1004
/*
1013
1005
* Card2 can use original Codec2Codec settings if DT has.
@@ -1037,8 +1029,8 @@ int audio_graph2_link_c2c(struct simple_util_priv *priv,
1037
1029
dai_link -> num_c2c_params = 1 ;
1038
1030
}
1039
1031
1040
- ep0 = port_to_endpoint (port0 );
1041
- ep1 = port_to_endpoint (port1 );
1032
+ ep0 = of_graph_get_next_port_endpoint (port0 , NULL );
1033
+ ep1 = of_graph_get_next_port_endpoint (port1 , NULL );
1042
1034
1043
1035
codec0_port = of_graph_get_remote_port (ep0 );
1044
1036
codec1_port = of_graph_get_remote_port (ep1 );
@@ -1144,7 +1136,7 @@ static int graph_counter(struct device_node *lnk)
1144
1136
* CPU/Codec = N:M case has many endpoints.
1145
1137
* We can't use of_graph_get_endpoint_count() here
1146
1138
*/
1147
- return of_get_child_count (ports ) - 1 ;
1139
+ return of_graph_get_port_count (ports ) - 1 ;
1148
1140
}
1149
1141
/*
1150
1142
* Single CPU / Codec
@@ -1158,7 +1150,7 @@ static int graph_count_normal(struct simple_util_priv *priv,
1158
1150
struct link_info * li )
1159
1151
{
1160
1152
struct device_node * cpu_port = lnk ;
1161
- struct device_node * cpu_ep = port_to_endpoint (cpu_port );
1153
+ struct device_node * cpu_ep = of_graph_get_next_port_endpoint (cpu_port , NULL );
1162
1154
struct device_node * codec_port = of_graph_get_remote_port (cpu_ep );
1163
1155
1164
1156
/*
@@ -1186,7 +1178,7 @@ static int graph_count_dpcm(struct simple_util_priv *priv,
1186
1178
struct device_node * lnk ,
1187
1179
struct link_info * li )
1188
1180
{
1189
- struct device_node * ep = port_to_endpoint (lnk );
1181
+ struct device_node * ep = of_graph_get_next_port_endpoint (lnk , NULL );
1190
1182
struct device_node * rport = of_graph_get_remote_port (ep );
1191
1183
1192
1184
/*
@@ -1228,9 +1220,9 @@ static int graph_count_c2c(struct simple_util_priv *priv,
1228
1220
{
1229
1221
struct device_node * ports = port_to_ports (lnk );
1230
1222
struct device_node * port0 = lnk ;
1231
- struct device_node * port1 = of_get_next_child (ports , of_node_get (lnk ));
1232
- struct device_node * ep0 = port_to_endpoint (port0 );
1233
- struct device_node * ep1 = port_to_endpoint (port1 );
1223
+ struct device_node * port1 = of_graph_get_next_port (ports , of_node_get (port0 ));
1224
+ struct device_node * ep0 = of_graph_get_next_port_endpoint (port0 , NULL );
1225
+ struct device_node * ep1 = of_graph_get_next_port_endpoint (port1 , NULL );
1234
1226
struct device_node * codec0 = of_graph_get_remote_port (ep0 );
1235
1227
struct device_node * codec1 = of_graph_get_remote_port (ep1 );
1236
1228
0 commit comments