]>
Commit | Line | Data |
---|---|---|
326b9cac TS |
1 | /* |
2 | * bebob_terratec.c - a part of driver for BeBoB based devices | |
3 | * | |
4 | * Copyright (c) 2013-2014 Takashi Sakamoto | |
5 | * | |
6 | * Licensed under the terms of the GNU General Public License, version 2. | |
7 | */ | |
8 | ||
9 | #include "./bebob.h" | |
10 | ||
11 | static char *const phase88_rack_clk_src_labels[] = { | |
12 | SND_BEBOB_CLOCK_INTERNAL, "Digital In", "Word Clock" | |
13 | }; | |
14 | static int | |
15 | phase88_rack_clk_src_get(struct snd_bebob *bebob, unsigned int *id) | |
16 | { | |
17 | unsigned int enable_ext, enable_word; | |
18 | int err; | |
19 | ||
3f403286 | 20 | err = avc_audio_get_selector(bebob->unit, 0, 9, &enable_ext); |
326b9cac TS |
21 | if (err < 0) |
22 | goto end; | |
3f403286 | 23 | err = avc_audio_get_selector(bebob->unit, 0, 8, &enable_word); |
326b9cac TS |
24 | if (err < 0) |
25 | goto end; | |
26 | ||
7ce5c926 TS |
27 | if (enable_ext == 0) |
28 | *id = 0; | |
29 | else if (enable_word == 0) | |
30 | *id = 1; | |
31 | else | |
32 | *id = 2; | |
326b9cac TS |
33 | end: |
34 | return err; | |
35 | } | |
36 | ||
37 | static char *const phase24_series_clk_src_labels[] = { | |
38 | SND_BEBOB_CLOCK_INTERNAL, "Digital In" | |
39 | }; | |
40 | static int | |
41 | phase24_series_clk_src_get(struct snd_bebob *bebob, unsigned int *id) | |
42 | { | |
43 | return avc_audio_get_selector(bebob->unit, 0, 4, id); | |
44 | } | |
45 | ||
9fb01cdb | 46 | static struct snd_bebob_rate_spec phase_series_rate_spec = { |
326b9cac TS |
47 | .get = &snd_bebob_stream_get_rate, |
48 | .set = &snd_bebob_stream_set_rate, | |
49 | }; | |
50 | ||
51 | /* PHASE 88 Rack FW */ | |
9fb01cdb | 52 | static struct snd_bebob_clock_spec phase88_rack_clk = { |
326b9cac TS |
53 | .num = ARRAY_SIZE(phase88_rack_clk_src_labels), |
54 | .labels = phase88_rack_clk_src_labels, | |
55 | .get = &phase88_rack_clk_src_get, | |
56 | }; | |
57 | struct snd_bebob_spec phase88_rack_spec = { | |
58 | .clock = &phase88_rack_clk, | |
59 | .rate = &phase_series_rate_spec, | |
60 | .meter = NULL | |
61 | }; | |
62 | ||
63 | /* 'PHASE 24 FW' and 'PHASE X24 FW' */ | |
9fb01cdb | 64 | static struct snd_bebob_clock_spec phase24_series_clk = { |
326b9cac TS |
65 | .num = ARRAY_SIZE(phase24_series_clk_src_labels), |
66 | .labels = phase24_series_clk_src_labels, | |
67 | .get = &phase24_series_clk_src_get, | |
68 | }; | |
69 | struct snd_bebob_spec phase24_series_spec = { | |
70 | .clock = &phase24_series_clk, | |
71 | .rate = &phase_series_rate_spec, | |
72 | .meter = NULL | |
73 | }; |