u-boot-brain/include/nvme.h
Tom Rini 83d290c56f SPDX: Convert all of our single license tags to Linux Kernel style
When U-Boot started using SPDX tags we were among the early adopters and
there weren't a lot of other examples to borrow from.  So we picked the
area of the file that usually had a full license text and replaced it
with an appropriate SPDX-License-Identifier: entry.  Since then, the
Linux Kernel has adopted SPDX tags and they place it as the very first
line in a file (except where shebangs are used, then it's second line)
and with slightly different comment styles than us.

In part due to community overlap, in part due to better tag visibility
and in part for other minor reasons, switch over to that style.

This commit changes all instances where we have a single declared
license in the tag as both the before and after are identical in tag
contents.  There's also a few places where I found we did not have a tag
and have introduced one.

Signed-off-by: Tom Rini <trini@konsulko.com>
2018-05-07 09:34:12 -04:00

82 lines
2.7 KiB
C

/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright (C) 2017 NXP Semiconductors
* Copyright (C) 2017 Bin Meng <bmeng.cn@gmail.com>
*/
#ifndef __NVME_H__
#define __NVME_H__
struct nvme_dev;
/**
* nvme_identify - identify controller or namespace capabilities and status
*
* This issues an identify command to the NVMe controller to return a data
* buffer that describes the controller or namespace capabilities and status.
*
* @dev: NVMe controller device
* @nsid: 0 for controller, namespace id for namespace to identify
* @cns: 1 for controller, 0 for namespace
* @dma_addr: dma buffer address to store the identify result
* @return: 0 on success, -ETIMEDOUT on command execution timeout,
* -EIO on command execution fails
*/
int nvme_identify(struct nvme_dev *dev, unsigned nsid,
unsigned cns, dma_addr_t dma_addr);
/**
* nvme_get_features - retrieve the attributes of the feature specified
*
* This retrieves the attributes of the feature specified.
*
* @dev: NVMe controller device
* @fid: feature id to provide data
* @nsid: namespace id the command applies to
* @dma_addr: data structure used as part of the specified feature
* @result: command-specific result in the completion queue entry
* @return: 0 on success, -ETIMEDOUT on command execution timeout,
* -EIO on command execution fails
*/
int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
dma_addr_t dma_addr, u32 *result);
/**
* nvme_set_features - specify the attributes of the feature indicated
*
* This specifies the attributes of the feature indicated.
*
* @dev: NVMe controller device
* @fid: feature id to provide data
* @dword11: command-specific input parameter
* @dma_addr: data structure used as part of the specified feature
* @result: command-specific result in the completion queue entry
* @return: 0 on success, -ETIMEDOUT on command execution timeout,
* -EIO on command execution fails
*/
int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
dma_addr_t dma_addr, u32 *result);
/**
* nvme_scan_namespace - scan all namespaces attached to NVMe controllers
*
* This probes all registered NVMe uclass device drivers in the system,
* and tries to find all namespaces attached to the NVMe controllers.
*
* @return: 0 on success, -ve on error
*/
int nvme_scan_namespace(void);
/**
* nvme_print_info - print detailed NVMe controller and namespace information
*
* This prints out detailed human readable NVMe controller and namespace
* information which is very useful for debugging.
*
* @udev: NVMe controller device
* @return: 0 on success, -EIO if NVMe identify command fails
*/
int nvme_print_info(struct udevice *udev);
#endif /* __NVME_H__ */