ALSA: hda/ca0132 – Simplify alt firmware loading code [Linux 5.1]

ALSA: hda/ca0132 – Simplify alt firmware loading code [Linux 5.1]

This Linux kernel change "ALSA: hda/ca0132 – Simplify alt firmware loading code" is included in the Linux 5.1 release. This change is authored by Takashi Iwai <tiwai [at] suse.de> on Fri Mar 22 15:51:36 2019 +0100. The commit for this change in Linux stable tree is 4fc90fb (patch).

ALSA: hda/ca0132 - Simplify alt firmware loading code

ca0132 codec driver loads the firmware selectively depending on the
model in addition to the fallback of the default firmware.  The code
works good, but a minor problem is that the current code seems
confusing for Clang where it spews a warning about uninitialized
variable.

This patch simplifies the code flow for such a false-positive
warning.  After this refactoring, the ca0132_spec.alt_firmware_present
field is no longer used, hence it's eliminated as well.

Reported-and-tested-by: Arnd Bergmann <[email protected]>
Reviewed-by: Nathan Chancellor <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>

There are 20 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 sound/pci/hda/patch_ca0132.c | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index 29882bd..e1ebc6d 100644
--- a/sound/pci/hda/patch_ca0132.c
+++ b/sound/pci/hda/patch_ca0132.c
@@ -1005,7 +1005,6 @@ struct ca0132_spec {
    unsigned int scp_resp_header;
    unsigned int scp_resp_data[4];
    unsigned int scp_resp_count;
-   bool alt_firmware_present;
    bool startup_check_entered;
    bool dsp_reload;

@@ -7518,7 +7517,7 @@ static bool ca0132_download_dsp_images(struct hda_codec *codec)
    bool dsp_loaded = false;
    struct ca0132_spec *spec = codec->spec;
    const struct dsp_image_seg *dsp_os_image;
-   const struct firmware *fw_entry;
+   const struct firmware *fw_entry = NULL;
    /*
     * Alternate firmwares for different variants. The Recon3Di apparently
     * can use the default firmware, but I'll leave the option in case
@@ -7529,33 +7528,26 @@ static bool ca0132_download_dsp_images(struct hda_codec *codec)
    case QUIRK_R3D:
    case QUIRK_AE5:
        if (request_firmware(&fw_entry, DESKTOP_EFX_FILE,
-                   codec->card->dev) != 0) {
+                   codec->card->dev) != 0)
            codec_dbg(codec, "Desktop firmware not found.");
-           spec->alt_firmware_present = false;
-       } else {
+       else
            codec_dbg(codec, "Desktop firmware selected.");
-           spec->alt_firmware_present = true;
-       }
        break;
    case QUIRK_R3DI:
        if (request_firmware(&fw_entry, R3DI_EFX_FILE,
-                   codec->card->dev) != 0) {
+                   codec->card->dev) != 0)
            codec_dbg(codec, "Recon3Di alt firmware not detected.");
-           spec->alt_firmware_present = false;
-       } else {
+       else
            codec_dbg(codec, "Recon3Di firmware selected.");
-           spec->alt_firmware_present = true;
-       }
        break;
    default:
-       spec->alt_firmware_present = false;
        break;
    }
    /*
     * Use default ctefx.bin if no alt firmware is detected, or if none
     * exists for your particular codec.
     */
-   if (!spec->alt_firmware_present) {
+   if (!fw_entry) {
        codec_dbg(codec, "Default firmware selected.");
        if (request_firmware(&fw_entry, EFX_FILE,
                    codec->card->dev) != 0)

Leave a Reply

Your email address will not be published. Required fields are marked *