xref: /openbmc/linux/sound/xen/xen_snd_front.h (revision 597473720f4dc69749542bfcfed4a927a43d935e)
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