1cc3196aeSOleksandr Andrushchenko /* SPDX-License-Identifier: GPL-2.0 OR MIT */ 2cc3196aeSOleksandr Andrushchenko 3cc3196aeSOleksandr Andrushchenko /* 4cc3196aeSOleksandr Andrushchenko * Xen para-virtual sound device 5cc3196aeSOleksandr Andrushchenko * 6cc3196aeSOleksandr Andrushchenko * Copyright (C) 2016-2018 EPAM Systems Inc. 7cc3196aeSOleksandr Andrushchenko * 8cc3196aeSOleksandr Andrushchenko * Author: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> 9cc3196aeSOleksandr Andrushchenko */ 10cc3196aeSOleksandr Andrushchenko 11cc3196aeSOleksandr Andrushchenko #ifndef __XEN_SND_FRONT_H 12cc3196aeSOleksandr Andrushchenko #define __XEN_SND_FRONT_H 13cc3196aeSOleksandr Andrushchenko 14fd3b3604SOleksandr Andrushchenko #include "xen_snd_front_cfg.h" 15fd3b3604SOleksandr Andrushchenko 161cee5593SOleksandr Andrushchenko struct xen_snd_front_card_info; 171cee5593SOleksandr Andrushchenko struct xen_snd_front_evtchnl; 18788ef64aSOleksandr Andrushchenko struct xen_snd_front_evtchnl_pair; 19*58f9d806SOleksandr Andrushchenko struct xen_front_pgdir_shbuf; 201cee5593SOleksandr Andrushchenko struct xensnd_query_hw_param; 21788ef64aSOleksandr Andrushchenko 22cc3196aeSOleksandr Andrushchenko struct xen_snd_front_info { 23cc3196aeSOleksandr Andrushchenko struct xenbus_device *xb_dev; 24fd3b3604SOleksandr Andrushchenko 251cee5593SOleksandr Andrushchenko struct xen_snd_front_card_info *card_info; 261cee5593SOleksandr Andrushchenko 27788ef64aSOleksandr Andrushchenko int num_evt_pairs; 28788ef64aSOleksandr Andrushchenko struct xen_snd_front_evtchnl_pair *evt_pairs; 29788ef64aSOleksandr Andrushchenko 30fd3b3604SOleksandr Andrushchenko struct xen_front_cfg_card cfg; 31cc3196aeSOleksandr Andrushchenko }; 32cc3196aeSOleksandr Andrushchenko 331cee5593SOleksandr Andrushchenko int xen_snd_front_stream_query_hw_param(struct xen_snd_front_evtchnl *evtchnl, 341cee5593SOleksandr Andrushchenko struct xensnd_query_hw_param *hw_param_req, 351cee5593SOleksandr Andrushchenko struct xensnd_query_hw_param *hw_param_resp); 361cee5593SOleksandr Andrushchenko 371cee5593SOleksandr Andrushchenko int xen_snd_front_stream_prepare(struct xen_snd_front_evtchnl *evtchnl, 38*58f9d806SOleksandr Andrushchenko struct xen_front_pgdir_shbuf *shbuf, 391cee5593SOleksandr Andrushchenko u8 format, unsigned int channels, 401cee5593SOleksandr Andrushchenko unsigned int rate, u32 buffer_sz, 411cee5593SOleksandr Andrushchenko u32 period_sz); 421cee5593SOleksandr Andrushchenko 431cee5593SOleksandr Andrushchenko int xen_snd_front_stream_close(struct xen_snd_front_evtchnl *evtchnl); 441cee5593SOleksandr Andrushchenko 451cee5593SOleksandr Andrushchenko int xen_snd_front_stream_write(struct xen_snd_front_evtchnl *evtchnl, 461cee5593SOleksandr Andrushchenko unsigned long pos, unsigned long count); 471cee5593SOleksandr Andrushchenko 481cee5593SOleksandr Andrushchenko int xen_snd_front_stream_read(struct xen_snd_front_evtchnl *evtchnl, 491cee5593SOleksandr Andrushchenko unsigned long pos, unsigned long count); 501cee5593SOleksandr Andrushchenko 511cee5593SOleksandr Andrushchenko int xen_snd_front_stream_trigger(struct xen_snd_front_evtchnl *evtchnl, 521cee5593SOleksandr Andrushchenko int type); 531cee5593SOleksandr Andrushchenko 54cc3196aeSOleksandr Andrushchenko #endif /* __XEN_SND_FRONT_H */ 55