All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
To: tiwai@suse.de
Cc: alsa-devel@alsa-project.org, m.armsby@gmx.de
Subject: Re: [PATCH] ALSA: firewire-motu: add support for MOTU 896 mk3 FireWire and Hybrid
Date: Mon, 29 Jan 2024 11:19:50 +0900	[thread overview]
Message-ID: <20240129021950.GA253990@workstation.local> (raw)
In-Reply-To: <20240128122523.247084-1-o-takashi@sakamocchi.jp>

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@sakamocchi.jp>
> ---
>  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

      reply	other threads:[~2024-01-29  2:20 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-28 12:25 [PATCH] ALSA: firewire-motu: add support for MOTU 896 mk3 FireWire and Hybrid Takashi Sakamoto
2024-01-29  2:19 ` Takashi Sakamoto [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240129021950.GA253990@workstation.local \
    --to=o-takashi@sakamocchi.jp \
    --cc=alsa-devel@alsa-project.org \
    --cc=m.armsby@gmx.de \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.