Line data Source code
1 1 : /*
2 : * Copyright (c) 2016 Intel Corporation.
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /**
8 : * @file
9 : * @brief Disk Access layer API
10 : *
11 : * This file contains APIs for disk access.
12 : */
13 :
14 : #ifndef ZEPHYR_INCLUDE_STORAGE_DISK_ACCESS_H_
15 : #define ZEPHYR_INCLUDE_STORAGE_DISK_ACCESS_H_
16 :
17 : /**
18 : * @brief Storage APIs
19 : * @defgroup storage_apis Storage APIs
20 : * @ingroup os_services
21 : * @{
22 : * @}
23 : */
24 :
25 : /**
26 : * @brief Disk Access APIs
27 : * @defgroup disk_access_interface Disk Access Interface
28 : * @ingroup storage_apis
29 : * @{
30 : */
31 :
32 : #include <zephyr/drivers/disk.h>
33 :
34 : #ifdef __cplusplus
35 : extern "C" {
36 : #endif
37 :
38 : /**
39 : * @brief perform any initialization
40 : *
41 : * This call is made by the consumer before doing any IO calls so that the
42 : * disk or the backing device can do any initialization. Although still
43 : * supported for legacy compatibility, users should instead call
44 : * @ref disk_access_ioctl with the IOCTL @ref DISK_IOCTL_CTRL_INIT.
45 : *
46 : * Disk initialization is reference counted, so only the first successful call
47 : * to initialize a uninitialized (or previously de-initialized) disk will
48 : * actually initialize the disk
49 : *
50 : * @param[in] pdrv Disk name
51 : *
52 : * @return 0 on success, negative errno code on fail
53 : */
54 1 : int disk_access_init(const char *pdrv);
55 :
56 : /**
57 : * @brief Get the status of disk
58 : *
59 : * This call is used to get the status of the disk
60 : *
61 : * @param[in] pdrv Disk name
62 : *
63 : * @return DISK_STATUS_OK or other DISK_STATUS_*s
64 : */
65 1 : int disk_access_status(const char *pdrv);
66 :
67 : /**
68 : * @brief read data from disk
69 : *
70 : * Function to read data from disk to a memory buffer.
71 : *
72 : * Note: if he disk is of NVMe type, user will need to ensure data_buf
73 : * pointer is 4-bytes aligned.
74 : *
75 : * @param[in] pdrv Disk name
76 : * @param[in] data_buf Pointer to the memory buffer to put data.
77 : * @param[in] start_sector Start disk sector to read from
78 : * @param[in] num_sector Number of disk sectors to read
79 : *
80 : * @return 0 on success, negative errno code on fail
81 : */
82 1 : int disk_access_read(const char *pdrv, uint8_t *data_buf,
83 : uint32_t start_sector, uint32_t num_sector);
84 :
85 : /**
86 : * @brief write data to disk
87 : *
88 : * Function write data from memory buffer to disk.
89 : *
90 : * Note: if he disk is of NVMe type, user will need to ensure data_buf
91 : * pointer is 4-bytes aligned.
92 : *
93 : * @param[in] pdrv Disk name
94 : * @param[in] data_buf Pointer to the memory buffer
95 : * @param[in] start_sector Start disk sector to write to
96 : * @param[in] num_sector Number of disk sectors to write
97 : *
98 : * @return 0 on success, negative errno code on fail
99 : */
100 1 : int disk_access_write(const char *pdrv, const uint8_t *data_buf,
101 : uint32_t start_sector, uint32_t num_sector);
102 :
103 : /**
104 : * @brief Get/Configure disk parameters
105 : *
106 : * Function to get disk parameters and make any special device requests.
107 : *
108 : * @param[in] pdrv Disk name
109 : * @param[in] cmd DISK_IOCTL_* code describing the request
110 : * @param[in] buff Command data buffer
111 : *
112 : * @return 0 on success, negative errno code on fail
113 : */
114 1 : int disk_access_ioctl(const char *pdrv, uint8_t cmd, void *buff);
115 :
116 : #ifdef __cplusplus
117 : }
118 : #endif
119 :
120 : /**
121 : * @}
122 : */
123 :
124 : #endif /* ZEPHYR_INCLUDE_STORAGE_DISK_ACCESS_H_ */
|