Lines Matching refs:rq

144 	struct raw3270_request *rq;
147 rq = kzalloc(sizeof(*rq), GFP_KERNEL | GFP_DMA);
148 if (!rq)
153 rq->buffer = kmalloc(size, GFP_KERNEL | GFP_DMA);
154 if (!rq->buffer) {
155 kfree(rq);
159 rq->size = size;
160 INIT_LIST_HEAD(&rq->list);
165 if (rq->buffer)
166 rq->ccw.cda = virt_to_dma32(rq->buffer);
167 rq->ccw.flags = CCW_FLAG_SLI;
169 return rq;
176 void raw3270_request_free(struct raw3270_request *rq)
178 kfree(rq->buffer);
179 kfree(rq);
186 int raw3270_request_reset(struct raw3270_request *rq)
188 if (WARN_ON_ONCE(!list_empty(&rq->list)))
190 rq->ccw.cmd_code = 0;
191 rq->ccw.count = 0;
192 if (rq->buffer)
193 rq->ccw.cda = virt_to_dma32(rq->buffer);
194 rq->ccw.flags = CCW_FLAG_SLI;
195 rq->rescnt = 0;
196 rq->rc = 0;
204 void raw3270_request_set_cmd(struct raw3270_request *rq, u8 cmd)
206 rq->ccw.cmd_code = cmd;
213 int raw3270_request_add_data(struct raw3270_request *rq, void *data, size_t size)
215 if (size + rq->ccw.count > rq->size)
217 memcpy(rq->buffer + rq->ccw.count, data, size);
218 rq->ccw.count += size;
226 void raw3270_request_set_data(struct raw3270_request *rq, void *data, size_t size)
228 rq->ccw.cda = virt_to_dma32(data);
229 rq->ccw.count = size;
236 void raw3270_request_set_idal(struct raw3270_request *rq, struct idal_buffer *ib)
238 rq->ccw.cda = virt_to_dma32(ib->data);
239 rq->ccw.count = ib->size;
240 rq->ccw.flags |= CCW_FLAG_IDA;
249 struct raw3270_request *rq)
251 rq->view = view;
256 rq->rc = ccw_device_start(rp->cdev, &rq->ccw,
257 (unsigned long)rq, 0, 0);
258 if (rq->rc) {
260 return rq->rc;
263 list_add_tail(&rq->list, &rp->req_queue);
274 int raw3270_start(struct raw3270_view *view, struct raw3270_request *rq)
287 rc = __raw3270_start(rp, view, rq);
293 int raw3270_start_request(struct raw3270_view *view, struct raw3270_request *rq,
298 rc = raw3270_request_reset(rq);
301 raw3270_request_set_cmd(rq, cmd);
302 rc = raw3270_request_add_data(rq, data, len);
305 return raw3270_start(view, rq);
309 int raw3270_start_locked(struct raw3270_view *view, struct raw3270_request *rq)
320 rc = __raw3270_start(rp, view, rq);
325 int raw3270_start_irq(struct raw3270_view *view, struct raw3270_request *rq)
330 rq->view = view;
332 list_add_tail(&rq->list, &rp->req_queue);
344 struct raw3270_request *rq;
349 rq = (struct raw3270_request *)intparm;
350 view = rq ? rq->view : rp->view;
369 view->fn->intv(view, rq, irb);
376 if (rq && !list_empty(&rq->list)) {
378 list_del_init(&rq->list);
379 if (rq->callback)
380 rq->callback(rq, rq->callback_data);
390 rq = list_entry(rp->req_queue.next, struct raw3270_request, list);
391 rq->rc = ccw_device_start(rp->cdev, &rq->ccw,
392 (unsigned long)rq, 0, 0);
393 if (rq->rc == 0)
396 list_del_init(&rq->list);
397 if (rq->callback)
398 rq->callback(rq, rq->callback_data);
565 void raw3270_read_modified_cb(struct raw3270_request *rq, void *data)
567 struct raw3270 *rp = rq->view->dev;
612 static void raw3270_reset_device_cb(struct raw3270_request *rq, void *data)
614 struct raw3270 *rp = rq->view->dev;
618 if (rq->rc) {
679 struct raw3270_request *rq;
686 rq = list_entry(rp->req_queue.next, struct raw3270_request, list);
687 view = rq->view;
688 rq->rc = -EACCES;
689 list_del_init(&rq->list);
690 if (rq->callback)
691 rq->callback(rq, rq->callback_data);
698 static void raw3270_init_irq(struct raw3270_view *view, struct raw3270_request *rq,
703 if (rq) {
706 rq->rc = -EOPNOTSUPP;
708 rq->rc = -EIO;