Lines Matching refs:edev
38 static bool ses_page2_supported(struct enclosure_device *edev) in ses_page2_supported() argument
40 struct ses_device *ses_dev = edev->scratch; in ses_page2_supported()
147 static int ses_set_page2_descriptor(struct enclosure_device *edev, in ses_set_page2_descriptor() argument
152 struct scsi_device *sdev = to_scsi_device(edev->edev.parent); in ses_set_page2_descriptor()
153 struct ses_device *ses_dev = edev->scratch; in ses_set_page2_descriptor()
178 static unsigned char *ses_get_page2_descriptor(struct enclosure_device *edev, in ses_get_page2_descriptor() argument
182 struct scsi_device *sdev = to_scsi_device(edev->edev.parent); in ses_get_page2_descriptor()
183 struct ses_device *ses_dev = edev->scratch; in ses_get_page2_descriptor()
207 static void ses_get_fault(struct enclosure_device *edev, in ses_get_fault() argument
212 if (!ses_page2_supported(edev)) { in ses_get_fault()
216 desc = ses_get_page2_descriptor(edev, ecomp); in ses_get_fault()
221 static int ses_set_fault(struct enclosure_device *edev, in ses_set_fault() argument
228 if (!ses_page2_supported(edev)) in ses_set_fault()
231 desc_ptr = ses_get_page2_descriptor(edev, ecomp); in ses_set_fault()
250 return ses_set_page2_descriptor(edev, ecomp, desc); in ses_set_fault()
253 static void ses_get_status(struct enclosure_device *edev, in ses_get_status() argument
258 if (!ses_page2_supported(edev)) { in ses_get_status()
262 desc = ses_get_page2_descriptor(edev, ecomp); in ses_get_status()
267 static void ses_get_locate(struct enclosure_device *edev, in ses_get_locate() argument
272 if (!ses_page2_supported(edev)) { in ses_get_locate()
276 desc = ses_get_page2_descriptor(edev, ecomp); in ses_get_locate()
281 static int ses_set_locate(struct enclosure_device *edev, in ses_set_locate() argument
288 if (!ses_page2_supported(edev)) in ses_set_locate()
291 desc_ptr = ses_get_page2_descriptor(edev, ecomp); in ses_set_locate()
309 return ses_set_page2_descriptor(edev, ecomp, desc); in ses_set_locate()
312 static int ses_set_active(struct enclosure_device *edev, in ses_set_active() argument
319 if (!ses_page2_supported(edev)) in ses_set_active()
322 desc_ptr = ses_get_page2_descriptor(edev, ecomp); in ses_set_active()
342 return ses_set_page2_descriptor(edev, ecomp, desc); in ses_set_active()
345 static int ses_show_id(struct enclosure_device *edev, char *buf) in ses_show_id() argument
347 struct ses_device *ses_dev = edev->scratch; in ses_show_id()
353 static void ses_get_power_status(struct enclosure_device *edev, in ses_get_power_status() argument
358 if (!ses_page2_supported(edev)) { in ses_get_power_status()
363 desc = ses_get_page2_descriptor(edev, ecomp); in ses_get_power_status()
368 static int ses_set_power_status(struct enclosure_device *edev, in ses_set_power_status() argument
375 if (!ses_page2_supported(edev)) in ses_set_power_status()
378 desc_ptr = ses_get_page2_descriptor(edev, ecomp); in ses_set_power_status()
397 return ses_set_page2_descriptor(edev, ecomp, desc); in ses_set_power_status()
414 struct enclosure_device *edev; member
418 int ses_match_host(struct enclosure_device *edev, void *data)
423 if (!scsi_is_sdev_device(edev->edev.parent))
426 sdev = to_scsi_device(edev->edev.parent);
431 sed->edev = edev;
487 static int ses_enclosure_find_by_addr(struct enclosure_device *edev, in ses_enclosure_find_by_addr() argument
494 if (!edev->component[0].scratch) in ses_enclosure_find_by_addr()
497 for (i = 0; i < edev->components; i++) { in ses_enclosure_find_by_addr()
498 scomp = edev->component[i].scratch; in ses_enclosure_find_by_addr()
502 if (enclosure_add_device(edev, i, efd->dev) == 0) in ses_enclosure_find_by_addr()
511 static void ses_enclosure_data_process(struct enclosure_device *edev, in ses_enclosure_data_process() argument
518 struct ses_device *ses_dev = edev->scratch; in ses_enclosure_data_process()
578 edev, in ses_enclosure_data_process()
583 ecomp = &edev->component[components++]; in ses_enclosure_data_process()
615 static void ses_match_to_enclosure(struct enclosure_device *edev, in ses_match_to_enclosure() argument
619 struct scsi_device *edev_sdev = to_scsi_device(edev->edev.parent); in ses_match_to_enclosure()
625 ses_enclosure_data_process(edev, edev_sdev, 0); in ses_match_to_enclosure()
648 struct enclosure_device *edev; in ses_intf_add() local
655 while ((edev = enclosure_find(&sdev->host->shost_gendev, prev)) != NULL) { in ses_intf_add()
656 ses_match_to_enclosure(edev, sdev, 1); in ses_intf_add()
657 prev = edev; in ses_intf_add()
752 edev = enclosure_register(cdev->parent, dev_name(&sdev->sdev_gendev), in ses_intf_add()
754 if (IS_ERR(edev)) { in ses_intf_add()
755 err = PTR_ERR(edev); in ses_intf_add()
761 edev->scratch = ses_dev; in ses_intf_add()
763 edev->component[i].scratch = scomp + i; in ses_intf_add()
765 ses_enclosure_data_process(edev, sdev, 1); in ses_intf_add()
772 ses_match_to_enclosure(edev, tmp_sdev, 0); in ses_intf_add()
801 struct enclosure_device *edev, *prev = NULL; in ses_intf_remove_component() local
803 while ((edev = enclosure_find(&sdev->host->shost_gendev, prev)) != NULL) { in ses_intf_remove_component()
804 prev = edev; in ses_intf_remove_component()
805 if (!enclosure_remove_device(edev, &sdev->sdev_gendev)) in ses_intf_remove_component()
808 if (edev) in ses_intf_remove_component()
809 put_device(&edev->edev); in ses_intf_remove_component()
814 struct enclosure_device *edev; in ses_intf_remove_enclosure() local
818 edev = enclosure_find(&sdev->sdev_gendev, NULL); in ses_intf_remove_enclosure()
819 if (!edev) in ses_intf_remove_enclosure()
822 ses_dev = edev->scratch; in ses_intf_remove_enclosure()
823 edev->scratch = NULL; in ses_intf_remove_enclosure()
830 kfree(edev->component[0].scratch); in ses_intf_remove_enclosure()
832 put_device(&edev->edev); in ses_intf_remove_enclosure()
833 enclosure_unregister(edev); in ses_intf_remove_enclosure()