]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: wm_adsp: Remove duplicated code to find firmware file
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Tue, 10 Mar 2026 14:18:12 +0000 (14:18 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 10 Mar 2026 14:52:52 +0000 (14:52 +0000)
The 3rd search case in wm_adsp_request_firmware_files() does exactly the
same bin file searches as the case immediately above it. Merge the
conditional from the 3rd case into the second case so the duplicated code
can be removed.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20260310141817.1871794-6-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wm_adsp.c

index 346ede149a9ee9e13a62bb28a43ea1620ab7e417..a3f297510526e8f3b63551cec8f1c48e5befa4fb 100644 (file)
@@ -828,9 +828,10 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(struct wm_adsp *dsp,
        }
 
        if (system_name) {
-               if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename,
-                                                  cirrus_dir, system_name,
-                                                  NULL, "wmfw")) {
+               ret = wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename,
+                                                   cirrus_dir, system_name,
+                                                   NULL, "wmfw");
+               if (!ret || dsp->wmfw_optional) {
                        if (suffix)
                                wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename,
                                                              cirrus_dir, system_name,
@@ -840,24 +841,10 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(struct wm_adsp *dsp,
                                wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename,
                                                              cirrus_dir, system_name,
                                                              NULL, "bin");
-                       return 0;
-               }
-       }
 
-       /* Check system-specific bin without wmfw before falling back to generic */
-       if (dsp->wmfw_optional && system_name) {
-               if (suffix)
-                       wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename,
-                                                     cirrus_dir, system_name,
-                                                     suffix, "bin");
-
-               if (!*coeff_firmware)
-                       wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename,
-                                                     cirrus_dir, system_name,
-                                                     NULL, "bin");
-
-               if (*coeff_firmware)
-                       return 0;
+                       if (*wmfw_firmware || (dsp->wmfw_optional && *coeff_firmware))
+                               return 0;
+               }
        }
 
        /* Check legacy location */