Lines Matching refs:cdev

41 static u16 ccwreq_next_path(struct ccw_device *cdev)
43 struct ccw_request *req = &cdev->private->req;
58 static void ccwreq_stop(struct ccw_device *cdev, int rc)
60 struct ccw_request *req = &cdev->private->req;
65 ccw_device_set_timeout(cdev, 0);
66 memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb));
69 req->callback(cdev, req->data, rc);
75 static void ccwreq_do(struct ccw_device *cdev)
77 struct ccw_request *req = &cdev->private->req;
78 struct subchannel *sch = to_subchannel(cdev->dev.parent);
85 ccwreq_next_path(cdev);
89 memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb));
93 ccw_device_set_timeout(cdev, req->timeout);
102 ccwreq_next_path(cdev);
111 ccwreq_stop(cdev, rc);
116 * @cdev: ccw device
118 * Perform the I/O request specified by cdev->req.
120 void ccw_request_start(struct ccw_device *cdev)
122 struct ccw_request *req = &cdev->private->req;
137 ccwreq_do(cdev);
141 ccwreq_stop(cdev, -EACCES);
146 * @cdev: ccw device
148 * Cancel the I/O request specified by cdev->req. Return non-zero if request
151 int ccw_request_cancel(struct ccw_device *cdev)
153 struct subchannel *sch = to_subchannel(cdev->dev.parent);
154 struct ccw_request *req = &cdev->private->req;
162 ccwreq_stop(cdev, rc);
170 static enum io_status ccwreq_status(struct ccw_device *cdev, struct irb *lcirb)
172 struct irb *irb = &cdev->private->dma_area->irb;
177 if (ccw_device_accumulate_and_sense(cdev, lcirb))
188 CIO_HEX_EVENT(2, &cdev->private->dev_id,
190 CIO_HEX_EVENT(2, &cdev->private->dma_area->irb.ecw,
196 if (cdev->drv && cdev->drv->uc_handler) {
197 todo = cdev->drv->uc_handler(cdev, lcirb);
232 static void ccwreq_log_status(struct ccw_device *cdev, enum io_status status)
234 struct ccw_request *req = &cdev->private->req;
241 data.dev_id = cdev->private->dev_id;
251 * @cdev: ccw device
255 void ccw_request_handler(struct ccw_device *cdev)
258 struct ccw_request *req = &cdev->private->req;
263 status = ccwreq_status(cdev, irb);
265 status = req->filter(cdev, req->data, irb, status);
267 ccw_device_set_timeout(cdev, 0);
269 ccwreq_log_status(cdev, status);
292 switch (req->check(cdev, req->data)) {
303 ccwreq_stop(cdev, 0);
308 if (!ccwreq_next_path(cdev)) {
314 ccwreq_do(cdev);
317 ccwreq_stop(cdev, rc);
323 * @cdev: ccw device
327 void ccw_request_timeout(struct ccw_device *cdev)
329 struct subchannel *sch = to_subchannel(cdev->dev.parent);
330 struct ccw_request *req = &cdev->private->req;
339 dev_name(&cdev->dev), req->timeout / HZ,
346 if (!ccwreq_next_path(cdev)) {
356 ccwreq_stop(cdev, rc);
361 * @cdev: ccw device
365 void ccw_request_notoper(struct ccw_device *cdev)
367 ccwreq_stop(cdev, -ENODEV);