mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
efi: device path for nvme
This allows our EFI API to create a device path node for NVMe devices. It adds the necessary device path struct, uses the nvme namespace accessor to retrieve the id and eui64, and also provides support for the device path text protocol. Signed-off-by: Patrick Wildt <patrick@blueri.se> Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
c50b2883df
commit
f2d247df50
3 changed files with 42 additions and 0 deletions
|
@ -10,6 +10,7 @@
|
|||
#include <dm.h>
|
||||
#include <usb.h>
|
||||
#include <mmc.h>
|
||||
#include <nvme.h>
|
||||
#include <efi_loader.h>
|
||||
#include <part.h>
|
||||
#include <sandboxblockdev.h>
|
||||
|
@ -451,6 +452,11 @@ static unsigned dp_size(struct udevice *dev)
|
|||
return dp_size(dev->parent) +
|
||||
sizeof(struct efi_device_path_sd_mmc_path);
|
||||
#endif
|
||||
#if defined(CONFIG_NVME)
|
||||
case UCLASS_NVME:
|
||||
return dp_size(dev->parent) +
|
||||
sizeof(struct efi_device_path_nvme);
|
||||
#endif
|
||||
#ifdef CONFIG_SANDBOX
|
||||
case UCLASS_ROOT:
|
||||
/*
|
||||
|
@ -583,6 +589,20 @@ static void *dp_fill(void *buf, struct udevice *dev)
|
|||
sddp->slot_number = dev->seq;
|
||||
return &sddp[1];
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_NVME)
|
||||
case UCLASS_NVME: {
|
||||
struct efi_device_path_nvme *dp =
|
||||
dp_fill(buf, dev->parent);
|
||||
u32 ns_id;
|
||||
|
||||
dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE;
|
||||
dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_NVME;
|
||||
dp->dp.length = sizeof(*dp);
|
||||
nvme_get_namespace_id(dev, &ns_id, dp->eui64);
|
||||
memcpy(&dp->ns_id, &ns_id, sizeof(ns_id));
|
||||
return &dp[1];
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
debug("%s(%u) %s: unhandled parent class: %s (%u)\n",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue