aboutsummaryrefslogtreecommitdiffstats
path: root/sound/firewire/amdtp.c
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2014-04-25 09:44:59 -0400
committerTakashi Iwai <tiwai@suse.de>2014-05-26 08:23:13 -0400
commit1017abed18ae7087e7f3e256c48421d09d83176e (patch)
treeb98d0848986364dd5bede66b9553da96a60fcfa1 /sound/firewire/amdtp.c
parent00a7bb81c20f3e81711e28e0f6c08cee8fd18514 (diff)
ALSA: firewire-lib: Add some AV/C general commands
This commit adds three commands, which may be used by some firewire device drivers. These commands are defined in 'AV/C Digital Interface Command Set General Specification Version 4.2 (2004006, 1394TA)'. 1. PLUG INFO command (clause 10.1) 2. INPUT PLUG SIGNAL FORMAT command (clause 10.10) 3. OUTPUT PLUG SIGNAL FORMAT command (clause 10.11) By the command 1, the drivers can get the number of plugs for AV/C unit or subunit. By the command 2 and 3, the drivers can get/set sampling frequency. The 'firewire-speakers' already uses INPUT PLUG SIGNAL FORMAT command to set sampling rate. So this commit also affects the driver. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/firewire/amdtp.c')
-rw-r--r--sound/firewire/amdtp.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c
index 7c814ace9e58..5b8846123474 100644
--- a/sound/firewire/amdtp.c
+++ b/sound/firewire/amdtp.c
@@ -105,6 +105,17 @@ const unsigned int amdtp_syt_intervals[CIP_SFC_COUNT] = {
105}; 105};
106EXPORT_SYMBOL(amdtp_syt_intervals); 106EXPORT_SYMBOL(amdtp_syt_intervals);
107 107
108const unsigned int amdtp_rate_table[] = {
109 [CIP_SFC_32000] = 32000,
110 [CIP_SFC_44100] = 44100,
111 [CIP_SFC_48000] = 48000,
112 [CIP_SFC_88200] = 88200,
113 [CIP_SFC_96000] = 96000,
114 [CIP_SFC_176400] = 176400,
115 [CIP_SFC_192000] = 192000,
116};
117EXPORT_SYMBOL(amdtp_rate_table);
118
108/** 119/**
109 * amdtp_stream_add_pcm_hw_constraints - add hw constraints for PCM substream 120 * amdtp_stream_add_pcm_hw_constraints - add hw constraints for PCM substream
110 * @s: the AMDTP stream, which must be initialized. 121 * @s: the AMDTP stream, which must be initialized.
@@ -176,15 +187,6 @@ void amdtp_stream_set_parameters(struct amdtp_stream *s,
176 unsigned int pcm_channels, 187 unsigned int pcm_channels,
177 unsigned int midi_ports) 188 unsigned int midi_ports)
178{ 189{
179 static const unsigned int rates[] = {
180 [CIP_SFC_32000] = 32000,
181 [CIP_SFC_44100] = 44100,
182 [CIP_SFC_48000] = 48000,
183 [CIP_SFC_88200] = 88200,
184 [CIP_SFC_96000] = 96000,
185 [CIP_SFC_176400] = 176400,
186 [CIP_SFC_192000] = 192000,
187 };
188 unsigned int i, sfc, midi_channels; 190 unsigned int i, sfc, midi_channels;
189 191
190 midi_channels = DIV_ROUND_UP(midi_ports, 8); 192 midi_channels = DIV_ROUND_UP(midi_ports, 8);
@@ -194,8 +196,8 @@ void amdtp_stream_set_parameters(struct amdtp_stream *s,
194 WARN_ON(midi_channels > AMDTP_MAX_CHANNELS_FOR_MIDI)) 196 WARN_ON(midi_channels > AMDTP_MAX_CHANNELS_FOR_MIDI))
195 return; 197 return;
196 198
197 for (sfc = 0; sfc < CIP_SFC_COUNT; ++sfc) 199 for (sfc = 0; sfc < sizeof(amdtp_rate_table); ++sfc)
198 if (rates[sfc] == rate) 200 if (amdtp_rate_table[sfc] == rate)
199 goto sfc_found; 201 goto sfc_found;
200 WARN_ON(1); 202 WARN_ON(1);
201 return; 203 return;