Lines Matching refs:evtchnl
27 be_stream_prepare_req(struct xen_snd_front_evtchnl *evtchnl, u8 operation) in be_stream_prepare_req() argument
31 req = RING_GET_REQUEST(&evtchnl->u.req.ring, in be_stream_prepare_req()
32 evtchnl->u.req.ring.req_prod_pvt); in be_stream_prepare_req()
34 req->id = evtchnl->evt_next_id++; in be_stream_prepare_req()
35 evtchnl->evt_id = req->id; in be_stream_prepare_req()
39 static int be_stream_do_io(struct xen_snd_front_evtchnl *evtchnl) in be_stream_do_io() argument
41 if (unlikely(evtchnl->state != EVTCHNL_STATE_CONNECTED)) in be_stream_do_io()
44 reinit_completion(&evtchnl->u.req.completion); in be_stream_do_io()
45 xen_snd_front_evtchnl_flush(evtchnl); in be_stream_do_io()
49 static int be_stream_wait_io(struct xen_snd_front_evtchnl *evtchnl) in be_stream_wait_io() argument
51 if (wait_for_completion_timeout(&evtchnl->u.req.completion, in be_stream_wait_io()
55 return evtchnl->u.req.resp_status; in be_stream_wait_io()
58 int xen_snd_front_stream_query_hw_param(struct xen_snd_front_evtchnl *evtchnl, in xen_snd_front_stream_query_hw_param() argument
65 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_query_hw_param()
67 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_query_hw_param()
68 req = be_stream_prepare_req(evtchnl, XENSND_OP_HW_PARAM_QUERY); in xen_snd_front_stream_query_hw_param()
70 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_query_hw_param()
72 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_query_hw_param()
75 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_query_hw_param()
78 *hw_param_resp = evtchnl->u.req.resp.hw_param; in xen_snd_front_stream_query_hw_param()
80 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_query_hw_param()
84 int xen_snd_front_stream_prepare(struct xen_snd_front_evtchnl *evtchnl, in xen_snd_front_stream_prepare() argument
93 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_prepare()
95 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_prepare()
96 req = be_stream_prepare_req(evtchnl, XENSND_OP_OPEN); in xen_snd_front_stream_prepare()
103 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_prepare()
105 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_prepare()
108 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_prepare()
110 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_prepare()
114 int xen_snd_front_stream_close(struct xen_snd_front_evtchnl *evtchnl) in xen_snd_front_stream_close() argument
119 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_close()
121 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_close()
122 req = be_stream_prepare_req(evtchnl, XENSND_OP_CLOSE); in xen_snd_front_stream_close()
123 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_close()
125 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_close()
128 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_close()
130 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_close()
134 int xen_snd_front_stream_write(struct xen_snd_front_evtchnl *evtchnl, in xen_snd_front_stream_write() argument
140 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_write()
142 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_write()
143 req = be_stream_prepare_req(evtchnl, XENSND_OP_WRITE); in xen_snd_front_stream_write()
146 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_write()
148 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_write()
151 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_write()
153 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_write()
157 int xen_snd_front_stream_read(struct xen_snd_front_evtchnl *evtchnl, in xen_snd_front_stream_read() argument
163 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_read()
165 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_read()
166 req = be_stream_prepare_req(evtchnl, XENSND_OP_READ); in xen_snd_front_stream_read()
169 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_read()
171 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_read()
174 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_read()
176 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_read()
180 int xen_snd_front_stream_trigger(struct xen_snd_front_evtchnl *evtchnl, in xen_snd_front_stream_trigger() argument
186 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_trigger()
188 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_trigger()
189 req = be_stream_prepare_req(evtchnl, XENSND_OP_TRIGGER); in xen_snd_front_stream_trigger()
191 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_trigger()
193 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_trigger()
196 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_trigger()
198 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_trigger()