1 /*
2  *
3  * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  */
8 
9 #ifndef SPI_STRATAFLASHJ3_FLASH_LIB_H
10 #define SPI_STRATAFLASHJ3_FLASH_LIB_H
11 
12 #include "cfi_drv.h"
13 #include <stdbool.h>
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 /**
20  * \brief SPI Flash error enumeration types
21  */
22 enum strataflashj3_error_t {
23     STRATAFLASHJ3_ERR_NONE = CFI_ERR_NONE,
24     STRATAFLASHJ3_ERR_WRONG_ARGUMENT = CFI_ERR_WRONG_ARGUMENT,
25     STRATAFLASHJ3_ERR_NOT_INITIALIZED = CFI_ERR_NOT_INITIALIZED,
26     STRATAFLASHJ3_ERR_WRONG_MEMORY,
27     STRATAFLASHJ3_ERR_FLASH_CMD_FAILED,
28     STRATAFLASHJ3_ERR_READ_IN_PROGRESS,
29     STRATAFLASHJ3_ERR_WRITE_IN_PROGRESS
30 };
31 
32 struct cfi_strataflashj3_dev_t {
33     struct cfi_dev_t *controller; /* QSPI Flash Controller */
34     uint32_t total_sector_cnt;
35     uint32_t page_size;
36     uint32_t sector_size;
37     uint32_t program_unit;
38     bool is_initialized;
39 };
40 
41 enum strataflashj3_error_t cfi_strataflashj3_initialize(struct cfi_strataflashj3_dev_t* dev);
42 
43 void cfi_strataflashj3_uninitialize(struct cfi_strataflashj3_dev_t* dev);
44 
45 enum strataflashj3_error_t cfi_strataflashj3_erase(struct cfi_strataflashj3_dev_t* dev,
46                                          uint32_t addr);
47 
48 enum strataflashj3_error_t cfi_strataflashj3_erase_chip(struct cfi_strataflashj3_dev_t* dev);
49 
50 enum strataflashj3_error_t cfi_strataflashj3_program(struct cfi_strataflashj3_dev_t* dev,
51                                            uint32_t addr,
52                                            const uint8_t *data, uint32_t cnt);
53 
54 enum strataflashj3_error_t cfi_strataflashj3_read(struct cfi_strataflashj3_dev_t* dev,
55                                         uint32_t addr,
56                                         uint8_t *data, uint32_t cnt);
57 #ifdef __cplusplus
58 }
59 #endif
60 
61 #endif /* SPI_STRATAFLASHJ3_FLASH_LIB_H */
62