Lines Matching refs:kctl
207 static int snd_ctl_new(struct snd_kcontrol **kctl, unsigned int count, in snd_ctl_new() argument
219 *kctl = kzalloc(size, GFP_KERNEL); in snd_ctl_new()
220 if (!*kctl) in snd_ctl_new()
224 (*kctl)->vd[idx].access = access; in snd_ctl_new()
225 (*kctl)->vd[idx].owner = file; in snd_ctl_new()
227 (*kctl)->count = count; in snd_ctl_new()
246 struct snd_kcontrol *kctl; in snd_ctl_new1() local
268 err = snd_ctl_new(&kctl, count, access, NULL); in snd_ctl_new1()
273 kctl->id.iface = ncontrol->iface; in snd_ctl_new1()
274 kctl->id.device = ncontrol->device; in snd_ctl_new1()
275 kctl->id.subdevice = ncontrol->subdevice; in snd_ctl_new1()
277 strlcpy(kctl->id.name, ncontrol->name, sizeof(kctl->id.name)); in snd_ctl_new1()
278 if (strcmp(ncontrol->name, kctl->id.name) != 0) in snd_ctl_new1()
280 ncontrol->name, kctl->id.name); in snd_ctl_new1()
282 kctl->id.index = ncontrol->index; in snd_ctl_new1()
284 kctl->info = ncontrol->info; in snd_ctl_new1()
285 kctl->get = ncontrol->get; in snd_ctl_new1()
286 kctl->put = ncontrol->put; in snd_ctl_new1()
287 kctl->tlv.p = ncontrol->tlv.p; in snd_ctl_new1()
289 kctl->private_value = ncontrol->private_value; in snd_ctl_new1()
290 kctl->private_data = private_data; in snd_ctl_new1()
292 return kctl; in snd_ctl_new1()
317 struct snd_kcontrol *kctl; in snd_ctl_remove_numid_conflict() local
323 list_for_each_entry(kctl, &card->controls, list) { in snd_ctl_remove_numid_conflict()
324 if (kctl->id.numid < card->last_numid + 1 + count && in snd_ctl_remove_numid_conflict()
325 kctl->id.numid + kctl->count > card->last_numid + 1) { in snd_ctl_remove_numid_conflict()
326 card->last_numid = kctl->id.numid + kctl->count - 1; in snd_ctl_remove_numid_conflict()
517 struct snd_kcontrol *kctl; in snd_ctl_remove_id() local
521 kctl = snd_ctl_find_id(card, id); in snd_ctl_remove_id()
522 if (kctl == NULL) { in snd_ctl_remove_id()
526 ret = snd_ctl_remove(card, kctl); in snd_ctl_remove_id()
546 struct snd_kcontrol *kctl; in snd_ctl_remove_user_ctl() local
550 kctl = snd_ctl_find_id(card, id); in snd_ctl_remove_user_ctl()
551 if (kctl == NULL) { in snd_ctl_remove_user_ctl()
555 if (!(kctl->vd[0].access & SNDRV_CTL_ELEM_ACCESS_USER)) { in snd_ctl_remove_user_ctl()
559 for (idx = 0; idx < kctl->count; idx++) in snd_ctl_remove_user_ctl()
560 if (kctl->vd[idx].owner != NULL && kctl->vd[idx].owner != file) { in snd_ctl_remove_user_ctl()
564 ret = snd_ctl_remove(card, kctl); in snd_ctl_remove_user_ctl()
588 struct snd_kcontrol *kctl; in snd_ctl_activate_id() local
594 kctl = snd_ctl_find_id(card, id); in snd_ctl_activate_id()
595 if (kctl == NULL) { in snd_ctl_activate_id()
599 index_offset = snd_ctl_get_ioff(kctl, id); in snd_ctl_activate_id()
600 vd = &kctl->vd[index_offset]; in snd_ctl_activate_id()
611 snd_ctl_build_ioff(id, kctl, index_offset); in snd_ctl_activate_id()
635 struct snd_kcontrol *kctl; in snd_ctl_rename_id() local
638 kctl = snd_ctl_find_id(card, src_id); in snd_ctl_rename_id()
639 if (kctl == NULL) { in snd_ctl_rename_id()
643 kctl->id = *dst_id; in snd_ctl_rename_id()
644 kctl->id.numid = card->last_numid + 1; in snd_ctl_rename_id()
645 card->last_numid += kctl->count; in snd_ctl_rename_id()
666 struct snd_kcontrol *kctl; in snd_ctl_find_numid() local
670 list_for_each_entry(kctl, &card->controls, list) { in snd_ctl_find_numid()
671 if (kctl->id.numid <= numid && kctl->id.numid + kctl->count > numid) in snd_ctl_find_numid()
672 return kctl; in snd_ctl_find_numid()
694 struct snd_kcontrol *kctl; in snd_ctl_find_id() local
700 list_for_each_entry(kctl, &card->controls, list) { in snd_ctl_find_id()
701 if (kctl->id.iface != id->iface) in snd_ctl_find_id()
703 if (kctl->id.device != id->device) in snd_ctl_find_id()
705 if (kctl->id.subdevice != id->subdevice) in snd_ctl_find_id()
707 if (strncmp(kctl->id.name, id->name, sizeof(kctl->id.name))) in snd_ctl_find_id()
709 if (kctl->id.index > id->index) in snd_ctl_find_id()
711 if (kctl->id.index + kctl->count <= id->index) in snd_ctl_find_id()
713 return kctl; in snd_ctl_find_id()
749 struct snd_kcontrol *kctl; in snd_ctl_elem_list() local
771 kctl = snd_kcontrol(plist); in snd_ctl_elem_list()
772 if (offset < kctl->count) in snd_ctl_elem_list()
774 offset -= kctl->count; in snd_ctl_elem_list()
780 kctl = snd_kcontrol(plist); in snd_ctl_elem_list()
781 for (jidx = offset; space > 0 && jidx < kctl->count; jidx++) { in snd_ctl_elem_list()
782 snd_ctl_build_ioff(id, kctl, jidx); in snd_ctl_elem_list()
812 struct snd_kcontrol *kctl; in snd_ctl_elem_info() local
818 kctl = snd_ctl_find_id(card, &info->id); in snd_ctl_elem_info()
819 if (kctl == NULL) { in snd_ctl_elem_info()
826 result = kctl->info(kctl, info); in snd_ctl_elem_info()
829 index_offset = snd_ctl_get_ioff(kctl, &info->id); in snd_ctl_elem_info()
830 vd = &kctl->vd[index_offset]; in snd_ctl_elem_info()
831 snd_ctl_build_ioff(&info->id, kctl, index_offset); in snd_ctl_elem_info()
868 struct snd_kcontrol *kctl; in snd_ctl_elem_read() local
874 kctl = snd_ctl_find_id(card, &control->id); in snd_ctl_elem_read()
875 if (kctl == NULL) { in snd_ctl_elem_read()
878 index_offset = snd_ctl_get_ioff(kctl, &control->id); in snd_ctl_elem_read()
879 vd = &kctl->vd[index_offset]; in snd_ctl_elem_read()
881 kctl->get != NULL) { in snd_ctl_elem_read()
882 snd_ctl_build_ioff(&control->id, kctl, index_offset); in snd_ctl_elem_read()
883 result = kctl->get(kctl, control); in snd_ctl_elem_read()
916 struct snd_kcontrol *kctl; in snd_ctl_elem_write() local
922 kctl = snd_ctl_find_id(card, &control->id); in snd_ctl_elem_write()
923 if (kctl == NULL) { in snd_ctl_elem_write()
926 index_offset = snd_ctl_get_ioff(kctl, &control->id); in snd_ctl_elem_write()
927 vd = &kctl->vd[index_offset]; in snd_ctl_elem_write()
929 kctl->put == NULL || in snd_ctl_elem_write()
933 snd_ctl_build_ioff(&control->id, kctl, index_offset); in snd_ctl_elem_write()
934 result = kctl->put(kctl, control); in snd_ctl_elem_write()
976 struct snd_kcontrol *kctl; in snd_ctl_elem_lock() local
983 kctl = snd_ctl_find_id(card, &id); in snd_ctl_elem_lock()
984 if (kctl == NULL) { in snd_ctl_elem_lock()
987 vd = &kctl->vd[snd_ctl_get_ioff(kctl, &id)]; in snd_ctl_elem_lock()
1004 struct snd_kcontrol *kctl; in snd_ctl_elem_unlock() local
1011 kctl = snd_ctl_find_id(card, &id); in snd_ctl_elem_unlock()
1012 if (kctl == NULL) { in snd_ctl_elem_unlock()
1015 vd = &kctl->vd[snd_ctl_get_ioff(kctl, &id)]; in snd_ctl_elem_unlock()
1218 struct snd_kcontrol *kctl; in snd_ctl_elem_add() local
1283 err = snd_ctl_new(&kctl, count, access, file); in snd_ctl_elem_add()
1286 memcpy(&kctl->id, &info->id, sizeof(kctl->id)); in snd_ctl_elem_add()
1287 kctl->private_data = kzalloc(sizeof(struct user_element) + private_size * count, in snd_ctl_elem_add()
1289 if (kctl->private_data == NULL) { in snd_ctl_elem_add()
1290 kfree(kctl); in snd_ctl_elem_add()
1293 kctl->private_free = snd_ctl_elem_user_free; in snd_ctl_elem_add()
1296 ue = (struct user_element *)kctl->private_data; in snd_ctl_elem_add()
1305 snd_ctl_free_one(kctl); in snd_ctl_elem_add()
1312 kctl->info = snd_ctl_elem_user_enum_info; in snd_ctl_elem_add()
1314 kctl->info = snd_ctl_elem_user_info; in snd_ctl_elem_add()
1316 kctl->get = snd_ctl_elem_user_get; in snd_ctl_elem_add()
1318 kctl->put = snd_ctl_elem_user_put; in snd_ctl_elem_add()
1320 kctl->tlv.c = snd_ctl_elem_user_tlv; in snd_ctl_elem_add()
1323 err = snd_ctl_add(card, kctl); in snd_ctl_elem_add()
1326 offset = snd_ctl_get_ioff(kctl, &info->id); in snd_ctl_elem_add()
1327 snd_ctl_build_ioff(&info->id, kctl, offset); in snd_ctl_elem_add()
1399 struct snd_kcontrol *kctl; in snd_ctl_tlv_ioctl() local
1411 kctl = snd_ctl_find_numid(card, tlv.numid); in snd_ctl_tlv_ioctl()
1412 if (kctl == NULL) { in snd_ctl_tlv_ioctl()
1416 if (kctl->tlv.p == NULL) { in snd_ctl_tlv_ioctl()
1420 vd = &kctl->vd[tlv.numid - kctl->id.numid]; in snd_ctl_tlv_ioctl()
1435 err = kctl->tlv.c(kctl, op_flag, tlv.length, _tlv->tlv); in snd_ctl_tlv_ioctl()
1437 struct snd_ctl_elem_id id = kctl->id; in snd_ctl_tlv_ioctl()
1447 len = kctl->tlv.p[1] + 2 * sizeof(unsigned int); in snd_ctl_tlv_ioctl()
1452 if (copy_to_user(_tlv->tlv, kctl->tlv.p, len)) in snd_ctl_tlv_ioctl()
1704 struct snd_ctl_file *kctl; in snd_ctl_get_preferred_subdevice() local
1708 list_for_each_entry(kctl, &card->ctl_files, list) { in snd_ctl_get_preferred_subdevice()
1709 if (kctl->pid == task_pid(current)) { in snd_ctl_get_preferred_subdevice()
1710 subdevice = kctl->preferred_subdevice[type]; in snd_ctl_get_preferred_subdevice()