[PATCH 00/25] alsa-tools: efw-downloader: add initial version of firmwre downloader for Echo Audio Fireworks devices

Takashi Sakamoto o-takashi at sakamocchi.jp
Fri Aug 21 09:30:46 CEST 2020


Hi,

This patchset is for alsa-tool repository[1] to add a new command-line
tool, efw-downloader. The tools is designed to operate on-board flash
memory for devices based on Fireworks board module. The patches are also
available in my personal repository in github.com[2].

Fireworks board module was designed by Echo Digital Audio corporation. The
board module has on-board flash memory to store firmware blob and session
data. The contents of flash memory can be operated by software by a pair
of asynchronous transactions defined by Echo Digital Audio corporation.

Echo Digital Audio corporation also designed file format of firmware.
Hardware Vendors including Echo Digital Audio corporation shipped
several versions of firmware by the format in driver packages for
Windows and macOS.

The goal of this tool is to operate the flash memory to download any
version of firmware. In this patchset, limited functionalities are added;
read from the flash memory, and parse the content of file. The other
functionalities are planned to added in future work.

I thinks it possible to put actual firmware blobs into somewhere
suitable for them (alsa-firmware or linux-firmware repositories). I
think it better to prepare the files by reading on-board flash memory,
with enough care of copyright of original firmware files shipped by
vendor. In the case, it's preferable to use file format different
from the original one. But it's my first time for this kind of work.
I'd like to ask some advices to alsa developers.

[1] https://github.com/alsa-project/alsa-tools/
[2] https://github.com/takaswie/alsa-tools/tree/topic/efw-downloader

Takashi Sakamoto (25):
  efw-downloader: start a new project to operate on-board flash memory
    for Fireworks board module
  efw-downloader: efw-proto: define EfwProto as derived object of
    HinawaFwResp
  efw-downloader: efw-proto: add constructor, destructor, bind, unbind
    functions
  efw-downloader: efw-proto: add responded signal
  efw-downloader: efw-proto: add class virtual method to handle
    responded signal
  efw-downloader: efw-proto: add instance private structure
  efw-downloader: efw-proto: emit responded signal at receiving response
  efw-downloader: efw-proto: add function to finish transaction for
    command frame
  efw-downloader: efw-proto: add function to finish a pair of
    transactions
  efw-downloader: add parser for sub commands
  efw-downloader: subcmd-device: implement 'device' sub command to
    operate actual device
  efw-downloader: subcmd-device: open firewire character device by
    HinawaFwNode
  efw-downloader: config-rom: parse config rom to detect supported
    device
  efw-downloader: subcmd-device: check supported models or not
  efw-downloader: subcmd-device: bind Fireworks protocol
  efw-downloader: node_dispatcher: add event dispatcher utilizing GLib
    MainContext/MainLoop
  efw-downloader: subcmd-device: support debug output for response of
    Fireworks protocol
  efw-downloader: efw-commands: add support for a part of hardware
    command
  efw-downloader: efw-commands: add support for commands in flash
    category
  efw-downloader: subcmd-device: add read operation
  efw-downloader: file-cntr: add parser for data binary shipped by Echo
    Digital Audio corporation
  efw-downloader: subcmd-file: add 'file' sub command
  efw-downloader: subcmd-file: add parse operation
  efw-downloader: man: add online manual
  efw-downloader: add README formatted by reStructuredText

 efw-downloader/COPYING                        | 674 ++++++++++++++++++
 efw-downloader/README.rst                     | 167 +++++
 efw-downloader/man/efw-downloader.1           | 162 +++++
 efw-downloader/meson.build                    |  14 +
 efw-downloader/meson_options.txt              |   5 +
 efw-downloader/src/config-rom.c               |  60 ++
 efw-downloader/src/config-rom.h               |  26 +
 efw-downloader/src/efw-commands.c             | 243 +++++++
 efw-downloader/src/efw-commands.h             |  57 ++
 .../src/efw-proto-sigs-marshal.list           |   1 +
 efw-downloader/src/efw-proto.c                | 401 +++++++++++
 efw-downloader/src/efw-proto.h                |  80 +++
 efw-downloader/src/file-cntr.c                | 183 +++++
 efw-downloader/src/file-cntr.h                |  39 +
 efw-downloader/src/main.c                     |  54 ++
 efw-downloader/src/meson.build                |  54 ++
 efw-downloader/src/node-dispatcher.c          |  86 +++
 efw-downloader/src/node-dispatcher.h          |  21 +
 efw-downloader/src/op-device-read.c           | 104 +++
 efw-downloader/src/op-file-parse.c            | 106 +++
 efw-downloader/src/subcmd-device.c            | 182 +++++
 efw-downloader/src/subcmd-file.c              |  87 +++
 efw-downloader/src/subcmds.h                  |  16 +
 23 files changed, 2822 insertions(+)
 create mode 100644 efw-downloader/COPYING
 create mode 100644 efw-downloader/README.rst
 create mode 100644 efw-downloader/man/efw-downloader.1
 create mode 100644 efw-downloader/meson.build
 create mode 100644 efw-downloader/meson_options.txt
 create mode 100644 efw-downloader/src/config-rom.c
 create mode 100644 efw-downloader/src/config-rom.h
 create mode 100644 efw-downloader/src/efw-commands.c
 create mode 100644 efw-downloader/src/efw-commands.h
 create mode 100644 efw-downloader/src/efw-proto-sigs-marshal.list
 create mode 100644 efw-downloader/src/efw-proto.c
 create mode 100644 efw-downloader/src/efw-proto.h
 create mode 100644 efw-downloader/src/file-cntr.c
 create mode 100644 efw-downloader/src/file-cntr.h
 create mode 100644 efw-downloader/src/main.c
 create mode 100644 efw-downloader/src/meson.build
 create mode 100644 efw-downloader/src/node-dispatcher.c
 create mode 100644 efw-downloader/src/node-dispatcher.h
 create mode 100644 efw-downloader/src/op-device-read.c
 create mode 100644 efw-downloader/src/op-file-parse.c
 create mode 100644 efw-downloader/src/subcmd-device.c
 create mode 100644 efw-downloader/src/subcmd-file.c
 create mode 100644 efw-downloader/src/subcmds.h

-- 
2.25.1



More information about the Alsa-devel mailing list