Blame view

include/nvme.h 3.05 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
982388eaa   Zhikang Zhang   nvme: Add NVM Exp...
2
3
4
  /*
   * Copyright (C) 2017 NXP Semiconductors
   * Copyright (C) 2017 Bin Meng <bmeng.cn@gmail.com>
982388eaa   Zhikang Zhang   nvme: Add NVM Exp...
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
   */
  
  #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);
f6aa61d59   Zhikang Zhang   nvme: Add show ro...
69
70
71
72
73
74
75
76
77
78
  /**
   * 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);
c50b2883d   Patrick Wildt   nvme: add accesso...
79
80
81
82
83
84
85
86
87
88
89
  /**
   * 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);
982388eaa   Zhikang Zhang   nvme: Add NVM Exp...
90
  #endif /* __NVME_H__ */