/* * This file is part of the Serial Flash Universal Driver Library. * * Copyright (c) 2016-2018, Armink, * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * 'Software'), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * Function: It is an head file for this library. You can see all of the functions which can be called by user. * Created on: 2016-04-23 */ #ifndef _SFUD_H_ #define _SFUD_H_ #include "sfud_def.h" #ifdef __cplusplus extern "C" { #endif /* ../src/sfup.c */ /** * SFUD library initialize. * * @return result */ sfud_err sfud_init(void); /** * SFUD initialize by flash device * * @param flash flash device * * @return result */ sfud_err sfud_device_init(sfud_flash *flash); /** * get flash device by its index which in the flash information table * * @param index the index which in the flash information table @see flash_table * * @return flash device */ sfud_flash *sfud_get_device(size_t index); /** * get flash device total number on flash device information table @see flash_table * * @return flash device total number */ size_t sfud_get_device_num(void); /** * get flash device information table @see flash_table * * @return flash device table pointer */ const sfud_flash *sfud_get_device_table(void); #ifdef SFUD_USING_QSPI /** * Enbale the fast read mode in QSPI flash mode. Default read mode is normal SPI mode. * * it will find the appropriate fast-read instruction to replace the read instruction(0x03) * fast-read instruction @see SFUD_FLASH_EXT_INFO_TABLE * * @note When Flash is in QSPI mode, the method must be called after sfud_device_init(). * * @param flash flash device * @param data_line_width the data lines max width which QSPI bus supported, such as 1, 2, 4 * * @return result */ sfud_err sfud_qspi_fast_read_enable(sfud_flash *flash, uint8_t data_line_width); #endif /* SFUD_USING_QSPI */ /** * read flash data * * @param flash flash device * @param addr start address * @param size read size * @param data read data pointer * * @return result */ sfud_err sfud_read(const sfud_flash *flash, uint32_t addr, size_t size, uint8_t *data); /** * erase flash data * * @note It will erase align by erase granularity. * * @param flash flash device * @param addr start address * @param size erase size * * @return result */ sfud_err sfud_erase(const sfud_flash *flash, uint32_t addr, size_t size); /** * write flash data (no erase operate) * * @param flash flash device * @param addr start address * @param data write data * @param size write size * * @return result */ sfud_err sfud_write(const sfud_flash *flash, uint32_t addr, size_t size, const uint8_t *data); /** * erase and write flash data * * @param flash flash device * @param addr start address * @param size write size * @param data write data * * @return result */ sfud_err sfud_erase_write(const sfud_flash *flash, uint32_t addr, size_t size, const uint8_t *data); /** * erase all flash data * * @param flash flash device * * @return result */ sfud_err sfud_chip_erase(const sfud_flash *flash); /** * read flash register status * * @param flash flash device * @param status register status * * @return result */ sfud_err sfud_read_status(const sfud_flash *flash, uint8_t *status); /** * write status register * * @param flash flash device * @param is_volatile true: volatile mode, false: non-volatile mode * @param status register status * * @return result */ sfud_err sfud_write_status(const sfud_flash *flash, bool is_volatile, uint8_t status); #ifdef __cplusplus } #endif #endif /* _SFUD_H_ */