mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 08:21:36 +01:00 
			
		
		
		
	This adds nvme_print_info() to show detailed NVMe controller and namespace information. Signed-off-by: Zhikang Zhang <zhikang.zhang@nxp.com> Signed-off-by: Wenbin Song <wenbin.song@nxp.com> Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Tom Rini <trini@konsulko.com>
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2017 NXP Semiconductors
 | |
|  * Copyright (C) 2017 Bin Meng <bmeng.cn@gmail.com>
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| 
 | |
| #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__ */
 |