All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
To: clemens@ladisch.de, tiwai@suse.de, perex@perex.cz
Cc: alsa-devel@alsa-project.org,
	linux1394-devel@lists.sourceforge.net, ffado-devel@lists.sf.net
Subject: [PATCH 38/44] bebob: Add support for Yamaha GO series
Date: Fri, 21 Mar 2014 20:10:23 +0900	[thread overview]
Message-ID: <1395400229-22957-39-git-send-email-o-takashi@sakamocchi.jp> (raw)
In-Reply-To: <1395400229-22957-1-git-send-email-o-takashi@sakamocchi.jp>

This commit allows this driver to support all of models which Yamaha produced
with DM1000/BeBoB. They are:
 - GO44
 - GO46

This commit adds Yamaha specific operations. To get source of clock, AV/C Audio
Subunit command is used.

I note that their appearances are similar to some models of TerraTec; 'Go44' is
similar to 'PHASE 24 FW' and 'GO46' is similar to 'PHASE X24 FW'. But their
combination of Audio/Music subunit are a bit different.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
---
 sound/firewire/Kconfig              |  1 +
 sound/firewire/bebob/Makefile       |  3 ++-
 sound/firewire/bebob/bebob.c        |  5 ++++
 sound/firewire/bebob/bebob.h        |  1 +
 sound/firewire/bebob/bebob_yamaha.c | 54 +++++++++++++++++++++++++++++++++++++
 5 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 sound/firewire/bebob/bebob_yamaha.c

diff --git a/sound/firewire/Kconfig b/sound/firewire/Kconfig
index 0a7918a..e7605ff 100644
--- a/sound/firewire/Kconfig
+++ b/sound/firewire/Kconfig
@@ -111,6 +111,7 @@ config SND_BEBOB
 	  * TerraTec PHASE 24 FW/PHASE X24 FW/PHASE 88 Rack FW
 	  * Terratec EWS MIC2/EWS MIC4
 	  * Terratec Aureon 7.1 Firewire
+	  * Yamaha GO44/GO46
 
           To compile this driver as a module, choose M here: the module
           will be called snd-bebob.
diff --git a/sound/firewire/bebob/Makefile b/sound/firewire/bebob/Makefile
index cb38dd1..c35eee1 100644
--- a/sound/firewire/bebob/Makefile
+++ b/sound/firewire/bebob/Makefile
@@ -1,3 +1,4 @@
 snd-bebob-objs := bebob_command.o bebob_stream.o bebob_proc.o bebob_midi.o \
-		  bebob_pcm.o bebob_hwdep.o bebob_terratec.o bebob.o
+		  bebob_pcm.o bebob_hwdep.o bebob_terratec.o bebob_yamaha.o \
+		  bebob.o
 obj-m += snd-bebob.o
diff --git a/sound/firewire/bebob/bebob.c b/sound/firewire/bebob/bebob.c
index 6c14ada..91a7456 100644
--- a/sound/firewire/bebob/bebob.c
+++ b/sound/firewire/bebob/bebob.c
@@ -53,6 +53,7 @@ static DECLARE_BITMAP(devices_used, SNDRV_CARDS);
 #define VEN_ICON	0x00001a9e
 #define VEN_PRISMSOUND	0x00001198
 #define VEN_TERRATEC	0x00000aac
+#define VEN_YAMAHA	0x0000a0de
 
 static int
 name_device(struct snd_bebob *bebob, unsigned int vendor_id)
@@ -300,6 +301,10 @@ static const struct ieee1394_device_id bebob_id_table[] = {
 	SND_BEBOB_DEV_ENTRY(VEN_TERRATEC, 0x00000005, &spec_normal),
 	/* Terratec Electronic GmbH, Aureon 7.1 Firewire */
 	SND_BEBOB_DEV_ENTRY(VEN_TERRATEC, 0x00000002, &spec_normal),
+	/* Yamaha, GO44 */
+	SND_BEBOB_DEV_ENTRY(VEN_YAMAHA, 0x0010000b, &yamaha_go_spec),
+	/* YAMAHA, GO46 */
+	SND_BEBOB_DEV_ENTRY(VEN_YAMAHA, 0x0010000c, &yamaha_go_spec),
 	/* IDs are unknown but able to be supported */
 	/*  Apogee, Mini-ME Firewire */
 	/*  Apogee, Mini-DAC Firewire */
diff --git a/sound/firewire/bebob/bebob.h b/sound/firewire/bebob/bebob.h
index 7869197..c3ca086 100644
--- a/sound/firewire/bebob/bebob.h
+++ b/sound/firewire/bebob/bebob.h
@@ -227,6 +227,7 @@ int snd_bebob_create_hwdep_device(struct snd_bebob *bebob);
 /* model specific operations */
 extern struct snd_bebob_spec phase88_rack_spec;
 extern struct snd_bebob_spec phase24_series_spec;
+extern struct snd_bebob_spec yamaha_go_spec;
 
 #define SND_BEBOB_DEV_ENTRY(vendor, model, data) \
 { \
diff --git a/sound/firewire/bebob/bebob_yamaha.c b/sound/firewire/bebob/bebob_yamaha.c
new file mode 100644
index 0000000..b020798
--- /dev/null
+++ b/sound/firewire/bebob/bebob_yamaha.c
@@ -0,0 +1,54 @@
+/*
+ * bebob_yamaha.c - a part of driver for BeBoB based devices
+ *
+ * Copyright (c) 2013 Takashi Sakamoto
+ *
+ * Licensed under the terms of the GNU General Public License, version 2.
+ */
+
+#include "./bebob.h"
+
+/*
+ * NOTE:
+ * Yamaha GO44 is not designed to be used as stand-alone mixer. So any streams
+ * must be accompanied. If changing the state, a LED on the device starts to
+ * blink and its sync status is false. In this state, the device sounds nothing
+ * even if streaming. To start streaming at the current sampling rate is only
+ * way to revocer this state. GO46 is better for stand-alone mixer.
+ *
+ * Both of them have a capability to change its sampling rate up to 192.0kHz.
+ * At 192.0kHz, the device reports 4 PCM-in, 1 MIDI-in, 6 PCM-out, 1 MIDI-out.
+ * But Yamaha's driver reduce 2 PCM-in, 1 MIDI-in, 2 PCM-out, 1 MIDI-out to use
+ * 'Extended Stream Format Information Command - Single Request' in 'Additional
+ * AVC commands' defined by BridgeCo.
+ * This ALSA driver don't do this because a bit tiresome. Then isochronous
+ * streaming with many asynchronous transactions brings sounds with noises.
+ * Unfortunately current 'ffado-mixer' generated many asynchronous transaction
+ * to observe device's state, mainly check cmp connection and signal format. I
+ * reccomend users to close ffado-mixer at 192.0kHz if mixer is needless.
+ */
+
+static char *clk_src_labels[] = {SND_BEBOB_CLOCK_INTERNAL, "SPDIF"};
+static int
+clk_src_get(struct snd_bebob *bebob, unsigned int *id)
+{
+	int err = avc_audio_get_selector(bebob->unit, 0, 4, id);
+	if (err < 0)
+		dev_err(&bebob->unit->device,
+			"failed to get clock source: %d\n", err);
+	return err;
+}
+static struct snd_bebob_clock_spec clock_spec = {
+	.num	= ARRAY_SIZE(clk_src_labels),
+	.labels	= clk_src_labels,
+	.get	= &clk_src_get,
+};
+static struct snd_bebob_rate_spec rate_spec = {
+	.get	= &snd_bebob_stream_get_rate,
+	.set	= &snd_bebob_stream_set_rate,
+};
+struct snd_bebob_spec yamaha_go_spec = {
+	.clock	= &clock_spec,
+	.rate	= &rate_spec,
+	.meter	= NULL
+};
-- 
1.8.3.2


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech

  parent reply	other threads:[~2014-03-21 11:10 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-21 11:09 [PATCH 00/44 v3] Enhancement of support for Firewire devices Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 01/44] firewire-lib: Add macros instead of fixed value for AMDTP Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 02/44] firewire-lib: Add 'direction' member to 'amdtp_stream' structure Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 03/44] firewire-lib: Split some codes into functions to reuse for both streams Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 04/44] firewire-lib: Add support for AMDTP in-stream and PCM capture Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 05/44] firewire-lib: Add support for MIDI capture/playback Takashi Sakamoto
2014-04-02 19:29   ` Clemens Ladisch
2014-04-02 19:42     ` [FFADO-devel] " Adrian Knoth
2014-04-02 19:58       ` Clemens Ladisch
2014-04-02 20:37         ` [FFADO-devel] [alsa-devel] " Jano Svitok
2014-04-03  8:33     ` Takashi Sakamoto
2014-04-03  8:54       ` Clemens Ladisch
2014-04-03 10:08         ` Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 06/44] firewire-lib: Give syt value as parameter to handle_out_packet() Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 07/44] firewire-lib: Add support for duplex streams synchronization in blocking mode Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 08/44] firewire-lib: Add support for channel mapping Takashi Sakamoto
2014-04-02 20:18   ` Clemens Ladisch
2014-04-03  8:37     ` Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 09/44] firewire-lib: Restrict calling flush_context_completion() when context exists Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 10/44] firewire-lib: Rename macros, variables and functions for CMP Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 11/44] firewire-lib: Add 'direction' member to 'cmp_connection' structure Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 12/44] firewire-lib: Add handling output connection by CMP Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 13/44] firewire-lib: Add a new function to check others' connection Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 14/44] firewire-lib: Add support for deferred transaction Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 15/44] firewire-lib: Add some AV/C general commands Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 16/44] fireworks: Add skelton for Fireworks based devices Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 17/44] fireworks: Add transaction and some commands Takashi Sakamoto
2014-04-03 20:15   ` Clemens Ladisch
2014-04-04  4:08     ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 18/44] fireworks: Add connection and stream management Takashi Sakamoto
2014-04-03 20:56   ` Clemens Ladisch
2014-04-04 14:22     ` Takashi Sakamoto
2014-04-04 15:05       ` [alsa-devel] " Clemens Ladisch
2014-04-06 13:20         ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 19/44] fireworks/firewire-lib: Add a quirk for empty packet with TAG0 Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 20/44] fireworks/firewire-lib: Add a quirk for the meaning of dbc Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 21/44] fireworks/firewire-lib: Add a quirk for wrong dbs in tx packets Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 22/44] fireworks/firewire-libs: Add a quirk for fixed interval of reported dbc Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 23/44] fireworks: Add proc interface for debugging purpose Takashi Sakamoto
2014-04-03 21:16   ` [alsa-devel] " Clemens Ladisch
2014-04-04 11:16     ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 24/44] fireworks: Add MIDI interface Takashi Sakamoto
2014-04-03 21:20   ` [alsa-devel] " Clemens Ladisch
2014-04-06 12:03     ` Takashi Sakamoto
2014-04-06 14:52       ` Clemens Ladisch
2014-04-07 12:59         ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 25/44] fireworks/firewire-lib: Add a quirk for data blocks for MIDI in out-stream Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 26/44] fireworks: Add PCM interface Takashi Sakamoto
2014-04-04  8:48   ` Clemens Ladisch
2014-04-06 12:44     ` Takashi Sakamoto
2014-04-06 14:52       ` [alsa-devel] " Clemens Ladisch
2014-04-07  7:20         ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 27/44] fireworks: Add hwdep interface Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 28/44] fireworks: Add command/response functionality into " Takashi Sakamoto
2014-04-04  9:31   ` Clemens Ladisch
2014-04-04 11:11     ` Takashi Sakamoto
2014-04-04 12:15       ` [alsa-devel] " Clemens Ladisch
2014-04-08  2:45         ` Takashi Sakamoto
2014-04-04 15:13   ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 29/44] bebob: Add skelton for BeBoB based devices Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 30/44] bebob: Add commands and connections/streams management Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 31/44] bebob/firewire-lib: Add a quirk for discontinuity at bus reset Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 32/44] bebob: Add proc interface for debugging purpose Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 33/44] bebob: Add MIDI interface Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 34/44] bebob: Add PCM interface Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 35/44] bebob: Add hwdep interface Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 36/44] bebob: Prepare for device specific operations Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 37/44] bebob: Add support for Terratec PHASE, EWS series and Aureon Takashi Sakamoto
2014-03-21 11:10 ` Takashi Sakamoto [this message]
2014-03-21 11:10 ` [PATCH 39/44] bebob: Add support for Focusrite Saffire/SaffirePro series Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 40/44] bebob: Add support for M-Audio usual Firewire series Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 41/44] bebob: Add support for M-Audio special " Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 42/44] bebob/firewire-lib: Add a quirk of wrong dbc in empty packet " Takashi Sakamoto
2014-03-23  2:16   ` Takashi Sakamoto
2014-03-24  1:41     ` [FFADO-devel] " Euan de Kock
2014-03-24  2:52       ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 43/44] bebob: Send a cue to load firmware for M-Audio " Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 44/44] firewire/bebob: Add a workaround for M-Audio special " Takashi Sakamoto
2014-04-02 11:15 ` [PATCH 00/44 v3] Enhancement of support for Firewire devices Takashi Sakamoto
2014-04-03 19:17 ` David Henningsson
2014-04-04  7:04   ` Takashi Iwai

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=1395400229-22957-39-git-send-email-o-takashi@sakamocchi.jp \
    --to=o-takashi@sakamocchi.jp \
    --cc=alsa-devel@alsa-project.org \
    --cc=clemens@ladisch.de \
    --cc=ffado-devel@lists.sf.net \
    --cc=linux1394-devel@lists.sourceforge.net \
    --cc=perex@perex.cz \
    --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.