endpoint.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __USBAUDIO_ENDPOINT_H
  3. #define __USBAUDIO_ENDPOINT_H
  4. #define SND_USB_ENDPOINT_TYPE_DATA 0
  5. #define SND_USB_ENDPOINT_TYPE_SYNC 1
  6. struct snd_usb_endpoint *snd_usb_get_endpoint(struct snd_usb_audio *chip,
  7. int ep_num);
  8. int snd_usb_add_endpoint(struct snd_usb_audio *chip, int ep_num, int type);
  9. struct snd_usb_endpoint *
  10. snd_usb_endpoint_open(struct snd_usb_audio *chip,
  11. const struct audioformat *fp,
  12. const struct snd_pcm_hw_params *params,
  13. bool is_sync_ep,
  14. bool fixed_rate);
  15. void snd_usb_endpoint_close(struct snd_usb_audio *chip,
  16. struct snd_usb_endpoint *ep);
  17. int snd_usb_endpoint_set_params(struct snd_usb_audio *chip,
  18. struct snd_usb_endpoint *ep);
  19. int snd_usb_endpoint_prepare(struct snd_usb_audio *chip,
  20. struct snd_usb_endpoint *ep);
  21. int snd_usb_endpoint_get_clock_rate(struct snd_usb_audio *chip, int clock);
  22. bool snd_usb_endpoint_compatible(struct snd_usb_audio *chip,
  23. struct snd_usb_endpoint *ep,
  24. const struct audioformat *fp,
  25. const struct snd_pcm_hw_params *params);
  26. void snd_usb_endpoint_set_sync(struct snd_usb_audio *chip,
  27. struct snd_usb_endpoint *data_ep,
  28. struct snd_usb_endpoint *sync_ep);
  29. void snd_usb_endpoint_set_callback(struct snd_usb_endpoint *ep,
  30. int (*prepare)(struct snd_usb_substream *subs,
  31. struct urb *urb,
  32. bool in_stream_lock),
  33. void (*retire)(struct snd_usb_substream *subs,
  34. struct urb *urb),
  35. struct snd_usb_substream *data_subs);
  36. int snd_usb_endpoint_start(struct snd_usb_endpoint *ep);
  37. void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep, bool keep_pending);
  38. void snd_usb_endpoint_sync_pending_stop(struct snd_usb_endpoint *ep);
  39. void snd_usb_endpoint_suspend(struct snd_usb_endpoint *ep);
  40. int snd_usb_endpoint_activate(struct snd_usb_endpoint *ep);
  41. void snd_usb_endpoint_release(struct snd_usb_endpoint *ep);
  42. void snd_usb_endpoint_free_all(struct snd_usb_audio *chip);
  43. int snd_usb_endpoint_implicit_feedback_sink(struct snd_usb_endpoint *ep);
  44. int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep,
  45. struct snd_urb_ctx *ctx, int idx,
  46. unsigned int avail);
  47. int snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep,
  48. bool in_stream_lock);
  49. #endif /* __USBAUDIO_ENDPOINT_H */