Lines Matching refs:cdev

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