Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: cs-amp-lib-test: Use faux bus instead of creating a dummy platform device

Change the code to use faux bus for the dummy codec driver device instead
of creating a platform device. Also use KUnit automatic resource cleanup to
destroy the device instead of doing it "manually" in a test case exit()
function.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20250416121604.780220-1-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Richard Fitzgerald and committed by
Mark Brown
d1965f00 2af73c81

+28 -36
+28 -36
sound/soc/codecs/cs-amp-lib-test.c
··· 5 5 // Copyright (C) 2024 Cirrus Logic, Inc. and 6 6 // Cirrus Logic International Semiconductor Ltd. 7 7 8 + #include <kunit/resource.h> 8 9 #include <kunit/test.h> 9 10 #include <kunit/static_stub.h> 11 + #include <linux/device/faux.h> 10 12 #include <linux/firmware/cirrus/cs_dsp.h> 11 13 #include <linux/firmware/cirrus/wmfw.h> 12 14 #include <linux/gpio/driver.h> ··· 19 17 #include <linux/random.h> 20 18 #include <sound/cs-amp-lib.h> 21 19 20 + KUNIT_DEFINE_ACTION_WRAPPER(faux_device_destroy_wrapper, faux_device_destroy, 21 + struct faux_device *) 22 + 22 23 struct cs_amp_lib_test_priv { 23 - struct platform_device amp_pdev; 24 + struct faux_device *amp_dev; 24 25 25 26 struct cirrus_amp_efi_data *cal_blob; 26 27 struct list_head ctl_write_list; ··· 104 99 cs_amp_test_hooks->get_efi_variable, 105 100 cs_amp_lib_test_get_efi_variable_nohead); 106 101 107 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 0, 0, &result_data); 102 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 0, 0, &result_data); 108 103 KUNIT_EXPECT_EQ(test, ret, -EOVERFLOW); 109 104 110 105 kunit_deactivate_static_stub(test, cs_amp_test_hooks->get_efi_variable); ··· 147 142 cs_amp_test_hooks->get_efi_variable, 148 143 cs_amp_lib_test_get_efi_variable_bad_count); 149 144 150 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 0, 0, &result_data); 145 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 0, 0, &result_data); 151 146 KUNIT_EXPECT_EQ(test, ret, -EOVERFLOW); 152 147 153 148 kunit_deactivate_static_stub(test, cs_amp_test_hooks->get_efi_variable); ··· 174 169 cs_amp_test_hooks->get_efi_variable, 175 170 cs_amp_lib_test_get_efi_variable_none); 176 171 177 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 0, 0, &result_data); 172 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 0, 0, &result_data); 178 173 KUNIT_EXPECT_EQ(test, ret, -ENOENT); 179 174 180 175 kunit_deactivate_static_stub(test, cs_amp_test_hooks->get_efi_variable); ··· 228 223 cs_amp_lib_test_get_efi_variable); 229 224 230 225 target_uid = cs_amp_lib_test_get_target_uid(test); 231 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, target_uid, -1, &result_data); 226 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, target_uid, -1, &result_data); 232 227 KUNIT_EXPECT_EQ(test, ret, 0); 233 228 234 229 kunit_deactivate_static_stub(test, cs_amp_test_hooks->get_efi_variable); ··· 262 257 cs_amp_test_hooks->get_efi_variable, 263 258 cs_amp_lib_test_get_efi_variable); 264 259 265 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 0, 260 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 0, 266 261 param->amp_index, &result_data); 267 262 KUNIT_EXPECT_EQ(test, ret, 0); 268 263 ··· 297 292 cs_amp_lib_test_get_efi_variable); 298 293 299 294 target_uid = cs_amp_lib_test_get_target_uid(test); 300 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, target_uid, 295 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, target_uid, 301 296 param->amp_index, &result_data); 302 297 KUNIT_EXPECT_EQ(test, ret, 0); 303 298 ··· 336 331 337 332 /* Get a target UID that won't match the entry */ 338 333 target_uid = ~cs_amp_lib_test_get_target_uid(test); 339 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, target_uid, 334 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, target_uid, 340 335 param->amp_index, &result_data); 341 336 KUNIT_EXPECT_EQ(test, ret, -ENOENT); 342 337 ··· 368 363 cs_amp_test_hooks->get_efi_variable, 369 364 cs_amp_lib_test_get_efi_variable); 370 365 371 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, bad_target_uid, 366 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, bad_target_uid, 372 367 param->amp_index, &result_data); 373 368 KUNIT_EXPECT_EQ(test, ret, 0); 374 369 ··· 410 405 cs_amp_test_hooks->get_efi_variable, 411 406 cs_amp_lib_test_get_efi_variable); 412 407 413 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, bad_target_uid, -1, 408 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, bad_target_uid, -1, 414 409 &result_data); 415 410 KUNIT_EXPECT_EQ(test, ret, -ENOENT); 416 411 ··· 441 436 cs_amp_test_hooks->get_efi_variable, 442 437 cs_amp_lib_test_get_efi_variable); 443 438 444 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, bad_target_uid, 99, 439 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, bad_target_uid, 99, 445 440 &result_data); 446 441 KUNIT_EXPECT_EQ(test, ret, -ENOENT); 447 442 ··· 465 460 cs_amp_test_hooks->get_efi_variable, 466 461 cs_amp_lib_test_get_efi_variable); 467 462 468 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 0, 99, &result_data); 463 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 0, 99, &result_data); 469 464 KUNIT_EXPECT_EQ(test, ret, -ENOENT); 470 465 471 466 kunit_deactivate_static_stub(test, cs_amp_test_hooks->get_efi_variable); ··· 485 480 cs_amp_test_hooks->get_efi_variable, 486 481 cs_amp_lib_test_get_efi_variable); 487 482 488 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 0, -1, &result_data); 483 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 0, -1, &result_data); 489 484 KUNIT_EXPECT_EQ(test, ret, -ENOENT); 490 485 491 486 kunit_deactivate_static_stub(test, cs_amp_test_hooks->get_efi_variable); ··· 514 509 cs_amp_test_hooks->get_efi_variable, 515 510 cs_amp_lib_test_get_efi_variable); 516 511 517 - ret = cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 0, -1, &result_data); 512 + ret = cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 0, -1, &result_data); 518 513 KUNIT_EXPECT_EQ(test, ret, -ENOENT); 519 514 520 515 kunit_deactivate_static_stub(test, cs_amp_test_hooks->get_efi_variable); ··· 548 543 549 544 /* Lookup by UID should not find it */ 550 545 KUNIT_EXPECT_EQ(test, 551 - cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 546 + cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 552 547 uid, -1, 553 548 &result_data), 554 549 -ENOENT); 555 550 556 551 /* Get by index should ignore it */ 557 552 KUNIT_EXPECT_EQ(test, 558 - cs_amp_get_efi_calibration_data(&priv->amp_pdev.dev, 553 + cs_amp_get_efi_calibration_data(&priv->amp_dev->dev, 559 554 0, 2, 560 555 &result_data), 561 556 -ENOENT); ··· 605 600 606 601 dsp = kunit_kzalloc(test, sizeof(*dsp), GFP_KERNEL); 607 602 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dsp); 608 - dsp->dev = &priv->amp_pdev.dev; 603 + dsp->dev = &priv->amp_dev->dev; 609 604 610 605 get_random_bytes(&data, sizeof(data)); 611 606 ··· 642 637 KUNIT_EXPECT_EQ(test, entry->value, data.calStatus); 643 638 } 644 639 645 - static void cs_amp_lib_test_dev_release(struct device *dev) 646 - { 647 - } 648 - 649 640 static int cs_amp_lib_test_case_init(struct kunit *test) 650 641 { 651 642 struct cs_amp_lib_test_priv *priv; 652 - int ret; 653 643 654 644 KUNIT_ASSERT_NOT_NULL(test, cs_amp_test_hooks); 655 645 ··· 656 656 INIT_LIST_HEAD(&priv->ctl_write_list); 657 657 658 658 /* Create dummy amp driver dev */ 659 - priv->amp_pdev.name = "cs_amp_lib_test_drv"; 660 - priv->amp_pdev.id = -1; 661 - priv->amp_pdev.dev.release = cs_amp_lib_test_dev_release; 662 - ret = platform_device_register(&priv->amp_pdev); 663 - KUNIT_ASSERT_GE_MSG(test, ret, 0, "Failed to register amp platform device\n"); 659 + priv->amp_dev = faux_device_create("cs_amp_lib_test_drv", NULL, NULL); 660 + KUNIT_ASSERT_NOT_NULL(test, priv->amp_dev); 661 + KUNIT_ASSERT_EQ(test, 0, 662 + kunit_add_action_or_reset(test, 663 + faux_device_destroy_wrapper, 664 + priv->amp_dev)); 664 665 665 666 return 0; 666 - } 667 - 668 - static void cs_amp_lib_test_case_exit(struct kunit *test) 669 - { 670 - struct cs_amp_lib_test_priv *priv = test->priv; 671 - 672 - if (priv->amp_pdev.name) 673 - platform_device_unregister(&priv->amp_pdev); 674 667 } 675 668 676 669 static const struct cs_amp_lib_test_param cs_amp_lib_test_get_cal_param_cases[] = { ··· 743 750 static struct kunit_suite cs_amp_lib_test_suite = { 744 751 .name = "snd-soc-cs-amp-lib-test", 745 752 .init = cs_amp_lib_test_case_init, 746 - .exit = cs_amp_lib_test_case_exit, 747 753 .test_cases = cs_amp_lib_test_cases, 748 754 }; 749 755