162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 OR MIT */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci/* 462306a36Sopenharmony_ci * Xen para-virtual sound device 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (C) 2016-2018 EPAM Systems Inc. 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Author: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#ifndef __XEN_SND_FRONT_H 1262306a36Sopenharmony_ci#define __XEN_SND_FRONT_H 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include "xen_snd_front_cfg.h" 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cistruct xen_snd_front_card_info; 1762306a36Sopenharmony_cistruct xen_snd_front_evtchnl; 1862306a36Sopenharmony_cistruct xen_snd_front_evtchnl_pair; 1962306a36Sopenharmony_cistruct xen_front_pgdir_shbuf; 2062306a36Sopenharmony_cistruct xensnd_query_hw_param; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cistruct xen_snd_front_info { 2362306a36Sopenharmony_ci struct xenbus_device *xb_dev; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci struct xen_snd_front_card_info *card_info; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci int num_evt_pairs; 2862306a36Sopenharmony_ci struct xen_snd_front_evtchnl_pair *evt_pairs; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci struct xen_front_cfg_card cfg; 3162306a36Sopenharmony_ci}; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciint xen_snd_front_stream_query_hw_param(struct xen_snd_front_evtchnl *evtchnl, 3462306a36Sopenharmony_ci struct xensnd_query_hw_param *hw_param_req, 3562306a36Sopenharmony_ci struct xensnd_query_hw_param *hw_param_resp); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciint xen_snd_front_stream_prepare(struct xen_snd_front_evtchnl *evtchnl, 3862306a36Sopenharmony_ci struct xen_front_pgdir_shbuf *shbuf, 3962306a36Sopenharmony_ci u8 format, unsigned int channels, 4062306a36Sopenharmony_ci unsigned int rate, u32 buffer_sz, 4162306a36Sopenharmony_ci u32 period_sz); 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciint xen_snd_front_stream_close(struct xen_snd_front_evtchnl *evtchnl); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciint xen_snd_front_stream_write(struct xen_snd_front_evtchnl *evtchnl, 4662306a36Sopenharmony_ci unsigned long pos, unsigned long count); 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ciint xen_snd_front_stream_read(struct xen_snd_front_evtchnl *evtchnl, 4962306a36Sopenharmony_ci unsigned long pos, unsigned long count); 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ciint xen_snd_front_stream_trigger(struct xen_snd_front_evtchnl *evtchnl, 5262306a36Sopenharmony_ci int type); 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#endif /* __XEN_SND_FRONT_H */ 55