mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04:00
Moved firmware to alsa-firmware module, corrected DATAPATH
This commit is contained in:
parent
a2f5768907
commit
b4037faa0e
9 changed files with 52 additions and 16305 deletions
|
|
@ -1,15 +1,16 @@
|
|||
# # Process this file with automake to produce Makefile.in.
|
||||
|
||||
SUBDIRS = firmware
|
||||
MYNAME = hdsploader
|
||||
|
||||
bin_PROGRAMS = hdsploader
|
||||
|
||||
AM_CFLAGS = -DDATAPATH=\"$(datadir)/alsa/firmware/$(MYNAME)\"
|
||||
|
||||
hdsploader_SOURCES = hdsploader.c
|
||||
|
||||
EXTRA_DIST = depcomp
|
||||
|
||||
alsa-dist: distdir
|
||||
@rm -rf ../distdir/hdsploader
|
||||
@mkdir -p ../distdir/hdsploader
|
||||
@cp -RLpv $(distdir)/* ../distdir/hdsploader
|
||||
@rm -rf ../distdir/$(MYNAME)
|
||||
@mkdir -p ../distdir/$(MYNAME)
|
||||
@cp -RLpv $(distdir)/* ../distdir/$(MYNAME)
|
||||
@rm -rf $(distdir)
|
||||
|
|
|
|||
|
|
@ -3,5 +3,14 @@ hdsploader - firmware loader for the RME Hammerfall DSP cards
|
|||
|
||||
|
||||
USAGE
|
||||
=====
|
||||
|
||||
Just run hdsploader, the program takes care of everything.
|
||||
|
||||
FILES
|
||||
=====
|
||||
|
||||
The firmware binaries are installed on /usr/share/alsa/firmware/hdsploader
|
||||
(or /usr/local/share/alsa/firmware/hdsploader, depending to the prefix
|
||||
option of configure). There will be *.conf files, which define the dsp
|
||||
image files for each different card type.
|
||||
|
|
|
|||
|
|
@ -49,4 +49,4 @@ else
|
|||
fi
|
||||
fi
|
||||
|
||||
AC_OUTPUT(Makefile firmware/Makefile)
|
||||
AC_OUTPUT(Makefile)
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
EXTRA_DIST = $(wildcard *.dat)
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -20,14 +20,38 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <endian.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <alsa/asoundlib.h>
|
||||
#include <sound/hdsp.h>
|
||||
|
||||
#include "firmware/multiface_firmware.dat"
|
||||
#include "firmware/digiface_firmware.dat"
|
||||
#include "firmware/multiface_firmware_rev11.dat"
|
||||
#include "firmware/digiface_firmware_rev11.dat"
|
||||
static u_int32_t code[24413];
|
||||
|
||||
int read_bin_file(u_int32_t *array, const char *filename)
|
||||
{
|
||||
FILE *out;
|
||||
|
||||
if ((out = fopen(filename, "r")) == NULL) {
|
||||
fprintf(stderr, "Unable to open file '%s' for reading\n", filename);
|
||||
return -1;
|
||||
}
|
||||
if (fread(array, 4, 24413, out) != 24413) {
|
||||
fclose(out);
|
||||
return -1;
|
||||
}
|
||||
fclose(out);
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
{
|
||||
unsigned int idx;
|
||||
for (idx = 0; idx < 24413; idx++)
|
||||
array[idx] = ((array[idx] & 0x000000ff) << 16) |
|
||||
((array[idx] & 0x0000ff00) << 8) |
|
||||
((array[idx] & 0x00ff0000) >> 8) |
|
||||
((array[idx] & 0xff000000) >> 16);
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
void upload_firmware(int card)
|
||||
{
|
||||
|
|
@ -54,20 +78,21 @@ void upload_firmware(int card)
|
|||
snd_hwdep_close(hw);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
firmware.firmware_data = (unsigned long *)code;
|
||||
switch (version.io_type) {
|
||||
case Multiface:
|
||||
if (version.firmware_rev == 0xa) {
|
||||
firmware.firmware_data = multiface_firmware;
|
||||
err = read_bin_file(code, DATAPATH "multiface_firmware.bin");
|
||||
} else {
|
||||
firmware.firmware_data = multiface_firmware_rev11;
|
||||
err = read_bin_file(code, DATAPATH "multiface_firmware_rev11.bin");
|
||||
}
|
||||
break;
|
||||
case Digiface:
|
||||
if (version.firmware_rev == 0xa) {
|
||||
firmware.firmware_data = digiface_firmware;
|
||||
err = read_bin_file(code, DATAPATH "digiface_firmware.bin");
|
||||
} else {
|
||||
firmware.firmware_data = digiface_firmware_rev11;
|
||||
err = read_bin_file(code, DATAPATH "digiface_firmware_rev11.bin");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
@ -75,6 +100,8 @@ void upload_firmware(int card)
|
|||
snd_hwdep_close(hw);
|
||||
return;
|
||||
}
|
||||
if (err < 0)
|
||||
return;
|
||||
|
||||
if ((err = snd_hwdep_ioctl(hw, SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE, &firmware)) < 0) {
|
||||
fprintf(stderr, "Hwdep ioctl error on card %s : %s.\n", card_name, snd_strerror(err));
|
||||
|
|
@ -115,4 +142,3 @@ int main(int argc, char **argv)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue