Hi Chris, Thank you for the patch! Yet something to improve: [auto build test ERROR on asoc/for-next] [also build test ERROR on lee-mfd/for-mfd-next sound/for-next v5.12-rc8 next-20210420] [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/Chris-Morgan/mfd-Add-Rockchip-rk817-audio-CODEC-support/20210421-000916 base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next config: nds32-randconfig-r004-20210420 (attached as .config) compiler: nds32le-linux-gcc (GCC) 9.3.0 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 # https://github.com/0day-ci/linux/commit/438ec6f1ceec6d4d7cde8169bc80110102e6a396 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Chris-Morgan/mfd-Add-Rockchip-rk817-audio-CODEC-support/20210421-000916 git checkout 438ec6f1ceec6d4d7cde8169bc80110102e6a396 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=nds32 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All error/warnings (new ones prefixed by >>): sound/soc/codecs/rk817_codec.c: In function 'rk817_probe': >> sound/soc/codecs/rk817_codec.c:418:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable] 418 | int ret; | ^~~ In file included from include/linux/bpf.h:19, from include/linux/bpf-cgroup.h:5, from include/linux/cgroup-defs.h:22, from include/linux/cgroup.h:28, from include/linux/memcontrol.h:13, from include/linux/swap.h:9, from include/linux/suspend.h:5, from include/linux/regulator/consumer.h:35, from include/linux/regulator/machine.h:15, from include/linux/mfd/rk808.h:18, from sound/soc/codecs/rk817_codec.c:10: sound/soc/codecs/rk817_codec.c: At top level: >> sound/soc/codecs/rk817_codec.c:546:25: error: 'rk817_codec_dt_ids' undeclared here (not in a function); did you mean 'rk817_codec_priv'? 546 | MODULE_DEVICE_TABLE(of, rk817_codec_dt_ids); | ^~~~~~~~~~~~~~~~~~ include/linux/module.h:238:15: note: in definition of macro 'MODULE_DEVICE_TABLE' 238 | extern typeof(name) __mod_##type##__##name##_device_table \ | ^~~~ >> include/linux/module.h:238:21: error: '__mod_of__rk817_codec_dt_ids_device_table' aliased to undefined symbol 'rk817_codec_dt_ids' 238 | extern typeof(name) __mod_##type##__##name##_device_table \ | ^~~~~~ sound/soc/codecs/rk817_codec.c:546:1: note: in expansion of macro 'MODULE_DEVICE_TABLE' 546 | MODULE_DEVICE_TABLE(of, rk817_codec_dt_ids); | ^~~~~~~~~~~~~~~~~~~ vim +546 sound/soc/codecs/rk817_codec.c 413 414 static int rk817_probe(struct snd_soc_component *component) 415 { 416 struct rk817_codec_priv *rk817 = snd_soc_component_get_drvdata(component); 417 struct rk808 *rk808 = dev_get_drvdata(component->dev->parent); > 418 int ret; 419 420 snd_soc_component_init_regmap(component, rk808->regmap); 421 rk817->component = component; 422 423 ret = snd_soc_component_write(component, RK817_CODEC_DTOP_LPT_SRST, 0x40); 424 425 rk817_init(component); 426 427 /* setting initial pll values so that we can continue to leverage simple-audio-card. 428 * The values aren't important since no parameters are used. 429 */ 430 431 snd_soc_component_set_pll(component, 0, 0, 0, 0); 432 433 return 0; 434 } 435 436 static void rk817_remove(struct snd_soc_component *component) 437 { 438 snd_soc_component_exit_regmap(component); 439 } 440 441 static const struct snd_soc_component_driver soc_codec_dev_rk817 = { 442 .probe = rk817_probe, 443 .remove = rk817_remove, 444 .idle_bias_on = 1, 445 .use_pmdown_time = 1, 446 .endianness = 1, 447 .non_legacy_dai_naming = 1, 448 .controls = rk817_volume_controls, 449 .num_controls = ARRAY_SIZE(rk817_volume_controls), 450 .dapm_routes = rk817_dapm_routes, 451 .num_dapm_routes = ARRAY_SIZE(rk817_dapm_routes), 452 .dapm_widgets = rk817_dapm_widgets, 453 .num_dapm_widgets = ARRAY_SIZE(rk817_dapm_widgets), 454 .set_pll = rk817_set_component_pll, 455 }; 456 457 static int rk817_codec_parse_dt_property(struct device *dev, 458 struct rk817_codec_priv *rk817) 459 { 460 struct device_node *node = dev->parent->of_node; 461 462 if (!node) { 463 dev_err(dev, "%s() dev->parent->of_node is NULL\n", 464 __func__); 465 return -ENODEV; 466 } 467 468 node = of_get_child_by_name(dev->parent->of_node, "codec"); 469 if (!node) { 470 dev_err(dev, "%s() Can not get child: codec\n", 471 __func__); 472 return -ENODEV; 473 } 474 475 rk817->mic_in_differential = 476 of_property_read_bool(node, "mic-in-differential"); 477 478 return 0; 479 } 480 481 static int rk817_platform_probe(struct platform_device *pdev) 482 { 483 struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); 484 struct rk817_codec_priv *rk817_codec_data; 485 int ret; 486 487 if (!rk808) { 488 dev_err(&pdev->dev, "%s : rk817 is NULL\n", __func__); 489 return -EINVAL; 490 } 491 492 rk817_codec_data = devm_kzalloc(&pdev->dev, 493 sizeof(struct rk817_codec_priv), 494 GFP_KERNEL); 495 if (!rk817_codec_data) 496 return -ENOMEM; 497 498 platform_set_drvdata(pdev, rk817_codec_data); 499 500 rk817_codec_data->rk808 = rk808; 501 502 ret = rk817_codec_parse_dt_property(&pdev->dev, rk817_codec_data); 503 if (ret < 0) { 504 dev_err(&pdev->dev, "%s() parse device tree property error %d\n", 505 __func__, ret); 506 goto err_; 507 } 508 509 rk817_codec_data->mclk = clk_get(pdev->dev.parent, "mclk"); 510 if (IS_ERR(rk817_codec_data->mclk)) { 511 dev_err(&pdev->dev, "Unable to get mclk\n"); 512 ret = -ENXIO; 513 goto err_; 514 } 515 516 ret = clk_prepare_enable(rk817_codec_data->mclk); 517 if (ret < 0) { 518 dev_err(&pdev->dev, "%s() clock prepare error %d\n", 519 __func__, ret); 520 goto err_; 521 } 522 523 ret = devm_snd_soc_register_component(&pdev->dev, &soc_codec_dev_rk817, 524 rk817_dai, ARRAY_SIZE(rk817_dai)); 525 if (ret < 0) { 526 dev_err(&pdev->dev, "%s() register codec error %d\n", 527 __func__, ret); 528 goto err_; 529 } 530 531 return 0; 532 err_: 533 534 return ret; 535 } 536 537 static int rk817_platform_remove(struct platform_device *pdev) 538 { 539 struct rk817_codec_priv *rk817 = platform_get_drvdata(pdev); 540 541 clk_disable_unprepare(rk817->mclk); 542 543 return 0; 544 } 545 > 546 MODULE_DEVICE_TABLE(of, rk817_codec_dt_ids); 547 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org