I get the following output from make on the above kernel version (this is on Stretch)
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:26:13: error: ‘asoc_simple_startup’ undeclared here (not in a function)
.startup = asoc_simple_startup,
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:27:14: error: ‘asoc_simple_shutdown’ undeclared here (not in a function)
.shutdown = asoc_simple_shutdown,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:28:15: error: ‘asoc_simple_hw_params’ undeclared here (not in a function)
.hw_params = asoc_simple_hw_params,
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:82:13: warning: ‘struct asoc_simple_data’ declared inside parameter list will not be visible outside of this definition or declaration
struct asoc_simple_data adata)
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_parse_convert’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:87:2: error: implicit declaration of function ‘asoc_simple_parse_convert’ [-Werror=implicit-function-declaration]
asoc_simple_parse_convert(dev, top, PREFIX, adata);
^~~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:98:13: warning: ‘struct simple_dai_props’ declared inside parameter list will not be visible outside of this definition or declaration
struct simple_dai_props props,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_parse_mclk_fs’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:105:40: error: dereferencing pointer to incomplete type ‘struct simple_dai_props’
of_property_read_u32(top, prop, &props->mclk_fs);
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:118:15: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration
struct link_info li,
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:115:43: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration
static int simple_dai_link_of_dpcm(struct asoc_simple_priv priv,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_dai_link_of_dpcm’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:121:23: error: implicit declaration of function ‘simple_priv_to_dev’ [-Werror=implicit-function-declaration]
struct device dev = simple_priv_to_dev(priv);
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:121:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:122:38: error: implicit declaration of function ‘simple_priv_to_link’ [-Werror=implicit-function-declaration]
struct snd_soc_dai_link dai_link = simple_priv_to_link(priv, li->link);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:122:66: error: dereferencing pointer to incomplete type ‘struct link_info’
struct snd_soc_dai_link dai_link = simple_priv_to_link(priv, li->link);
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:123:39: error: implicit declaration of function ‘simple_priv_to_props’ [-Werror=implicit-function-declaration]
struct simple_dai_props dai_props = simple_priv_to_props(priv, li->link);
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:125:52: error: ‘struct snd_soc_dai_link’ has no member named ‘cpus’; did you mean ‘ops’?
struct snd_soc_dai_link_component cpus = dai_link->cpus;
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:162:12: error: dereferencing pointer to incomplete type ‘struct simple_dai_props’
dai_props->cpu_dai = &priv->dais[li->dais++];
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:162:29: error: dereferencing pointer to incomplete type ‘struct asoc_simple_priv’
dai_props->cpu_dai = &priv->dais[li->dais++];
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:164:9: error: implicit declaration of function ‘asoc_simple_parse_cpu’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_cpu(np, dai_link, &is_single_links);
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:168:9: error: implicit declaration of function ‘asoc_simple_parse_clk_cpu’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_clk_cpu(dev, np, dai_link, dai);
^~~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:172:9: error: implicit declaration of function ‘asoc_simple_set_dailink_name’ [-Werror=implicit-function-declaration]
ret = asoc_simple_set_dailink_name(dev, dai_link,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:178:3: error: implicit declaration of function ‘asoc_simple_canonicalize_cpu’ [-Werror=implicit-function-declaration]
asoc_simple_canonicalize_cpu(dai_link, is_single_links);
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:189:34: error: ‘asoc_simple_be_hw_params_fixup’ undeclared (first use in this function)
dai_link->be_hw_params_fixup = asoc_simple_be_hw_params_fixup;
^~~~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:189:34: note: each undeclared identifier is reported only once for each function it appears in
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:197:9: error: implicit declaration of function ‘asoc_simple_parse_codec’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_codec(np, dai_link);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:201:9: error: implicit declaration of function ‘asoc_simple_parse_clk_codec’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_clk_codec(dev, np, dai_link, dai);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:212:3: error: implicit declaration of function ‘snd_soc_of_parse_node_prefix’ [-Werror=implicit-function-declaration]
snd_soc_of_parse_node_prefix(top, cconf, codecs->of_node,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:221:39: error: passing argument 4 of ‘simple_parse_mclk_fs’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_parse_mclk_fs(top, np, codec, dai_props, prefix);
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:95:13: note: expected ‘struct simple_dai_props ’ but argument is of type ‘struct simple_dai_props ’
static void simple_parse_mclk_fs(struct device_node top,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:223:2: error: implicit declaration of function ‘asoc_simple_canonicalize_platform’ [-Werror=implicit-function-declaration]
asoc_simple_canonicalize_platform(dai_link);
^~~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:225:8: error: implicit declaration of function ‘asoc_simple_parse_tdm’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_tdm(np, dai);
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:229:8: error: implicit declaration of function ‘asoc_simple_parse_daifmt’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_daifmt(dev, node, codec,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:237:21: error: ‘asoc_simple_dai_init’ undeclared (first use in this function)
dai_link->init = asoc_simple_dai_init;
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:247:17: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration
struct link_info li,
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:244:38: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration
static int simple_dai_link_of(struct asoc_simple_priv priv,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_dai_link_of’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:250:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct device dev = simple_priv_to_dev(priv);
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:251:66: error: dereferencing pointer to incomplete type ‘struct link_info’
struct snd_soc_dai_link dai_link = simple_priv_to_link(priv, li->link);
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:286:11: error: dereferencing pointer to incomplete type ‘struct simple_dai_props’
dai_props->cpu_dai = &priv->dais[li->dais++];
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:286:28: error: dereferencing pointer to incomplete type ‘struct asoc_simple_priv’
dai_props->cpu_dai = &priv->dais[li->dais++];
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:295:40: error: passing argument 4 of ‘simple_parse_mclk_fs’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_parse_mclk_fs(top, cpu, codec, dai_props, prefix);
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:95:13: note: expected ‘struct simple_dai_props ’ but argument is of type ‘struct simple_dai_props ’
static void simple_parse_mclk_fs(struct device_node top,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:305:8: error: implicit declaration of function ‘asoc_simple_parse_platform’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_platform(plat, dai_link);
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:327:17: error: ‘struct snd_soc_dai_link’ has no member named ‘cpus’; did you mean ‘ops’?
dai_link->cpus->dai_name,
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:333:19: error: ‘asoc_simple_dai_init’ undeclared (first use in this function)
dai_link->init = asoc_simple_dai_init;
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:346:11: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration
struct link_info li,
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:40: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration
static int simple_for_each_link(struct asoc_simple_priv priv,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_for_each_link’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:356:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct device dev = simple_priv_to_dev(priv);
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:372:27: error: storage size of ‘adata’ isn’t known
struct asoc_simple_data adata;
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:372:27: warning: unused variable ‘adata’ [-Wunused-variable]
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:422:13: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration
struct asoc_simple_priv priv)
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_parse_aux_devs’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:424:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct device dev = simple_priv_to_dev(priv);
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:426:30: error: implicit declaration of function ‘simple_priv_to_card’ [-Werror=implicit-function-declaration]
struct snd_soc_card card = simple_priv_to_card(priv);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:426:30: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:445:19: error: ‘struct snd_soc_aux_dev’ has no member named ‘dlc’
card->aux_dev[i].dlc.of_node = aux_node;
^
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:452:35: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration
static int simple_parse_of(struct asoc_simple_priv priv)
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_parse_of’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:454:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct device dev = simple_priv_to_dev(priv);
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:456:30: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct snd_soc_card card = simple_priv_to_card(priv);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:457:19: error: storage size of ‘li’ isn’t known
struct link_info li;
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:463:8: error: implicit declaration of function ‘asoc_simple_parse_widgets’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_widgets(card, PREFIX);
^~~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:467:8: error: implicit declaration of function ‘asoc_simple_parse_routing’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_routing(card, PREFIX);
^~~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:471:8: error: implicit declaration of function ‘asoc_simple_parse_pin_switches’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_pin_switches(card, PREFIX);
^~~~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:490:30: error: passing argument 1 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types]
ret = simple_for_each_link(priv, &li,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’
static int simple_for_each_link(struct asoc_simple_priv priv,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:491:9: error: passing argument 3 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_dai_link_of,
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ but argument is of type ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’
static int simple_for_each_link(struct asoc_simple_priv priv,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:492:9: error: passing argument 4 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_dai_link_of_dpcm);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ but argument is of type ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’
static int simple_for_each_link(struct asoc_simple_priv priv,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:497:8: error: implicit declaration of function ‘asoc_simple_parse_card_name’ [-Werror=implicit-function-declaration]
ret = asoc_simple_parse_card_name(card, PREFIX);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:501:35: error: passing argument 2 of ‘simple_parse_aux_devs’ from incompatible pointer type [-Werror=incompatible-pointer-types]
ret = simple_parse_aux_devs(top, priv);
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:421:12: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’
static int simple_parse_aux_devs(struct device_node node,
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:457:19: warning: unused variable ‘li’ [-Wunused-variable]
struct link_info li;
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:509:16: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration
struct link_info li, bool is_top)
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:506:37: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration
static int simple_count_noml(struct asoc_simple_priv priv,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_count_noml’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:511:4: error: dereferencing pointer to incomplete type ‘struct link_info’
li->dais++; / CPU or Codec /
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:521:16: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration
struct link_info li, bool is_top)
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:518:37: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration
static int simple_count_dpcm(struct asoc_simple_priv priv,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_count_dpcm’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:523:4: error: dereferencing pointer to incomplete type ‘struct link_info’
li->dais++; / CPU or Codec /
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:532:14: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration
struct link_info li)
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:531:42: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration
static void simple_get_dais_count(struct asoc_simple_priv priv,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_get_dais_count’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:534:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct device dev = simple_priv_to_dev(priv);
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:584:5: error: dereferencing pointer to incomplete type ‘struct link_info’
li->link = 1;
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:590:23: error: passing argument 1 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_for_each_link(priv, li,
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’
static int simple_for_each_link(struct asoc_simple_priv priv,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:590:29: error: passing argument 2 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_for_each_link(priv, li,
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘struct link_info ’ but argument is of type ‘struct link_info ’
static int simple_for_each_link(struct asoc_simple_priv priv,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:591:9: error: passing argument 3 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_count_noml,
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ but argument is of type ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’
static int simple_for_each_link(struct asoc_simple_priv priv,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:592:9: error: passing argument 4 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_count_dpcm);
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ but argument is of type ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’
static int simple_for_each_link(struct asoc_simple_priv priv,
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_soc_probe’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:603:8: error: implicit declaration of function ‘asoc_simple_init_hp’ [-Werror=implicit-function-declaration]
ret = asoc_simple_init_hp(card, &priv->hp_jack, PREFIX);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:603:39: error: dereferencing pointer to incomplete type ‘struct asoc_simple_priv’
ret = asoc_simple_init_hp(card, &priv->hp_jack, PREFIX);
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:607:8: error: implicit declaration of function ‘asoc_simple_init_mic’ [-Werror=implicit-function-declaration]
ret = asoc_simple_init_mic(card, &priv->mic_jack, PREFIX);
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘asoc_simple_probe’:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:620:19: error: storage size of ‘li’ isn’t known
struct link_info li;
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:624:34: error: dereferencing pointer to incomplete type ‘struct asoc_simple_priv’
priv = devm_kzalloc(dev, sizeof(priv), GFP_KERNEL);
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:628:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
card = simple_priv_to_card(priv);
^
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:634:24: error: passing argument 1 of ‘simple_get_dais_count’ from incompatible pointer type [-Werror=incompatible-pointer-types]
simple_get_dais_count(priv, &li);
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:531:13: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’
static void simple_get_dais_count(struct asoc_simple_priv priv,
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:638:8: error: implicit declaration of function ‘asoc_simple_init_priv’ [-Werror=implicit-function-declaration]
ret = asoc_simple_init_priv(priv, &li);
^~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:644:25: error: passing argument 1 of ‘simple_parse_of’ from incompatible pointer type [-Werror=incompatible-pointer-types]
ret = simple_parse_of(priv);
^~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:452:12: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’
static int simple_parse_of(struct asoc_simple_priv priv)
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:676:12: error: dereferencing pointer to incomplete type ‘struct simple_dai_props’
dai_props->cpu_dai = &priv->dais[dai_idx++];
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:679:20: error: ‘struct snd_soc_dai_link’ has no member named ‘cpus’; did you mean ‘ops’?
cpus = dai_link->cpus;
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:686:23: error: ‘struct snd_soc_dai_link’ has no member named ‘platforms’; did you mean ‘platform_name’?
platform = dai_link->platforms;
^~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:693:21: error: ‘asoc_simple_dai_init’ undeclared (first use in this function)
dai_link->init = asoc_simple_dai_init;
^~~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:702:2: error: implicit declaration of function ‘asoc_simple_debug_info’ [-Werror=implicit-function-declaration]
asoc_simple_debug_info(priv);
^~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:710:2: error: implicit declaration of function ‘asoc_simple_clean_reference’ [-Werror=implicit-function-declaration]
asoc_simple_clean_reference(card);
^~~~~~~
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:620:19: warning: unused variable ‘li’ [-Wunused-variable]
struct link_info li;
^~
At top level:
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:31:12: warning: ‘asoc_simple_parse_dai’ defined but not used [-Wunused-function]
static int asoc_simple_parse_dai(struct device_node *node,
^~~~~
cc1: some warnings being treated as errors
scripts/Makefile.build:303: recipe for target '/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.o' failed
make[1]: [/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.o] Error 1
Makefile:1519: recipe for target 'module/var/lib/dkms/wm8960-soundcard/1.0/build' failed
make: [module/var/lib/dkms/wm8960-soundcard/1.0/build] Error 2
make: Leaving directory '/usr/src/linux-headers-4.19.66-v7+'
Spent hours on some of the other workarounds here but nothing seems to work.
Hi,
I get the following output from make on the above kernel version (this is on Stretch)
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:26:13: error: ‘asoc_simple_startup’ undeclared here (not in a function) .startup = asoc_simple_startup, ^
~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:27:14: error: ‘asoc_simple_shutdown’ undeclared here (not in a function) .shutdown = asoc_simple_shutdown, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:28:15: error: ‘asoc_simple_hw_params’ undeclared here (not in a function) .hw_params = asoc_simple_hw_params, ^~~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:82:13: warning: ‘struct asoc_simple_data’ declared inside parameter list will not be visible outside of this definition or declaration struct asoc_simple_data adata) ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_parse_convert’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:87:2: error: implicit declaration of function ‘asoc_simple_parse_convert’ [-Werror=implicit-function-declaration] asoc_simple_parse_convert(dev, top, PREFIX, adata); ^~~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:98:13: warning: ‘struct simple_dai_props’ declared inside parameter list will not be visible outside of this definition or declaration struct simple_dai_props props, ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_parse_mclk_fs’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:105:40: error: dereferencing pointer to incomplete type ‘struct simple_dai_props’ of_property_read_u32(top, prop, &props->mclk_fs); ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:118:15: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration struct link_info li, ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:115:43: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration static int simple_dai_link_of_dpcm(struct asoc_simple_priv priv, ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_dai_link_of_dpcm’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:121:23: error: implicit declaration of function ‘simple_priv_to_dev’ [-Werror=implicit-function-declaration] struct device dev = simple_priv_to_dev(priv); ^~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:121:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion] /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:122:38: error: implicit declaration of function ‘simple_priv_to_link’ [-Werror=implicit-function-declaration] struct snd_soc_dai_link dai_link = simple_priv_to_link(priv, li->link); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:122:66: error: dereferencing pointer to incomplete type ‘struct link_info’ struct snd_soc_dai_link dai_link = simple_priv_to_link(priv, li->link); ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:123:39: error: implicit declaration of function ‘simple_priv_to_props’ [-Werror=implicit-function-declaration] struct simple_dai_props dai_props = simple_priv_to_props(priv, li->link); ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:125:52: error: ‘struct snd_soc_dai_link’ has no member named ‘cpus’; did you mean ‘ops’? struct snd_soc_dai_link_component cpus = dai_link->cpus; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:162:12: error: dereferencing pointer to incomplete type ‘struct simple_dai_props’ dai_props->cpu_dai = &priv->dais[li->dais++]; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:162:29: error: dereferencing pointer to incomplete type ‘struct asoc_simple_priv’ dai_props->cpu_dai = &priv->dais[li->dais++]; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:164:9: error: implicit declaration of function ‘asoc_simple_parse_cpu’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_cpu(np, dai_link, &is_single_links); ^~~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:168:9: error: implicit declaration of function ‘asoc_simple_parse_clk_cpu’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_clk_cpu(dev, np, dai_link, dai); ^~~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:172:9: error: implicit declaration of function ‘asoc_simple_set_dailink_name’ [-Werror=implicit-function-declaration] ret = asoc_simple_set_dailink_name(dev, dai_link, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:178:3: error: implicit declaration of function ‘asoc_simple_canonicalize_cpu’ [-Werror=implicit-function-declaration] asoc_simple_canonicalize_cpu(dai_link, is_single_links); ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:189:34: error: ‘asoc_simple_be_hw_params_fixup’ undeclared (first use in this function) dai_link->be_hw_params_fixup = asoc_simple_be_hw_params_fixup; ^~~~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:189:34: note: each undeclared identifier is reported only once for each function it appears in /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:197:9: error: implicit declaration of function ‘asoc_simple_parse_codec’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_codec(np, dai_link); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:201:9: error: implicit declaration of function ‘asoc_simple_parse_clk_codec’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_clk_codec(dev, np, dai_link, dai); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:212:3: error: implicit declaration of function ‘snd_soc_of_parse_node_prefix’ [-Werror=implicit-function-declaration] snd_soc_of_parse_node_prefix(top, cconf, codecs->of_node, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:221:39: error: passing argument 4 of ‘simple_parse_mclk_fs’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_parse_mclk_fs(top, np, codec, dai_props, prefix); ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:95:13: note: expected ‘struct simple_dai_props ’ but argument is of type ‘struct simple_dai_props ’ static void simple_parse_mclk_fs(struct device_node top, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:223:2: error: implicit declaration of function ‘asoc_simple_canonicalize_platform’ [-Werror=implicit-function-declaration] asoc_simple_canonicalize_platform(dai_link); ^~~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:225:8: error: implicit declaration of function ‘asoc_simple_parse_tdm’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_tdm(np, dai); ^~~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:229:8: error: implicit declaration of function ‘asoc_simple_parse_daifmt’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_daifmt(dev, node, codec, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:237:21: error: ‘asoc_simple_dai_init’ undeclared (first use in this function) dai_link->init = asoc_simple_dai_init; ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:247:17: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration struct link_info li, ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:244:38: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration static int simple_dai_link_of(struct asoc_simple_priv priv, ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_dai_link_of’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:250:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion] struct device dev = simple_priv_to_dev(priv); ^~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:251:66: error: dereferencing pointer to incomplete type ‘struct link_info’ struct snd_soc_dai_link dai_link = simple_priv_to_link(priv, li->link); ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:286:11: error: dereferencing pointer to incomplete type ‘struct simple_dai_props’ dai_props->cpu_dai = &priv->dais[li->dais++]; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:286:28: error: dereferencing pointer to incomplete type ‘struct asoc_simple_priv’ dai_props->cpu_dai = &priv->dais[li->dais++]; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:295:40: error: passing argument 4 of ‘simple_parse_mclk_fs’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_parse_mclk_fs(top, cpu, codec, dai_props, prefix); ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:95:13: note: expected ‘struct simple_dai_props ’ but argument is of type ‘struct simple_dai_props ’ static void simple_parse_mclk_fs(struct device_node top, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:305:8: error: implicit declaration of function ‘asoc_simple_parse_platform’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_platform(plat, dai_link); ^~~~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:327:17: error: ‘struct snd_soc_dai_link’ has no member named ‘cpus’; did you mean ‘ops’? dai_link->cpus->dai_name, ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:333:19: error: ‘asoc_simple_dai_init’ undeclared (first use in this function) dai_link->init = asoc_simple_dai_init; ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:346:11: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration struct link_info li, ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:40: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration static int simple_for_each_link(struct asoc_simple_priv priv, ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_for_each_link’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:356:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion] struct device dev = simple_priv_to_dev(priv); ^~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:372:27: error: storage size of ‘adata’ isn’t known struct asoc_simple_data adata; ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:372:27: warning: unused variable ‘adata’ [-Wunused-variable] /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:422:13: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration struct asoc_simple_priv priv) ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_parse_aux_devs’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:424:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion] struct device dev = simple_priv_to_dev(priv); ^~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:426:30: error: implicit declaration of function ‘simple_priv_to_card’ [-Werror=implicit-function-declaration] struct snd_soc_card card = simple_priv_to_card(priv); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:426:30: warning: initialization makes pointer from integer without a cast [-Wint-conversion] /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:445:19: error: ‘struct snd_soc_aux_dev’ has no member named ‘dlc’ card->aux_dev[i].dlc.of_node = aux_node; ^ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:452:35: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration static int simple_parse_of(struct asoc_simple_priv priv) ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_parse_of’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:454:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion] struct device dev = simple_priv_to_dev(priv); ^~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:456:30: warning: initialization makes pointer from integer without a cast [-Wint-conversion] struct snd_soc_card card = simple_priv_to_card(priv); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:457:19: error: storage size of ‘li’ isn’t known struct link_info li; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:463:8: error: implicit declaration of function ‘asoc_simple_parse_widgets’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_widgets(card, PREFIX); ^~~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:467:8: error: implicit declaration of function ‘asoc_simple_parse_routing’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_routing(card, PREFIX); ^~~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:471:8: error: implicit declaration of function ‘asoc_simple_parse_pin_switches’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_pin_switches(card, PREFIX); ^~~~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:490:30: error: passing argument 1 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types] ret = simple_for_each_link(priv, &li, ^~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’ static int simple_for_each_link(struct asoc_simple_priv priv, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:491:9: error: passing argument 3 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_dai_link_of, ^~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ but argument is of type ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ static int simple_for_each_link(struct asoc_simple_priv priv, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:492:9: error: passing argument 4 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_dai_link_of_dpcm); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ but argument is of type ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ static int simple_for_each_link(struct asoc_simple_priv priv, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:497:8: error: implicit declaration of function ‘asoc_simple_parse_card_name’ [-Werror=implicit-function-declaration] ret = asoc_simple_parse_card_name(card, PREFIX); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:501:35: error: passing argument 2 of ‘simple_parse_aux_devs’ from incompatible pointer type [-Werror=incompatible-pointer-types] ret = simple_parse_aux_devs(top, priv); ^~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:421:12: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’ static int simple_parse_aux_devs(struct device_node node, ^~~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:457:19: warning: unused variable ‘li’ [-Wunused-variable] struct link_info li; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:509:16: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration struct link_info li, bool is_top) ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:506:37: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration static int simple_count_noml(struct asoc_simple_priv priv, ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_count_noml’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:511:4: error: dereferencing pointer to incomplete type ‘struct link_info’ li->dais++; / CPU or Codec / ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:521:16: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration struct link_info li, bool is_top) ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:518:37: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration static int simple_count_dpcm(struct asoc_simple_priv priv, ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_count_dpcm’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:523:4: error: dereferencing pointer to incomplete type ‘struct link_info’ li->dais++; / CPU or Codec / ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:532:14: warning: ‘struct link_info’ declared inside parameter list will not be visible outside of this definition or declaration struct link_info li) ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:531:42: warning: ‘struct asoc_simple_priv’ declared inside parameter list will not be visible outside of this definition or declaration static void simple_get_dais_count(struct asoc_simple_priv priv, ^~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_get_dais_count’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:534:23: warning: initialization makes pointer from integer without a cast [-Wint-conversion] struct device dev = simple_priv_to_dev(priv); ^~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:584:5: error: dereferencing pointer to incomplete type ‘struct link_info’ li->link = 1; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:590:23: error: passing argument 1 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_for_each_link(priv, li, ^~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’ static int simple_for_each_link(struct asoc_simple_priv priv, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:590:29: error: passing argument 2 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_for_each_link(priv, li, ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘struct link_info ’ but argument is of type ‘struct link_info ’ static int simple_for_each_link(struct asoc_simple_priv priv, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:591:9: error: passing argument 3 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_count_noml, ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ but argument is of type ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ static int simple_for_each_link(struct asoc_simple_priv priv, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:592:9: error: passing argument 4 of ‘simple_for_each_link’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_count_dpcm); ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:345:12: note: expected ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ but argument is of type ‘int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , bool) {aka int ()(struct asoc_simple_priv , struct device_node , struct device_node , struct link_info , _Bool)}’ static int simple_for_each_link(struct asoc_simple_priv priv, ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘simple_soc_probe’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:603:8: error: implicit declaration of function ‘asoc_simple_init_hp’ [-Werror=implicit-function-declaration] ret = asoc_simple_init_hp(card, &priv->hp_jack, PREFIX); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:603:39: error: dereferencing pointer to incomplete type ‘struct asoc_simple_priv’ ret = asoc_simple_init_hp(card, &priv->hp_jack, PREFIX); ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:607:8: error: implicit declaration of function ‘asoc_simple_init_mic’ [-Werror=implicit-function-declaration] ret = asoc_simple_init_mic(card, &priv->mic_jack, PREFIX); ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c: In function ‘asoc_simple_probe’: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:620:19: error: storage size of ‘li’ isn’t known struct link_info li; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:624:34: error: dereferencing pointer to incomplete type ‘struct asoc_simple_priv’ priv = devm_kzalloc(dev, sizeof(priv), GFP_KERNEL); ^~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:628:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion] card = simple_priv_to_card(priv); ^ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:634:24: error: passing argument 1 of ‘simple_get_dais_count’ from incompatible pointer type [-Werror=incompatible-pointer-types] simple_get_dais_count(priv, &li); ^~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:531:13: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’ static void simple_get_dais_count(struct asoc_simple_priv priv, ^~~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:638:8: error: implicit declaration of function ‘asoc_simple_init_priv’ [-Werror=implicit-function-declaration] ret = asoc_simple_init_priv(priv, &li); ^~~~~/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:644:25: error: passing argument 1 of ‘simple_parse_of’ from incompatible pointer type [-Werror=incompatible-pointer-types] ret = simple_parse_of(priv); ^~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:452:12: note: expected ‘struct asoc_simple_priv ’ but argument is of type ‘struct asoc_simple_priv ’ static int simple_parse_of(struct asoc_simple_priv priv) ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:676:12: error: dereferencing pointer to incomplete type ‘struct simple_dai_props’ dai_props->cpu_dai = &priv->dais[dai_idx++]; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:679:20: error: ‘struct snd_soc_dai_link’ has no member named ‘cpus’; did you mean ‘ops’? cpus = dai_link->cpus; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:686:23: error: ‘struct snd_soc_dai_link’ has no member named ‘platforms’; did you mean ‘platform_name’? platform = dai_link->platforms; ^~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:693:21: error: ‘asoc_simple_dai_init’ undeclared (first use in this function) dai_link->init = asoc_simple_dai_init; ^~~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:702:2: error: implicit declaration of function ‘asoc_simple_debug_info’ [-Werror=implicit-function-declaration] asoc_simple_debug_info(priv); ^~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:710:2: error: implicit declaration of function ‘asoc_simple_clean_reference’ [-Werror=implicit-function-declaration] asoc_simple_clean_reference(card); ^~~~~~~ /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:620:19: warning: unused variable ‘li’ [-Wunused-variable] struct link_info li; ^~ At top level: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.c:31:12: warning: ‘asoc_simple_parse_dai’ defined but not used [-Wunused-function] static int asoc_simple_parse_dai(struct device_node *node, ^~~~~cc1: some warnings being treated as errors scripts/Makefile.build:303: recipe for target '/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.o' failed make[1]: [/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960-soundcard.o] Error 1 Makefile:1519: recipe for target 'module/var/lib/dkms/wm8960-soundcard/1.0/build' failed make: [module/var/lib/dkms/wm8960-soundcard/1.0/build] Error 2 make: Leaving directory '/usr/src/linux-headers-4.19.66-v7+'Spent hours on some of the other workarounds here but nothing seems to work.