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()
133 static int ses_set_page2_descriptor(struct enclosure_device *edev, in ses_set_page2_descriptor() argument
138 struct scsi_device *sdev = to_scsi_device(edev->edev.parent); in ses_set_page2_descriptor()
139 struct ses_device *ses_dev = edev->scratch; in ses_set_page2_descriptor()
164 static unsigned char *ses_get_page2_descriptor(struct enclosure_device *edev, in ses_get_page2_descriptor() argument
168 struct scsi_device *sdev = to_scsi_device(edev->edev.parent); in ses_get_page2_descriptor()
169 struct ses_device *ses_dev = edev->scratch; in ses_get_page2_descriptor()
193 static void ses_get_fault(struct enclosure_device *edev, in ses_get_fault() argument
198 if (!ses_page2_supported(edev)) { in ses_get_fault()
202 desc = ses_get_page2_descriptor(edev, ecomp); in ses_get_fault()
207 static int ses_set_fault(struct enclosure_device *edev, in ses_set_fault() argument
214 if (!ses_page2_supported(edev)) in ses_set_fault()
217 desc_ptr = ses_get_page2_descriptor(edev, ecomp); in ses_set_fault()
236 return ses_set_page2_descriptor(edev, ecomp, desc); in ses_set_fault()
239 static void ses_get_status(struct enclosure_device *edev, in ses_get_status() argument
244 if (!ses_page2_supported(edev)) { in ses_get_status()
248 desc = ses_get_page2_descriptor(edev, ecomp); in ses_get_status()
253 static void ses_get_locate(struct enclosure_device *edev, in ses_get_locate() argument
258 if (!ses_page2_supported(edev)) { in ses_get_locate()
262 desc = ses_get_page2_descriptor(edev, ecomp); in ses_get_locate()
267 static int ses_set_locate(struct enclosure_device *edev, in ses_set_locate() argument
274 if (!ses_page2_supported(edev)) in ses_set_locate()
277 desc_ptr = ses_get_page2_descriptor(edev, ecomp); in ses_set_locate()
295 return ses_set_page2_descriptor(edev, ecomp, desc); in ses_set_locate()
298 static int ses_set_active(struct enclosure_device *edev, in ses_set_active() argument
305 if (!ses_page2_supported(edev)) in ses_set_active()
308 desc_ptr = ses_get_page2_descriptor(edev, ecomp); in ses_set_active()
328 return ses_set_page2_descriptor(edev, ecomp, desc); in ses_set_active()
331 static int ses_show_id(struct enclosure_device *edev, char *buf) in ses_show_id() argument
333 struct ses_device *ses_dev = edev->scratch; in ses_show_id()
339 static void ses_get_power_status(struct enclosure_device *edev, in ses_get_power_status() argument
344 if (!ses_page2_supported(edev)) { in ses_get_power_status()
349 desc = ses_get_page2_descriptor(edev, ecomp); in ses_get_power_status()
354 static int ses_set_power_status(struct enclosure_device *edev, in ses_set_power_status() argument
361 if (!ses_page2_supported(edev)) in ses_set_power_status()
364 desc_ptr = ses_get_page2_descriptor(edev, ecomp); in ses_set_power_status()
383 return ses_set_page2_descriptor(edev, ecomp, desc); in ses_set_power_status()
400 struct enclosure_device *edev; member
404 int ses_match_host(struct enclosure_device *edev, void *data)
409 if (!scsi_is_sdev_device(edev->edev.parent))
412 sdev = to_scsi_device(edev->edev.parent);
417 sed->edev = edev;
473 static int ses_enclosure_find_by_addr(struct enclosure_device *edev, in ses_enclosure_find_by_addr() argument
480 if (!edev->component[0].scratch) in ses_enclosure_find_by_addr()
483 for (i = 0; i < edev->components; i++) { in ses_enclosure_find_by_addr()
484 scomp = edev->component[i].scratch; in ses_enclosure_find_by_addr()
488 if (enclosure_add_device(edev, i, efd->dev) == 0) in ses_enclosure_find_by_addr()
497 static void ses_enclosure_data_process(struct enclosure_device *edev, in ses_enclosure_data_process() argument
504 struct ses_device *ses_dev = edev->scratch; in ses_enclosure_data_process()
564 edev, in ses_enclosure_data_process()
569 ecomp = &edev->component[components++]; in ses_enclosure_data_process()
601 static void ses_match_to_enclosure(struct enclosure_device *edev, in ses_match_to_enclosure() argument
605 struct scsi_device *edev_sdev = to_scsi_device(edev->edev.parent); in ses_match_to_enclosure()
611 ses_enclosure_data_process(edev, edev_sdev, 0); in ses_match_to_enclosure()
634 struct enclosure_device *edev; in ses_intf_add() local
641 while ((edev = enclosure_find(&sdev->host->shost_gendev, prev)) != NULL) { in ses_intf_add()
642 ses_match_to_enclosure(edev, sdev, 1); in ses_intf_add()
643 prev = edev; in ses_intf_add()
738 edev = enclosure_register(cdev->parent, dev_name(&sdev->sdev_gendev), in ses_intf_add()
740 if (IS_ERR(edev)) { in ses_intf_add()
741 err = PTR_ERR(edev); in ses_intf_add()
747 edev->scratch = ses_dev; in ses_intf_add()
749 edev->component[i].scratch = scomp + i; in ses_intf_add()
751 ses_enclosure_data_process(edev, sdev, 1); in ses_intf_add()
758 ses_match_to_enclosure(edev, tmp_sdev, 0); in ses_intf_add()
787 struct enclosure_device *edev, *prev = NULL; in ses_intf_remove_component() local
789 while ((edev = enclosure_find(&sdev->host->shost_gendev, prev)) != NULL) { in ses_intf_remove_component()
790 prev = edev; in ses_intf_remove_component()
791 if (!enclosure_remove_device(edev, &sdev->sdev_gendev)) in ses_intf_remove_component()
794 if (edev) in ses_intf_remove_component()
795 put_device(&edev->edev); in ses_intf_remove_component()
800 struct enclosure_device *edev; in ses_intf_remove_enclosure() local
804 edev = enclosure_find(&sdev->sdev_gendev, NULL); in ses_intf_remove_enclosure()
805 if (!edev) in ses_intf_remove_enclosure()
808 ses_dev = edev->scratch; in ses_intf_remove_enclosure()
809 edev->scratch = NULL; in ses_intf_remove_enclosure()
816 kfree(edev->component[0].scratch); in ses_intf_remove_enclosure()
818 put_device(&edev->edev); in ses_intf_remove_enclosure()
819 enclosure_unregister(edev); in ses_intf_remove_enclosure()