Skip to content

Commit 3f086a4

Browse files
rfvirgilbroonie
authored andcommitted
ASoC: cs-amp-lib: Add a Kconfig symbol for enabling test hooks
Add Kconfig symbol CONFIG_SND_SOC_CS_AMP_LIB_TEST_HOOKS to enable calling into functions that would normally abort because of missing EFI functionality. Before this the code paths were only enabled if the KUnit test for cs-amp-lib was enabled. This change allows KUnit tests for clients of cs-amp-lib to install redirection hooks in cs-amp-lib. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Link: https://patch.msgid.link/20260121132243.1256019-5-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent d70fa6b commit 3f086a4

2 files changed

Lines changed: 13 additions & 11 deletions

File tree

sound/soc/codecs/Kconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,9 +786,14 @@ config SND_SOC_CROS_EC_CODEC
786786
config SND_SOC_CS_AMP_LIB
787787
tristate
788788

789+
config SND_SOC_CS_AMP_LIB_TEST_HOOKS
790+
bool
791+
depends on SND_SOC_CS_AMP_LIB
792+
789793
config SND_SOC_CS_AMP_LIB_TEST
790794
tristate "KUnit test for Cirrus Logic cs-amp-lib" if !KUNIT_ALL_TESTS
791795
depends on SND_SOC_CS_AMP_LIB && KUNIT
796+
select SND_SOC_CS_AMP_LIB_TEST_HOOKS
792797
default KUNIT_ALL_TESTS
793798
help
794799
This builds KUnit tests for the Cirrus Logic common

sound/soc/codecs/cs-amp-lib.c

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ int cs_amp_write_cal_coeffs(struct cs_dsp *dsp,
211211
const struct cirrus_amp_cal_controls *controls,
212212
const struct cirrus_amp_cal_data *data)
213213
{
214-
if (IS_REACHABLE(CONFIG_FW_CS_DSP) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST))
214+
if (IS_REACHABLE(CONFIG_FW_CS_DSP) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST_HOOKS))
215215
return _cs_amp_write_cal_coeffs(dsp, controls, data);
216216
else
217217
return -ENODEV;
@@ -230,7 +230,7 @@ int cs_amp_read_cal_coeffs(struct cs_dsp *dsp,
230230
const struct cirrus_amp_cal_controls *controls,
231231
struct cirrus_amp_cal_data *data)
232232
{
233-
if (IS_REACHABLE(CONFIG_FW_CS_DSP) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST))
233+
if (IS_REACHABLE(CONFIG_FW_CS_DSP) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST_HOOKS))
234234
return _cs_amp_read_cal_coeffs(dsp, controls, data);
235235
else
236236
return -ENODEV;
@@ -249,10 +249,7 @@ int cs_amp_write_ambient_temp(struct cs_dsp *dsp,
249249
const struct cirrus_amp_cal_controls *controls,
250250
u32 temp)
251251
{
252-
if (IS_REACHABLE(CONFIG_FW_CS_DSP) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST))
253-
return cs_amp_write_cal_coeff(dsp, controls, controls->ambient, temp);
254-
else
255-
return -ENODEV;
252+
return cs_amp_write_cal_coeff(dsp, controls, controls->ambient, temp);
256253
}
257254
EXPORT_SYMBOL_NS_GPL(cs_amp_write_ambient_temp, "SND_SOC_CS_AMP_LIB");
258255

@@ -611,7 +608,7 @@ static int _cs_amp_set_efi_calibration_data(struct device *dev, int amp_index, i
611608
int cs_amp_get_efi_calibration_data(struct device *dev, u64 target_uid, int amp_index,
612609
struct cirrus_amp_cal_data *out_data)
613610
{
614-
if (IS_ENABLED(CONFIG_EFI) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST))
611+
if (IS_ENABLED(CONFIG_EFI) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST_HOOKS))
615612
return _cs_amp_get_efi_calibration_data(dev, target_uid, amp_index, out_data);
616613
else
617614
return -ENOENT;
@@ -647,7 +644,7 @@ EXPORT_SYMBOL_NS_GPL(cs_amp_get_efi_calibration_data, "SND_SOC_CS_AMP_LIB");
647644
int cs_amp_set_efi_calibration_data(struct device *dev, int amp_index, int num_amps,
648645
const struct cirrus_amp_cal_data *in_data)
649646
{
650-
if (IS_ENABLED(CONFIG_EFI) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST)) {
647+
if (IS_ENABLED(CONFIG_EFI) || IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST_HOOKS)) {
651648
scoped_guard(mutex, &cs_amp_efi_cal_write_lock) {
652649
return _cs_amp_set_efi_calibration_data(dev, amp_index,
653650
num_amps, in_data);
@@ -720,7 +717,7 @@ int cs_amp_get_vendor_spkid(struct device *dev)
720717
int i, ret;
721718

722719
if (!efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE) &&
723-
!IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST))
720+
!IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST_HOOKS))
724721
return -ENOENT;
725722

726723
for (i = 0; i < ARRAY_SIZE(cs_amp_spkid_byte_types); i++) {
@@ -743,7 +740,7 @@ static const char *cs_amp_devm_get_dell_ssidex(struct device *dev,
743740
int ret;
744741

745742
if (!efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE) &&
746-
!IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST))
743+
!IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST_HOOKS))
747744
return ERR_PTR(-ENOENT);
748745

749746
char *ssidex_buf __free(kfree) = cs_amp_alloc_get_efi_variable(DELL_SSIDEXV2_EFI_NAME,
@@ -849,7 +846,7 @@ static const struct cs_amp_test_hooks cs_amp_test_hook_ptrs = {
849846
};
850847

851848
const struct cs_amp_test_hooks * const cs_amp_test_hooks =
852-
PTR_IF(IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST), &cs_amp_test_hook_ptrs);
849+
PTR_IF(IS_ENABLED(CONFIG_SND_SOC_CS_AMP_LIB_TEST_HOOKS), &cs_amp_test_hook_ptrs);
853850
EXPORT_SYMBOL_NS_GPL(cs_amp_test_hooks, "SND_SOC_CS_AMP_LIB");
854851

855852
MODULE_DESCRIPTION("Cirrus Logic amplifier library");

0 commit comments

Comments
 (0)