Lines Matching refs:cdev

37 static void ccw_timeout_log(struct ccw_device *cdev)  in ccw_timeout_log()  argument
45 sch = to_subchannel(cdev->dev.parent); in ccw_timeout_log()
56 dev_name(&cdev->dev)); in ccw_timeout_log()
73 cdev->private->dma_area->iccws) in ccw_timeout_log()
84 cdev->private->state); in ccw_timeout_log()
91 &cdev->private->flags, sizeof(cdev->private->flags), 0); in ccw_timeout_log()
101 struct ccw_device *cdev = priv->cdev; in ccw_device_timeout() local
103 spin_lock_irq(cdev->ccwlock); in ccw_device_timeout()
105 ccw_timeout_log(cdev); in ccw_device_timeout()
106 dev_fsm_event(cdev, DEV_EVENT_TIMEOUT); in ccw_device_timeout()
107 spin_unlock_irq(cdev->ccwlock); in ccw_device_timeout()
114 ccw_device_set_timeout(struct ccw_device *cdev, int expires) in ccw_device_set_timeout() argument
117 del_timer(&cdev->private->timer); in ccw_device_set_timeout()
120 if (timer_pending(&cdev->private->timer)) { in ccw_device_set_timeout()
121 if (mod_timer(&cdev->private->timer, jiffies + expires)) in ccw_device_set_timeout()
124 cdev->private->timer.expires = jiffies + expires; in ccw_device_set_timeout()
125 add_timer(&cdev->private->timer); in ccw_device_set_timeout()
129 ccw_device_cancel_halt_clear(struct ccw_device *cdev) in ccw_device_cancel_halt_clear() argument
134 sch = to_subchannel(cdev->dev.parent); in ccw_device_cancel_halt_clear()
135 ret = cio_cancel_halt_clear(sch, &cdev->private->iretry); in ccw_device_cancel_halt_clear()
139 cdev->private->dev_id.ssid, in ccw_device_cancel_halt_clear()
140 cdev->private->dev_id.devno); in ccw_device_cancel_halt_clear()
145 void ccw_device_update_sense_data(struct ccw_device *cdev) in ccw_device_update_sense_data() argument
147 memset(&cdev->id, 0, sizeof(cdev->id)); in ccw_device_update_sense_data()
148 cdev->id.cu_type = cdev->private->dma_area->senseid.cu_type; in ccw_device_update_sense_data()
149 cdev->id.cu_model = cdev->private->dma_area->senseid.cu_model; in ccw_device_update_sense_data()
150 cdev->id.dev_type = cdev->private->dma_area->senseid.dev_type; in ccw_device_update_sense_data()
151 cdev->id.dev_model = cdev->private->dma_area->senseid.dev_model; in ccw_device_update_sense_data()
154 int ccw_device_test_sense_data(struct ccw_device *cdev) in ccw_device_test_sense_data() argument
156 return cdev->id.cu_type == in ccw_device_test_sense_data()
157 cdev->private->dma_area->senseid.cu_type && in ccw_device_test_sense_data()
158 cdev->id.cu_model == in ccw_device_test_sense_data()
159 cdev->private->dma_area->senseid.cu_model && in ccw_device_test_sense_data()
160 cdev->id.dev_type == in ccw_device_test_sense_data()
161 cdev->private->dma_area->senseid.dev_type && in ccw_device_test_sense_data()
162 cdev->id.dev_model == in ccw_device_test_sense_data()
163 cdev->private->dma_area->senseid.dev_model; in ccw_device_test_sense_data()
194 ccw_device_recog_done(struct ccw_device *cdev, int state) in ccw_device_recog_done() argument
199 sch = to_subchannel(cdev->dev.parent); in ccw_device_recog_done()
215 if (cdev->private->state == DEV_STATE_DISCONNECTED_SENSE_ID) in ccw_device_recog_done()
220 if (cdev->private->state == DEV_STATE_DISCONNECTED_SENSE_ID && in ccw_device_recog_done()
222 cdev->private->flags.recog_done = 1; in ccw_device_recog_done()
223 cdev->private->state = DEV_STATE_DISCONNECTED; in ccw_device_recog_done()
224 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
227 if (cdev->private->flags.resuming) { in ccw_device_recog_done()
228 cdev->private->state = state; in ccw_device_recog_done()
229 cdev->private->flags.recog_done = 1; in ccw_device_recog_done()
230 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
237 if (!cdev->online) { in ccw_device_recog_done()
238 ccw_device_update_sense_data(cdev); in ccw_device_recog_done()
241 cdev->private->state = DEV_STATE_OFFLINE; in ccw_device_recog_done()
242 cdev->private->flags.recog_done = 1; in ccw_device_recog_done()
243 if (ccw_device_test_sense_data(cdev)) { in ccw_device_recog_done()
244 cdev->private->flags.donotify = 1; in ccw_device_recog_done()
245 ccw_device_online(cdev); in ccw_device_recog_done()
246 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
248 ccw_device_update_sense_data(cdev); in ccw_device_recog_done()
249 ccw_device_sched_todo(cdev, CDEV_TODO_REBIND); in ccw_device_recog_done()
253 if (cdev->id.cu_type != 0) { /* device was recognized before */ in ccw_device_recog_done()
254 cdev->private->flags.recog_done = 1; in ccw_device_recog_done()
255 cdev->private->state = DEV_STATE_BOXED; in ccw_device_recog_done()
256 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
261 cdev->private->state = state; in ccw_device_recog_done()
262 io_subchannel_recog_done(cdev); in ccw_device_recog_done()
263 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
270 ccw_device_sense_id_done(struct ccw_device *cdev, int err) in ccw_device_sense_id_done() argument
274 ccw_device_recog_done(cdev, DEV_STATE_OFFLINE); in ccw_device_sense_id_done()
277 ccw_device_recog_done(cdev, DEV_STATE_BOXED); in ccw_device_sense_id_done()
280 ccw_device_recog_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_sense_id_done()
296 int ccw_device_notify(struct ccw_device *cdev, int event) in ccw_device_notify() argument
300 if (!cdev->drv) in ccw_device_notify()
302 if (!cdev->online) in ccw_device_notify()
305 cdev->private->dev_id.ssid, cdev->private->dev_id.devno, in ccw_device_notify()
307 if (!cdev->drv->notify) { in ccw_device_notify()
311 if (cdev->drv->notify(cdev, event)) in ccw_device_notify()
319 static void ccw_device_oper_notify(struct ccw_device *cdev) in ccw_device_oper_notify() argument
321 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_oper_notify()
323 if (ccw_device_notify(cdev, CIO_OPER) == NOTIFY_OK) { in ccw_device_oper_notify()
325 ccw_device_sched_todo(cdev, CDEV_TODO_ENABLE_CMF); in ccw_device_oper_notify()
327 cdev->private->path_new_mask = sch->vpm; in ccw_device_oper_notify()
331 ccw_device_set_notoper(cdev); in ccw_device_oper_notify()
332 ccw_device_sched_todo(cdev, CDEV_TODO_REBIND); in ccw_device_oper_notify()
339 ccw_device_done(struct ccw_device *cdev, int state) in ccw_device_done() argument
343 sch = to_subchannel(cdev->dev.parent); in ccw_device_done()
345 ccw_device_set_timeout(cdev, 0); in ccw_device_done()
351 memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); in ccw_device_done()
353 cdev->private->state = state; in ccw_device_done()
358 cdev->private->dev_id.devno, sch->schid.sch_no); in ccw_device_done()
359 if (cdev->online && in ccw_device_done()
360 ccw_device_notify(cdev, CIO_BOXED) != NOTIFY_OK) in ccw_device_done()
361 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); in ccw_device_done()
362 cdev->private->flags.donotify = 0; in ccw_device_done()
366 cdev->private->dev_id.devno, sch->schid.sch_no); in ccw_device_done()
367 if (ccw_device_notify(cdev, CIO_GONE) != NOTIFY_OK) in ccw_device_done()
368 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); in ccw_device_done()
370 ccw_device_set_disconnected(cdev); in ccw_device_done()
371 cdev->private->flags.donotify = 0; in ccw_device_done()
375 "%04x\n", cdev->private->dev_id.devno, in ccw_device_done()
377 if (ccw_device_notify(cdev, CIO_NO_PATH) != NOTIFY_OK) { in ccw_device_done()
378 cdev->private->state = DEV_STATE_NOT_OPER; in ccw_device_done()
379 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); in ccw_device_done()
381 ccw_device_set_disconnected(cdev); in ccw_device_done()
382 cdev->private->flags.donotify = 0; in ccw_device_done()
388 if (cdev->private->flags.donotify) { in ccw_device_done()
389 cdev->private->flags.donotify = 0; in ccw_device_done()
390 ccw_device_oper_notify(cdev); in ccw_device_done()
392 wake_up(&cdev->private->wait_q); in ccw_device_done()
398 void ccw_device_recognition(struct ccw_device *cdev) in ccw_device_recognition() argument
400 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_recognition()
410 cdev->private->flags.recog_done = 0; in ccw_device_recognition()
411 cdev->private->state = DEV_STATE_SENSE_ID; in ccw_device_recognition()
413 ccw_device_recog_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_recognition()
416 ccw_device_sense_id_start(cdev); in ccw_device_recognition()
422 static void ccw_device_request_event(struct ccw_device *cdev, enum dev_event e) in ccw_device_request_event() argument
426 ccw_request_notoper(cdev); in ccw_device_request_event()
429 ccw_request_handler(cdev); in ccw_device_request_event()
432 ccw_request_timeout(cdev); in ccw_device_request_event()
439 static void ccw_device_report_path_events(struct ccw_device *cdev) in ccw_device_report_path_events() argument
441 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_report_path_events()
447 if (mask & cdev->private->path_gone_mask & ~(sch->vpm)) in ccw_device_report_path_events()
449 if (mask & cdev->private->path_new_mask & sch->vpm) in ccw_device_report_path_events()
451 if (mask & cdev->private->pgid_reset_mask & sch->vpm) in ccw_device_report_path_events()
454 if (cdev->online && cdev->drv->path_event) in ccw_device_report_path_events()
455 cdev->drv->path_event(cdev, path_event); in ccw_device_report_path_events()
458 static void ccw_device_reset_path_events(struct ccw_device *cdev) in ccw_device_reset_path_events() argument
460 cdev->private->path_gone_mask = 0; in ccw_device_reset_path_events()
461 cdev->private->path_new_mask = 0; in ccw_device_reset_path_events()
462 cdev->private->pgid_reset_mask = 0; in ccw_device_reset_path_events()
484 static void ccw_device_handle_broken_paths(struct ccw_device *cdev) in ccw_device_handle_broken_paths() argument
486 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_handle_broken_paths()
489 if (broken_paths && (cdev->private->path_broken_mask != broken_paths)) in ccw_device_handle_broken_paths()
492 cdev->private->path_broken_mask = broken_paths; in ccw_device_handle_broken_paths()
495 void ccw_device_verify_done(struct ccw_device *cdev, int err) in ccw_device_verify_done() argument
499 sch = to_subchannel(cdev->dev.parent); in ccw_device_verify_done()
508 if (cdev->private->flags.doverify) { in ccw_device_verify_done()
509 ccw_device_verify_start(cdev); in ccw_device_verify_done()
515 ccw_device_done(cdev, DEV_STATE_ONLINE); in ccw_device_verify_done()
517 if (cdev->private->flags.fake_irb) { in ccw_device_verify_done()
518 create_fake_irb(&cdev->private->dma_area->irb, in ccw_device_verify_done()
519 cdev->private->flags.fake_irb); in ccw_device_verify_done()
520 cdev->private->flags.fake_irb = 0; in ccw_device_verify_done()
521 if (cdev->handler) in ccw_device_verify_done()
522 cdev->handler(cdev, cdev->private->intparm, in ccw_device_verify_done()
523 &cdev->private->dma_area->irb); in ccw_device_verify_done()
524 memset(&cdev->private->dma_area->irb, 0, in ccw_device_verify_done()
527 ccw_device_report_path_events(cdev); in ccw_device_verify_done()
528 ccw_device_handle_broken_paths(cdev); in ccw_device_verify_done()
533 cdev->private->flags.donotify = 0; in ccw_device_verify_done()
534 ccw_device_done(cdev, DEV_STATE_BOXED); in ccw_device_verify_done()
538 cdev->private->flags.donotify = 0; in ccw_device_verify_done()
539 ccw_device_done(cdev, DEV_STATE_DISCONNECTED); in ccw_device_verify_done()
543 cdev->private->flags.donotify = 0; in ccw_device_verify_done()
544 ccw_device_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_verify_done()
547 ccw_device_reset_path_events(cdev); in ccw_device_verify_done()
554 ccw_device_online(struct ccw_device *cdev) in ccw_device_online() argument
559 if ((cdev->private->state != DEV_STATE_OFFLINE) && in ccw_device_online()
560 (cdev->private->state != DEV_STATE_BOXED)) in ccw_device_online()
562 sch = to_subchannel(cdev->dev.parent); in ccw_device_online()
567 dev_fsm_event(cdev, DEV_EVENT_NOTOPER); in ccw_device_online()
571 cdev->private->state = DEV_STATE_VERIFY; in ccw_device_online()
572 ccw_device_verify_start(cdev); in ccw_device_online()
577 ccw_device_disband_done(struct ccw_device *cdev, int err) in ccw_device_disband_done() argument
581 ccw_device_done(cdev, DEV_STATE_OFFLINE); in ccw_device_disband_done()
584 ccw_device_done(cdev, DEV_STATE_BOXED); in ccw_device_disband_done()
587 cdev->private->flags.donotify = 0; in ccw_device_disband_done()
588 ccw_device_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_disband_done()
597 ccw_device_offline(struct ccw_device *cdev) in ccw_device_offline() argument
602 if (cdev->private->state == DEV_STATE_DISCONNECTED || in ccw_device_offline()
603 cdev->private->state == DEV_STATE_NOT_OPER) { in ccw_device_offline()
604 cdev->private->flags.donotify = 0; in ccw_device_offline()
605 ccw_device_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_offline()
608 if (cdev->private->state == DEV_STATE_BOXED) { in ccw_device_offline()
609 ccw_device_done(cdev, DEV_STATE_BOXED); in ccw_device_offline()
612 if (ccw_device_is_orphan(cdev)) { in ccw_device_offline()
613 ccw_device_done(cdev, DEV_STATE_OFFLINE); in ccw_device_offline()
616 sch = to_subchannel(cdev->dev.parent); in ccw_device_offline()
621 if (cdev->private->state != DEV_STATE_ONLINE) in ccw_device_offline()
624 if (!cdev->private->flags.pgroup) { in ccw_device_offline()
626 ccw_device_done(cdev, DEV_STATE_OFFLINE); in ccw_device_offline()
630 cdev->private->state = DEV_STATE_DISBAND_PGID; in ccw_device_offline()
631 ccw_device_disband_start(cdev); in ccw_device_offline()
638 static void ccw_device_generic_notoper(struct ccw_device *cdev, in ccw_device_generic_notoper() argument
641 if (ccw_device_notify(cdev, CIO_GONE) != NOTIFY_OK) in ccw_device_generic_notoper()
642 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); in ccw_device_generic_notoper()
644 ccw_device_set_disconnected(cdev); in ccw_device_generic_notoper()
650 static void ccw_device_offline_verify(struct ccw_device *cdev, in ccw_device_offline_verify() argument
653 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_offline_verify()
662 ccw_device_online_verify(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_online_verify() argument
666 if (cdev->private->state == DEV_STATE_W4SENSE) { in ccw_device_online_verify()
667 cdev->private->flags.doverify = 1; in ccw_device_online_verify()
670 sch = to_subchannel(cdev->dev.parent); in ccw_device_online_verify()
676 ccw_device_verify_done(cdev, -ENODEV); in ccw_device_online_verify()
682 (scsw_stctl(&cdev->private->dma_area->irb.scsw) & in ccw_device_online_verify()
689 cdev->private->flags.doverify = 1; in ccw_device_online_verify()
693 cdev->private->state = DEV_STATE_VERIFY; in ccw_device_online_verify()
694 ccw_device_verify_start(cdev); in ccw_device_online_verify()
700 static void ccw_device_boxed_verify(struct ccw_device *cdev, in ccw_device_boxed_verify() argument
703 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_boxed_verify()
705 if (cdev->online) { in ccw_device_boxed_verify()
707 ccw_device_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_boxed_verify()
709 ccw_device_online_verify(cdev, dev_event); in ccw_device_boxed_verify()
717 static int ccw_device_call_handler(struct ccw_device *cdev) in ccw_device_call_handler() argument
730 stctl = scsw_stctl(&cdev->private->dma_area->irb.scsw); in ccw_device_call_handler()
735 !cdev->private->options.repall && in ccw_device_call_handler()
737 !(cdev->private->options.fast && in ccw_device_call_handler()
742 ccw_device_set_timeout(cdev, 0); in ccw_device_call_handler()
744 if (cdev->handler) in ccw_device_call_handler()
745 cdev->handler(cdev, cdev->private->intparm, in ccw_device_call_handler()
746 &cdev->private->dma_area->irb); in ccw_device_call_handler()
748 memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); in ccw_device_call_handler()
756 ccw_device_irq(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_irq() argument
768 if (ccw_device_do_sense(cdev, irb) != 0) in ccw_device_irq()
770 memcpy(&cdev->private->dma_area->irb, irb, in ccw_device_irq()
772 cdev->private->state = DEV_STATE_W4SENSE; in ccw_device_irq()
773 cdev->private->intparm = 0; in ccw_device_irq()
777 if (cdev->handler) in ccw_device_irq()
778 cdev->handler (cdev, 0, irb); in ccw_device_irq()
779 if (cdev->private->flags.doverify) in ccw_device_irq()
780 ccw_device_online_verify(cdev, 0); in ccw_device_irq()
784 ccw_device_accumulate_irb(cdev, irb); in ccw_device_irq()
785 if (is_cmd && cdev->private->flags.dosense) { in ccw_device_irq()
786 if (ccw_device_do_sense(cdev, irb) == 0) { in ccw_device_irq()
787 cdev->private->state = DEV_STATE_W4SENSE; in ccw_device_irq()
792 if (ccw_device_call_handler(cdev) && cdev->private->flags.doverify) in ccw_device_irq()
794 ccw_device_online_verify(cdev, 0); in ccw_device_irq()
801 ccw_device_online_timeout(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_online_timeout() argument
805 ccw_device_set_timeout(cdev, 0); in ccw_device_online_timeout()
806 cdev->private->iretry = 255; in ccw_device_online_timeout()
807 cdev->private->async_kill_io_rc = -ETIMEDOUT; in ccw_device_online_timeout()
808 ret = ccw_device_cancel_halt_clear(cdev); in ccw_device_online_timeout()
810 ccw_device_set_timeout(cdev, 3*HZ); in ccw_device_online_timeout()
811 cdev->private->state = DEV_STATE_TIMEOUT_KILL; in ccw_device_online_timeout()
815 dev_fsm_event(cdev, DEV_EVENT_NOTOPER); in ccw_device_online_timeout()
816 else if (cdev->handler) in ccw_device_online_timeout()
817 cdev->handler(cdev, cdev->private->intparm, in ccw_device_online_timeout()
825 ccw_device_w4sense(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_w4sense() argument
835 ccw_device_do_sense(cdev, irb); in ccw_device_w4sense()
839 cdev->private->dev_id.ssid, in ccw_device_w4sense()
840 cdev->private->dev_id.devno); in ccw_device_w4sense()
841 if (cdev->handler) in ccw_device_w4sense()
842 cdev->handler (cdev, 0, irb); in ccw_device_w4sense()
853 cdev->private->flags.dosense = 0; in ccw_device_w4sense()
854 memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); in ccw_device_w4sense()
855 ccw_device_accumulate_irb(cdev, irb); in ccw_device_w4sense()
859 ccw_device_accumulate_basic_sense(cdev, irb); in ccw_device_w4sense()
860 if (cdev->private->flags.dosense) { in ccw_device_w4sense()
862 ccw_device_do_sense(cdev, irb); in ccw_device_w4sense()
866 cdev->private->state = DEV_STATE_ONLINE; in ccw_device_w4sense()
868 wake_up(&cdev->private->wait_q); in ccw_device_w4sense()
870 if (ccw_device_call_handler(cdev) && cdev->private->flags.doverify) in ccw_device_w4sense()
872 ccw_device_online_verify(cdev, 0); in ccw_device_w4sense()
876 ccw_device_killing_irq(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_killing_irq() argument
878 ccw_device_set_timeout(cdev, 0); in ccw_device_killing_irq()
880 ccw_device_online_verify(cdev, 0); in ccw_device_killing_irq()
882 if (cdev->handler) in ccw_device_killing_irq()
883 cdev->handler(cdev, cdev->private->intparm, in ccw_device_killing_irq()
884 ERR_PTR(cdev->private->async_kill_io_rc)); in ccw_device_killing_irq()
888 ccw_device_killing_timeout(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_killing_timeout() argument
892 ret = ccw_device_cancel_halt_clear(cdev); in ccw_device_killing_timeout()
894 ccw_device_set_timeout(cdev, 3*HZ); in ccw_device_killing_timeout()
898 ccw_device_online_verify(cdev, 0); in ccw_device_killing_timeout()
899 if (cdev->handler) in ccw_device_killing_timeout()
900 cdev->handler(cdev, cdev->private->intparm, in ccw_device_killing_timeout()
901 ERR_PTR(cdev->private->async_kill_io_rc)); in ccw_device_killing_timeout()
904 void ccw_device_kill_io(struct ccw_device *cdev) in ccw_device_kill_io() argument
908 ccw_device_set_timeout(cdev, 0); in ccw_device_kill_io()
909 cdev->private->iretry = 255; in ccw_device_kill_io()
910 cdev->private->async_kill_io_rc = -EIO; in ccw_device_kill_io()
911 ret = ccw_device_cancel_halt_clear(cdev); in ccw_device_kill_io()
913 ccw_device_set_timeout(cdev, 3*HZ); in ccw_device_kill_io()
914 cdev->private->state = DEV_STATE_TIMEOUT_KILL; in ccw_device_kill_io()
918 ccw_device_online_verify(cdev, 0); in ccw_device_kill_io()
919 if (cdev->handler) in ccw_device_kill_io()
920 cdev->handler(cdev, cdev->private->intparm, in ccw_device_kill_io()
925 ccw_device_delay_verify(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_delay_verify() argument
928 cdev->private->flags.doverify = 1; in ccw_device_delay_verify()
932 ccw_device_start_id(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_start_id() argument
936 sch = to_subchannel(cdev->dev.parent); in ccw_device_start_id()
940 cdev->private->state = DEV_STATE_DISCONNECTED_SENSE_ID; in ccw_device_start_id()
941 ccw_device_sense_id_start(cdev); in ccw_device_start_id()
944 void ccw_device_trigger_reprobe(struct ccw_device *cdev) in ccw_device_trigger_reprobe() argument
948 if (cdev->private->state != DEV_STATE_DISCONNECTED) in ccw_device_trigger_reprobe()
951 sch = to_subchannel(cdev->dev.parent); in ccw_device_trigger_reprobe()
970 if (sch->schib.pmcw.dev != cdev->private->dev_id.devno) in ccw_device_trigger_reprobe()
973 ccw_device_start_id(cdev, 0); in ccw_device_trigger_reprobe()
976 static void ccw_device_disabled_irq(struct ccw_device *cdev, in ccw_device_disabled_irq() argument
981 sch = to_subchannel(cdev->dev.parent); in ccw_device_disabled_irq()
990 ccw_device_change_cmfstate(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_change_cmfstate() argument
992 retry_set_schib(cdev); in ccw_device_change_cmfstate()
993 cdev->private->state = DEV_STATE_ONLINE; in ccw_device_change_cmfstate()
994 dev_fsm_event(cdev, dev_event); in ccw_device_change_cmfstate()
997 static void ccw_device_update_cmfblock(struct ccw_device *cdev, in ccw_device_update_cmfblock() argument
1000 cmf_retry_copy_block(cdev); in ccw_device_update_cmfblock()
1001 cdev->private->state = DEV_STATE_ONLINE; in ccw_device_update_cmfblock()
1002 dev_fsm_event(cdev, dev_event); in ccw_device_update_cmfblock()
1006 ccw_device_quiesce_done(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_quiesce_done() argument
1008 ccw_device_set_timeout(cdev, 0); in ccw_device_quiesce_done()
1009 cdev->private->state = DEV_STATE_NOT_OPER; in ccw_device_quiesce_done()
1010 wake_up(&cdev->private->wait_q); in ccw_device_quiesce_done()
1014 ccw_device_quiesce_timeout(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_quiesce_timeout() argument
1018 ret = ccw_device_cancel_halt_clear(cdev); in ccw_device_quiesce_timeout()
1020 ccw_device_set_timeout(cdev, HZ/10); in ccw_device_quiesce_timeout()
1022 cdev->private->state = DEV_STATE_NOT_OPER; in ccw_device_quiesce_timeout()
1023 wake_up(&cdev->private->wait_q); in ccw_device_quiesce_timeout()
1032 ccw_device_nop(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_nop() argument