@@ -234,8 +234,6 @@ enum graph_type {
234234#define GRAPH_NODENAME_DPCM "dpcm"
235235#define GRAPH_NODENAME_C2C "codec2codec"
236236
237- #define port_to_endpoint (port ) of_get_child_by_name(port, "endpoint")
238-
239237#define ep_to_port (ep ) of_get_parent(ep)
240238static struct device_node * port_to_ports (struct device_node * port )
241239{
@@ -351,14 +349,9 @@ static struct device_node *graph_get_next_multi_ep(struct device_node **port)
351349 * port@1 { rep1 };
352350 * };
353351 */
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 );
360353 if (* port ) {
361- ep = port_to_endpoint (* port );
354+ ep = of_graph_get_next_port_endpoint (* port , NULL );
362355 rep = of_graph_get_remote_endpoint (ep );
363356 }
364357
@@ -530,67 +523,66 @@ static int graph_parse_node_multi_nm(struct snd_soc_dai_link *dai_link,
530523 * };
531524 * };
532525 */
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 );
537530 struct device_node * mcodec_ep_top = of_graph_get_remote_endpoint (mcpu_ep_top );
538531 struct device_node * mcodec_port_top = ep_to_port (mcodec_ep_top );
539532 struct device_node * mcodec_ports = port_to_ports (mcodec_port_top );
540533 int nm_max = max (dai_link -> num_cpus , dai_link -> num_codecs );
541- int ret = - EINVAL ;
534+ int ret = 0 ;
542535
543- if (cpu_idx > dai_link -> num_cpus )
536+ if (cpu_idx > dai_link -> num_cpus ) {
537+ ret = - EINVAL ;
544538 goto mcpu_err ;
539+ }
545540
546- while ( 1 ) {
541+ for_each_of_graph_port_endpoint ( mcpu_port , mcpu_ep_n ) {
547542 struct device_node * mcodec_ep_n ;
548- struct device_node * mcodec_port_i ;
549543 struct device_node * mcodec_port ;
550544 int codec_idx ;
551545
546+ /* ignore 1st ep which is for element */
547+ if (mcpu_ep_n == mcpu_ep )
548+ continue ;
549+
552550 if (* nm_idx > nm_max )
553551 break ;
554552
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-
561553 mcodec_ep_n = of_graph_get_remote_endpoint (mcpu_ep_n );
562554 mcodec_port = ep_to_port (mcodec_ep_n );
563555
564- if (mcodec_ports != port_to_ports (mcodec_port ))
556+ if (mcodec_ports != port_to_ports (mcodec_port )) {
557+ ret = - EINVAL ;
565558 goto mcpu_err ;
559+ }
566560
567561 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 ) {
574564
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 ;
577568
578- if (mcodec_port_i == mcodec_port )
569+ if (codec_idx > dai_link -> num_codecs )
579570 break ;
580571
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+ }
581580 codec_idx ++ ;
582581 }
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 :
591582 of_node_put (mcodec_port );
592- of_node_put (mcpu_ep_n );
593583 of_node_put (mcodec_ep_n );
584+ if (ret < 0 )
585+ break ;
594586 }
595587mcpu_err :
596588 of_node_put (mcpu_ep );
@@ -674,7 +666,7 @@ static int graph_parse_node_single(struct simple_util_priv *priv,
674666 struct device_node * port ,
675667 struct link_info * li , int is_cpu )
676668{
677- struct device_node * ep = port_to_endpoint (port );
669+ struct device_node * ep = of_graph_get_next_port_endpoint (port , NULL );
678670 int ret = __graph_parse_node (priv , gtype , ep , li , is_cpu , 0 );
679671
680672 of_node_put (ep );
@@ -769,7 +761,7 @@ static void graph_link_init(struct simple_util_priv *priv,
769761 of_node_put (port_cpu );
770762 port_cpu = ep_to_port (ep_cpu );
771763 } else {
772- ep_cpu = port_to_endpoint (port_cpu );
764+ ep_cpu = of_graph_get_next_port_endpoint (port_cpu , NULL );
773765 }
774766 ports_cpu = port_to_ports (port_cpu );
775767
@@ -779,7 +771,7 @@ static void graph_link_init(struct simple_util_priv *priv,
779771 of_node_put (port_cpu );
780772 port_codec = ep_to_port (ep_codec );
781773 } else {
782- ep_codec = port_to_endpoint (port_codec );
774+ ep_codec = of_graph_get_next_port_endpoint (port_codec , NULL );
783775 }
784776 ports_codec = port_to_ports (port_codec );
785777
@@ -850,7 +842,7 @@ int audio_graph2_link_normal(struct simple_util_priv *priv,
850842 struct link_info * li )
851843{
852844 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 );
854846 struct device_node * codec_port = of_graph_get_remote_port (cpu_ep );
855847 int ret ;
856848
@@ -883,7 +875,7 @@ int audio_graph2_link_dpcm(struct simple_util_priv *priv,
883875 struct device_node * lnk ,
884876 struct link_info * li )
885877{
886- struct device_node * ep = port_to_endpoint (lnk );
878+ struct device_node * ep = of_graph_get_next_port_endpoint (lnk , NULL );
887879 struct device_node * rep = of_graph_get_remote_endpoint (ep );
888880 struct device_node * cpu_port = NULL ;
889881 struct device_node * codec_port = NULL ;
@@ -1007,7 +999,7 @@ int audio_graph2_link_c2c(struct simple_util_priv *priv,
1007999 of_node_get (lnk );
10081000 port0 = lnk ;
10091001 ports = port_to_ports (port0 );
1010- port1 = of_get_next_child (ports , lnk );
1002+ port1 = of_graph_get_next_port (ports , port0 );
10111003
10121004 /*
10131005 * Card2 can use original Codec2Codec settings if DT has.
@@ -1037,8 +1029,8 @@ int audio_graph2_link_c2c(struct simple_util_priv *priv,
10371029 dai_link -> num_c2c_params = 1 ;
10381030 }
10391031
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 );
10421034
10431035 codec0_port = of_graph_get_remote_port (ep0 );
10441036 codec1_port = of_graph_get_remote_port (ep1 );
@@ -1144,7 +1136,7 @@ static int graph_counter(struct device_node *lnk)
11441136 * CPU/Codec = N:M case has many endpoints.
11451137 * We can't use of_graph_get_endpoint_count() here
11461138 */
1147- return of_get_child_count (ports ) - 1 ;
1139+ return of_graph_get_port_count (ports ) - 1 ;
11481140 }
11491141 /*
11501142 * Single CPU / Codec
@@ -1158,7 +1150,7 @@ static int graph_count_normal(struct simple_util_priv *priv,
11581150 struct link_info * li )
11591151{
11601152 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 );
11621154 struct device_node * codec_port = of_graph_get_remote_port (cpu_ep );
11631155
11641156 /*
@@ -1186,7 +1178,7 @@ static int graph_count_dpcm(struct simple_util_priv *priv,
11861178 struct device_node * lnk ,
11871179 struct link_info * li )
11881180{
1189- struct device_node * ep = port_to_endpoint (lnk );
1181+ struct device_node * ep = of_graph_get_next_port_endpoint (lnk , NULL );
11901182 struct device_node * rport = of_graph_get_remote_port (ep );
11911183
11921184 /*
@@ -1228,9 +1220,9 @@ static int graph_count_c2c(struct simple_util_priv *priv,
12281220{
12291221 struct device_node * ports = port_to_ports (lnk );
12301222 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 );
12341226 struct device_node * codec0 = of_graph_get_remote_port (ep0 );
12351227 struct device_node * codec1 = of_graph_get_remote_port (ep1 );
12361228
0 commit comments