diff mbox series

ALSA: firewire-motu: add support for MOTU 4pre

Message ID 20190830011456.14720-1-o-takashi@sakamocchi.jp (mailing list archive)
State New, archived
Headers show
Series ALSA: firewire-motu: add support for MOTU 4pre | expand

Commit Message

Takashi Sakamoto Aug. 30, 2019, 1:14 a.m. UTC
MOTU 4pre was launched in 2012 by MOTU, Inc. This commit allows userspace
applications can transmit and receive PCM frames and MIDI messages for
this model via ALSA PCM interface and RawMidi/Sequencer interfaces.

The device supports MOTU protocol version 3. Unlike the other devices, the
device is simply designed. The size of data block is fixed to 10 quadlets
during available sampling rates (44.1 - 96.0 kHz). Each data block
includes 1 source packet header, 2 data chunks for messages, 8 data chunks
for PCM samples and 2 data chunks for padding to quadlet alignment. The
device has no MIDI, optical, BNC and AES/EBU interfaces.

Like support for the other MOTU devices, the quality of playback sound
is not enough good with periodical noise yet.

$ python2 crpp < ~/git/am-config-rom/motu/motu-4pre.img
               ROM header and bus information block
               -----------------------------------------------------------------
400  041078cc  bus_info_length 4, crc_length 16, crc 30924
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  000a41c5  device_id 00000a41c5  | EUI-64 0001f200000a41c5

               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  0003ceda  directory_length 3, crc 52954
42c  120001f2  specifier id
430  13000045  version
434  17103800  model

               eui-64 leaf at 438
               -----------------------------------------------------------------
438  0002d248  leaf_length 2, crc 53832
43c  0001f200  company_id 0001f2     |
440  000a41c5  device_id 00000a41c5  | EUI-64 0001f200000a41c5

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
---
 sound/firewire/motu/motu.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Takashi Iwai Aug. 30, 2019, 5:35 a.m. UTC | #1
On Fri, 30 Aug 2019 03:14:56 +0200,
Takashi Sakamoto wrote:
> 
> MOTU 4pre was launched in 2012 by MOTU, Inc. This commit allows userspace
> applications can transmit and receive PCM frames and MIDI messages for
> this model via ALSA PCM interface and RawMidi/Sequencer interfaces.
> 
> The device supports MOTU protocol version 3. Unlike the other devices, the
> device is simply designed. The size of data block is fixed to 10 quadlets
> during available sampling rates (44.1 - 96.0 kHz). Each data block
> includes 1 source packet header, 2 data chunks for messages, 8 data chunks
> for PCM samples and 2 data chunks for padding to quadlet alignment. The
> device has no MIDI, optical, BNC and AES/EBU interfaces.
> 
> Like support for the other MOTU devices, the quality of playback sound
> is not enough good with periodical noise yet.
> 
> $ python2 crpp < ~/git/am-config-rom/motu/motu-4pre.img
>                ROM header and bus information block
>                -----------------------------------------------------------------
> 400  041078cc  bus_info_length 4, crc_length 16, crc 30924
> 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  000a41c5  device_id 00000a41c5  | EUI-64 0001f200000a41c5
> 
>                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  0003ceda  directory_length 3, crc 52954
> 42c  120001f2  specifier id
> 430  13000045  version
> 434  17103800  model
> 
>                eui-64 leaf at 438
>                -----------------------------------------------------------------
> 438  0002d248  leaf_length 2, crc 53832
> 43c  0001f200  company_id 0001f2     |
> 440  000a41c5  device_id 00000a41c5  | EUI-64 0001f200000a41c5
> 
> Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>

Applied, thanks.


Takashi
diff mbox series

Patch

diff --git a/sound/firewire/motu/motu.c b/sound/firewire/motu/motu.c
index 03cda2166ea3..72908b4de77c 100644
--- a/sound/firewire/motu/motu.c
+++ b/sound/firewire/motu/motu.c
@@ -247,6 +247,17 @@  static const struct snd_motu_spec motu_audio_express = {
 	.analog_out_ports = 4,
 };
 
+static const struct snd_motu_spec motu_4pre = {
+	.name = "4pre",
+	.protocol = &snd_motu_protocol_v3,
+	.flags = SND_MOTU_SPEC_SUPPORT_CLOCK_X2 |
+		 SND_MOTU_SPEC_TX_MICINST_CHUNK |
+		 SND_MOTU_SPEC_TX_RETURN_CHUNK |
+		 SND_MOTU_SPEC_RX_SEPARETED_MAIN,
+	.analog_in_ports = 2,
+	.analog_out_ports = 2,
+};
+
 #define SND_MOTU_DEV_ENTRY(model, data)			\
 {							\
 	.match_flags	= IEEE1394_MATCH_VENDOR_ID |	\
@@ -265,6 +276,7 @@  static const struct ieee1394_device_id motu_id_table[] = {
 	SND_MOTU_DEV_ENTRY(0x000015, &motu_828mk3),	/* FireWire only. */
 	SND_MOTU_DEV_ENTRY(0x000035, &motu_828mk3),	/* Hybrid. */
 	SND_MOTU_DEV_ENTRY(0x000033, &motu_audio_express),
+	SND_MOTU_DEV_ENTRY(0x000045, &motu_4pre),
 	{ }
 };
 MODULE_DEVICE_TABLE(ieee1394, motu_id_table);