1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 OR MIT */ 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun /* 4*4882a593Smuzhiyun * Xen para-virtual sound device 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (C) 2016-2018 EPAM Systems Inc. 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Author: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef __XEN_SND_FRONT_H 12*4882a593Smuzhiyun #define __XEN_SND_FRONT_H 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #include "xen_snd_front_cfg.h" 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun struct xen_snd_front_card_info; 17*4882a593Smuzhiyun struct xen_snd_front_evtchnl; 18*4882a593Smuzhiyun struct xen_snd_front_evtchnl_pair; 19*4882a593Smuzhiyun struct xen_front_pgdir_shbuf; 20*4882a593Smuzhiyun struct xensnd_query_hw_param; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun struct xen_snd_front_info { 23*4882a593Smuzhiyun struct xenbus_device *xb_dev; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun struct xen_snd_front_card_info *card_info; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun int num_evt_pairs; 28*4882a593Smuzhiyun struct xen_snd_front_evtchnl_pair *evt_pairs; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun struct xen_front_cfg_card cfg; 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun int xen_snd_front_stream_query_hw_param(struct xen_snd_front_evtchnl *evtchnl, 34*4882a593Smuzhiyun struct xensnd_query_hw_param *hw_param_req, 35*4882a593Smuzhiyun struct xensnd_query_hw_param *hw_param_resp); 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun int xen_snd_front_stream_prepare(struct xen_snd_front_evtchnl *evtchnl, 38*4882a593Smuzhiyun struct xen_front_pgdir_shbuf *shbuf, 39*4882a593Smuzhiyun u8 format, unsigned int channels, 40*4882a593Smuzhiyun unsigned int rate, u32 buffer_sz, 41*4882a593Smuzhiyun u32 period_sz); 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun int xen_snd_front_stream_close(struct xen_snd_front_evtchnl *evtchnl); 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun int xen_snd_front_stream_write(struct xen_snd_front_evtchnl *evtchnl, 46*4882a593Smuzhiyun unsigned long pos, unsigned long count); 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun int xen_snd_front_stream_read(struct xen_snd_front_evtchnl *evtchnl, 49*4882a593Smuzhiyun unsigned long pos, unsigned long count); 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun int xen_snd_front_stream_trigger(struct xen_snd_front_evtchnl *evtchnl, 52*4882a593Smuzhiyun int type); 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #endif /* __XEN_SND_FRONT_H */ 55