UltraLite-mk3 was shipped 2008 by MOTU. This model has two lineups;
FireWire-only and FireWire/USB2.0 Hybrid model. Additionally, the latter
has two variants in respect of the type of IEEE 1394 connector; alpha
and beta connector.
This commit adds support for the FireWire-only model, which is already
discontinued.
$ python3 crpp < /sys/bus/firewire/devices/fw1/config_rom
               ROM header and bus information block
               -----------------------------------------------------------------
400  
0410353a  bus_info_length 4, crc_length 16, crc 13626
404  
31333934  bus_name "1394"
408  
20ff7000  irmc 0, cmc 0, isc 1, bmc 0, cyc_clk_acc 255, max_rec 7 (256)
40c  
0001f200  company_id 0001f2     |
410  
000902c7  device_id 
00000902c7  | EUI-64 
0001f200000902c7
               root directory
               -----------------------------------------------------------------
414  
0004ef04  directory_length 4, crc 61188
418  
030001f2  vendor
41c  
0c0083c0  node capabilities per IEEE 1394
420  
d1000002  --> unit directory at 428
424  
8d000005  --> eui-64 leaf at 438
               unit directory at 428
               -----------------------------------------------------------------
428  
00035556  directory_length 3, crc 21846
42c  
120001f2  specifier id
430  
13000019  version
434  
17100800  model
               eui-64 leaf at 438
               -----------------------------------------------------------------
438  
0002f3c5  leaf_length 2, crc 62405
43c  
0001f200  company_id 0001f2     |
440  
000902c7  device_id 
00000902c7  | EUI-64 
0001f200000902c7
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20200523071733.170129-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
 
        .rx_fixed_pcm_chunks = {14, 14, 10},
 };
 
+const struct snd_motu_spec snd_motu_spec_ultralite_mk3 = {
+       .name = "UltraLiteMk3",
+       .protocol_version = SND_MOTU_PROTOCOL_V3,
+       .flags = SND_MOTU_SPEC_RX_MIDI_3RD_Q |
+                SND_MOTU_SPEC_TX_MIDI_3RD_Q,
+       .tx_fixed_pcm_chunks = {18, 14, 10},
+       .rx_fixed_pcm_chunks = {14, 14, 14},
+};
+
 const struct snd_motu_spec snd_motu_spec_audio_express = {
        .name = "AudioExpress",
        .protocol_version = SND_MOTU_PROTOCOL_V3,
 
        SND_MOTU_DEV_ENTRY(0x00000d, &snd_motu_spec_ultralite),
        SND_MOTU_DEV_ENTRY(0x00000f, &snd_motu_spec_8pre),
        SND_MOTU_DEV_ENTRY(0x000015, &snd_motu_spec_828mk3), // FireWire only.
+       SND_MOTU_DEV_ENTRY(0x000019, &snd_motu_spec_ultralite_mk3), // FireWire only.
        SND_MOTU_DEV_ENTRY(0x000035, &snd_motu_spec_828mk3), // Hybrid.
        SND_MOTU_DEV_ENTRY(0x000033, &snd_motu_spec_audio_express),
        SND_MOTU_DEV_ENTRY(0x000045, &snd_motu_spec_4pre),
 
 extern const struct snd_motu_spec snd_motu_spec_8pre;
 
 extern const struct snd_motu_spec snd_motu_spec_828mk3;
+extern const struct snd_motu_spec snd_motu_spec_ultralite_mk3;
 extern const struct snd_motu_spec snd_motu_spec_audio_express;
 extern const struct snd_motu_spec snd_motu_spec_4pre;