mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 14:38:58 +00:00
nvme: add accessor to namespace id and eui64
This adds a function which can be used by e.g. EFI to retrieve the namespace identifier and EUI64. For that it adds the EUI64 to its driver internal namespace structure and copies the EUI64 during namespace identification. Signed-off-by: Patrick Wildt <patrick@blueri.se> Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
6810caf856
commit
c50b2883df
3 changed files with 26 additions and 0 deletions
|
@ -621,6 +621,18 @@ static int nvme_get_info_from_identify(struct nvme_dev *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int nvme_get_namespace_id(struct udevice *udev, u32 *ns_id, u8 *eui64)
|
||||
{
|
||||
struct nvme_ns *ns = dev_get_priv(udev);
|
||||
|
||||
if (ns_id)
|
||||
*ns_id = ns->ns_id;
|
||||
if (eui64)
|
||||
memcpy(eui64, ns->eui64, sizeof(ns->eui64));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int nvme_scan_namespace(void)
|
||||
{
|
||||
struct uclass *uc;
|
||||
|
@ -657,6 +669,7 @@ static int nvme_blk_probe(struct udevice *udev)
|
|||
if (nvme_identify(ndev, ns->ns_id, 0, (dma_addr_t)(long)id))
|
||||
return -EIO;
|
||||
|
||||
memcpy(&ns->eui64, &id->eui64, sizeof(id->eui64));
|
||||
flbas = id->flbas & NVME_NS_FLBAS_LBA_MASK;
|
||||
ns->flbas = flbas;
|
||||
ns->lba_shift = id->lbaf[flbas].ds;
|
||||
|
|
|
@ -637,6 +637,7 @@ struct nvme_ns {
|
|||
struct list_head list;
|
||||
struct nvme_dev *dev;
|
||||
unsigned ns_id;
|
||||
u8 eui64[8];
|
||||
int devnum;
|
||||
int lba_shift;
|
||||
u8 flbas;
|
||||
|
|
|
@ -78,4 +78,16 @@ int nvme_scan_namespace(void);
|
|||
*/
|
||||
int nvme_print_info(struct udevice *udev);
|
||||
|
||||
/**
|
||||
* nvme_get_namespace_id - return namespace identifier
|
||||
*
|
||||
* This returns the namespace identifier.
|
||||
*
|
||||
* @udev: NVMe controller device
|
||||
* @ns_id: Place where to put the name space identifier
|
||||
* @eui64: Place where to put the IEEE Extended Unique Identifier
|
||||
* @return: 0 on success, -ve on error
|
||||
*/
|
||||
int nvme_get_namespace_id(struct udevice *udev, u32 *ns_id, u8 *eui64);
|
||||
|
||||
#endif /* __NVME_H__ */
|
||||
|
|
Loading…
Add table
Reference in a new issue