mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
ASoC: cs-amp-lib-test: Add cases for factory calibration helpers
Add test cases for the cs_amp_read_cal_coeffs() and cs_amp_write_ambient_temp() functions. In both cases the test is simply to confirm that the correct data value(s) get passed back to the caller. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Reviewed-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20251021105022.1013685-7-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
46a3df50b0
commit
cf6290eebe
@@ -72,8 +72,11 @@ struct cs_amp_test_hooks {
|
||||
int (*write_cal_coeff)(struct cs_dsp *dsp,
|
||||
const struct cirrus_amp_cal_controls *controls,
|
||||
const char *ctl_name, u32 val);
|
||||
};
|
||||
|
||||
int (*read_cal_coeff)(struct cs_dsp *dsp,
|
||||
const struct cirrus_amp_cal_controls *controls,
|
||||
const char *ctl_name, u32 *val);
|
||||
};
|
||||
extern const struct cs_amp_test_hooks * const cs_amp_test_hooks;
|
||||
|
||||
#endif /* CS_AMP_LIB_H */
|
||||
|
||||
@@ -701,6 +701,77 @@ static void cs_amp_lib_test_write_cal_data_test(struct kunit *test)
|
||||
KUNIT_EXPECT_EQ(test, entry->value, data.calStatus);
|
||||
}
|
||||
|
||||
static int cs_amp_lib_test_read_cal_coeff(struct cs_dsp *dsp,
|
||||
const struct cirrus_amp_cal_controls *controls,
|
||||
const char *ctl_name, u32 *val)
|
||||
{
|
||||
struct kunit *test = kunit_get_current_test();
|
||||
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctl_name);
|
||||
KUNIT_EXPECT_PTR_EQ(test, controls, &cs_amp_lib_test_calibration_controls);
|
||||
|
||||
if (strcmp(ctl_name, controls->ambient) == 0)
|
||||
*val = 19;
|
||||
else if (strcmp(ctl_name, controls->calr) == 0)
|
||||
*val = 1077;
|
||||
else if (strcmp(ctl_name, controls->status) == 0)
|
||||
*val = 2;
|
||||
else
|
||||
kunit_fail_current_test("Bad control '%s'\n", ctl_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cs_amp_lib_test_read_cal_data_test(struct kunit *test)
|
||||
{
|
||||
struct cs_amp_lib_test_priv *priv = test->priv;
|
||||
struct cirrus_amp_cal_data data = { 0 };
|
||||
struct cs_dsp *dsp;
|
||||
int ret;
|
||||
|
||||
dsp = kunit_kzalloc(test, sizeof(*dsp), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dsp);
|
||||
dsp->dev = &priv->amp_dev->dev;
|
||||
|
||||
kunit_activate_static_stub(test,
|
||||
cs_amp_test_hooks->read_cal_coeff,
|
||||
cs_amp_lib_test_read_cal_coeff);
|
||||
|
||||
ret = cs_amp_read_cal_coeffs(dsp, &cs_amp_lib_test_calibration_controls, &data);
|
||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||
|
||||
KUNIT_EXPECT_EQ(test, 19, data.calAmbient);
|
||||
KUNIT_EXPECT_EQ(test, 1077, data.calR);
|
||||
KUNIT_EXPECT_EQ(test, 2, data.calStatus);
|
||||
KUNIT_EXPECT_NE(test, 0, data.calTime[0] | data.calTime[1]);
|
||||
}
|
||||
|
||||
static void cs_amp_lib_test_write_ambient_test(struct kunit *test)
|
||||
{
|
||||
struct cs_amp_lib_test_priv *priv = test->priv;
|
||||
struct cs_amp_lib_test_ctl_write_entry *entry;
|
||||
struct cs_dsp *dsp;
|
||||
int ret;
|
||||
|
||||
dsp = kunit_kzalloc(test, sizeof(*dsp), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dsp);
|
||||
dsp->dev = &priv->amp_dev->dev;
|
||||
|
||||
/* Redirect calls to write firmware controls */
|
||||
kunit_activate_static_stub(test,
|
||||
cs_amp_test_hooks->write_cal_coeff,
|
||||
cs_amp_lib_test_write_cal_coeff);
|
||||
|
||||
ret = cs_amp_write_ambient_temp(dsp, &cs_amp_lib_test_calibration_controls, 18);
|
||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||
|
||||
KUNIT_EXPECT_EQ(test, list_count_nodes(&priv->ctl_write_list), 1);
|
||||
|
||||
entry = list_first_entry(&priv->ctl_write_list, typeof(*entry), list);
|
||||
KUNIT_EXPECT_STREQ(test, entry->name, cs_amp_lib_test_calibration_controls.ambient);
|
||||
KUNIT_EXPECT_EQ(test, entry->value, 18);
|
||||
}
|
||||
|
||||
static void cs_amp_lib_test_spkid_lenovo_not_present(struct kunit *test)
|
||||
{
|
||||
struct cs_amp_lib_test_priv *priv = test->priv;
|
||||
@@ -973,8 +1044,10 @@ static struct kunit_case cs_amp_lib_test_cases[] = {
|
||||
cs_amp_lib_test_get_cal_gen_params),
|
||||
KUNIT_CASE(cs_amp_lib_test_get_efi_cal_empty_entry_test),
|
||||
|
||||
/* Tests for writing calibration data */
|
||||
/* Tests for writing and reading calibration data */
|
||||
KUNIT_CASE(cs_amp_lib_test_write_cal_data_test),
|
||||
KUNIT_CASE(cs_amp_lib_test_read_cal_data_test),
|
||||
KUNIT_CASE(cs_amp_lib_test_write_ambient_test),
|
||||
|
||||
/* Test cases for speaker ID */
|
||||
KUNIT_CASE(cs_amp_lib_test_spkid_lenovo_not_present),
|
||||
|
||||
@@ -541,6 +541,7 @@ EXPORT_SYMBOL_NS_GPL(cs_amp_create_debugfs, "SND_SOC_CS_AMP_LIB");
|
||||
static const struct cs_amp_test_hooks cs_amp_test_hook_ptrs = {
|
||||
.get_efi_variable = cs_amp_get_efi_variable,
|
||||
.write_cal_coeff = cs_amp_write_cal_coeff,
|
||||
.read_cal_coeff = cs_amp_read_cal_coeff,
|
||||
};
|
||||
|
||||
const struct cs_amp_test_hooks * const cs_amp_test_hooks =
|
||||
|
||||
Reference in New Issue
Block a user