mbox series

[00/19] ALSA: firewire: introduce AMDTP domain

Message ID 20190804062138.1217-1-o-takashi@sakamocchi.jp (mailing list archive)
Headers show
Series ALSA: firewire: introduce AMDTP domain | expand

Message

Takashi Sakamoto Aug. 4, 2019, 6:21 a.m. UTC
Hi,

This patchset is to implement AMDTP domain I addressed in my previous
patchset:
https://mailman.alsa-project.org/pipermail/alsa-devel/2019-July/152430.html

My work for libhinoko[1][2] allows me to sniff actual packet transmission
between devices and drivers in Windows/Mac OS for long period (e.g. 1
hour). As a result, some supported devices don't follow packet sequences
transferred by the drivers. They expect drivers to parse isoc packets
in tx stream and recover frequency of data block then transfer isoc packets
as rx stream.

(I note that no specification describes this mechanism as long as I know.
In the specification, clock recovery is one-way from transmitter to
receivers, thus recovered clock is not necessarily used for transmission
from the receiver to the transmitter.)

For the clock recovery in driver side, several isoc contexts should be
handled in one time to parse packets in incoming stream and to build
packets in outgoing stream. The AMDTP domain is designed for this purpose.

In this time, the AMDTP domain implements the functionalities to
start/stop a couple of isoc contexts for some AMDTP streams. Each
context still runs in own handler for scheduled hardware IRQs. I'll post
further work after merged.

[1] https://mailman.alsa-project.org/pipermail/alsa-devel/2019-April/147862.html
[2] https://github.com/takaswie/libhinoko

Takashi Sakamoto (19):
  ALSA: firewire-lib: add AMDTP domain structure to handle several isoc
    context in one interrupt callback
  ALSA: firewire-lib: add a kernel API to stop a couple of AMDTP streams
    in AMDTP domain
  ALSA: firewire-lib: add a kernel API to add AMDTP stream into AMDTP
    domain
  ALSA: firewire-lib: add a kernel API to start AMDTP streams in AMDTP
    domain
  ALSA: fireworks: code refactoring for initialization/destruction of
    AMDTP streams
  ALSA: fireworks: code refactoring for bus reset handler
  ALSA: firewire-digi00x: code refactoring for
    initialization/destruction of AMDTP stream
  ALSA: firewire-tascam: code refactoring for initialization/destruction
    of AMDTP stream
  ALSA: firewire-motu: code refactoring for initialization/destruction
    of AMDTP stream
  ALSA: fireface: code refactoring for initialization/destruction of
    AMDTP stream
  ALSA: bebob: support AMDTP domain
  ALSA: fireworks: support AMDTP domain
  ALSA: oxfw: support AMDTP domain
  ALSA: dice: support AMDTP domain
  ALSA: firewire-digi00x: support AMDTP domain
  ALSA: firewire-tascam: support AMDTP domain
  ALSA: firewire-motu: support AMDTP domain
  ALSA: fireface: support AMDTP domain
  ALSA: firewire-lib: localize kernel APIs to start/stop each AMDTP
    stream

 sound/firewire/amdtp-stream.c               |  94 ++++++++++-
 sound/firewire/amdtp-stream.h               |  20 ++-
 sound/firewire/bebob/bebob.h                |   2 +
 sound/firewire/bebob/bebob_stream.c         |  62 +++----
 sound/firewire/dice/dice-stream.c           |  32 +++-
 sound/firewire/dice/dice.h                  |   2 +
 sound/firewire/digi00x/digi00x-stream.c     | 106 +++++++-----
 sound/firewire/digi00x/digi00x.h            |   2 +
 sound/firewire/fireface/ff-stream.c         |  96 ++++++-----
 sound/firewire/fireface/ff.h                |   2 +
 sound/firewire/fireworks/fireworks.h        |   2 +
 sound/firewire/fireworks/fireworks_stream.c | 176 ++++++++++----------
 sound/firewire/motu/motu-stream.c           | 131 +++++++--------
 sound/firewire/motu/motu.h                  |   2 +
 sound/firewire/oxfw/oxfw-stream.c           |  72 ++++----
 sound/firewire/oxfw/oxfw.h                  |   2 +
 sound/firewire/tascam/tascam-stream.c       | 123 ++++++++------
 sound/firewire/tascam/tascam.h              |   2 +
 18 files changed, 558 insertions(+), 370 deletions(-)

Comments

Takashi Iwai Aug. 5, 2019, 6:01 p.m. UTC | #1
On Sun, 04 Aug 2019 08:21:19 +0200,
Takashi Sakamoto wrote:
> 
> Hi,
> 
> This patchset is to implement AMDTP domain I addressed in my previous
> patchset:
> https://mailman.alsa-project.org/pipermail/alsa-devel/2019-July/152430.html
> 
> My work for libhinoko[1][2] allows me to sniff actual packet transmission
> between devices and drivers in Windows/Mac OS for long period (e.g. 1
> hour). As a result, some supported devices don't follow packet sequences
> transferred by the drivers. They expect drivers to parse isoc packets
> in tx stream and recover frequency of data block then transfer isoc packets
> as rx stream.
> 
> (I note that no specification describes this mechanism as long as I know.
> In the specification, clock recovery is one-way from transmitter to
> receivers, thus recovered clock is not necessarily used for transmission
> from the receiver to the transmitter.)
> 
> For the clock recovery in driver side, several isoc contexts should be
> handled in one time to parse packets in incoming stream and to build
> packets in outgoing stream. The AMDTP domain is designed for this purpose.
> 
> In this time, the AMDTP domain implements the functionalities to
> start/stop a couple of isoc contexts for some AMDTP streams. Each
> context still runs in own handler for scheduled hardware IRQs. I'll post
> further work after merged.
> 
> [1] https://mailman.alsa-project.org/pipermail/alsa-devel/2019-April/147862.html
> [2] https://github.com/takaswie/libhinoko
> 
> Takashi Sakamoto (19):
>   ALSA: firewire-lib: add AMDTP domain structure to handle several isoc
>     context in one interrupt callback
>   ALSA: firewire-lib: add a kernel API to stop a couple of AMDTP streams
>     in AMDTP domain
>   ALSA: firewire-lib: add a kernel API to add AMDTP stream into AMDTP
>     domain
>   ALSA: firewire-lib: add a kernel API to start AMDTP streams in AMDTP
>     domain
>   ALSA: fireworks: code refactoring for initialization/destruction of
>     AMDTP streams
>   ALSA: fireworks: code refactoring for bus reset handler
>   ALSA: firewire-digi00x: code refactoring for
>     initialization/destruction of AMDTP stream
>   ALSA: firewire-tascam: code refactoring for initialization/destruction
>     of AMDTP stream
>   ALSA: firewire-motu: code refactoring for initialization/destruction
>     of AMDTP stream
>   ALSA: fireface: code refactoring for initialization/destruction of
>     AMDTP stream
>   ALSA: bebob: support AMDTP domain
>   ALSA: fireworks: support AMDTP domain
>   ALSA: oxfw: support AMDTP domain
>   ALSA: dice: support AMDTP domain
>   ALSA: firewire-digi00x: support AMDTP domain
>   ALSA: firewire-tascam: support AMDTP domain
>   ALSA: firewire-motu: support AMDTP domain
>   ALSA: fireface: support AMDTP domain
>   ALSA: firewire-lib: localize kernel APIs to start/stop each AMDTP
>     stream

Applied all patches now.  Thanks.


Takashi