• Home
  • Raw
  • Download

Lines Matching full:master

2  * Virtual master and slave controls
28 * link master - this contains a list of slave controls that are
32 * The master control is so far only mono volume/switch for simplicity.
38 int val; /* the master value */
48 * master control. A slave may have either one or two channels.
53 struct link_master *master; member
118 /* initialize master volume */
119 static int master_init(struct link_master *master) in master_init() argument
123 if (master->info.count) in master_init()
126 list_for_each_entry(slave, &master->slaves, list) { in master_init()
130 master->info = slave->info; in master_init()
131 master->info.count = 1; /* always mono */ in master_init()
133 master->val = master->info.max_val; in master_init()
134 if (master->hook) in master_init()
135 master->hook(master->hook_private_data, master->val); in master_init()
159 err = master_init(slave->master); in slave_put_val()
167 !!slave->master->val; in slave_put_val()
171 /* max master volume is supposed to be 0 dB */ in slave_put_val()
173 vol += slave->master->val - slave->master->info.max_val; in slave_put_val()
239 if (slave->master) in slave_free()
245 * Add a slave control to the group with the given master control
254 * - master can only attenuate the volume, no gain
256 int _snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave, in _snd_ctl_add_slave() argument
259 struct link_master *master_link = snd_kcontrol_chip(master); in _snd_ctl_add_slave()
269 srec->master = master_link; in _snd_ctl_add_slave()
287 * ctl callbacks for master controls
292 struct link_master *master = snd_kcontrol_chip(kcontrol); in master_info() local
295 ret = master_init(master); in master_info()
298 uinfo->type = master->info.type; in master_info()
299 uinfo->count = master->info.count; in master_info()
300 uinfo->value.integer.min = master->info.min_val; in master_info()
301 uinfo->value.integer.max = master->info.max_val; in master_info()
308 struct link_master *master = snd_kcontrol_chip(kcontrol); in master_get() local
309 int err = master_init(master); in master_get()
312 ucontrol->value.integer.value[0] = master->val; in master_get()
316 static int sync_slaves(struct link_master *master, int old_val, int new_val) in sync_slaves() argument
324 list_for_each_entry(slave, &master->slaves, list) { in sync_slaves()
325 master->val = old_val; in sync_slaves()
328 master->val = new_val; in sync_slaves()
338 struct link_master *master = snd_kcontrol_chip(kcontrol); in master_put() local
342 err = master_init(master); in master_put()
346 old_val = master->val; in master_put()
351 err = sync_slaves(master, old_val, new_val); in master_put()
354 if (master->hook && !first_init) in master_put()
355 master->hook(master->hook_private_data, master->val); in master_put()
361 struct link_master *master = snd_kcontrol_chip(kcontrol); in master_free() local
365 list_for_each_entry_safe(slave, n, &master->slaves, list) { in master_free()
374 kfree(master); in master_free()
379 * snd_ctl_make_virtual_master - Create a virtual master control
383 * Creates a virtual master control with the given name string.
389 * for dB scale of the master control. It should be a single element
398 struct link_master *master; in snd_ctl_make_virtual_master() local
407 master = kzalloc(sizeof(*master), GFP_KERNEL); in snd_ctl_make_virtual_master()
408 if (!master) in snd_ctl_make_virtual_master()
410 INIT_LIST_HEAD(&master->slaves); in snd_ctl_make_virtual_master()
412 kctl = snd_ctl_new1(&knew, master); in snd_ctl_make_virtual_master()
414 kfree(master); in snd_ctl_make_virtual_master()
430 memcpy(master->tlv, tlv, sizeof(master->tlv)); in snd_ctl_make_virtual_master()
431 kctl->tlv.p = master->tlv; in snd_ctl_make_virtual_master()
454 struct link_master *master = snd_kcontrol_chip(kcontrol); in snd_ctl_add_vmaster_hook() local
455 master->hook = hook; in snd_ctl_add_vmaster_hook()
456 master->hook_private_data = private_data; in snd_ctl_add_vmaster_hook()
472 struct link_master *master; in snd_ctl_sync_vmaster() local
477 master = snd_kcontrol_chip(kcontrol); in snd_ctl_sync_vmaster()
479 int err = master_init(master); in snd_ctl_sync_vmaster()
483 err = sync_slaves(master, master->val, master->val); in snd_ctl_sync_vmaster()
488 if (master->hook && !first_init) in snd_ctl_sync_vmaster()
489 master->hook(master->hook_private_data, master->val); in snd_ctl_sync_vmaster()
508 struct link_master *master; in snd_ctl_apply_vmaster_slaves() local
512 master = snd_kcontrol_chip(kctl); in snd_ctl_apply_vmaster_slaves()
513 err = master_init(master); in snd_ctl_apply_vmaster_slaves()
516 list_for_each_entry(slave, &master->slaves, list) { in snd_ctl_apply_vmaster_slaves()