-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ALSA: bebob: Add support for Terratec PHASE, EWS series and Aureon
This commit allows this driver to support all of models which Terratec produced with DM1000/BeBoB. They are: - PHASE 24 FW - PHASE X24 FW - PHASE 88 Rack FW - EWS MIC2 - EWS MIC4 - Aureon 7.1 Firewire For Phase series, this commit adds a Terratec specific operation. To get source of clock. AV/C Audio Subunit command is used. For EWS series and Aureon, this module uses normal operations. Tested-by: Maximilian Engelhardt <maxi@daemonizer.de> (PHASE 24 FW) Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
- Loading branch information
Takashi Sakamoto
authored and
Takashi Iwai
committed
May 26, 2014
1 parent
1fc9522
commit 326b9ca
Showing
5 changed files
with
87 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
snd-bebob-objs := bebob_command.o bebob_stream.o bebob_proc.o bebob_midi.o \ | ||
bebob_pcm.o bebob_hwdep.o bebob.o | ||
bebob_pcm.o bebob_hwdep.o bebob_terratec.o bebob.o | ||
obj-m += snd-bebob.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/* | ||
* bebob_terratec.c - a part of driver for BeBoB based devices | ||
* | ||
* Copyright (c) 2013-2014 Takashi Sakamoto | ||
* | ||
* Licensed under the terms of the GNU General Public License, version 2. | ||
*/ | ||
|
||
#include "./bebob.h" | ||
|
||
static char *const phase88_rack_clk_src_labels[] = { | ||
SND_BEBOB_CLOCK_INTERNAL, "Digital In", "Word Clock" | ||
}; | ||
static int | ||
phase88_rack_clk_src_get(struct snd_bebob *bebob, unsigned int *id) | ||
{ | ||
unsigned int enable_ext, enable_word; | ||
int err; | ||
|
||
err = avc_audio_get_selector(bebob->unit, 0, 0, &enable_ext); | ||
if (err < 0) | ||
goto end; | ||
err = avc_audio_get_selector(bebob->unit, 0, 0, &enable_word); | ||
if (err < 0) | ||
goto end; | ||
|
||
*id = (enable_ext & 0x01) | ((enable_word & 0x01) << 1); | ||
end: | ||
return err; | ||
} | ||
|
||
static char *const phase24_series_clk_src_labels[] = { | ||
SND_BEBOB_CLOCK_INTERNAL, "Digital In" | ||
}; | ||
static int | ||
phase24_series_clk_src_get(struct snd_bebob *bebob, unsigned int *id) | ||
{ | ||
return avc_audio_get_selector(bebob->unit, 0, 4, id); | ||
} | ||
|
||
struct snd_bebob_rate_spec phase_series_rate_spec = { | ||
.get = &snd_bebob_stream_get_rate, | ||
.set = &snd_bebob_stream_set_rate, | ||
}; | ||
|
||
/* PHASE 88 Rack FW */ | ||
struct snd_bebob_clock_spec phase88_rack_clk = { | ||
.num = ARRAY_SIZE(phase88_rack_clk_src_labels), | ||
.labels = phase88_rack_clk_src_labels, | ||
.get = &phase88_rack_clk_src_get, | ||
}; | ||
struct snd_bebob_spec phase88_rack_spec = { | ||
.clock = &phase88_rack_clk, | ||
.rate = &phase_series_rate_spec, | ||
.meter = NULL | ||
}; | ||
|
||
/* 'PHASE 24 FW' and 'PHASE X24 FW' */ | ||
struct snd_bebob_clock_spec phase24_series_clk = { | ||
.num = ARRAY_SIZE(phase24_series_clk_src_labels), | ||
.labels = phase24_series_clk_src_labels, | ||
.get = &phase24_series_clk_src_get, | ||
}; | ||
struct snd_bebob_spec phase24_series_spec = { | ||
.clock = &phase24_series_clk, | ||
.rate = &phase_series_rate_spec, | ||
.meter = NULL | ||
}; |