[PATCH 2/2] sound: dice: Add support for Firestudio Mobile

From: George Hilliard
Date: Sat Oct 15 2022 - 19:34:43 EST


This device is of the same vintage as the already-supported FireStudio,
but with a reduced input (10) and output (6) count. Add a configuration
block for it.

$ crpp < /sys/bus/firewire/devices/fw1/config_rom
ROM header and bus information block
---------------------------------------------------
400 0404bc6a bus_info_length 4, crc_length 4, crc 48234
404 31333934 bus_name "1394"
408 e0008102 irmc 1, cmc 1, isc 1, bmc 0, cyc_clk_acc 0, max_rec 8 (512)
40c 000a9204 company_id 000a92 | Presonus Corporation
410 047da647 device_id 04047da647 | EUI-64 000a9204047da647

root directory
---------------------------------------------------
414 0006147f directory_length 6, crc 5247
418 03000a92 vendor: Presonus Corporation
41c 8100000a --> descriptor leaf at 444
420 17000011 model
424 8100000e --> descriptor leaf at 45c
428 0c0087c0 node capabilities per IEEE 1394
42c d1000001 --> unit directory at 430

unit directory at 430
---------------------------------------------------
430 00048030 directory_length 4, crc 32816
434 12000a92 specifier id: Presonus Corporation
438 13000001 version
43c 17000011 model
440 8100000f --> descriptor leaf at 47c

descriptor leaf at 444
---------------------------------------------------
444 00057914 leaf_length 5, crc 30996
448 00000000 textual descriptor
44c 00000000 minimal ASCII
450 50726553 "PreS"
454 6f6e7573 "onus"
458 00000000

descriptor leaf at 45c
---------------------------------------------------
45c 000792a9 leaf_length 7, crc 37545
460 00000000 textual descriptor
464 00000000 minimal ASCII
468 46495245 "FIRE"
46c 53545544 "STUD"
470 494f5f4d "IO_M"
474 4f42494c "OBIL"
478 45000000 "E"

descriptor leaf at 47c
---------------------------------------------------
47c 000792a9 leaf_length 7, crc 37545
480 00000000 textual descriptor
484 00000000 minimal ASCII
488 46495245 "FIRE"
48c 53545544 "STUD"
490 494f5f4d "IO_M"
494 4f42494c "OBIL"
498 45000000 "E"

Tested-by: George Hilliard <thirtythreeforty@xxxxxxxxx>
Signed-off-by: George Hilliard <thirtythreeforty@xxxxxxxxx>
---
sound/firewire/dice/dice-presonus.c | 7 +++++++
sound/firewire/dice/dice.c | 8 ++++++++
2 files changed, 15 insertions(+)

diff --git a/sound/firewire/dice/dice-presonus.c b/sound/firewire/dice/dice-presonus.c
index c85178e64667..8b62495846f1 100644
--- a/sound/firewire/dice/dice-presonus.c
+++ b/sound/firewire/dice/dice-presonus.c
@@ -17,6 +17,12 @@ static const struct dice_presonus_spec dice_presonus_firestudio = {
.has_midi = true,
};

+static const struct dice_presonus_spec dice_presonus_firestudio_mobile = {
+ .tx_pcm_chs = {{10, 10, 0}, {0, 0, 0} },
+ .rx_pcm_chs = {{ 6, 6, 0}, {0, 0, 0} },
+ .has_midi = true,
+};
+
int snd_dice_detect_presonus_formats(struct snd_dice *dice)
{
static const struct {
@@ -24,6 +30,7 @@ int snd_dice_detect_presonus_formats(struct snd_dice *dice)
const struct dice_presonus_spec *spec;
} *entry, entries[] = {
{0x000008, &dice_presonus_firestudio},
+ {0x000011, &dice_presonus_firestudio_mobile},
};
struct fw_csr_iterator it;
int key, val, model_id;
diff --git a/sound/firewire/dice/dice.c b/sound/firewire/dice/dice.c
index f75902bc8e74..f31ea2bb7766 100644
--- a/sound/firewire/dice/dice.c
+++ b/sound/firewire/dice/dice.c
@@ -374,6 +374,14 @@ static const struct ieee1394_device_id dice_id_table[] = {
.model_id = 0x000008,
.driver_data = (kernel_ulong_t)snd_dice_detect_presonus_formats,
},
+ // Presonus FireStudio Mobile.
+ {
+ .match_flags = IEEE1394_MATCH_VENDOR_ID |
+ IEEE1394_MATCH_MODEL_ID,
+ .vendor_id = OUI_PRESONUS,
+ .model_id = 0x000011,
+ .driver_data = (kernel_ulong_t)snd_dice_detect_presonus_formats,
+ },
// Lexicon I-ONYX FW810S.
{
.match_flags = IEEE1394_MATCH_VENDOR_ID |
--
2.38.0