Merge tag 'edac_updates_for_v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-block.git] / sound / usb / endpoint.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
e5779998
DM
2#ifndef __USBAUDIO_ENDPOINT_H
3#define __USBAUDIO_ENDPOINT_H
4
8fdff6a3
DM
5#define SND_USB_ENDPOINT_TYPE_DATA 0
6#define SND_USB_ENDPOINT_TYPE_SYNC 1
7
c7474d09 8struct snd_usb_endpoint *snd_usb_get_endpoint(struct snd_usb_audio *chip,
54cb3190 9 int ep_num);
c7474d09 10
54cb3190 11int snd_usb_add_endpoint(struct snd_usb_audio *chip, int ep_num, int type);
8fdff6a3 12
bf6313a0
TI
13struct snd_usb_endpoint *
14snd_usb_endpoint_open(struct snd_usb_audio *chip,
cab941b7 15 const struct audioformat *fp,
bf6313a0 16 const struct snd_pcm_hw_params *params,
fd28941c
JK
17 bool is_sync_ep,
18 bool fixed_rate);
bf6313a0
TI
19void snd_usb_endpoint_close(struct snd_usb_audio *chip,
20 struct snd_usb_endpoint *ep);
2be79d58
TI
21int snd_usb_endpoint_set_params(struct snd_usb_audio *chip,
22 struct snd_usb_endpoint *ep);
23int snd_usb_endpoint_prepare(struct snd_usb_audio *chip,
24 struct snd_usb_endpoint *ep);
4e7cf1fb 25int snd_usb_endpoint_get_clock_rate(struct snd_usb_audio *chip, int clock);
bf6313a0
TI
26
27bool snd_usb_endpoint_compatible(struct snd_usb_audio *chip,
28 struct snd_usb_endpoint *ep,
29 const struct audioformat *fp,
30 const struct snd_pcm_hw_params *params);
31
32void snd_usb_endpoint_set_sync(struct snd_usb_audio *chip,
33 struct snd_usb_endpoint *data_ep,
34 struct snd_usb_endpoint *sync_ep);
96e221f3 35void snd_usb_endpoint_set_callback(struct snd_usb_endpoint *ep,
d5f871f8
TI
36 int (*prepare)(struct snd_usb_substream *subs,
37 struct urb *urb,
38 bool in_stream_lock),
96e221f3
TI
39 void (*retire)(struct snd_usb_substream *subs,
40 struct urb *urb),
41 struct snd_usb_substream *data_subs);
42
bf6313a0 43int snd_usb_endpoint_start(struct snd_usb_endpoint *ep);
813a17ca 44void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep, bool keep_pending);
f58161ba 45void snd_usb_endpoint_sync_pending_stop(struct snd_usb_endpoint *ep);
bf6313a0 46void snd_usb_endpoint_suspend(struct snd_usb_endpoint *ep);
92a586bd 47void snd_usb_endpoint_release(struct snd_usb_endpoint *ep);
00272c61 48void snd_usb_endpoint_free_all(struct snd_usb_audio *chip);
8fdff6a3 49
98ae472b 50int snd_usb_endpoint_implicit_feedback_sink(struct snd_usb_endpoint *ep);
3d58760f 51int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep,
d215f63d
TI
52 struct snd_urb_ctx *ctx, int idx,
53 unsigned int avail);
8c721c53
TI
54int snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep,
55 bool in_stream_lock);
8fdff6a3 56
e5779998 57#endif /* __USBAUDIO_ENDPOINT_H */