Lines Matching defs:evtchnl
27 be_stream_prepare_req(struct xen_snd_front_evtchnl *evtchnl, u8 operation)
31 req = RING_GET_REQUEST(&evtchnl->u.req.ring,
32 evtchnl->u.req.ring.req_prod_pvt);
34 req->id = evtchnl->evt_next_id++;
35 evtchnl->evt_id = req->id;
39 static int be_stream_do_io(struct xen_snd_front_evtchnl *evtchnl)
41 if (unlikely(evtchnl->state != EVTCHNL_STATE_CONNECTED))
44 reinit_completion(&evtchnl->u.req.completion);
45 xen_snd_front_evtchnl_flush(evtchnl);
49 static int be_stream_wait_io(struct xen_snd_front_evtchnl *evtchnl)
51 if (wait_for_completion_timeout(&evtchnl->u.req.completion,
55 return evtchnl->u.req.resp_status;
58 int xen_snd_front_stream_query_hw_param(struct xen_snd_front_evtchnl *evtchnl,
65 mutex_lock(&evtchnl->u.req.req_io_lock);
67 mutex_lock(&evtchnl->ring_io_lock);
68 req = be_stream_prepare_req(evtchnl, XENSND_OP_HW_PARAM_QUERY);
70 mutex_unlock(&evtchnl->ring_io_lock);
72 ret = be_stream_do_io(evtchnl);
75 ret = be_stream_wait_io(evtchnl);
78 *hw_param_resp = evtchnl->u.req.resp.hw_param;
80 mutex_unlock(&evtchnl->u.req.req_io_lock);
84 int xen_snd_front_stream_prepare(struct xen_snd_front_evtchnl *evtchnl,
93 mutex_lock(&evtchnl->u.req.req_io_lock);
95 mutex_lock(&evtchnl->ring_io_lock);
96 req = be_stream_prepare_req(evtchnl, XENSND_OP_OPEN);
104 mutex_unlock(&evtchnl->ring_io_lock);
106 ret = be_stream_do_io(evtchnl);
109 ret = be_stream_wait_io(evtchnl);
111 mutex_unlock(&evtchnl->u.req.req_io_lock);
115 int xen_snd_front_stream_close(struct xen_snd_front_evtchnl *evtchnl)
120 mutex_lock(&evtchnl->u.req.req_io_lock);
122 mutex_lock(&evtchnl->ring_io_lock);
123 req = be_stream_prepare_req(evtchnl, XENSND_OP_CLOSE);
124 mutex_unlock(&evtchnl->ring_io_lock);
126 ret = be_stream_do_io(evtchnl);
129 ret = be_stream_wait_io(evtchnl);
131 mutex_unlock(&evtchnl->u.req.req_io_lock);
135 int xen_snd_front_stream_write(struct xen_snd_front_evtchnl *evtchnl,
141 mutex_lock(&evtchnl->u.req.req_io_lock);
143 mutex_lock(&evtchnl->ring_io_lock);
144 req = be_stream_prepare_req(evtchnl, XENSND_OP_WRITE);
147 mutex_unlock(&evtchnl->ring_io_lock);
149 ret = be_stream_do_io(evtchnl);
152 ret = be_stream_wait_io(evtchnl);
154 mutex_unlock(&evtchnl->u.req.req_io_lock);
158 int xen_snd_front_stream_read(struct xen_snd_front_evtchnl *evtchnl,
164 mutex_lock(&evtchnl->u.req.req_io_lock);
166 mutex_lock(&evtchnl->ring_io_lock);
167 req = be_stream_prepare_req(evtchnl, XENSND_OP_READ);
170 mutex_unlock(&evtchnl->ring_io_lock);
172 ret = be_stream_do_io(evtchnl);
175 ret = be_stream_wait_io(evtchnl);
177 mutex_unlock(&evtchnl->u.req.req_io_lock);
181 int xen_snd_front_stream_trigger(struct xen_snd_front_evtchnl *evtchnl,
187 mutex_lock(&evtchnl->u.req.req_io_lock);
189 mutex_lock(&evtchnl->ring_io_lock);
190 req = be_stream_prepare_req(evtchnl, XENSND_OP_TRIGGER);
192 mutex_unlock(&evtchnl->ring_io_lock);
194 ret = be_stream_do_io(evtchnl);
197 ret = be_stream_wait_io(evtchnl);
199 mutex_unlock(&evtchnl->u.req.req_io_lock);