Lines Matching refs:device

292 static void dasd_eer_write_standard_trigger(struct dasd_device *device,  in dasd_eer_write_standard_trigger()  argument
315 strncpy(header.busid, dev_name(&device->cdev->dev), in dasd_eer_write_standard_trigger()
336 static void dasd_eer_write_snss_trigger(struct dasd_device *device, in dasd_eer_write_snss_trigger() argument
358 strncpy(header.busid, dev_name(&device->cdev->dev), in dasd_eer_write_snss_trigger()
377 void dasd_eer_write(struct dasd_device *device, struct dasd_ccw_req *cqr, in dasd_eer_write() argument
380 if (!device->eer_cqr) in dasd_eer_write()
385 dasd_eer_write_standard_trigger(device, cqr, id); in dasd_eer_write()
388 dasd_eer_write_standard_trigger(device, NULL, id); in dasd_eer_write()
391 dasd_eer_write_snss_trigger(device, cqr, id); in dasd_eer_write()
394 dasd_eer_write_standard_trigger(device, NULL, id); in dasd_eer_write()
404 void dasd_eer_snss(struct dasd_device *device) in dasd_eer_snss() argument
408 cqr = device->eer_cqr; in dasd_eer_snss()
411 if (test_and_set_bit(DASD_FLAG_EER_IN_USE, &device->flags)) { in dasd_eer_snss()
413 set_bit(DASD_FLAG_EER_SNSS, &device->flags); in dasd_eer_snss()
417 clear_bit(DASD_FLAG_EER_SNSS, &device->flags); in dasd_eer_snss()
419 list_add(&cqr->devlist, &device->ccw_queue); in dasd_eer_snss()
420 dasd_schedule_device_bh(device); in dasd_eer_snss()
428 struct dasd_device *device = cqr->startdev; in dasd_eer_snss_cb() local
431 dasd_eer_write(device, cqr, DASD_EER_STATECHANGE); in dasd_eer_snss_cb()
432 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_eer_snss_cb()
433 if (device->eer_cqr == cqr) { in dasd_eer_snss_cb()
434 clear_bit(DASD_FLAG_EER_IN_USE, &device->flags); in dasd_eer_snss_cb()
435 if (test_bit(DASD_FLAG_EER_SNSS, &device->flags)) in dasd_eer_snss_cb()
437 dasd_eer_snss(device); in dasd_eer_snss_cb()
440 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_eer_snss_cb()
449 dasd_kfree_request(cqr, device); in dasd_eer_snss_cb()
455 int dasd_eer_enable(struct dasd_device *device) in dasd_eer_enable() argument
461 if (device->eer_cqr) in dasd_eer_enable()
464 if (!device->discipline || strcmp(device->discipline->name, "ECKD")) in dasd_eer_enable()
468 SNSS_DATA_SIZE, device); in dasd_eer_enable()
472 cqr->startdev = device; in dasd_eer_enable()
488 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_eer_enable()
489 if (!device->eer_cqr) { in dasd_eer_enable()
490 device->eer_cqr = cqr; in dasd_eer_enable()
493 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_eer_enable()
495 dasd_kfree_request(cqr, device); in dasd_eer_enable()
502 void dasd_eer_disable(struct dasd_device *device) in dasd_eer_disable() argument
508 if (!device->eer_cqr) in dasd_eer_disable()
510 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_eer_disable()
511 cqr = device->eer_cqr; in dasd_eer_disable()
512 device->eer_cqr = NULL; in dasd_eer_disable()
513 clear_bit(DASD_FLAG_EER_SNSS, &device->flags); in dasd_eer_disable()
514 in_use = test_and_clear_bit(DASD_FLAG_EER_IN_USE, &device->flags); in dasd_eer_disable()
515 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_eer_disable()
517 dasd_kfree_request(cqr, device); in dasd_eer_disable()