[PATCH 0/4] firewire: core: handle TASCAM FW-1884/FW-1804/FW-1082 quirk

Takashi Sakamoto posted 4 patches 3 months, 3 weeks ago
drivers/firewire/core-device.c        | 86 +++++++++++++++------------
include/linux/firewire.h              |  3 +
sound/firewire/tascam/tascam-stream.c | 21 +++----
3 files changed, 63 insertions(+), 47 deletions(-)
[PATCH 0/4] firewire: core: handle TASCAM FW-1884/FW-1804/FW-1082 quirk
Posted by Takashi Sakamoto 3 months, 3 weeks ago
Hi,

In 2003, TEAC Corporation had released FW-1884/FW-1804/FW-1082 in its
TASCAM brand. These devices are already supported by a driver in ALSA
firewire stack, but they have an interoperability issue related to
the speed of asynchronous transactions and isochronous transmissions.
When operating at the speed described in configuration ROM, they are
too lazy to respond, and eventually frozen.

The most likely cause of this issue is a mismatch in the gap count
between the initiators and receivers. Theoretically, this can be
resolved by transmitting phy configuration packets to optimize gap count.
Nevertheless, this approach has proven ineffective, suggesting that the
device firmware may contain a bug causing the issue.

From my experience, these devices operate more reliably at lower
transaction and transmission speeds, which provides a practical
mitigation.

This patch series addresses the interoperability issue. The core function
of Linux FireWire subsystem is changed to read the entire configuration
ROM at the lowest speed (S100), and to identify these devices based on its
contents. Once identified, their maximum speed is limited to S200. The
ALSA driver then performs asynchronous requests and isochronous
transmission at that speed to prevent device freezes.

Takashi Sakamoto (4):
  firewire: core: code refactoring to compute transaction speed
  firewire: core: determine transaction speed after detecting quirks
  firewire: core: handle device quirk of TASCAM FW-1884/FW-1804/FW-1082
  ALSA: firewire-tascam: reserve resources for transferred isochronous
    packets at S400

 drivers/firewire/core-device.c        | 86 +++++++++++++++------------
 include/linux/firewire.h              |  3 +
 sound/firewire/tascam/tascam-stream.c | 21 +++----
 3 files changed, 63 insertions(+), 47 deletions(-)


base-commit: 15f9610fc96ac6fd2844e63f7bf5a0b08e1c31c8
-- 
2.51.0
Re: [PATCH 0/4] firewire: core: handle TASCAM FW-1884/FW-1804/FW-1082 quirk
Posted by Takashi Sakamoto 3 months, 3 weeks ago
On Sat, Oct 18, 2025 at 12:55:28PM +0900, Takashi Sakamoto wrote:
> Hi,
> 
> In 2003, TEAC Corporation had released FW-1884/FW-1804/FW-1082 in its
> TASCAM brand. These devices are already supported by a driver in ALSA
> firewire stack, but they have an interoperability issue related to
> the speed of asynchronous transactions and isochronous transmissions.
> When operating at the speed described in configuration ROM, they are
> too lazy to respond, and eventually frozen.
> 
> The most likely cause of this issue is a mismatch in the gap count
> between the initiators and receivers. Theoretically, this can be
> resolved by transmitting phy configuration packets to optimize gap count.
> Nevertheless, this approach has proven ineffective, suggesting that the
> device firmware may contain a bug causing the issue.
> 
> From my experience, these devices operate more reliably at lower
> transaction and transmission speeds, which provides a practical
> mitigation.
> 
> This patch series addresses the interoperability issue. The core function
> of Linux FireWire subsystem is changed to read the entire configuration
> ROM at the lowest speed (S100), and to identify these devices based on its
> contents. Once identified, their maximum speed is limited to S200. The
> ALSA driver then performs asynchronous requests and isochronous
> transmission at that speed to prevent device freezes.
> 
> Takashi Sakamoto (4):
>   firewire: core: code refactoring to compute transaction speed
>   firewire: core: determine transaction speed after detecting quirks
>   firewire: core: handle device quirk of TASCAM FW-1884/FW-1804/FW-1082
>   ALSA: firewire-tascam: reserve resources for transferred isochronous
>     packets at S400
> 
>  drivers/firewire/core-device.c        | 86 +++++++++++++++------------
>  include/linux/firewire.h              |  3 +
>  sound/firewire/tascam/tascam-stream.c | 21 +++----
>  3 files changed, 63 insertions(+), 47 deletions(-)
> 
> 
> base-commit: 15f9610fc96ac6fd2844e63f7bf5a0b08e1c31c8

Applied to for-next branch.

To sound subsystem maintainer, I'll send the 4th patch to mainline as a
part of firewire subsystem updates in next merge window.


Regards

Takashi Sakamoto
`