Lines Matching defs:master

3  * Virtual master and follower controls
24 * link master - this contains a list of follower controls that are
28 * The master control is so far only mono volume/switch for simplicity.
34 int val; /* the master value */
44 * master control. A follower may have either one or two channels.
49 struct link_master *master;
114 /* initialize master volume */
115 static int master_init(struct link_master *master)
119 if (master->info.count)
122 list_for_each_entry(follower, &master->followers, list) {
126 master->info = follower->info;
127 master->info.count = 1; /* always mono */
129 master->val = master->info.max_val;
130 if (master->hook)
131 master->hook(master->hook_private_data, master->val);
155 err = master_init(follower->master);
163 !!follower->master->val;
167 /* max master volume is supposed to be 0 dB */
169 vol += follower->master->val - follower->master->info.max_val;
235 if (follower->master)
241 * Add a follower control to the group with the given master control
250 * - master can only attenuate the volume, no gain
252 int _snd_ctl_add_follower(struct snd_kcontrol *master,
256 struct link_master *master_link = snd_kcontrol_chip(master);
266 srec->master = master_link;
284 * ctl callbacks for master controls
289 struct link_master *master = snd_kcontrol_chip(kcontrol);
292 ret = master_init(master);
295 uinfo->type = master->info.type;
296 uinfo->count = master->info.count;
297 uinfo->value.integer.min = master->info.min_val;
298 uinfo->value.integer.max = master->info.max_val;
305 struct link_master *master = snd_kcontrol_chip(kcontrol);
306 int err = master_init(master);
309 ucontrol->value.integer.value[0] = master->val;
313 static int sync_followers(struct link_master *master, int old_val, int new_val)
321 list_for_each_entry(follower, &master->followers, list) {
322 master->val = old_val;
325 master->val = new_val;
335 struct link_master *master = snd_kcontrol_chip(kcontrol);
339 err = master_init(master);
343 old_val = master->val;
348 err = sync_followers(master, old_val, new_val);
351 if (master->hook && !first_init)
352 master->hook(master->hook_private_data, master->val);
358 struct link_master *master = snd_kcontrol_chip(kcontrol);
362 list_for_each_entry_safe(follower, n, &master->followers, list) {
371 kfree(master);
376 * snd_ctl_make_virtual_master - Create a virtual master control
380 * Creates a virtual master control with the given name string.
386 * for dB scale of the master control. It should be a single element
395 struct link_master *master;
404 master = kzalloc(sizeof(*master), GFP_KERNEL);
405 if (!master)
407 INIT_LIST_HEAD(&master->followers);
409 kctl = snd_ctl_new1(&knew, master);
411 kfree(master);
427 memcpy(master->tlv, tlv, sizeof(master->tlv));
428 kctl->tlv.p = master->tlv;
451 struct link_master *master = snd_kcontrol_chip(kcontrol);
452 master->hook = hook;
453 master->hook_private_data = private_data;
469 struct link_master *master;
474 master = snd_kcontrol_chip(kcontrol);
476 int err = master_init(master);
480 err = sync_followers(master, master->val, master->val);
485 if (master->hook && !first_init)
486 master->hook(master->hook_private_data, master->val);
505 struct link_master *master;
509 master = snd_kcontrol_chip(kctl);
510 err = master_init(master);
513 list_for_each_entry(follower, &master->followers, list) {