Lines Matching full:fp
31 static void audioformat_free(struct audioformat *fp) in audioformat_free() argument
33 list_del(&fp->list); /* unlink for avoiding double-free */ in audioformat_free()
34 kfree(fp->rate_table); in audioformat_free()
35 kfree(fp->chmap); in audioformat_free()
36 kfree(fp); in audioformat_free()
44 struct audioformat *fp, *n; in free_substream() local
48 list_for_each_entry_safe(fp, n, &subs->fmt_list, list) in free_substream()
49 audioformat_free(fp); in free_substream()
81 struct audioformat *fp, in snd_usb_init_substream() argument
100 list_add_tail(&fp->list, &subs->fmt_list); in snd_usb_init_substream()
101 subs->formats |= fp->formats; in snd_usb_init_substream()
103 subs->fmt_type = fp->fmt_type; in snd_usb_init_substream()
104 subs->ep_num = fp->endpoint; in snd_usb_init_substream()
105 if (fp->channels > subs->channels_max) in snd_usb_init_substream()
106 subs->channels_max = fp->channels; in snd_usb_init_substream()
134 struct audioformat *fp) in have_dup_chmap() argument
136 struct audioformat *prev = fp; in have_dup_chmap()
140 !memcmp(prev->chmap, fp->chmap, sizeof(*fp->chmap))) in have_dup_chmap()
151 struct audioformat *fp; in usb_chmap_ctl_tlv() local
161 list_for_each_entry(fp, &subs->fmt_list, list) { in usb_chmap_ctl_tlv()
164 if (!fp->chmap) in usb_chmap_ctl_tlv()
166 if (have_dup_chmap(subs, fp)) in usb_chmap_ctl_tlv()
169 ch_bytes = fp->chmap->channels * 4; in usb_chmap_ctl_tlv()
176 for (i = 0; i < fp->chmap->channels; i++, dst++) { in usb_chmap_ctl_tlv()
177 if (put_user(fp->chmap->map[i], dst)) in usb_chmap_ctl_tlv()
212 struct audioformat *fp; in add_chmap() local
217 list_for_each_entry(fp, &subs->fmt_list, list) in add_chmap()
218 if (fp->chmap) in add_chmap()
492 * if not, create a new pcm stream. note, fp is added to the substream
494 * fp or do remove it from the substream fmt_list to avoid double-free.
498 struct audioformat *fp, in __snd_usb_add_audio_stream() argument
508 if (as->fmt_type != fp->fmt_type) in __snd_usb_add_audio_stream()
511 if (subs->ep_num == fp->endpoint) { in __snd_usb_add_audio_stream()
512 list_add_tail(&fp->list, &subs->fmt_list); in __snd_usb_add_audio_stream()
514 subs->formats |= fp->formats; in __snd_usb_add_audio_stream()
524 if (as->fmt_type != fp->fmt_type) in __snd_usb_add_audio_stream()
532 snd_usb_init_substream(as, stream, fp, pd); in __snd_usb_add_audio_stream()
542 as->fmt_type = fp->fmt_type; in __snd_usb_add_audio_stream()
561 snd_usb_init_substream(as, stream, fp, pd); in __snd_usb_add_audio_stream()
581 struct audioformat *fp) in snd_usb_add_audio_stream() argument
583 return __snd_usb_add_audio_stream(chip, stream, fp, NULL); in snd_usb_add_audio_stream()
588 struct audioformat *fp, in snd_usb_add_audio_stream_v3() argument
591 return __snd_usb_add_audio_stream(chip, stream, fp, pd); in snd_usb_add_audio_stream_v3()
702 struct audioformat *fp; in audio_format_alloc_init() local
704 fp = kzalloc_obj(*fp); in audio_format_alloc_init()
705 if (!fp) in audio_format_alloc_init()
708 fp->iface = iface_no; in audio_format_alloc_init()
709 fp->altsetting = altno; in audio_format_alloc_init()
710 fp->altset_idx = altset_idx; in audio_format_alloc_init()
711 fp->endpoint = get_endpoint(alts, 0)->bEndpointAddress; in audio_format_alloc_init()
712 fp->ep_attr = get_endpoint(alts, 0)->bmAttributes; in audio_format_alloc_init()
713 fp->datainterval = snd_usb_parse_datainterval(chip, alts); in audio_format_alloc_init()
714 fp->protocol = protocol; in audio_format_alloc_init()
715 fp->maxpacksize = usb_endpoint_max_periodic_payload(chip->dev, ep); in audio_format_alloc_init()
716 fp->channels = num_channels; in audio_format_alloc_init()
717 fp->clock = clock; in audio_format_alloc_init()
718 INIT_LIST_HEAD(&fp->list); in audio_format_alloc_init()
720 return fp; in audio_format_alloc_init()
733 struct audioformat *fp; in snd_usb_get_audioformat_uac12() local
852 fp = audio_format_alloc_init(chip, alts, protocol, iface_no, in snd_usb_get_audioformat_uac12()
854 if (!fp) in snd_usb_get_audioformat_uac12()
857 fp->attributes = parse_uac_endpoint_attributes(chip, alts, protocol, in snd_usb_get_audioformat_uac12()
861 snd_usb_audioformat_attributes_quirk(chip, fp, stream); in snd_usb_get_audioformat_uac12()
864 if (snd_usb_parse_audio_format(chip, fp, format, in snd_usb_get_audioformat_uac12()
866 audioformat_free(fp); in snd_usb_get_audioformat_uac12()
871 if (fp->channels != num_channels) in snd_usb_get_audioformat_uac12()
874 fp->chmap = convert_chmap(fp->channels, chconfig, protocol); in snd_usb_get_audioformat_uac12()
876 return fp; in snd_usb_get_audioformat_uac12()
898 struct audioformat *fp; in snd_usb_get_audioformat_uac3() local
1069 fp = audio_format_alloc_init(chip, alts, UAC_VERSION_3, iface_no, in snd_usb_get_audioformat_uac3()
1071 if (!fp) { in snd_usb_get_audioformat_uac3()
1076 fp->chmap = chmap; in snd_usb_get_audioformat_uac3()
1079 fp->attributes = 0; /* No attributes */ in snd_usb_get_audioformat_uac3()
1081 fp->fmt_type = UAC_FORMAT_TYPE_I; in snd_usb_get_audioformat_uac3()
1082 fp->formats = badd_formats; in snd_usb_get_audioformat_uac3()
1084 fp->nr_rates = 0; /* SNDRV_PCM_RATE_CONTINUOUS */ in snd_usb_get_audioformat_uac3()
1085 fp->rate_min = UAC3_BADD_SAMPLING_RATE; in snd_usb_get_audioformat_uac3()
1086 fp->rate_max = UAC3_BADD_SAMPLING_RATE; in snd_usb_get_audioformat_uac3()
1087 fp->rates = SNDRV_PCM_RATE_CONTINUOUS; in snd_usb_get_audioformat_uac3()
1091 audioformat_free(fp); in snd_usb_get_audioformat_uac3()
1101 fp->attributes = parse_uac_endpoint_attributes(chip, alts, in snd_usb_get_audioformat_uac3()
1109 if (snd_usb_parse_audio_format_v3(chip, fp, as, stream) < 0) { in snd_usb_get_audioformat_uac3()
1111 audioformat_free(fp); in snd_usb_get_audioformat_uac3()
1119 return fp; in snd_usb_get_audioformat_uac3()
1131 struct audioformat *fp = NULL; in __snd_usb_parse_audio_interface() local
1202 fp && fp->altsetting == 1 && fp->channels == 1 && in __snd_usb_parse_audio_interface()
1203 fp->formats == SNDRV_PCM_FMTBIT_S16_LE && in __snd_usb_parse_audio_interface()
1206 fp->maxpacksize * 2) in __snd_usb_parse_audio_interface()
1209 fp = snd_usb_get_audioformat_uac12(chip, alts, protocol, in __snd_usb_parse_audio_interface()
1215 fp = snd_usb_get_audioformat_uac3(chip, alts, &pd, in __snd_usb_parse_audio_interface()
1220 if (!fp) in __snd_usb_parse_audio_interface()
1222 else if (IS_ERR(fp)) in __snd_usb_parse_audio_interface()
1223 return PTR_ERR(fp); in __snd_usb_parse_audio_interface()
1225 if (fp->fmt_type != UAC_FORMAT_TYPE_I) in __snd_usb_parse_audio_interface()
1227 if ((fp->fmt_type == UAC_FORMAT_TYPE_I) == non_pcm) { in __snd_usb_parse_audio_interface()
1228 audioformat_free(fp); in __snd_usb_parse_audio_interface()
1230 fp = NULL; in __snd_usb_parse_audio_interface()
1235 snd_usb_audioformat_set_sync_ep(chip, fp); in __snd_usb_parse_audio_interface()
1237 dev_dbg(&dev->dev, "%u:%d: add audio endpoint %#x\n", iface_no, altno, fp->endpoint); in __snd_usb_parse_audio_interface()
1239 err = snd_usb_add_audio_stream_v3(chip, stream, fp, pd); in __snd_usb_parse_audio_interface()
1241 err = snd_usb_add_audio_stream(chip, stream, fp); in __snd_usb_parse_audio_interface()
1244 audioformat_free(fp); in __snd_usb_parse_audio_interface()
1250 err = snd_usb_add_endpoint(chip, fp->endpoint, in __snd_usb_parse_audio_interface()
1255 if (fp->sync_ep) { in __snd_usb_parse_audio_interface()
1256 err = snd_usb_add_endpoint(chip, fp->sync_ep, in __snd_usb_parse_audio_interface()
1257 fp->implicit_fb ? in __snd_usb_parse_audio_interface()
1276 snd_usb_init_pitch(chip, fp); in __snd_usb_parse_audio_interface()
1277 snd_usb_init_sample_rate(chip, fp, fp->rate_max); in __snd_usb_parse_audio_interface()