diff options
| author | Richard Fitzgerald <rf@opensource.cirrus.com> | 2026-03-10 17:18:09 +0300 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-03-10 17:52:49 +0300 |
| commit | 70057cfe492d600c2b83598e8b8b64780b2ca147 (patch) | |
| tree | e1b3cf4ba55ffb14eabb1fef78a5657d2d3887ae | |
| parent | 1eadb7791ee5699ca58920ef705ce0934c814ece (diff) | |
| download | linux-70057cfe492d600c2b83598e8b8b64780b2ca147.tar.xz | |
ASoC: wm_adsp: Add KUnit redirection stubs for firmware file search
Make some of the firmware file search functions redirectable for KUnit
testing.
- The call to firmware_request_nowarn() is factored out into a wrapper
function so that it can be redirected.
- wm_adsp_request_firmware_files() and wm_adsp_release_firmware_files()
are made visible and exported if KUNIT is enabled.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20260310141817.1871794-3-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
| -rw-r--r-- | sound/soc/codecs/wm_adsp.c | 38 | ||||
| -rw-r--r-- | sound/soc/codecs/wm_adsp.h | 15 |
2 files changed, 43 insertions, 10 deletions
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index b3cead2cd758..e32da6949d1f 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -7,6 +7,8 @@ * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> */ +#include <kunit/static_stub.h> +#include <kunit/visibility.h> #include <linux/array_size.h> #include <linux/cleanup.h> #include <linux/ctype.h> @@ -704,17 +706,32 @@ int wm_adsp_read_ctl(struct wm_adsp *dsp, const char *name, int type, } EXPORT_SYMBOL_GPL(wm_adsp_read_ctl); -static void wm_adsp_release_firmware_files(const struct firmware *wmfw_firmware, - char *wmfw_filename, - const struct firmware *coeff_firmware, - char *coeff_filename) +VISIBLE_IF_KUNIT void wm_adsp_release_firmware_files(const struct firmware *wmfw_firmware, + char *wmfw_filename, + const struct firmware *coeff_firmware, + char *coeff_filename) { + KUNIT_STATIC_STUB_REDIRECT(wm_adsp_release_firmware_files, + wmfw_firmware, wmfw_filename, + coeff_firmware, coeff_filename); + release_firmware(wmfw_firmware); kfree(wmfw_filename); release_firmware(coeff_firmware); kfree(coeff_filename); } +EXPORT_SYMBOL_IF_KUNIT(wm_adsp_release_firmware_files); + +VISIBLE_IF_KUNIT int wm_adsp_firmware_request(const struct firmware **firmware, + const char *filename, + struct device *dev) +{ + KUNIT_STATIC_STUB_REDIRECT(wm_adsp_firmware_request, firmware, filename, dev); + + return firmware_request_nowarn(firmware, filename, dev); +} +EXPORT_SYMBOL_IF_KUNIT(wm_adsp_firmware_request); static int wm_adsp_request_firmware_file(struct wm_adsp *dsp, const struct firmware **firmware, char **filename, @@ -762,7 +779,7 @@ static int wm_adsp_request_firmware_file(struct wm_adsp *dsp, s++; } - ret = firmware_request_nowarn(firmware, *filename, cs_dsp->dev); + ret = wm_adsp_firmware_request(firmware, *filename, cs_dsp->dev); if (ret != 0) { adsp_dbg(dsp, "Failed to request '%s'\n", *filename); kfree(*filename); @@ -775,11 +792,11 @@ static int wm_adsp_request_firmware_file(struct wm_adsp *dsp, } static const char * const cirrus_dir = "cirrus/"; -static int wm_adsp_request_firmware_files(struct wm_adsp *dsp, - const struct firmware **wmfw_firmware, - char **wmfw_filename, - const struct firmware **coeff_firmware, - char **coeff_filename) +VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(struct wm_adsp *dsp, + const struct firmware **wmfw_firmware, + char **wmfw_filename, + const struct firmware **coeff_firmware, + char **coeff_filename) { const char *system_name = dsp->system_name; const char *suffix = dsp->component->name_prefix; @@ -856,6 +873,7 @@ static int wm_adsp_request_firmware_files(struct wm_adsp *dsp, return -ENOENT; } +EXPORT_SYMBOL_IF_KUNIT(wm_adsp_request_firmware_files); static int wm_adsp_common_init(struct wm_adsp *dsp) { diff --git a/sound/soc/codecs/wm_adsp.h b/sound/soc/codecs/wm_adsp.h index 8035fda71f8d..7c667123758b 100644 --- a/sound/soc/codecs/wm_adsp.h +++ b/sound/soc/codecs/wm_adsp.h @@ -142,4 +142,19 @@ int wm_adsp_write_ctl(struct wm_adsp *dsp, const char *name, int type, int wm_adsp_read_ctl(struct wm_adsp *dsp, const char *name, int type, unsigned int alg, void *buf, size_t len); +#if IS_ENABLED(CONFIG_KUNIT) +void wm_adsp_release_firmware_files(const struct firmware *wmfw_firmware, + char *wmfw_filename, + const struct firmware *coeff_firmware, + char *coeff_filename); +int wm_adsp_firmware_request(const struct firmware **firmware, + const char *filename, + struct device *dev); +int wm_adsp_request_firmware_files(struct wm_adsp *dsp, + const struct firmware **wmfw_firmware, + char **wmfw_filename, + const struct firmware **coeff_firmware, + char **coeff_filename); +#endif + #endif |
