1 /*
2 * Copyright (c) 2020 - 2025 Renesas Electronics Corporation and/or its affiliates
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6 
7 #ifndef FSP_COMMON_API_H
8 #define FSP_COMMON_API_H
9 
10 /***********************************************************************************************************************
11  * Includes
12  **********************************************************************************************************************/
13 #include <assert.h>
14 #include <stdint.h>
15 
16 /* Includes FSP version macros. */
17 #include "fsp_version.h"
18 
19 /*******************************************************************************************************************//**
20  * @ingroup RENESAS_COMMON
21  * @defgroup RENESAS_ERROR_CODES Common Error Codes
22  * All FSP modules share these common error codes.
23  * @{
24  **********************************************************************************************************************/
25 
26 /**********************************************************************************************************************
27  * Macro definitions
28  **********************************************************************************************************************/
29 
30 /** This macro is used to suppress compiler messages about a parameter not being used in a function. The nice thing
31  * about using this implementation is that it does not take any extra RAM or ROM. */
32 
33 #define FSP_PARAMETER_NOT_USED(p)    (void) ((p))
34 
35 /** Determine if a C++ compiler is being used.
36  * If so, ensure that standard C is used to process the API information.  */
37 #if defined(__cplusplus)
38  #define FSP_CPP_HEADER    extern "C" {
39  #define FSP_CPP_FOOTER    }
40 #else
41  #define FSP_CPP_HEADER
42  #define FSP_CPP_FOOTER
43 #endif
44 
45 /** FSP Header and Footer definitions */
46 #define FSP_HEADER    FSP_CPP_HEADER
47 #define FSP_FOOTER    FSP_CPP_FOOTER
48 
49 /* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */
50 FSP_HEADER
51 
52 /** Macro to be used when argument to function is ignored since function call is NSC and the parameter is statically
53  *  defined on the Secure side. */
54 #define FSP_SECURE_ARGUMENT    (NULL)
55 
56 /**********************************************************************************************************************
57  * Typedef definitions
58  **********************************************************************************************************************/
59 
60 /** Common error codes */
61 typedef enum e_fsp_err
62 {
63     FSP_SUCCESS = 0,
64 
65     FSP_ERR_ASSERTION             = 1,                      /* /< A critical assertion has failed */
66     FSP_ERR_INVALID_POINTER       = 2,                      /* /< Pointer points to invalid memory location */
67     FSP_ERR_INVALID_ARGUMENT      = 3,                      /* /< Invalid input parameter */
68     FSP_ERR_INVALID_CHANNEL       = 4,                      /* /< Selected channel does not exist */
69     FSP_ERR_INVALID_MODE          = 5,                      /* /< Unsupported or incorrect mode */
70     FSP_ERR_UNSUPPORTED           = 6,                      /* /< Selected mode not supported by this API */
71     FSP_ERR_NOT_OPEN              = 7,                      /* /< Requested channel is not configured or API not open */
72     FSP_ERR_IN_USE                = 8,                      /* /< Channel/peripheral is running/busy */
73     FSP_ERR_OUT_OF_MEMORY         = 9,                      /* /< Allocate more memory in the driver's cfg.h */
74     FSP_ERR_HW_LOCKED             = 10,                     /* /< Hardware is locked */
75     FSP_ERR_IRQ_BSP_DISABLED      = 11,                     /* /< IRQ not enabled in BSP */
76     FSP_ERR_OVERFLOW              = 12,                     /* /< Hardware overflow */
77     FSP_ERR_UNDERFLOW             = 13,                     /* /< Hardware underflow */
78     FSP_ERR_ALREADY_OPEN          = 14,                     /* /< Requested channel is already open in a different configuration */
79     FSP_ERR_APPROXIMATION         = 15,                     /* /< Could not set value to exact result */
80     FSP_ERR_CLAMPED               = 16,                     /* /< Value had to be limited for some reason */
81     FSP_ERR_INVALID_RATE          = 17,                     /* /< Selected rate could not be met */
82     FSP_ERR_ABORTED               = 18,                     /* /< An operation was aborted */
83     FSP_ERR_NOT_ENABLED           = 19,                     /* /< Requested operation is not enabled */
84     FSP_ERR_TIMEOUT               = 20,                     /* /< Timeout error */
85     FSP_ERR_INVALID_BLOCKS        = 21,                     /* /< Invalid number of blocks supplied */
86     FSP_ERR_INVALID_ADDRESS       = 22,                     /* /< Invalid address supplied */
87     FSP_ERR_INVALID_SIZE          = 23,                     /* /< Invalid size/length supplied for operation */
88     FSP_ERR_WRITE_FAILED          = 24,                     /* /< Write operation failed */
89     FSP_ERR_ERASE_FAILED          = 25,                     /* /< Erase operation failed */
90     FSP_ERR_INVALID_CALL          = 26,                     /* /< Invalid function call is made */
91     FSP_ERR_INVALID_HW_CONDITION  = 27,                     /* /< Detected hardware is in invalid condition */
92     FSP_ERR_INVALID_FACTORY_FLASH = 28,                     /* /< Factory flash is not available on this MCU */
93     FSP_ERR_INVALID_STATE         = 30,                     /* /< API or command not valid in the current state */
94     FSP_ERR_NOT_ERASED            = 31,                     /* /< Erase verification failed */
95     FSP_ERR_SECTOR_RELEASE_FAILED = 32,                     /* /< Sector release failed */
96     FSP_ERR_NOT_INITIALIZED       = 33,                     /* /< Required initialization not complete */
97     FSP_ERR_NOT_FOUND             = 34,                     /* /< The requested item could not be found */
98     FSP_ERR_NO_CALLBACK_MEMORY    = 35,                     /* /< Non-secure callback memory not provided for non-secure callback */
99     FSP_ERR_BUFFER_EMPTY          = 36,                     /* /< No data available in buffer */
100     FSP_ERR_INVALID_DATA          = 37,                     /* /< Accuracy of data is not guaranteed */
101 
102     /* Start of RTOS only error codes */
103     FSP_ERR_INTERNAL     = 100,                             /* /< Internal error */
104     FSP_ERR_WAIT_ABORTED = 101,                             /* /< Wait aborted */
105 
106     /* Start of UART specific */
107     FSP_ERR_FRAMING            = 200,                       /* /< Framing error occurs */
108     FSP_ERR_BREAK_DETECT       = 201,                       /* /< Break signal detects */
109     FSP_ERR_PARITY             = 202,                       /* /< Parity error occurs */
110     FSP_ERR_RXBUF_OVERFLOW     = 203,                       /* /< Receive queue overflow */
111     FSP_ERR_QUEUE_UNAVAILABLE  = 204,                       /* /< Can't open s/w queue */
112     FSP_ERR_INSUFFICIENT_SPACE = 205,                       /* /< Not enough space in transmission circular buffer */
113     FSP_ERR_INSUFFICIENT_DATA  = 206,                       /* /< Not enough data in receive circular buffer */
114 
115     /* Start of SPI specific */
116     FSP_ERR_TRANSFER_ABORTED = 300,                         /* /< The data transfer was aborted. */
117     FSP_ERR_MODE_FAULT       = 301,                         /* /< Mode fault error. */
118     FSP_ERR_READ_OVERFLOW    = 302,                         /* /< Read overflow. */
119     FSP_ERR_SPI_PARITY       = 303,                         /* /< Parity error. */
120     FSP_ERR_OVERRUN          = 304,                         /* /< Overrun error. */
121 
122     /* Start of CGC Specific */
123     FSP_ERR_CLOCK_INACTIVE        = 400,                    /* /< Inactive clock specified as system clock. */
124     FSP_ERR_CLOCK_ACTIVE          = 401,                    /* /< Active clock source cannot be modified without stopping first. */
125     FSP_ERR_NOT_STABILIZED        = 403,                    /* /< Clock has not stabilized after its been turned on/off */
126     FSP_ERR_PLL_SRC_INACTIVE      = 404,                    /* /< PLL initialization attempted when PLL source is turned off */
127     FSP_ERR_OSC_STOP_DET_ENABLED  = 405,                    /* /< Illegal attempt to stop LOCO when Oscillation stop is enabled */
128     FSP_ERR_OSC_STOP_DETECTED     = 406,                    /* /< The Oscillation stop detection status flag is set */
129     FSP_ERR_OSC_STOP_CLOCK_ACTIVE = 407,                    /* /< Attempt to clear Oscillation Stop Detect Status with PLL/MAIN_OSC active */
130     FSP_ERR_CLKOUT_EXCEEDED       = 408,                    /* /< Output on target output clock pin exceeds maximum supported limit */
131     FSP_ERR_USB_MODULE_ENABLED    = 409,                    /* /< USB clock configure request with USB Module enabled */
132     FSP_ERR_HARDWARE_TIMEOUT      = 410,                    /* /< A register read or write timed out */
133     FSP_ERR_LOW_VOLTAGE_MODE      = 411,                    /* /< Invalid clock setting attempted in low voltage mode */
134 
135     /* Start of FLASH Specific */
136     FSP_ERR_PE_FAILURE             = 500,                   /* /< Unable to enter Programming mode. */
137     FSP_ERR_CMD_LOCKED             = 501,                   /* /< Peripheral in command locked state */
138     FSP_ERR_FCLK                   = 502,                   /* /< FCLK must be >= 4 MHz */
139     FSP_ERR_INVALID_LINKED_ADDRESS = 503,                   /* /< Function or data are linked at an invalid region of memory */
140     FSP_ERR_BLANK_CHECK_FAILED     = 504,                   /* /< Blank check operation failed */
141 
142     /* Start of CAC Specific */
143     FSP_ERR_INVALID_CAC_REF_CLOCK = 600,                    /* /< Measured clock rate < reference clock rate */
144 
145     /* Start of IIRFA Specific */
146     FSP_ERR_INVALID_RESULT = 700,                           /* /< The result of one or more calculations was +/- infinity. */
147 
148     /* Start of GLCD Specific */
149     FSP_ERR_CLOCK_GENERATION           = 1000,              /* /< Clock cannot be specified as system clock */
150     FSP_ERR_INVALID_TIMING_SETTING     = 1001,              /* /< Invalid timing parameter */
151     FSP_ERR_INVALID_LAYER_SETTING      = 1002,              /* /< Invalid layer parameter */
152     FSP_ERR_INVALID_ALIGNMENT          = 1003,              /* /< Invalid memory alignment found */
153     FSP_ERR_INVALID_GAMMA_SETTING      = 1004,              /* /< Invalid gamma correction parameter */
154     FSP_ERR_INVALID_LAYER_FORMAT       = 1005,              /* /< Invalid color format in layer */
155     FSP_ERR_INVALID_UPDATE_TIMING      = 1006,              /* /< Invalid timing for register update */
156     FSP_ERR_INVALID_CLUT_ACCESS        = 1007,              /* /< Invalid access to CLUT entry */
157     FSP_ERR_INVALID_FADE_SETTING       = 1008,              /* /< Invalid fade-in/fade-out setting */
158     FSP_ERR_INVALID_BRIGHTNESS_SETTING = 1009,              /* /< Invalid gamma correction parameter */
159 
160     /* Start of JPEG Specific */
161     FSP_ERR_JPEG_ERR                                = 1100, /* /< JPEG error */
162     FSP_ERR_JPEG_SOI_NOT_DETECTED                   = 1101, /* /< SOI not detected until EOI detected. */
163     FSP_ERR_JPEG_SOF1_TO_SOFF_DETECTED              = 1102, /* /< SOF1 to SOFF detected. */
164     FSP_ERR_JPEG_UNSUPPORTED_PIXEL_FORMAT           = 1103, /* /< Unprovided pixel format detected. */
165     FSP_ERR_JPEG_SOF_ACCURACY_ERROR                 = 1104, /* /< SOF accuracy error: other than 8 detected. */
166     FSP_ERR_JPEG_DQT_ACCURACY_ERROR                 = 1105, /* /< DQT accuracy error: other than 0 detected. */
167     FSP_ERR_JPEG_COMPONENT_ERROR1                   = 1106, /* /< Component error 1: the number of SOF0 header components detected is other than 1, 3, or 4. */
168     FSP_ERR_JPEG_COMPONENT_ERROR2                   = 1107, /* /< Component error 2: the number of components differs between SOF0 header and SOS. */
169     FSP_ERR_JPEG_SOF0_DQT_DHT_NOT_DETECTED          = 1108, /* /< SOF0, DQT, and DHT not detected when SOS detected. */
170     FSP_ERR_JPEG_SOS_NOT_DETECTED                   = 1109, /* /< SOS not detected: SOS not detected until EOI detected. */
171     FSP_ERR_JPEG_EOI_NOT_DETECTED                   = 1110, /* /< EOI not detected (default) */
172     FSP_ERR_JPEG_RESTART_INTERVAL_DATA_NUMBER_ERROR = 1111, /* /< Restart interval data number error detected. */
173     FSP_ERR_JPEG_IMAGE_SIZE_ERROR                   = 1112, /* /< Image size error detected. */
174     FSP_ERR_JPEG_LAST_MCU_DATA_NUMBER_ERROR         = 1113, /* /< Last MCU data number error detected. */
175     FSP_ERR_JPEG_BLOCK_DATA_NUMBER_ERROR            = 1114, /* /< Block data number error detected. */
176     FSP_ERR_JPEG_BUFFERSIZE_NOT_ENOUGH              = 1115, /* /< User provided buffer size not enough */
177     FSP_ERR_JPEG_UNSUPPORTED_IMAGE_SIZE             = 1116, /* /< JPEG Image size is not aligned with MCU */
178 
179     /* Start of touch panel framework specific */
180     FSP_ERR_CALIBRATE_FAILED = 1200,                        /* /< Calibration failed */
181 
182     /* Start of IIRFA specific */
183     FSP_ERR_IIRFA_ECC_1BIT = 1300,                          /* /< 1-bit ECC error detected */
184     FSP_ERR_IIRFA_ECC_2BIT = 1301,                          /* /< 2-bit ECC error detected */
185 
186     /* Start of IP specific */
187     FSP_ERR_IP_HARDWARE_NOT_PRESENT = 1400,                 /* /< Requested IP does not exist on this device */
188     FSP_ERR_IP_UNIT_NOT_PRESENT     = 1401,                 /* /< Requested unit does not exist on this device */
189     FSP_ERR_IP_CHANNEL_NOT_PRESENT  = 1402,                 /* /< Requested channel does not exist on this device */
190 
191     /* Start of USB specific */
192     FSP_ERR_USB_FAILED      = 1500,
193     FSP_ERR_USB_BUSY        = 1501,
194     FSP_ERR_USB_SIZE_SHORT  = 1502,
195     FSP_ERR_USB_SIZE_OVER   = 1503,
196     FSP_ERR_USB_NOT_OPEN    = 1504,
197     FSP_ERR_USB_NOT_SUSPEND = 1505,
198     FSP_ERR_USB_PARAMETER   = 1506,
199 
200     /* Start of Message framework specific */
201     FSP_ERR_NO_MORE_BUFFER           = 2000,         /* /< No more buffer found in the memory block pool */
202     FSP_ERR_ILLEGAL_BUFFER_ADDRESS   = 2001,         /* /< Buffer address is out of block memory pool */
203     FSP_ERR_INVALID_WORKBUFFER_SIZE  = 2002,         /* /< Work buffer size is invalid */
204     FSP_ERR_INVALID_MSG_BUFFER_SIZE  = 2003,         /* /< Message buffer size is invalid */
205     FSP_ERR_TOO_MANY_BUFFERS         = 2004,         /* /< Number of buffer is too many */
206     FSP_ERR_NO_SUBSCRIBER_FOUND      = 2005,         /* /< No message subscriber found */
207     FSP_ERR_MESSAGE_QUEUE_EMPTY      = 2006,         /* /< No message found in the message queue */
208     FSP_ERR_MESSAGE_QUEUE_FULL       = 2007,         /* /< No room for new message in the message queue */
209     FSP_ERR_ILLEGAL_SUBSCRIBER_LISTS = 2008,         /* /< Message subscriber lists is illegal */
210     FSP_ERR_BUFFER_RELEASED          = 2009,         /* /< Buffer has been released */
211 
212     /* Start of 2DG Driver specific */
213     FSP_ERR_D2D_ERROR_INIT      = 3000,              /* /< D/AVE 2D has an error in the initialization */
214     FSP_ERR_D2D_ERROR_DEINIT    = 3001,              /* /< D/AVE 2D has an error in the initialization */
215     FSP_ERR_D2D_ERROR_RENDERING = 3002,              /* /< D/AVE 2D has an error in the rendering */
216     FSP_ERR_D2D_ERROR_SIZE      = 3003,              /* /< D/AVE 2D has an error in the rendering */
217 
218     /* Start of ETHER Driver specific */
219     FSP_ERR_ETHER_ERROR_NO_DATA              = 4000, /* /< No Data in Receive buffer. */
220     FSP_ERR_ETHER_ERROR_LINK                 = 4001, /* /< ETHERC/EDMAC has an error in the Auto-negotiation */
221     FSP_ERR_ETHER_ERROR_MAGIC_PACKET_MODE    = 4002, /* /< As a Magic Packet is being detected, and transmission/reception is not enabled */
222     FSP_ERR_ETHER_ERROR_TRANSMIT_BUFFER_FULL = 4003, /* /< Transmit buffer is not empty */
223     FSP_ERR_ETHER_ERROR_FILTERING            = 4004, /* /< Detect multicast frame when multicast frame filtering enable */
224     FSP_ERR_ETHER_ERROR_PHY_COMMUNICATION    = 4005, /* /< ETHERC/EDMAC has an error in the phy communication */
225     FSP_ERR_ETHER_RECEIVE_BUFFER_ACTIVE      = 4006, /* /< Receive buffer is active. */
226 
227     /* Start of ETHER_PHY Driver specific */
228     FSP_ERR_ETHER_PHY_ERROR_LINK = 5000,             /* /< PHY is not link up. */
229     FSP_ERR_ETHER_PHY_NOT_READY  = 5001,             /* /< PHY has an error in the Auto-negotiation */
230 
231     /* Start of BYTEQ library specific */
232     FSP_ERR_QUEUE_FULL  = 10000,                     /* /< Queue is full, cannot queue another data */
233     FSP_ERR_QUEUE_EMPTY = 10001,                     /* /< Queue is empty, no data to dequeue */
234 
235     /* Start of CTSU Driver specific */
236     FSP_ERR_CTSU_SCANNING              = 6000,       /* /< Scanning. */
237     FSP_ERR_CTSU_NOT_GET_DATA          = 6001,       /* /< Not processed previous scan data. */
238     FSP_ERR_CTSU_INCOMPLETE_TUNING     = 6002,       /* /< Incomplete initial offset tuning. */
239     FSP_ERR_CTSU_DIAG_NOT_YET          = 6003,       /* /< Diagnosis of data collected no yet. */
240     FSP_ERR_CTSU_DIAG_LDO_OVER_VOLTAGE = 6004,       /* /< Diagnosis of LDO over voltage failed. */
241     FSP_ERR_CTSU_DIAG_CCO_HIGH         = 6005,       /* /< Diagnosis of CCO into 19.2uA failed. */
242     FSP_ERR_CTSU_DIAG_CCO_LOW          = 6006,       /* /< Diagnosis of CCO into 2.4uA failed. */
243     FSP_ERR_CTSU_DIAG_SSCG             = 6007,       /* /< Diagnosis of SSCG frequency failed. */
244     FSP_ERR_CTSU_DIAG_DAC              = 6008,       /* /< Diagnosis of non-touch count value failed. */
245     FSP_ERR_CTSU_DIAG_OUTPUT_VOLTAGE   = 6009,       /* /< Diagnosis of LDO output voltage failed. */
246     FSP_ERR_CTSU_DIAG_OVER_VOLTAGE     = 6010,       /* /< Diagnosis of over voltage detection circuit failed. */
247     FSP_ERR_CTSU_DIAG_OVER_CURRENT     = 6011,       /* /< Diagnosis of over current detection circuit failed. */
248     FSP_ERR_CTSU_DIAG_LOAD_RESISTANCE  = 6012,       /* /< Diagnosis of LDO internal resistance value failed. */
249     FSP_ERR_CTSU_DIAG_CURRENT_SOURCE   = 6013,       /* /< Diagnosis of Current source value failed. */
250     FSP_ERR_CTSU_DIAG_SENSCLK_GAIN     = 6014,       /* /< Diagnosis of SENSCLK frequency gain failed. */
251     FSP_ERR_CTSU_DIAG_SUCLK_GAIN       = 6015,       /* /< Diagnosis of SUCLK frequency gain failed. */
252     FSP_ERR_CTSU_DIAG_CLOCK_RECOVERY   = 6016,       /* /< Diagnosis of SUCLK clock recovery function failed. */
253     FSP_ERR_CTSU_DIAG_CFC_GAIN         = 6017,       /* /< Diagnosis of CFC oscillator gain failed. */
254 
255     /* Start of SDMMC specific */
256     FSP_ERR_CARD_INIT_FAILED     = 40000,            /* /< SD card or eMMC device failed to initialize. */
257     FSP_ERR_CARD_NOT_INSERTED    = 40001,            /* /< SD card not installed. */
258     FSP_ERR_DEVICE_BUSY          = 40002,            /* /< Device is holding DAT0 low or another operation is ongoing. */
259     FSP_ERR_CARD_NOT_INITIALIZED = 40004,            /* /< SD card was removed. */
260     FSP_ERR_CARD_WRITE_PROTECTED = 40005,            /* /< Media is write protected. */
261     FSP_ERR_TRANSFER_BUSY        = 40006,            /* /< Transfer in progress. */
262     FSP_ERR_RESPONSE             = 40007,            /* /< Card did not respond or responded with an error. */
263 
264     /* Start of FX_IO specific */
265     FSP_ERR_MEDIA_FORMAT_FAILED = 50000,             /* /< Media format failed. */
266     FSP_ERR_MEDIA_OPEN_FAILED   = 50001,             /* /< Media open failed. */
267 
268     /* Start of CAN specific */
269     FSP_ERR_CAN_DATA_UNAVAILABLE   = 60000,          /* /< No data available. */
270     FSP_ERR_CAN_MODE_SWITCH_FAILED = 60001,          /* /< Switching operation modes failed. */
271     FSP_ERR_CAN_INIT_FAILED        = 60002,          /* /< Hardware initialization failed. */
272     FSP_ERR_CAN_TRANSMIT_NOT_READY = 60003,          /* /< Transmit in progress. */
273     FSP_ERR_CAN_RECEIVE_MAILBOX    = 60004,          /* /< Mailbox is setup as a receive mailbox. */
274     FSP_ERR_CAN_TRANSMIT_MAILBOX   = 60005,          /* /< Mailbox is setup as a transmit mailbox. */
275     FSP_ERR_CAN_MESSAGE_LOST       = 60006,          /* /< Receive message has been overwritten or overrun. */
276     FSP_ERR_CAN_TRANSMIT_FIFO_FULL = 60007,          /* /< Transmit FIFO is full. */
277 
278     /* Start of SF_WIFI Specific */
279     FSP_ERR_WIFI_CONFIG_FAILED    = 70000,           /* /< WiFi module Configuration failed. */
280     FSP_ERR_WIFI_INIT_FAILED      = 70001,           /* /< WiFi module initialization failed. */
281     FSP_ERR_WIFI_TRANSMIT_FAILED  = 70002,           /* /< Transmission failed */
282     FSP_ERR_WIFI_INVALID_MODE     = 70003,           /* /< API called when provisioned in client mode */
283     FSP_ERR_WIFI_FAILED           = 70004,           /* /< WiFi Failed. */
284     FSP_ERR_WIFI_SCAN_COMPLETE    = 70005,           /* /< Wifi scan has completed. */
285     FSP_ERR_WIFI_AP_NOT_CONNECTED = 70006,           /* /< WiFi module is not connected to access point */
286     FSP_ERR_WIFI_UNKNOWN_AT_CMD   = 70007,           /* /< DA16XXX Unknown AT command Error */
287     FSP_ERR_WIFI_INSUF_PARAM      = 70008,           /* /< DA16XXX Insufficient parameter */
288     FSP_ERR_WIFI_TOO_MANY_PARAMS  = 70009,           /* /< DA16XXX Too many parameters */
289     FSP_ERR_WIFI_INV_PARAM_VAL    = 70010,           /* /< DA16XXX Wrong parameter value */
290     FSP_ERR_WIFI_NO_RESULT        = 70011,           /* /< DA16XXX No result */
291     FSP_ERR_WIFI_RSP_BUF_OVFLW    = 70012,           /* /< DA16XXX Response buffer overflow */
292     FSP_ERR_WIFI_FUNC_NOT_CONFIG  = 70013,           /* /< DA16XXX Function is not configured */
293     FSP_ERR_WIFI_NVRAM_WR_FAIL    = 70014,           /* /< DA16XXX NVRAM write failure */
294     FSP_ERR_WIFI_RET_MEM_WR_FAIL  = 70015,           /* /< DA16XXX Retention memory write failure */
295     FSP_ERR_WIFI_UNKNOWN_ERR      = 70016,           /* /< DA16XXX unknown error */
296 
297     /* Start of SF_CELLULAR Specific */
298     FSP_ERR_CELLULAR_CONFIG_FAILED       = 80000,    /* /< Cellular module Configuration failed. */
299     FSP_ERR_CELLULAR_INIT_FAILED         = 80001,    /* /< Cellular module initialization failed. */
300     FSP_ERR_CELLULAR_TRANSMIT_FAILED     = 80002,    /* /< Transmission failed */
301     FSP_ERR_CELLULAR_FW_UPTODATE         = 80003,    /* /< Firmware is uptodate */
302     FSP_ERR_CELLULAR_FW_UPGRADE_FAILED   = 80004,    /* /< Firmware upgrade failed */
303     FSP_ERR_CELLULAR_FAILED              = 80005,    /* /< Cellular Failed. */
304     FSP_ERR_CELLULAR_INVALID_STATE       = 80006,    /* /< API Called in invalid state. */
305     FSP_ERR_CELLULAR_REGISTRATION_FAILED = 80007,    /* /< Cellular Network registration failed */
306 
307     /* Start of SF_BLE specific */
308     FSP_ERR_BLE_FAILED              = 90001,         /* /< BLE operation failed */
309     FSP_ERR_BLE_INIT_FAILED         = 90002,         /* /< BLE device initialization failed */
310     FSP_ERR_BLE_CONFIG_FAILED       = 90003,         /* /< BLE device configuration failed */
311     FSP_ERR_BLE_PRF_ALREADY_ENABLED = 90004,         /* /< BLE device Profile already enabled */
312     FSP_ERR_BLE_PRF_NOT_ENABLED     = 90005,         /* /< BLE device not enabled */
313 
314     /* Start of SF_BLE_ABS specific */
315     FSP_ERR_BLE_ABS_INVALID_OPERATION = 91001,       /* /< Invalid operation is executed. */
316     FSP_ERR_BLE_ABS_NOT_FOUND         = 91002,       /* /< Valid data or free space is not found. */
317 
318     /* Start of Crypto specific (0x10000) @note Refer to sf_cryoto_err.h for Crypto error code. */
319     FSP_ERR_CRYPTO_CONTINUE              = 0x10000,  /* /< Continue executing function */
320     FSP_ERR_CRYPTO_SCE_RESOURCE_CONFLICT = 0x10001,  /* /< Hardware resource busy */
321     FSP_ERR_CRYPTO_SCE_FAIL              = 0x10002,  /* /< Internal I/O buffer is not empty */
322     FSP_ERR_CRYPTO_SCE_HRK_INVALID_INDEX = 0x10003,  /* /< Invalid index */
323     FSP_ERR_CRYPTO_SCE_RETRY             = 0x10004,  /* /< Retry */
324     FSP_ERR_CRYPTO_SCE_VERIFY_FAIL       = 0x10005,  /* /< Verify is failed */
325     FSP_ERR_CRYPTO_SCE_ALREADY_OPEN      = 0x10006,  /* /< HW SCE module is already opened */
326     FSP_ERR_CRYPTO_NOT_OPEN              = 0x10007,  /* /< Hardware module is not initialized */
327     FSP_ERR_CRYPTO_UNKNOWN               = 0x10008,  /* /< Some unknown error occurred */
328     FSP_ERR_CRYPTO_NULL_POINTER          = 0x10009,  /* /< Null pointer input as a parameter */
329     FSP_ERR_CRYPTO_NOT_IMPLEMENTED       = 0x1000a,  /* /< Algorithm/size not implemented */
330     FSP_ERR_CRYPTO_RNG_INVALID_PARAM     = 0x1000b,  /* /< An invalid parameter is specified */
331     FSP_ERR_CRYPTO_RNG_FATAL_ERROR       = 0x1000c,  /* /< A fatal error occurred */
332     FSP_ERR_CRYPTO_INVALID_SIZE          = 0x1000d,  /* /< Size specified is invalid */
333     FSP_ERR_CRYPTO_INVALID_STATE         = 0x1000e,  /* /< Function used in an valid state */
334     FSP_ERR_CRYPTO_ALREADY_OPEN          = 0x1000f,  /* /< control block is already opened */
335     FSP_ERR_CRYPTO_INSTALL_KEY_FAILED    = 0x10010,  /* /< Specified input key is invalid. */
336     FSP_ERR_CRYPTO_AUTHENTICATION_FAILED = 0x10011,  /* /< Authentication failed */
337     FSP_ERR_CRYPTO_SCE_KEY_SET_FAIL      = 0x10012,  /* /< Failure to Init Cipher */
338     FSP_ERR_CRYPTO_SCE_AUTHENTICATION    = 0x10013,  /* /< Authentication failed */
339     FSP_ERR_CRYPTO_SCE_PARAMETER         = 0x10014,  /* /< Input date is illegal. */
340     FSP_ERR_CRYPTO_SCE_PROHIBIT_FUNCTION = 0x10015,  /* /< An invalid function call occurred. */
341 
342     /* Start of Crypto RSIP specific (0x10100) */
343     FSP_ERR_CRYPTO_RSIP_RESOURCE_CONFLICT = 0x10100, /* /< Hardware resource is busy */
344     FSP_ERR_CRYPTO_RSIP_FATAL             = 0x10101, /* /< Hardware fatal error or unexpected return */
345     FSP_ERR_CRYPTO_RSIP_FAIL              = 0x10102, /* /< Internal error */
346     FSP_ERR_CRYPTO_RSIP_KEY_SET_FAIL      = 0x10103, /* /< Input key type is illegal */
347     FSP_ERR_CRYPTO_RSIP_AUTHENTICATION    = 0x10104, /* /< Authentication failed */
348 
349     /* Start of SF_CRYPTO specific */
350     FSP_ERR_CRYPTO_COMMON_NOT_OPENED      = 0x20000, /* /< Crypto Framework Common is not opened */
351     FSP_ERR_CRYPTO_HAL_ERROR              = 0x20001, /* /< Cryoto HAL module returned an error */
352     FSP_ERR_CRYPTO_KEY_BUF_NOT_ENOUGH     = 0x20002, /* /< Key buffer size is not enough to generate a key */
353     FSP_ERR_CRYPTO_BUF_OVERFLOW           = 0x20003, /* /< Attempt to write data larger than what the buffer can hold */
354     FSP_ERR_CRYPTO_INVALID_OPERATION_MODE = 0x20004, /* /< Invalid operation mode. */
355     FSP_ERR_MESSAGE_TOO_LONG              = 0x20005, /* /< Message for RSA encryption is too long. */
356     FSP_ERR_RSA_DECRYPTION_ERROR          = 0x20006, /* /< RSA Decryption error. */
357 
358     /** @note SF_CRYPTO APIs may return an error code starting from 0x10000 which is of Crypto module.
359      *        Refer to sf_cryoto_err.h for Crypto error codes.
360      */
361 
362     /* Start of Sensor specific */
363     FSP_ERR_SENSOR_INVALID_DATA             = 0x30000, /* /< Data is invalid. */
364     FSP_ERR_SENSOR_IN_STABILIZATION         = 0x30001, /* /< Sensor is stabilizing. */
365     FSP_ERR_SENSOR_MEASUREMENT_NOT_FINISHED = 0x30002, /* /< Measurement is not finished. */
366 
367     /* Start of COMMS specific */
368     FSP_ERR_COMMS_BUS_NOT_OPEN = 0x40000,              /* /< Bus is not open. */
369 } fsp_err_t;
370 
371 /** @} */
372 
373 /***********************************************************************************************************************
374  * Function prototypes
375  **********************************************************************************************************************/
376 
377 /* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */
378 FSP_FOOTER
379 
380 #endif
381 
382