Hi, I found some mistakes in the statements of the patch comment, and forgot to modify Kconfig. let me post take 2 so please abandon this patch, sorry... On Sun, Jan 28, 2024 at 09:25:23PM +0900, Takashi Sakamoto wrote: > Mark of the Unicorn released 896 mk3 FireWire in 2008 as part of the third > generation of its FireWire series. In 2011, 896 mk3 hybrid was released to > support USB protocol. > > It supports sampling transfer frequency up to 192.0 kHz. The packet > format differs depending on both of current sampling transfer frequency > and the type of signal in optical interfaces. The model supports > transmission of PCM frames as well as MIDI messages. > > The 896 mk3 FireWire consists of below ICs: > > * Texas Instruments TSB41AB2 > * Microchip (SMSC) USB3300 > * Xilinx Spartan-3A FPGA, XC3S500E > * Texas Instruments TMS320C6722 > * Microchip (Atmel) AT91SAM SAM7S256 > > It supports sampling transfer frequency up to 192.0 kHz. The packet > format differs depending on both of current sampling transfer frequency > and the type of signal in two pairs of optical interfaces. The model > supports transmission of PCM frames, while has no port for MIDi messages. > > The model supports command mechanism to configure internal DSP. Hardware > meter information is available in the first 2 chunks of each data block > of tx packet. > > This commit adds support for it. The 896 mk3 FireWire is just tested, but > the 896 mk3 Hybrid is not yet. > > $ config-rom-pretty-printer < motu-896mk3fw.img > ROM header and bus information block > ----------------------------------------------------------------- > 1024 04100ce1 bus_info_length 4, crc_length 16, crc 3297 > 1028 31333934 bus_name "1394" > 1032 20ff7000 irmc 0, cmc 0, isc 1, bmc 0, cyc_clk_acc 255, max_rec 7 (256) > 1036 0001f200 company_id 0001f2 | > 1040 00093add device_id 0000604893 | EUI-64 0547556791237341 > > root directory > ----------------------------------------------------------------- > 1044 0004ef04 directory_length 4, crc 61188 > 1048 030001f2 vendor > 1052 0c0083c0 node capabilities: per IEEE 1394 > 1056 d1000002 --> unit directory at 1064 > 1060 8d000005 --> eui-64 leaf at 1080 > > unit directory at 1064 > ----------------------------------------------------------------- > 1064 0003998d directory_length 3, crc 39309 > 1068 120001f2 specifier id > 1072 13000017 version > 1076 17101800 model > > eui-64 leaf at 1080 > ----------------------------------------------------------------- > 1080 0002cc82 leaf_length 2, crc 52354 > 1084 0001f200 company_id 0001f2 | > 1088 00093add device_id 0000604893 | EUI-64 0547556791237341 > > $ config-rom-pretty-printer < motu-896mk3hybrid.img > ROM header and bus information block > ----------------------------------------------------------------- > 1024 04103cbe bus_info_length 4, crc_length 16, crc 15550 > 1028 31333934 bus_name "1394" > 1032 20ff7000 irmc 0, cmc 0, isc 1, bmc 0, cyc_clk_acc 255, max_rec 7 (256) > 1036 0001f200 company_id 0001f2 | > 1040 000ae601 device_id 0000714241 | EUI-64 0547556791346689 > > root directory > ----------------------------------------------------------------- > 1044 0004ef04 directory_length 4, crc 61188 > 1048 030001f2 vendor > 1052 0c0083c0 node capabilities: per IEEE 1394 > 1056 d1000002 --> unit directory at 1064 > 1060 8d000005 --> eui-64 leaf at 1080 > > unit directory at 1064 > ----------------------------------------------------------------- > 1064 000394ac directory_length 3, crc 38060 > 1068 120001f2 specifier id > 1072 13000037 version > 1076 17102800 model > > eui-64 leaf at 1080 > ----------------------------------------------------------------- > 1080 0002cf69 leaf_length 2, crc 53097 > 1084 0001f200 company_id 0001f2 | > 1088 000ae601 device_id 0000714241 | EUI-64 0547556791346689 > > Signed-off-by: Takashi Sakamoto <o-takashi@xxxxxxxxxxxxx> > --- > sound/firewire/motu/motu-protocol-v3.c | 9 +++++++++ > sound/firewire/motu/motu.c | 2 ++ > sound/firewire/motu/motu.h | 1 + > 3 files changed, 12 insertions(+) > > diff --git a/sound/firewire/motu/motu-protocol-v3.c b/sound/firewire/motu/motu-protocol-v3.c > index 8a0426920a76..7254fdfe046a 100644 > --- a/sound/firewire/motu/motu-protocol-v3.c > +++ b/sound/firewire/motu/motu-protocol-v3.c > @@ -261,6 +261,7 @@ int snd_motu_protocol_v3_cache_packet_formats(struct snd_motu *motu) > > if (motu->spec == &snd_motu_spec_828mk3_fw || > motu->spec == &snd_motu_spec_828mk3_hybrid || > + motu->spec == &snd_motu_spec_896mk3 || > motu->spec == &snd_motu_spec_traveler_mk3 || > motu->spec == &snd_motu_spec_track16) > return detect_packet_formats_with_opt_ifaces(motu, data); > @@ -288,6 +289,14 @@ const struct snd_motu_spec snd_motu_spec_828mk3_hybrid = { > .rx_fixed_pcm_chunks = {14, 14, 14}, // Additional 4 dummy chunks at higher rate. > }; > > +const struct snd_motu_spec snd_motu_spec_896mk3 = { > + .name = "896mk3", > + .protocol_version = SND_MOTU_PROTOCOL_V3, > + .flags = SND_MOTU_SPEC_COMMAND_DSP, > + .tx_fixed_pcm_chunks = {18, 14, 10}, > + .rx_fixed_pcm_chunks = {18, 14, 10}, > +}; > + > const struct snd_motu_spec snd_motu_spec_traveler_mk3 = { > .name = "TravelerMk3", > .protocol_version = SND_MOTU_PROTOCOL_V3, > diff --git a/sound/firewire/motu/motu.c b/sound/firewire/motu/motu.c > index d73599eb7d5a..d14ab5dd5bea 100644 > --- a/sound/firewire/motu/motu.c > +++ b/sound/firewire/motu/motu.c > @@ -168,10 +168,12 @@ static const struct ieee1394_device_id motu_id_table[] = { > 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_fw), // FireWire only. > + SND_MOTU_DEV_ENTRY(0x000017, &snd_motu_spec_896mk3), // FireWire only. > SND_MOTU_DEV_ENTRY(0x000019, &snd_motu_spec_ultralite_mk3), // FireWire only. > SND_MOTU_DEV_ENTRY(0x00001b, &snd_motu_spec_traveler_mk3), > SND_MOTU_DEV_ENTRY(0x000030, &snd_motu_spec_ultralite_mk3), // Hybrid. > SND_MOTU_DEV_ENTRY(0x000035, &snd_motu_spec_828mk3_hybrid), // Hybrid. > + SND_MOTU_DEV_ENTRY(0x000037, &snd_motu_spec_896mk3), // Hybrid. > SND_MOTU_DEV_ENTRY(0x000033, &snd_motu_spec_audio_express), > SND_MOTU_DEV_ENTRY(0x000039, &snd_motu_spec_track16), > SND_MOTU_DEV_ENTRY(0x000045, &snd_motu_spec_4pre), > diff --git a/sound/firewire/motu/motu.h b/sound/firewire/motu/motu.h > index 3b1dc98a7be0..c66be0a89ccf 100644 > --- a/sound/firewire/motu/motu.h > +++ b/sound/firewire/motu/motu.h > @@ -138,6 +138,7 @@ extern const struct snd_motu_spec snd_motu_spec_8pre; > > extern const struct snd_motu_spec snd_motu_spec_828mk3_fw; > extern const struct snd_motu_spec snd_motu_spec_828mk3_hybrid; > +extern const struct snd_motu_spec snd_motu_spec_896mk3; > extern const struct snd_motu_spec snd_motu_spec_traveler_mk3; > extern const struct snd_motu_spec snd_motu_spec_ultralite_mk3; > extern const struct snd_motu_spec snd_motu_spec_audio_express; > -- > 2.40.1 Thanks Takashi Sakamoto