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()
104 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_prepare()
106 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_prepare()
109 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_prepare()
111 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_prepare()
115 int xen_snd_front_stream_close(struct xen_snd_front_evtchnl *evtchnl) in xen_snd_front_stream_close() argument
120 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_close()
122 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_close()
123 req = be_stream_prepare_req(evtchnl, XENSND_OP_CLOSE); in xen_snd_front_stream_close()
124 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_close()
126 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_close()
129 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_close()
131 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_close()
135 int xen_snd_front_stream_write(struct xen_snd_front_evtchnl *evtchnl, in xen_snd_front_stream_write() argument
141 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_write()
143 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_write()
144 req = be_stream_prepare_req(evtchnl, XENSND_OP_WRITE); in xen_snd_front_stream_write()
147 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_write()
149 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_write()
152 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_write()
154 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_write()
158 int xen_snd_front_stream_read(struct xen_snd_front_evtchnl *evtchnl, in xen_snd_front_stream_read() argument
164 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_read()
166 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_read()
167 req = be_stream_prepare_req(evtchnl, XENSND_OP_READ); in xen_snd_front_stream_read()
170 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_read()
172 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_read()
175 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_read()
177 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_read()
181 int xen_snd_front_stream_trigger(struct xen_snd_front_evtchnl *evtchnl, in xen_snd_front_stream_trigger() argument
187 mutex_lock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_trigger()
189 mutex_lock(&evtchnl->ring_io_lock); in xen_snd_front_stream_trigger()
190 req = be_stream_prepare_req(evtchnl, XENSND_OP_TRIGGER); in xen_snd_front_stream_trigger()
192 mutex_unlock(&evtchnl->ring_io_lock); in xen_snd_front_stream_trigger()
194 ret = be_stream_do_io(evtchnl); in xen_snd_front_stream_trigger()
197 ret = be_stream_wait_io(evtchnl); in xen_snd_front_stream_trigger()
199 mutex_unlock(&evtchnl->u.req.req_io_lock); in xen_snd_front_stream_trigger()