Skip to content

Commit

Permalink
ALSA: asihpi: relax firmware version check
Browse files Browse the repository at this point in the history
Some products firmware is no longer being updated
e.g. dsp5000, dsp8700  but it should continue to work
with updated HPI versions.
Avoid regression by allowing this firmware to be loaded as
long as major version is the same.
Warn about mismatching versions, as matching versions are
preferred.

Signed-off-by: Eliot Blennerhassett <eliot@blennerhassett.gen.nz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Eliot Blennerhassett authored and Takashi Iwai committed Dec 18, 2014
1 parent c99b9e8 commit 4398643
Showing 1 changed file with 12 additions and 14 deletions.
26 changes: 12 additions & 14 deletions sound/pci/asihpi/hpidspcd.c
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/***********************************************************************/
/**
/***********************************************************************
AudioScience HPI driver
Copyright (C) 1997-2011 AudioScience Inc. <support@audioscience.com>
Functions for reading DSP code using hotplug firmware loader
Copyright (C) 1997-2014 AudioScience Inc. <support@audioscience.com>
This program is free software; you can redistribute it and/or modify
it under the terms of version 2 of the GNU General Public License as
Expand All @@ -17,11 +18,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\file
Functions for reading DSP code using
hotplug firmware loader from individual dsp code files
*/
/***********************************************************************/
***********************************************************************/
#define SOURCEFILE_NAME "hpidspcd.c"
#include "hpidspcd.h"
#include "hpidebug.h"
Expand Down Expand Up @@ -68,17 +65,18 @@ short hpi_dsp_code_open(u32 adapter, void *os_data, struct dsp_code *dsp_code,
goto error2;
}

if ((header.version >> 9) != (HPI_VER >> 9)) {
/* Consider even and subsequent odd minor versions to be compatible */
dev_err(&dev->dev, "Incompatible firmware version DSP image %X != Driver %X\n",
if (HPI_VER_MAJOR(header.version) != HPI_VER_MAJOR(HPI_VER)) {
/* Major version change probably means Host-DSP protocol change */
dev_err(&dev->dev,
"Incompatible firmware version DSP image %X != Driver %X\n",
header.version, HPI_VER);
goto error2;
}

if (header.version != HPI_VER) {
dev_info(&dev->dev,
"Firmware: release version mismatch DSP image %X != Driver %X\n",
header.version, HPI_VER);
dev_warn(&dev->dev,
"Firmware version mismatch: DSP image %X != Driver %X\n",
header.version, HPI_VER);
}

HPI_DEBUG_LOG(DEBUG, "dsp code %s opened\n", fw_name);
Expand Down

0 comments on commit 4398643

Please sign in to comment.