| From a5ba6beb839cfa288960c92cd2668a2601c24dda Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Mon, 16 Aug 2010 08:08:48 +0200 |
| Subject: ALSA: riptide - Fix detection / load of firmware files |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit a5ba6beb839cfa288960c92cd2668a2601c24dda upstream. |
| |
| The detection and loading of firmeware on riptide driver has been broken |
| due to rewrite of some codes, checking the presense wrongly. |
| This patch fixes the logic again. |
| |
| Reference: kernel bug 16596 |
| https://bugzilla.kernel.org/show_bug.cgi?id=16596 |
| |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| sound/pci/riptide/riptide.c | 11 +++++------ |
| 1 file changed, 5 insertions(+), 6 deletions(-) |
| |
| --- a/sound/pci/riptide/riptide.c |
| +++ b/sound/pci/riptide/riptide.c |
| @@ -1224,15 +1224,14 @@ static int try_to_load_firmware(struct c |
| firmware.firmware.ASIC, firmware.firmware.CODEC, |
| firmware.firmware.AUXDSP, firmware.firmware.PROG); |
| |
| + if (!chip) |
| + return 1; |
| + |
| for (i = 0; i < FIRMWARE_VERSIONS; i++) { |
| if (!memcmp(&firmware_versions[i], &firmware, sizeof(firmware))) |
| - break; |
| - } |
| - if (i >= FIRMWARE_VERSIONS) |
| - return 0; /* no match */ |
| + return 1; /* OK */ |
| |
| - if (!chip) |
| - return 1; /* OK */ |
| + } |
| |
| snd_printdd("Writing Firmware\n"); |
| if (!chip->fw_entry) { |