History log of /linux-master/sound/firewire/dice/dice-alesis.c
Revision Date Author Comments
# 1b660489 13-May-2021 Takashi Sakamoto <o-takashi@sakamocchi.jp>

ALSA: dice: fix stream format at middle sampling rate for Alesis iO 26

Alesis iO 26 FireWire has two pairs of digital optical interface. It
delivers PCM frames from the interfaces by second isochronous packet
streaming. Although both of the interfaces are available at 44.1/48.0
kHz, first one of them is only available at 88.2/96.0 kHz. It reduces
the number of PCM samples to 4 in Multi Bit Linear Audio data channel
of data blocks on the second isochronous packet streaming.

This commit fixes hardcoded stream formats.

Cc: <stable@vger.kernel.org>
Fixes: 28b208f600a3 ("ALSA: dice: add parameters of stream formats for models produced by Alesis")
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20210513125652.110249-2-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>


# 791a485f 13-Jan-2020 Takashi Sakamoto <o-takashi@sakamocchi.jp>

ALSA: dice: add support for Alesis MasterControl

Alesis MasterControl was shipped 2009 and already discontinued. This model
consists of:
* TSB41AB2 for physical layer of IEEE 1394
* WaveFront Dice II STD for link layer and protocol implementation
* FreeScale DSPB56374AE

Although the firmware of this model can respond against read transaction
to address space for TCAT extension protocol, the content is not valid
for protocol extension. This results in sound card without any PCM/MIDI
interfaces.

$ ./firewire-request /dev/fw1 read 0xffffe0200000 0x48
result: 000: 00 00 00 20 00 00 04 94 00 00 04 b4 00 00 00 b4
result: 010: 00 00 05 68 00 00 00 24 00 00 05 8c 00 00 00 48
result: 020: 00 00 00 20 00 00 00 08 00 00 00 20 00 00 00 20
result: 030: 00 00 00 10 00 00 00 08 00 00 00 08 00 00 00 04
result: 040: 00 00 00 00 00 00 00 00

This commit adds support the model by adding hard-coded stream formats.

$ python3 ~/git/linux-firewire-utils/src/crpp < /sys/bus/firewire/devices/fw1/config_rom
ROM header and bus information block
-----------------------------------------------------------------
400 04041ad7 bus_info_length 4, crc_length 4, crc 6871
404 31333934 bus_name "1394"
408 e0ff8112 irmc 1, cmc 1, isc 1, bmc 0, pmc 0, cyc_clk_acc 255,
max_rec 8 (512), max_rom 1, gen 1, spd 2 (S400)
40c 00059504 company_id 000595 | Alesis Corporation
410 008003f5 device_id 04008003f5 | EUI-64 00059504008003f5

root directory
-----------------------------------------------------------------
414 0006a620 directory_length 6, crc 42528
418 03000595 vendor: Alesis Corporation
41c 8100000a --> descriptor leaf at 444
420 17000002 model
424 8100000d --> descriptor leaf at 458
428 0c0087c0 node capabilities per IEEE 1394
42c d1000001 --> unit directory at 430

unit directory at 430
-----------------------------------------------------------------
430 00041b9f directory_length 4, crc 7071
434 12000595 specifier id: Alesis Corporation
438 13000001 version: audio
43c 17000002 model
440 8100000d --> descriptor leaf at 474

descriptor leaf at 444
-----------------------------------------------------------------
444 000494c2 leaf_length 4, crc 38082
448 00000000 textual descriptor
44c 00000000 minimal ASCII
450 416c6573 "Ales"
454 69730000 "is"

descriptor leaf at 458
-----------------------------------------------------------------
458 0006c2ec leaf_length 6, crc 49900
45c 00000000 textual descriptor
460 00000000 minimal ASCII
464 4d617374 "Mast"
468 6572436f "erCo"
46c 6e74726f "ntro"
470 6c000000 "l"

descriptor leaf at 474
-----------------------------------------------------------------
474 0006c2ec leaf_length 6, crc 49900
478 00000000 textual descriptor
47c 00000000 minimal ASCII
480 4d617374 "Mast"
484 6572436f "erCo"
488 6e74726f "ntro"
48c 6c000000 "l"

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20200113084630.14305-4-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>


# 3a9236e9 16-Sep-2019 Takashi Sakamoto <o-takashi@sakamocchi.jp>

ALSA: dice: fix wrong packet parameter for Alesis iO26

At higher sampling rate (e.g. 192.0 kHz), Alesis iO26 transfers 4 data
channels per data block in CIP.

Both iO14 and iO26 have the same contents in their configuration ROM.
For this reason, ALSA Dice driver attempts to distinguish them according
to the value of TX0_AUDIO register at probe callback. Although the way is
valid at lower and middle sampling rate, it's lastly invalid at higher
sampling rate because because the two models returns the same value for
read transaction to the register.

In the most cases, users just plug-in the device and ALSA dice driver
detects it. In the case, the device runs at lower sampling rate and
the driver detects expectedly. For this reason, this commit leaves the
way to detect as is.

Fixes: 28b208f600a3 ("ALSA: dice: add parameters of stream formats for models produced by Alesis")
Cc: <stable@vger.kernel.org> # v4.18+
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20190916101851.30409-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>


# 627661ce 06-Aug-2018 Takashi Sakamoto <o-takashi@sakamocchi.jp>

ALSA: dice: fix wrong copy to rx parameters for Alesis iO26

A commit 28b208f600a3 ('ALSA: dice: add parameters of stream formats for
models produced by Alesis') adds wrong copy to rx parameters instead of
tx parameters for Alesis iO26.

This commit fixes the bug for v4.18-rc8.

Fixes: 28b208f600a3 ('ALSA: dice: add parameters of stream formats for models produced by Alesis')
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Cc: <stable@vger.kernel.org> # v4.18
Signed-off-by: Takashi Iwai <tiwai@suse.de>


# 28b208f6 02-May-2018 Takashi Sakamoto <o-takashi@sakamocchi.jp>

ALSA: dice: add parameters of stream formats for models produced by Alesis

Alesis shipped some models with DICE ASICs. All of them just support
DICE original protocol and drivers can't retrieve all of available stream
formats without changing status of sampling transmission frequency
actually.

This commit puts some hard-coded parameters for the models. When detecting
the models, the corresponding parameters are copied as cache of stream
formats.

I note that each of pair of iO14/iO26 and MultiMix 8/12/16 has the same
model ID on their configuration ROM. The MultiMix 8/12/16 just support
one mode for sampling transmission frequency and ALSA dice driver already
handles them correctly. The iO14/iO26 support three modes and need
hard-coded parameters. To distinguish these two models, this commit let
the driver to retrieve current stream formats and compare it to known
parameters, then decide it.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>