[thesofproject:topic/sof-dev 22/23] sound/soc/sof/ipc4-compress.c:380:55: sparse: sparse: incorrect type in argument 2 (different base types)
kernel test robot <[email protected]> Thu, 30 Jul 2026 22:08:43 +0800
| Newsgroups | dev.linux.lists.oe-kbuild-all |
|---|---|
| Message-ID | <[email protected]> |
Hi Peter, First bad commit (maybe != root cause): tree: https://github.com/thesofproject/linux topic/sof-dev head: 15c9b701ada608fc3310f4bc2b3e48cbfec206d3 commit: 6f2516aa0fe9cff2365ee9bc6050e5a857545244 [22/23] ASoC: SOF: Intel: Kconfig: Select compress support for TGL+ platforms config: parisc-randconfig-r133-20260730 (https://download.01.org/0day-ci/archive/20260730/[email protected]/config) compiler: hppa-linux-gcc (GCC) 15.2.0 sparse: v0.6.5-rc1 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260730/[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]/ sparse warnings: (new ones prefixed by >>) >> sound/soc/sof/ipc4-compress.c:380:55: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted snd_pcm_format_t [usertype] format @@ got unsigned int [usertype] format @@ sound/soc/sof/ipc4-compress.c:380:55: sparse: expected restricted snd_pcm_format_t [usertype] format sound/soc/sof/ipc4-compress.c:380:55: sparse: got unsigned int [usertype] format vim +380 sound/soc/sof/ipc4-compress.c dedb072dd0f8291 Peter Ujfalusi 2025-12-08 314 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 315 static int sof_ipc4_compr_set_params(struct snd_soc_component *component, dedb072dd0f8291 Peter Ujfalusi 2025-12-08 316 struct snd_compr_stream *cstream, dedb072dd0f8291 Peter Ujfalusi 2025-12-08 317 struct snd_compr_params *params) dedb072dd0f8291 Peter Ujfalusi 2025-12-08 318 { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 319 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(component); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 320 const struct sof_ipc_tplg_ops *tplg_ops = sof_ipc_get_ops(sdev, tplg); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 321 struct sof_ipc4_compr_init_data *compr_data __free(kfree) = NULL; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 322 struct snd_soc_pcm_runtime *rtd = cstream->private_data; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 323 struct snd_sof_platform_stream_params *platform_params; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 324 struct sof_ipc4_timestamp_info *time_info; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 325 struct snd_compr_params *compr_params; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 326 struct snd_soc_dapm_widget_list *list; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 327 struct snd_sof_widget *host_swidget; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 328 struct sof_ipc4_process *process; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 329 struct snd_pcm_hw_params p = {0}; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 330 struct snd_interval *interval; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 331 struct snd_sof_pcm *spcm; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 332 struct snd_mask *fmt; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 333 int dir = cstream->direction; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 334 int ret; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 335 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 336 spcm = snd_sof_find_spcm_dai(component, rtd); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 337 if (!spcm) dedb072dd0f8291 Peter Ujfalusi 2025-12-08 338 return -EINVAL; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 339 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 340 host_swidget = snd_sof_find_swidget_by_comp_id(sdev, spcm->stream[dir].comp_id); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 341 if (!host_swidget) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 342 spcm_err(spcm, dir, "failed to find host widget with comp_id %d\n", dedb072dd0f8291 Peter Ujfalusi 2025-12-08 343 spcm->stream[dir].comp_id); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 344 return -ENODEV; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 345 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 346 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 347 if (!sof_ipc4_compr_codec_supported(sdev, params->codec.id, dir)) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 348 spcm_err(spcm, dir, "Unsupported codec id: %u\n", params->codec.id); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 349 return -EINVAL; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 350 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 351 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 352 spcm_dbg(spcm, dir, dedb072dd0f8291 Peter Ujfalusi 2025-12-08 353 "codec_id: %u, rate: %u, ch in/out: %u/%u, format: %u/%u\n", dedb072dd0f8291 Peter Ujfalusi 2025-12-08 354 params->codec.id, params->codec.sample_rate, params->codec.ch_in, dedb072dd0f8291 Peter Ujfalusi 2025-12-08 355 params->codec.ch_out, params->codec.format, params->codec.pcm_format); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 356 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 357 if (spcm->prepared[dir]) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 358 /* dedb072dd0f8291 Peter Ujfalusi 2025-12-08 359 * This can only happen if user space re-configures the device dedb072dd0f8291 Peter Ujfalusi 2025-12-08 360 * without closing it, for example after DRAIN completion dedb072dd0f8291 Peter Ujfalusi 2025-12-08 361 */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 362 ret = sof_ipc4_compr_stream_free(sdev, spcm, cstream); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 363 if (ret) dedb072dd0f8291 Peter Ujfalusi 2025-12-08 364 return ret; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 365 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 366 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 367 /* save the compress params */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 368 compr_params = &spcm->cparams[dir]; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 369 memcpy(compr_params, params, sizeof(*params)); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 370 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 371 /* dedb072dd0f8291 Peter Ujfalusi 2025-12-08 372 * Force format, rate and channels and use PCM hw_params structure to dedb072dd0f8291 Peter Ujfalusi 2025-12-08 373 * set up the pipelines. dedb072dd0f8291 Peter Ujfalusi 2025-12-08 374 */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 375 fmt = hw_param_mask(&p, SNDRV_PCM_HW_PARAM_FORMAT); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 376 snd_mask_none(fmt); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 377 /* Use correct format based on the used codec */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 378 switch (params->codec.id) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 379 case SND_AUDIOCODEC_PCM: dedb072dd0f8291 Peter Ujfalusi 2025-12-08 @380 snd_mask_set_format(fmt, params->codec.format); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 381 break; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 382 case SND_AUDIOCODEC_VORBIS: dedb072dd0f8291 Peter Ujfalusi 2025-12-08 383 snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S16_LE); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 384 break; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 385 case SND_AUDIOCODEC_FLAC: dedb072dd0f8291 Peter Ujfalusi 2025-12-08 386 { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 387 struct snd_dec_flac *dec_flac = ¶ms->codec.options.flac_d; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 388 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 389 if (dec_flac->sample_size == 16) dedb072dd0f8291 Peter Ujfalusi 2025-12-08 390 snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S16_LE); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 391 else dedb072dd0f8291 Peter Ujfalusi 2025-12-08 392 snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S32_LE); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 393 break; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 394 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 395 default: dedb072dd0f8291 Peter Ujfalusi 2025-12-08 396 snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S32_LE); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 397 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 398 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 399 interval = hw_param_interval(&p, SNDRV_PCM_HW_PARAM_CHANNELS); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 400 interval->min = compr_params->codec.ch_out; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 401 interval->max = compr_params->codec.ch_out; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 402 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 403 interval = hw_param_interval(&p, SNDRV_PCM_HW_PARAM_RATE); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 404 interval->min = compr_params->codec.sample_rate; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 405 interval->max = compr_params->codec.sample_rate; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 406 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 407 ret = sof_ipc4_compr_alloc_pages(sdev->dev, &spcm->stream[dir], dedb072dd0f8291 Peter Ujfalusi 2025-12-08 408 component, cstream); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 409 if (ret < 0) dedb072dd0f8291 Peter Ujfalusi 2025-12-08 410 return ret; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 411 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 412 spcm_dbg(spcm, dir, dedb072dd0f8291 Peter Ujfalusi 2025-12-08 413 "buffer_size: %llu, fragment_size: %u (fragments: %u)\n", dedb072dd0f8291 Peter Ujfalusi 2025-12-08 414 cstream->runtime->buffer_size, cstream->runtime->fragment_size, dedb072dd0f8291 Peter Ujfalusi 2025-12-08 415 (u32)cstream->runtime->buffer_size / cstream->runtime->fragment_size); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 416 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 417 interval = hw_param_interval(&p, SNDRV_PCM_HW_PARAM_PERIOD_BYTES); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 418 interval->min = cstream->runtime->fragment_size; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 419 interval->max = cstream->runtime->fragment_size; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 420 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 421 interval = hw_param_interval(&p, SNDRV_PCM_HW_PARAM_BUFFER_BYTES); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 422 interval->min = cstream->runtime->buffer_size; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 423 interval->max = cstream->runtime->buffer_size; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 424 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 425 platform_params = &spcm->platform_params[dir]; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 426 ret = snd_sof_compr_platform_hw_params(sdev, cstream, compr_params, dedb072dd0f8291 Peter Ujfalusi 2025-12-08 427 platform_params); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 428 if (ret < 0) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 429 spcm_err(spcm, dir, "platform compress hw params failed\n"); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 430 goto free_pages; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 431 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 432 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 433 /* set up the list of DAPM widgets if not already done */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 434 if (!spcm->stream[dir].list) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 435 ret = sof_pcm_setup_connected_widgets(sdev, rtd, spcm, &p, dedb072dd0f8291 Peter Ujfalusi 2025-12-08 436 platform_params, dir); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 437 if (ret < 0) dedb072dd0f8291 Peter Ujfalusi 2025-12-08 438 goto free_pages; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 439 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 440 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 441 process = sof_ipc4_compr_get_module(spcm, dir); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 442 if (!process) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 443 ret = -EINVAL; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 444 goto free_list; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 445 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 446 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 447 compr_data = kzalloc(sizeof(*compr_data), GFP_KERNEL); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 448 if (!compr_data) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 449 ret = -ENOMEM; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 450 goto free_list; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 451 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 452 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 453 memcpy(&compr_data->codec, &compr_params->codec, sizeof(compr_data->codec)); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 454 compr_data->dir = dir; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 455 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 456 process->init_ext_module_data = compr_data; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 457 process->init_ext_module_size = sizeof(*compr_data); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 458 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 459 /* dedb072dd0f8291 Peter Ujfalusi 2025-12-08 460 * Make sure that the DSP is booted up, which might not be the dedb072dd0f8291 Peter Ujfalusi 2025-12-08 461 * case if the on-demand DSP boot is used dedb072dd0f8291 Peter Ujfalusi 2025-12-08 462 */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 463 ret = snd_sof_boot_dsp_firmware(sdev); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 464 if (ret) dedb072dd0f8291 Peter Ujfalusi 2025-12-08 465 goto clear_init_ext; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 466 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 467 /* set the host DMA ID */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 468 if (tplg_ops && tplg_ops->host_config) dedb072dd0f8291 Peter Ujfalusi 2025-12-08 469 tplg_ops->host_config(sdev, host_swidget, platform_params); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 470 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 471 /* set up the widgets and pipelines in the DSP */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 472 ret = sof_widget_list_setup(sdev, spcm, &p, platform_params, dir); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 473 if (ret < 0) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 474 spcm_err(spcm, dir, "widget list set up failed\n"); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 475 goto clear_init_ext; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 476 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 477 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 478 memcpy(&spcm->params[dir], &p, sizeof(p)); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 479 spcm->prepared[dir] = true; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 480 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 481 time_info = sof_ipc4_sps_to_time_info(&spcm->stream[dir]); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 482 if (time_info) { dedb072dd0f8291 Peter Ujfalusi 2025-12-08 483 /* delay calculation supported */ dedb072dd0f8291 Peter Ujfalusi 2025-12-08 484 time_info->stream_start_offset = SOF_IPC4_INVALID_STREAM_POSITION; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 485 time_info->llp_offset = 0; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 486 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 487 sof_ipc4_build_time_info(sdev, &spcm->stream[dir]); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 488 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 489 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 490 process->init_ext_module_data = NULL; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 491 process->init_ext_module_size = 0; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 492 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 493 return 0; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 494 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 495 clear_init_ext: dedb072dd0f8291 Peter Ujfalusi 2025-12-08 496 process->init_ext_module_data = NULL; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 497 process->init_ext_module_size = 0; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 498 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 499 free_list: dedb072dd0f8291 Peter Ujfalusi 2025-12-08 500 list = spcm->stream[dir].list; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 501 spcm->stream[dir].list = NULL; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 502 snd_soc_dapm_dai_free_widgets(&list); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 503 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 504 free_pages: dedb072dd0f8291 Peter Ujfalusi 2025-12-08 505 snd_compr_free_pages(cstream); dedb072dd0f8291 Peter Ujfalusi 2025-12-08 506 dedb072dd0f8291 Peter Ujfalusi 2025-12-08 507 return ret; dedb072dd0f8291 Peter Ujfalusi 2025-12-08 508 } dedb072dd0f8291 Peter Ujfalusi 2025-12-08 509 :::::: The code at line 380 was first introduced by commit :::::: dedb072dd0f8291e605332cf5e01fd0204615a5b ASoC: SOF: Add support for IPC4 compressed :::::: TO: Peter Ujfalusi <[email protected]> :::::: CC: Liam Girdwood <[email protected]> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki