Lines Matching refs:dp
43 .dp = {
73 struct efi_device_path *efi_dp_next(const struct efi_device_path *dp) in efi_dp_next() argument
75 if (dp == NULL) in efi_dp_next()
77 if (dp->type == DEVICE_PATH_TYPE_END) in efi_dp_next()
79 dp = ((void *)dp) + dp->length; in efi_dp_next()
80 if (dp->type == DEVICE_PATH_TYPE_END) in efi_dp_next()
82 return (struct efi_device_path *)dp; in efi_dp_next()
127 struct efi_device_path *efi_dp_shorten(struct efi_device_path *dp) in efi_dp_shorten() argument
129 while (dp) { in efi_dp_shorten()
130 if (EFI_DP_TYPE(dp, MESSAGING_DEVICE, MSG_USB_WWI) || in efi_dp_shorten()
131 EFI_DP_TYPE(dp, MEDIA_DEVICE, HARD_DRIVE_PATH) || in efi_dp_shorten()
132 EFI_DP_TYPE(dp, MEDIA_DEVICE, FILE_PATH)) in efi_dp_shorten()
133 return dp; in efi_dp_shorten()
135 dp = efi_dp_next(dp); in efi_dp_shorten()
138 return dp; in efi_dp_shorten()
152 static efi_handle_t find_handle(struct efi_device_path *dp, in find_handle() argument
159 len = efi_dp_instance_size(dp); in find_handle()
190 if (memcmp(dp_current, dp, len_current)) in find_handle()
197 *rem = (void*)((u8 *)dp + len_current); in find_handle()
213 efi_handle_t efi_dp_find_obj(struct efi_device_path *dp, in efi_dp_find_obj() argument
219 handle = find_handle(dp, guid, false, rem); in efi_dp_find_obj()
222 handle = find_handle(dp, guid, true, rem); in efi_dp_find_obj()
234 const struct efi_device_path *efi_dp_last_node(const struct efi_device_path *dp) in efi_dp_last_node() argument
238 if (!dp || dp->type == DEVICE_PATH_TYPE_END) in efi_dp_last_node()
240 while (dp) { in efi_dp_last_node()
241 ret = (struct efi_device_path *)dp; in efi_dp_last_node()
242 dp = efi_dp_next(dp); in efi_dp_last_node()
248 efi_uintn_t efi_dp_instance_size(const struct efi_device_path *dp) in efi_dp_instance_size() argument
252 if (!dp || dp->type == DEVICE_PATH_TYPE_END) in efi_dp_instance_size()
254 while (dp) { in efi_dp_instance_size()
255 sz += dp->length; in efi_dp_instance_size()
256 dp = efi_dp_next(dp); in efi_dp_instance_size()
263 efi_uintn_t efi_dp_size(const struct efi_device_path *dp) in efi_dp_size() argument
265 const struct efi_device_path *p = dp; in efi_dp_size()
273 return (void *)p - (void *)dp; in efi_dp_size()
277 struct efi_device_path *efi_dp_dup(const struct efi_device_path *dp) in efi_dp_dup() argument
280 size_t sz = efi_dp_size(dp) + sizeof(END); in efi_dp_dup()
282 if (!dp) in efi_dp_dup()
288 memcpy(ndp, dp, sz); in efi_dp_dup()
381 struct efi_device_path *efi_dp_append_node(const struct efi_device_path *dp, in efi_dp_append_node() argument
386 if (!node && !dp) { in efi_dp_append_node()
389 ret = efi_dp_dup(dp); in efi_dp_append_node()
390 } else if (!dp) { in efi_dp_append_node()
400 size_t sz = efi_dp_size(dp); in efi_dp_append_node()
404 memcpy(p, dp, sz); in efi_dp_append_node()
432 const struct efi_device_path *dp, in efi_dp_append_instance() argument
440 if (!dp) in efi_dp_append_instance()
442 sz = efi_dp_size(dp); in efi_dp_append_instance()
448 memcpy(p, dp, sz + sizeof(END)); in efi_dp_append_instance()
458 struct efi_device_path *efi_dp_get_next_instance(struct efi_device_path **dp, in efi_dp_get_next_instance() argument
466 if (!dp || !*dp) in efi_dp_get_next_instance()
468 sz = efi_dp_instance_size(*dp); in efi_dp_get_next_instance()
472 memcpy(p, *dp, sz + sizeof(END)); in efi_dp_get_next_instance()
473 *dp = (void *)*dp + sz; in efi_dp_get_next_instance()
474 if ((*dp)->sub_type == DEVICE_PATH_SUB_TYPE_INSTANCE_END) in efi_dp_get_next_instance()
475 *dp = (void *)*dp + sizeof(END); in efi_dp_get_next_instance()
477 *dp = NULL; in efi_dp_get_next_instance()
483 bool efi_dp_is_multi_instance(const struct efi_device_path *dp) in efi_dp_is_multi_instance() argument
485 const struct efi_device_path *p = dp; in efi_dp_is_multi_instance()
612 struct efi_device_path_mac_addr *dp = in dp_fill() local
616 dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in dp_fill()
617 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR; in dp_fill()
618 dp->dp.length = sizeof(*dp); in dp_fill()
619 memset(&dp->mac, 0, sizeof(dp->mac)); in dp_fill()
621 memcpy(&dp->mac, &pdata->enetaddr, ARP_HLEN); in dp_fill()
623 dp->if_type = 1; in dp_fill()
624 return &dp[1]; in dp_fill()
631 struct efi_device_path_vendor *dp; in dp_fill() local
635 dp = buf; in dp_fill()
636 ++dp; in dp_fill()
637 dp->dp.type = DEVICE_PATH_TYPE_HARDWARE_DEVICE; in dp_fill()
638 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_VENDOR; in dp_fill()
639 dp->dp.length = sizeof(*dp) + 1; in dp_fill()
640 memcpy(&dp->guid, &efi_guid_blkmap_dev, in dp_fill()
642 dp->vendor_data[0] = desc->devnum; in dp_fill()
643 return &dp->vendor_data[1]; in dp_fill()
649 struct efi_device_path_vendor *dp; in dp_fill() local
653 dp = buf; in dp_fill()
654 ++dp; in dp_fill()
655 dp->dp.type = DEVICE_PATH_TYPE_HARDWARE_DEVICE; in dp_fill()
656 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_VENDOR; in dp_fill()
657 dp->dp.length = sizeof(*dp) + 1; in dp_fill()
658 memcpy(&dp->guid, &efi_guid_host_dev, in dp_fill()
660 dp->vendor_data[0] = desc->devnum; in dp_fill()
661 return &dp->vendor_data[1]; in dp_fill()
666 struct efi_device_path_vendor *dp; in dp_fill() local
670 dp = buf; in dp_fill()
671 ++dp; in dp_fill()
672 dp->dp.type = DEVICE_PATH_TYPE_HARDWARE_DEVICE; in dp_fill()
673 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_VENDOR; in dp_fill()
674 dp->dp.length = sizeof(*dp) + 1; in dp_fill()
675 memcpy(&dp->guid, &efi_guid_virtio_dev, in dp_fill()
677 dp->vendor_data[0] = desc->devnum; in dp_fill()
678 return &dp->vendor_data[1]; in dp_fill()
683 struct efi_device_path_atapi *dp = in dp_fill() local
687 dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in dp_fill()
688 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_ATAPI; in dp_fill()
689 dp->dp.length = sizeof(*dp); in dp_fill()
690 dp->logical_unit_number = desc->devnum; in dp_fill()
691 dp->primary_secondary = IDE_BUS(desc->devnum); in dp_fill()
692 dp->slave_master = desc->devnum % in dp_fill()
695 return &dp[1]; in dp_fill()
700 struct efi_device_path_scsi *dp = in dp_fill() local
704 dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in dp_fill()
705 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_SCSI; in dp_fill()
706 dp->dp.length = sizeof(*dp); in dp_fill()
707 dp->logical_unit_number = desc->lun; in dp_fill()
708 dp->target_id = desc->target; in dp_fill()
709 return &dp[1]; in dp_fill()
718 sddp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in dp_fill()
719 sddp->dp.sub_type = is_sd(desc) ? in dp_fill()
722 sddp->dp.length = sizeof(*sddp); in dp_fill()
729 struct efi_device_path_sata *dp = in dp_fill() local
733 dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in dp_fill()
734 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_SATA; in dp_fill()
735 dp->dp.length = sizeof(*dp); in dp_fill()
736 dp->hba_port = desc->devnum; in dp_fill()
738 dp->port_multiplier_port = 0xffff; in dp_fill()
739 dp->logical_unit_number = desc->lun; in dp_fill()
740 return &dp[1]; in dp_fill()
745 struct efi_device_path_nvme *dp = in dp_fill() local
749 dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in dp_fill()
750 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_NVME; in dp_fill()
751 dp->dp.length = sizeof(*dp); in dp_fill()
752 nvme_get_namespace_id(dev, &ns_id, dp->eui64); in dp_fill()
753 memcpy(&dp->ns_id, &ns_id, sizeof(ns_id)); in dp_fill()
754 return &dp[1]; in dp_fill()
760 struct efi_device_path_controller *dp = in dp_fill() local
763 dp->dp.type = DEVICE_PATH_TYPE_HARDWARE_DEVICE; in dp_fill()
764 dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_CONTROLLER; in dp_fill()
765 dp->dp.length = sizeof(*dp); in dp_fill()
766 dp->controller_number = desc->lun; in dp_fill()
767 return &dp[1]; in dp_fill()
783 sddp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in dp_fill()
784 sddp->dp.sub_type = is_sd(desc) ? in dp_fill()
787 sddp->dp.length = sizeof(*sddp); in dp_fill()
807 udp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in dp_fill()
808 udp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_USB; in dp_fill()
809 udp->dp.length = sizeof(*udp); in dp_fill()
862 cddp->dp.type = DEVICE_PATH_TYPE_MEDIA_DEVICE; in dp_part_node()
863 cddp->dp.sub_type = DEVICE_PATH_SUB_TYPE_CDROM_PATH; in dp_part_node()
864 cddp->dp.length = sizeof(*cddp); in dp_part_node()
872 hddp->dp.type = DEVICE_PATH_TYPE_MEDIA_DEVICE; in dp_part_node()
873 hddp->dp.sub_type = DEVICE_PATH_SUB_TYPE_HARD_DRIVE_PATH; in dp_part_node()
874 hddp->dp.length = sizeof(*hddp); in dp_part_node()
1016 struct efi_device_path *efi_dp_from_file(const struct efi_device_path *dp, in efi_dp_from_file() argument
1023 dpsize = efi_dp_size(dp); in efi_dp_from_file()
1033 memcpy(buf, dp, dpsize); in efi_dp_from_file()
1039 fp->dp.type = DEVICE_PATH_TYPE_MEDIA_DEVICE; in efi_dp_from_file()
1040 fp->dp.sub_type = DEVICE_PATH_SUB_TYPE_FILE_PATH; in efi_dp_from_file()
1041 fp->dp.length = (u16)fpsize; in efi_dp_from_file()
1064 uart->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; in efi_dp_from_uart()
1065 uart->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_UART; in efi_dp_from_uart()
1066 uart->dp.length = sizeof(*uart); in efi_dp_from_uart()
1106 mdp->dp.type = DEVICE_PATH_TYPE_HARDWARE_DEVICE; in efi_dp_from_mem()
1107 mdp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MEMORY; in efi_dp_from_mem()
1108 mdp->dp.length = sizeof(*mdp); in efi_dp_from_mem()
1135 struct efi_device_path *p, *dp, *fp = NULL; in efi_dp_split_file_path() local
1139 dp = efi_dp_dup(full_path); in efi_dp_split_file_path()
1140 if (!dp) in efi_dp_split_file_path()
1142 p = dp; in efi_dp_split_file_path()
1156 *device_path = dp; in efi_dp_split_file_path()
1177 struct efi_device_path *dp; in efi_dp_from_name() local
1190 dp = efi_dp_from_mem(EFI_RESERVED_MEMORY_TYPE, in efi_dp_from_name()
1193 dp = efi_dp_from_eth(); in efi_dp_from_name()
1195 dp = efi_dp_from_uart(); in efi_dp_from_name()
1202 dp = efi_dp_from_part(desc, part); in efi_dp_from_name()
1205 *device = dp; in efi_dp_from_name()
1210 *file = efi_dp_from_file(dp, path); in efi_dp_from_name()
1228 ssize_t efi_dp_check_length(const struct efi_device_path *dp, in efi_dp_check_length() argument
1237 len = dp->length; in efi_dp_check_length()
1243 if (dp->type == DEVICE_PATH_TYPE_END && in efi_dp_check_length()
1244 dp->sub_type == DEVICE_PATH_SUB_TYPE_END) in efi_dp_check_length()
1246 dp = (const struct efi_device_path *)((const u8 *)dp + len); in efi_dp_check_length()
1298 struct efi_device_path *dp = device_path; in search_gpt_dp_node() local
1300 while (dp) { in search_gpt_dp_node()
1301 if (dp->type == DEVICE_PATH_TYPE_MEDIA_DEVICE && in search_gpt_dp_node()
1302 dp->sub_type == DEVICE_PATH_SUB_TYPE_HARD_DRIVE_PATH) { in search_gpt_dp_node()
1304 (struct efi_device_path_hard_drive_path *)dp; in search_gpt_dp_node()
1308 return dp; in search_gpt_dp_node()
1310 dp = efi_dp_next(dp); in search_gpt_dp_node()