Update of /cvsroot/alsa/alsa-tools/hdsploader In directory sc8-pr-cvs1:/tmp/cvs-serv23176
Modified Files: Makefile.am README configure.in hdsploader.c Log Message: Moved firmware to alsa-firmware module, corrected DATAPATH Index: Makefile.am =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdsploader/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Makefile.am 25 Nov 2003 14:27:45 -0000 1.3 +++ Makefile.am 25 Nov 2003 16:07:05 -0000 1.4 @@ -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) Index: README =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdsploader/README,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- README 7 Apr 2003 15:37:22 -0000 1.1 +++ README 25 Nov 2003 16:07:05 -0000 1.2 @@ -3,5 +3,14 @@ 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. Index: configure.in =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdsploader/configure.in,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- configure.in 3 Nov 2003 19:09:55 -0000 1.4 +++ configure.in 25 Nov 2003 16:07:05 -0000 1.5 @@ -49,4 +49,4 @@ fi fi -AC_OUTPUT(Makefile firmware/Makefile) +AC_OUTPUT(Makefile) Index: hdsploader.c =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdsploader/hdsploader.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- hdsploader.c 25 Nov 2003 11:51:31 -0000 1.5 +++ hdsploader.c 25 Nov 2003 16:07:05 -0000 1.6 @@ -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 @@ 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 @@ 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 @@ } return 0; } - ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog