Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge remote-tracking branch 'asoc/fix/dapm' into asoc-next

+15
+1
include/sound/soc-dapm.h
··· 488 488 /* status */ 489 489 u32 connect:1; /* source and sink widgets are connected */ 490 490 u32 walked:1; /* path has been walked */ 491 + u32 walking:1; /* path is in the process of being walked */ 491 492 u32 weak:1; /* path ignored for power management */ 492 493 493 494 int (*connected)(struct snd_soc_dapm_widget *source,
+14
sound/soc/soc-dapm.c
··· 831 831 if (path->weak) 832 832 continue; 833 833 834 + if (path->walking) 835 + return 1; 836 + 834 837 if (path->walked) 835 838 continue; 836 839 ··· 841 838 842 839 if (path->sink && path->connect) { 843 840 path->walked = 1; 841 + path->walking = 1; 844 842 845 843 /* do we need to add this widget to the list ? */ 846 844 if (list) { ··· 851 847 dev_err(widget->dapm->dev, 852 848 "ASoC: could not add widget %s\n", 853 849 widget->name); 850 + path->walking = 0; 854 851 return con; 855 852 } 856 853 } 857 854 858 855 con += is_connected_output_ep(path->sink, list); 856 + 857 + path->walking = 0; 859 858 } 860 859 } 861 860 ··· 938 931 if (path->weak) 939 932 continue; 940 933 934 + if (path->walking) 935 + return 1; 936 + 941 937 if (path->walked) 942 938 continue; 943 939 ··· 948 938 949 939 if (path->source && path->connect) { 950 940 path->walked = 1; 941 + path->walking = 1; 951 942 952 943 /* do we need to add this widget to the list ? */ 953 944 if (list) { ··· 958 947 dev_err(widget->dapm->dev, 959 948 "ASoC: could not add widget %s\n", 960 949 widget->name); 950 + path->walking = 0; 961 951 return con; 962 952 } 963 953 } 964 954 965 955 con += is_connected_input_ep(path->source, list); 956 + 957 + path->walking = 0; 966 958 } 967 959 } 968 960