Commit 4fc90fb8 authored by Takashi Iwai's avatar Takashi Iwai

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: default avatarArnd Bergmann <arnd@arndb.de>
Reviewed-by: default avatarNathan Chancellor <natechancellor@gmail.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ca0214ee
...@@ -1005,7 +1005,6 @@ struct ca0132_spec { ...@@ -1005,7 +1005,6 @@ struct ca0132_spec {
unsigned int scp_resp_header; unsigned int scp_resp_header;
unsigned int scp_resp_data[4]; unsigned int scp_resp_data[4];
unsigned int scp_resp_count; unsigned int scp_resp_count;
bool alt_firmware_present;
bool startup_check_entered; bool startup_check_entered;
bool dsp_reload; bool dsp_reload;
...@@ -7518,7 +7517,7 @@ static bool ca0132_download_dsp_images(struct hda_codec *codec) ...@@ -7518,7 +7517,7 @@ static bool ca0132_download_dsp_images(struct hda_codec *codec)
bool dsp_loaded = false; bool dsp_loaded = false;
struct ca0132_spec *spec = codec->spec; struct ca0132_spec *spec = codec->spec;
const struct dsp_image_seg *dsp_os_image; 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 * Alternate firmwares for different variants. The Recon3Di apparently
* can use the default firmware, but I'll leave the option in case * 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) ...@@ -7529,33 +7528,26 @@ static bool ca0132_download_dsp_images(struct hda_codec *codec)
case QUIRK_R3D: case QUIRK_R3D:
case QUIRK_AE5: case QUIRK_AE5:
if (request_firmware(&fw_entry, DESKTOP_EFX_FILE, if (request_firmware(&fw_entry, DESKTOP_EFX_FILE,
codec->card->dev) != 0) { codec->card->dev) != 0)
codec_dbg(codec, "Desktop firmware not found."); codec_dbg(codec, "Desktop firmware not found.");
spec->alt_firmware_present = false; else
} else {
codec_dbg(codec, "Desktop firmware selected."); codec_dbg(codec, "Desktop firmware selected.");
spec->alt_firmware_present = true;
}
break; break;
case QUIRK_R3DI: case QUIRK_R3DI:
if (request_firmware(&fw_entry, R3DI_EFX_FILE, if (request_firmware(&fw_entry, R3DI_EFX_FILE,
codec->card->dev) != 0) { codec->card->dev) != 0)
codec_dbg(codec, "Recon3Di alt firmware not detected."); codec_dbg(codec, "Recon3Di alt firmware not detected.");
spec->alt_firmware_present = false; else
} else {
codec_dbg(codec, "Recon3Di firmware selected."); codec_dbg(codec, "Recon3Di firmware selected.");
spec->alt_firmware_present = true;
}
break; break;
default: default:
spec->alt_firmware_present = false;
break; break;
} }
/* /*
* Use default ctefx.bin if no alt firmware is detected, or if none * Use default ctefx.bin if no alt firmware is detected, or if none
* exists for your particular codec. * exists for your particular codec.
*/ */
if (!spec->alt_firmware_present) { if (!fw_entry) {
codec_dbg(codec, "Default firmware selected."); codec_dbg(codec, "Default firmware selected.");
if (request_firmware(&fw_entry, EFX_FILE, if (request_firmware(&fw_entry, EFX_FILE,
codec->card->dev) != 0) codec->card->dev) != 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment