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