Lines Matching refs:info
269 if (snd_BUG_ON(!ncontrol || !ncontrol->info)) in snd_ctl_new1()
304 kctl->info = ncontrol->info; in snd_ctl_new1()
514 if (snd_BUG_ON(!card || !kcontrol->info)) in snd_ctl_add_replace()
835 struct snd_ctl_card_info *info; in snd_ctl_card_info() local
837 info = kzalloc(sizeof(*info), GFP_KERNEL); in snd_ctl_card_info()
838 if (! info) in snd_ctl_card_info()
841 info->card = card->number; in snd_ctl_card_info()
842 strscpy(info->id, card->id, sizeof(info->id)); in snd_ctl_card_info()
843 strscpy(info->driver, card->driver, sizeof(info->driver)); in snd_ctl_card_info()
844 strscpy(info->name, card->shortname, sizeof(info->name)); in snd_ctl_card_info()
845 strscpy(info->longname, card->longname, sizeof(info->longname)); in snd_ctl_card_info()
846 strscpy(info->mixername, card->mixername, sizeof(info->mixername)); in snd_ctl_card_info()
847 strscpy(info->components, card->components, sizeof(info->components)); in snd_ctl_card_info()
849 if (copy_to_user(arg, info, sizeof(struct snd_ctl_card_info))) { in snd_ctl_card_info()
850 kfree(info); in snd_ctl_card_info()
853 kfree(info); in snd_ctl_card_info()
915 const struct snd_ctl_elem_info *info) in snd_ctl_check_elem_info() argument
926 if (info->type < SNDRV_CTL_ELEM_TYPE_BOOLEAN || in snd_ctl_check_elem_info()
927 info->type > SNDRV_CTL_ELEM_TYPE_INTEGER64) { in snd_ctl_check_elem_info()
931 info->id.iface, info->id.device, in snd_ctl_check_elem_info()
932 info->id.subdevice, info->id.name, in snd_ctl_check_elem_info()
933 info->id.index, info->type); in snd_ctl_check_elem_info()
936 if (info->type == SNDRV_CTL_ELEM_TYPE_ENUMERATED && in snd_ctl_check_elem_info()
937 info->value.enumerated.items == 0) { in snd_ctl_check_elem_info()
941 info->id.iface, info->id.device, in snd_ctl_check_elem_info()
942 info->id.subdevice, info->id.name, in snd_ctl_check_elem_info()
943 info->id.index); in snd_ctl_check_elem_info()
946 if (info->count > max_value_counts[info->type]) { in snd_ctl_check_elem_info()
950 info->id.iface, info->id.device, in snd_ctl_check_elem_info()
951 info->id.subdevice, info->id.name, in snd_ctl_check_elem_info()
952 info->id.index, info->count); in snd_ctl_check_elem_info()
972 struct snd_ctl_elem_info *info, in fill_remaining_elem_value() argument
975 size_t offset = value_sizes[info->type] * info->count; in fill_remaining_elem_value()
985 const struct snd_ctl_elem_info *info, in sanity_check_int_value() argument
991 switch (info->type) { in sanity_check_int_value()
1001 lmin = info->value.integer.min; in sanity_check_int_value()
1002 lmax = info->value.integer.max; in sanity_check_int_value()
1003 lstep = info->value.integer.step; in sanity_check_int_value()
1007 lmin = info->value.integer64.min; in sanity_check_int_value()
1008 lmax = info->value.integer64.max; in sanity_check_int_value()
1009 lstep = info->value.integer64.step; in sanity_check_int_value()
1014 lmax = info->value.enumerated.items - 1; in sanity_check_int_value()
1045 const struct snd_ctl_elem_info *info, in sanity_check_elem_value() argument
1052 switch (info->type) { in sanity_check_elem_value()
1057 for (i = 0; i < info->count; i++) { in sanity_check_elem_value()
1058 ret = sanity_check_int_value(card, control, info, i); in sanity_check_elem_value()
1068 offset = value_sizes[info->type] * info->count; in sanity_check_elem_value()
1083 struct snd_ctl_elem_info *info, in fill_remaining_elem_value() argument
1090 struct snd_ctl_elem_info *info, in sanity_check_elem_value() argument
1099 struct snd_ctl_elem_info *info, in __snd_ctl_elem_info() argument
1107 info->access = 0; in __snd_ctl_elem_info()
1111 result = kctl->info(kctl, info); in __snd_ctl_elem_info()
1114 snd_BUG_ON(info->access); in __snd_ctl_elem_info()
1115 index_offset = snd_ctl_get_ioff(kctl, &info->id); in __snd_ctl_elem_info()
1117 snd_ctl_build_ioff(&info->id, kctl, index_offset); in __snd_ctl_elem_info()
1118 info->access = vd->access; in __snd_ctl_elem_info()
1120 info->access |= SNDRV_CTL_ELEM_ACCESS_LOCK; in __snd_ctl_elem_info()
1122 info->access |= SNDRV_CTL_ELEM_ACCESS_OWNER; in __snd_ctl_elem_info()
1123 info->owner = pid_vnr(vd->owner->pid); in __snd_ctl_elem_info()
1125 info->owner = -1; in __snd_ctl_elem_info()
1127 if (!snd_ctl_skip_validation(info) && in __snd_ctl_elem_info()
1128 snd_ctl_check_elem_info(card, info) < 0) in __snd_ctl_elem_info()
1135 struct snd_ctl_elem_info *info) in snd_ctl_elem_info() argument
1142 kctl = snd_ctl_find_id(card, &info->id); in snd_ctl_elem_info()
1146 result = __snd_ctl_elem_info(card, kctl, info, ctl); in snd_ctl_elem_info()
1154 struct snd_ctl_elem_info info; in snd_ctl_elem_info_user() local
1157 if (copy_from_user(&info, _info, sizeof(info))) in snd_ctl_elem_info_user()
1159 result = snd_ctl_elem_info(ctl, &info); in snd_ctl_elem_info_user()
1163 info.access &= ~(SNDRV_CTL_ELEM_ACCESS_SKIP_CHECK| in snd_ctl_elem_info_user()
1165 if (copy_to_user(_info, &info, sizeof(info))) in snd_ctl_elem_info_user()
1176 struct snd_ctl_elem_info info; in snd_ctl_elem_read() local
1198 memset(&info, 0, sizeof(info)); in snd_ctl_elem_read()
1199 info.id = control->id; in snd_ctl_elem_read()
1200 ret = __snd_ctl_elem_info(card, kctl, &info, NULL); in snd_ctl_elem_read()
1205 if (!snd_ctl_skip_validation(&info)) in snd_ctl_elem_read()
1206 fill_remaining_elem_value(control, &info, pattern); in snd_ctl_elem_read()
1213 if (!snd_ctl_skip_validation(&info) && in snd_ctl_elem_read()
1214 sanity_check_elem_value(card, control, &info, pattern) < 0) { in snd_ctl_elem_read()
1375 struct snd_ctl_elem_info info; member
1397 *uinfo = ue->info; in snd_ctl_elem_user_info()
1414 *uinfo = ue->info; in snd_ctl_elem_user_enum_info()
1539 const uintptr_t user_ptrval = ue->info.value.enumerated.names_ptr; in snd_ctl_elem_init_enum_names()
1541 buf_len = ue->info.value.enumerated.names_length; in snd_ctl_elem_init_enum_names()
1553 for (i = 0; i < ue->info.value.enumerated.items; ++i) { in snd_ctl_elem_init_enum_names()
1564 ue->info.value.enumerated.names_ptr = 0; in snd_ctl_elem_init_enum_names()
1566 ue->card->user_ctl_alloc_size += ue->info.value.enumerated.names_length; in snd_ctl_elem_init_enum_names()
1584 ue->card->user_ctl_alloc_size -= ue->info.value.enumerated.names_length; in snd_ctl_elem_user_free()
1592 struct snd_ctl_elem_info *info, int replace) in snd_ctl_elem_add() argument
1604 if (!*info->id.name) in snd_ctl_elem_add()
1606 if (strnlen(info->id.name, sizeof(info->id.name)) >= sizeof(info->id.name)) in snd_ctl_elem_add()
1611 info->id.numid = 0; in snd_ctl_elem_add()
1612 err = snd_ctl_remove_user_ctl(file, &info->id); in snd_ctl_elem_add()
1618 count = info->owner; in snd_ctl_elem_add()
1623 access = info->access; in snd_ctl_elem_add()
1640 err = snd_ctl_check_elem_info(NULL, info); in snd_ctl_elem_add()
1644 if (info->count < 1) in snd_ctl_elem_add()
1646 private_size = value_sizes[info->type] * info->count; in snd_ctl_elem_add()
1664 memcpy(&kctl->id, &info->id, sizeof(kctl->id)); in snd_ctl_elem_add()
1679 ue->info = *info; in snd_ctl_elem_add()
1680 ue->info.access = 0; in snd_ctl_elem_add()
1683 if (ue->info.type == SNDRV_CTL_ELEM_TYPE_ENUMERATED) { in snd_ctl_elem_add()
1692 if (info->type == SNDRV_CTL_ELEM_TYPE_ENUMERATED) in snd_ctl_elem_add()
1693 kctl->info = snd_ctl_elem_user_enum_info; in snd_ctl_elem_add()
1695 kctl->info = snd_ctl_elem_user_info; in snd_ctl_elem_add()
1709 offset = snd_ctl_get_ioff(kctl, &info->id); in snd_ctl_elem_add()
1710 snd_ctl_build_ioff(&info->id, kctl, offset); in snd_ctl_elem_add()
1726 struct snd_ctl_elem_info info; in snd_ctl_elem_add_user() local
1729 if (copy_from_user(&info, _info, sizeof(info))) in snd_ctl_elem_add_user()
1731 err = snd_ctl_elem_add(file, &info, replace); in snd_ctl_elem_add_user()
1734 if (copy_to_user(_info, &info, sizeof(info))) { in snd_ctl_elem_add_user()
1735 snd_ctl_remove_user_ctl(file, &info.id); in snd_ctl_elem_add_user()
2411 int snd_ctl_enum_info(struct snd_ctl_elem_info *info, unsigned int channels, in snd_ctl_enum_info() argument
2414 info->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; in snd_ctl_enum_info()
2415 info->count = channels; in snd_ctl_enum_info()
2416 info->value.enumerated.items = items; in snd_ctl_enum_info()
2419 if (info->value.enumerated.item >= items) in snd_ctl_enum_info()
2420 info->value.enumerated.item = items - 1; in snd_ctl_enum_info()
2421 WARN(strlen(names[info->value.enumerated.item]) >= sizeof(info->value.enumerated.name), in snd_ctl_enum_info()
2423 names[info->value.enumerated.item]); in snd_ctl_enum_info()
2424 strscpy(info->value.enumerated.name, in snd_ctl_enum_info()
2425 names[info->value.enumerated.item], in snd_ctl_enum_info()
2426 sizeof(info->value.enumerated.name)); in snd_ctl_enum_info()