aboutsummaryrefslogtreecommitdiffstats
path: root/include/sound/control.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/sound/control.h')
-rw-r--r--include/sound/control.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/sound/control.h b/include/sound/control.h
index 4cf8f7aaa13f..ef96f07aa03b 100644
--- a/include/sound/control.h
+++ b/include/sound/control.h
@@ -176,12 +176,44 @@ int _snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave,
176/* optional flags for slave */ 176/* optional flags for slave */
177#define SND_CTL_SLAVE_NEED_UPDATE (1 << 0) 177#define SND_CTL_SLAVE_NEED_UPDATE (1 << 0)
178 178
179/**
180 * snd_ctl_add_slave - Add a virtual slave control
181 * @master: vmaster element
182 * @slave: slave element to add
183 *
184 * Add a virtual slave control to the given master element created via
185 * snd_ctl_create_virtual_master() beforehand.
186 * Returns zero if successful or a negative error code.
187 *
188 * All slaves must be the same type (returning the same information
189 * via info callback). The fucntion doesn't check it, so it's your
190 * responsibility.
191 *
192 * Also, some additional limitations:
193 * at most two channels,
194 * logarithmic volume control (dB level) thus no linear volume,
195 * master can only attenuate the volume without gain
196 */
179static inline int 197static inline int
180snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave) 198snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave)
181{ 199{
182 return _snd_ctl_add_slave(master, slave, 0); 200 return _snd_ctl_add_slave(master, slave, 0);
183} 201}
184 202
203/**
204 * snd_ctl_add_slave_uncached - Add a virtual slave control
205 * @master: vmaster element
206 * @slave: slave element to add
207 *
208 * Add a virtual slave control to the given master.
209 * Unlike snd_ctl_add_slave(), the element added via this function
210 * is supposed to have volatile values, and get callback is called
211 * at each time quried from the master.
212 *
213 * When the control peeks the hardware values directly and the value
214 * can be changed by other means than the put callback of the element,
215 * this function should be used to keep the value always up-to-date.
216 */
185static inline int 217static inline int
186snd_ctl_add_slave_uncached(struct snd_kcontrol *master, 218snd_ctl_add_slave_uncached(struct snd_kcontrol *master,
187 struct snd_kcontrol *slave) 219 struct snd_kcontrol *slave)