[android-common:android16-6.12-desktop 1/1] sound/soc/amd/acp/acp-sdw-legacy-mach.c:120:31: error: implicit declaration of function 'get_acp63_cpu_pin_id'

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
Hi Vijendar,

FYI, the error/warning still remains.

tree:   https://android.googlesource.com/kernel/common android16-6.12-desktop
head:   24c37396da197463e1ff2bc69bb789e34dacad53
commit: c3b26788593464218c7aa581133f5070a36f2378 [1/1] FROMGIT: ASoC: amd: acp: add soundwire machine driver for legacy stack
config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20260813/[email protected]/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260813/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All errors (new ones prefixed by >>):

   sound/soc/amd/acp/acp-sdw-legacy-mach.c: In function 'create_sdw_dailink':
>> sound/soc/amd/acp/acp-sdw-legacy-mach.c:120:31: error: implicit declaration of function 'get_acp63_cpu_pin_id' [-Wimplicit-function-declaration]
     120 |                         ret = get_acp63_cpu_pin_id(ffs(soc_end->link_mask - 1),
         |                               ^~~~~~~~~~~~~~~~~~~~


vim +/get_acp63_cpu_pin_id +120 sound/soc/amd/acp/acp-sdw-legacy-mach.c

    61	
    62	static int create_sdw_dailink(struct snd_soc_card *card,
    63				      struct asoc_sdw_dailink *soc_dai,
    64				      struct snd_soc_dai_link **dai_links,
    65				      int *be_id, struct snd_soc_codec_conf **codec_conf,
    66				      struct snd_soc_dai_link_component *sdw_platform_component)
    67	{
    68		struct device *dev = card->dev;
    69		struct asoc_sdw_mc_private *ctx = snd_soc_card_get_drvdata(card);
    70		struct amd_mc_ctx *amd_ctx = (struct amd_mc_ctx *)ctx->private;
    71		struct asoc_sdw_endpoint *soc_end;
    72		int cpu_pin_id;
    73		int stream;
    74		int ret;
    75	
    76		list_for_each_entry(soc_end, &soc_dai->endpoints, list) {
    77			if (soc_end->name_prefix) {
    78				(*codec_conf)->dlc.name = soc_end->codec_name;
    79				(*codec_conf)->name_prefix = soc_end->name_prefix;
    80				(*codec_conf)++;
    81			}
    82	
    83			if (soc_end->include_sidecar) {
    84				ret = soc_end->codec_info->add_sidecar(card, dai_links, codec_conf);
    85				if (ret)
    86					return ret;
    87			}
    88		}
    89	
    90		for_each_pcm_streams(stream) {
    91			static const char * const sdw_stream_name[] = {
    92				"SDW%d-PIN%d-PLAYBACK",
    93				"SDW%d-PIN%d-CAPTURE",
    94				"SDW%d-PIN%d-PLAYBACK-%s",
    95				"SDW%d-PIN%d-CAPTURE-%s",
    96			};
    97			struct snd_soc_dai_link_ch_map *codec_maps;
    98			struct snd_soc_dai_link_component *codecs;
    99			struct snd_soc_dai_link_component *cpus;
   100			int num_cpus = hweight32(soc_dai->link_mask[stream]);
   101			int num_codecs = soc_dai->num_devs[stream];
   102			int playback, capture;
   103			int j = 0;
   104			char *name;
   105	
   106			if (!soc_dai->num_devs[stream])
   107				continue;
   108	
   109			soc_end = list_first_entry(&soc_dai->endpoints,
   110						   struct asoc_sdw_endpoint, list);
   111	
   112			*be_id = soc_end->dai_info->dailink[stream];
   113			if (*be_id < 0) {
   114				dev_err(dev, "Invalid dailink id %d\n", *be_id);
   115				return -EINVAL;
   116			}
   117	
   118			switch (amd_ctx->acp_rev) {
   119			case ACP63_PCI_REV:
 > 120				ret = get_acp63_cpu_pin_id(ffs(soc_end->link_mask - 1),
   121							   *be_id, &cpu_pin_id, dev);
   122				if (ret)
   123					return ret;
   124				break;
   125			default:
   126				return -EINVAL;
   127			}
   128			/* create stream name according to first link id */
   129			if (ctx->append_dai_type) {
   130				name = devm_kasprintf(dev, GFP_KERNEL,
   131						      sdw_stream_name[stream + 2],
   132						      ffs(soc_end->link_mask) - 1,
   133						      cpu_pin_id,
   134						      type_strings[soc_end->dai_info->dai_type]);
   135			} else {
   136				name = devm_kasprintf(dev, GFP_KERNEL,
   137						      sdw_stream_name[stream],
   138						      ffs(soc_end->link_mask) - 1,
   139						      cpu_pin_id);
   140			}
   141			if (!name)
   142				return -ENOMEM;
   143	
   144			cpus = devm_kcalloc(dev, num_cpus, sizeof(*cpus), GFP_KERNEL);
   145			if (!cpus)
   146				return -ENOMEM;
   147	
   148			codecs = devm_kcalloc(dev, num_codecs, sizeof(*codecs), GFP_KERNEL);
   149			if (!codecs)
   150				return -ENOMEM;
   151	
   152			codec_maps = devm_kcalloc(dev, num_codecs, sizeof(*codec_maps), GFP_KERNEL);
   153			if (!codec_maps)
   154				return -ENOMEM;
   155	
   156			list_for_each_entry(soc_end, &soc_dai->endpoints, list) {
   157				if (!soc_end->dai_info->direction[stream])
   158					continue;
   159	
   160				int link_num = ffs(soc_end->link_mask) - 1;
   161	
   162				cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL,
   163								"SDW%d Pin%d",
   164								link_num, cpu_pin_id);
   165				dev_dbg(dev, "cpu->dai_name:%s\n", cpus->dai_name);
   166				if (!cpus->dai_name)
   167					return -ENOMEM;
   168	
   169				codec_maps[j].cpu = 0;
   170				codec_maps[j].codec = j;
   171	
   172				codecs[j].name = soc_end->codec_name;
   173				codecs[j].dai_name = soc_end->dai_info->dai_name;
   174				j++;
   175			}
   176	
   177			WARN_ON(j != num_codecs);
   178	
   179			playback = (stream == SNDRV_PCM_STREAM_PLAYBACK);
   180			capture = (stream == SNDRV_PCM_STREAM_CAPTURE);
   181	
   182			asoc_sdw_init_dai_link(dev, *dai_links, be_id, name, playback, capture,
   183					       cpus, num_cpus, sdw_platform_component,
   184					       1, codecs, num_codecs,
   185					       0, asoc_sdw_rtd_init, &sdw_ops);
   186			/*
   187			 * SoundWire DAILINKs use 'stream' functions and Bank Switch operations
   188			 * based on wait_for_completion(), tag them as 'nonatomic'.
   189			 */
   190			(*dai_links)->nonatomic = true;
   191			(*dai_links)->ch_maps = codec_maps;
   192	
   193			list_for_each_entry(soc_end, &soc_dai->endpoints, list) {
   194				if (soc_end->dai_info->init)
   195					soc_end->dai_info->init(card, *dai_links,
   196								soc_end->codec_info,
   197								playback);
   198			}
   199	
   200			(*dai_links)++;
   201		}
   202	
   203		return 0;
   204	}
   205	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.