Hi Sameer, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on tegra/for-next] [also build test WARNING on v5.9-rc7 next-20201001] [cannot apply to asoc/for-next robh/for-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Sameer-Pujar/Audio-graph-card-updates-and-usage-with-Tegra210-audio/20201002-013648 base: https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git for-next config: x86_64-randconfig-r034-20200930 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project bcd05599d0e53977a963799d6ee4f6e0bc21331b) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/b7b97805bc967aae0ce3009c1bbf17b0f232e18b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Sameer-Pujar/Audio-graph-card-updates-and-usage-with-Tegra210-audio/20201002-013648 git checkout b7b97805bc967aae0ce3009c1bbf17b0f232e18b # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): sound/soc/generic/audio-graph-card.c:116:28: error: implicit declaration of function 'snd_soc_find_dai_with_mutex' [-Werror,-Wimplicit-function-declaration] struct snd_soc_dai *dai = snd_soc_find_dai_with_mutex(dlc); ^ sound/soc/generic/audio-graph-card.c:116:22: warning: incompatible integer to pointer conversion initializing 'struct snd_soc_dai *' with an expression of type 'int' [-Wint-conversion] struct snd_soc_dai *dai = snd_soc_find_dai_with_mutex(dlc); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> sound/soc/generic/audio-graph-card.c:532:5: warning: no previous prototype for function 'graph_parse_of' [-Wmissing-prototypes] int graph_parse_of(struct asoc_simple_priv *priv) ^ sound/soc/generic/audio-graph-card.c:532:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int graph_parse_of(struct asoc_simple_priv *priv) ^ static >> sound/soc/generic/audio-graph-card.c:608:6: warning: no previous prototype for function 'graph_get_dais_count' [-Wmissing-prototypes] void graph_get_dais_count(struct asoc_simple_priv *priv, ^ sound/soc/generic/audio-graph-card.c:608:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void graph_get_dais_count(struct asoc_simple_priv *priv, ^ static >> sound/soc/generic/audio-graph-card.c:667:5: warning: no previous prototype for function 'graph_card_probe' [-Wmissing-prototypes] int graph_card_probe(struct snd_soc_card *card) ^ sound/soc/generic/audio-graph-card.c:667:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int graph_card_probe(struct snd_soc_card *card) ^ static 4 warnings and 1 error generated. vim +/graph_parse_of +532 sound/soc/generic/audio-graph-card.c 531 > 532 int graph_parse_of(struct asoc_simple_priv *priv) 533 { 534 struct snd_soc_card *card = simple_priv_to_card(priv); 535 struct link_info li; 536 int ret; 537 538 ret = asoc_simple_parse_widgets(card, NULL); 539 if (ret < 0) 540 return ret; 541 542 ret = asoc_simple_parse_routing(card, NULL); 543 if (ret < 0) 544 return ret; 545 546 memset(&li, 0, sizeof(li)); 547 for (li.cpu = 1; li.cpu >= 0; li.cpu--) { 548 /* 549 * Detect all CPU first, and Detect all Codec 2nd. 550 * 551 * In Normal sound case, all DAIs are detected 552 * as "CPU-Codec". 553 * 554 * In DPCM sound case, 555 * all CPUs are detected as "CPU-dummy", and 556 * all Codecs are detected as "dummy-Codec". 557 * To avoid random sub-device numbering, 558 * detect "dummy-Codec" in last; 559 */ 560 ret = graph_for_each_link(priv, &li, 561 graph_dai_link_of, 562 graph_dai_link_of_dpcm); 563 if (ret < 0) 564 return ret; 565 } 566 567 return asoc_simple_parse_card_name(card, NULL); 568 } 569 EXPORT_SYMBOL_GPL(graph_parse_of); 570 571 static int graph_count_noml(struct asoc_simple_priv *priv, 572 struct device_node *cpu_ep, 573 struct device_node *codec_ep, 574 struct link_info *li) 575 { 576 struct device *dev = simple_priv_to_dev(priv); 577 578 li->link += 1; /* 1xCPU-Codec */ 579 li->dais += 2; /* 1xCPU + 1xCodec */ 580 581 dev_dbg(dev, "Count As Normal\n"); 582 583 return 0; 584 } 585 586 static int graph_count_dpcm(struct asoc_simple_priv *priv, 587 struct device_node *cpu_ep, 588 struct device_node *codec_ep, 589 struct link_info *li, 590 int dup_codec) 591 { 592 struct device *dev = simple_priv_to_dev(priv); 593 594 li->link++; /* 1xCPU-dummy */ 595 li->dais++; /* 1xCPU */ 596 597 if (!dup_codec && codec_ep) { 598 li->link++; /* 1xdummy-Codec */ 599 li->conf++; /* 1xdummy-Codec */ 600 li->dais++; /* 1xCodec */ 601 } 602 603 dev_dbg(dev, "Count As DPCM\n"); 604 605 return 0; 606 } 607 > 608 void graph_get_dais_count(struct asoc_simple_priv *priv, 609 struct link_info *li) 610 { 611 struct device *dev = simple_priv_to_dev(priv); 612 613 /* 614 * link_num : number of links. 615 * CPU-Codec / CPU-dummy / dummy-Codec 616 * dais_num : number of DAIs 617 * ccnf_num : number of codec_conf 618 * same number for "dummy-Codec" 619 * 620 * ex1) 621 * CPU0 --- Codec0 link : 5 622 * CPU1 --- Codec1 dais : 7 623 * CPU2 -/ ccnf : 1 624 * CPU3 --- Codec2 625 * 626 * => 5 links = 2xCPU-Codec + 2xCPU-dummy + 1xdummy-Codec 627 * => 7 DAIs = 4xCPU + 3xCodec 628 * => 1 ccnf = 1xdummy-Codec 629 * 630 * ex2) 631 * CPU0 --- Codec0 link : 5 632 * CPU1 --- Codec1 dais : 6 633 * CPU2 -/ ccnf : 1 634 * CPU3 -/ 635 * 636 * => 5 links = 1xCPU-Codec + 3xCPU-dummy + 1xdummy-Codec 637 * => 6 DAIs = 4xCPU + 2xCodec 638 * => 1 ccnf = 1xdummy-Codec 639 * 640 * ex3) 641 * CPU0 --- Codec0 link : 6 642 * CPU1 -/ dais : 6 643 * CPU2 --- Codec1 ccnf : 2 644 * CPU3 -/ 645 * 646 * => 6 links = 0xCPU-Codec + 4xCPU-dummy + 2xdummy-Codec 647 * => 6 DAIs = 4xCPU + 2xCodec 648 * => 2 ccnf = 2xdummy-Codec 649 * 650 * ex4) 651 * CPU0 --- Codec0 (convert-rate) link : 3 652 * CPU1 --- Codec1 dais : 4 653 * ccnf : 1 654 * 655 * => 3 links = 1xCPU-Codec + 1xCPU-dummy + 1xdummy-Codec 656 * => 4 DAIs = 2xCPU + 2xCodec 657 * => 1 ccnf = 1xdummy-Codec 658 */ 659 graph_for_each_link(priv, li, 660 graph_count_noml, 661 graph_count_dpcm); 662 dev_dbg(dev, "link %d, dais %d, ccnf %d\n", 663 li->link, li->dais, li->conf); 664 } 665 EXPORT_SYMBOL_GPL(graph_get_dais_count); 666 > 667 int graph_card_probe(struct snd_soc_card *card) 668 { 669 struct asoc_simple_priv *priv = snd_soc_card_get_drvdata(card); 670 int ret; 671 672 ret = asoc_simple_init_hp(card, &priv->hp_jack, NULL); 673 if (ret < 0) 674 return ret; 675 676 ret = asoc_simple_init_mic(card, &priv->mic_jack, NULL); 677 if (ret < 0) 678 return ret; 679 680 return 0; 681 } 682 EXPORT_SYMBOL_GPL(graph_card_probe); 683 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org