123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- /*
- * Copyright 2021 NXP
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
- /*!
- * @file fspi_api.h
- * @brief This file contains the FlexSPI/FSPI API to communicate
- * to attached Slave device.
- * @addtogroup FSPI_API
- * @{
- */
- #ifndef FSPI_API_H
- #define FSPI_API_H
- #if DEBUG_FLEXSPI
- #define SZ_57M 0x3900000u
- #endif
- /*!
- * Basic set of APIs.
- */
- /*!
- * @details AHB read/IP Read, decision to be internal to API
- * Minimum Read size = 1Byte
- * @param[in] src_off source offset from where data to read from flash
- * @param[out] des Destination location where data needs to be copied
- * @param[in] len length in Bytes,where 1-word=4-bytes/32-bits
- *
- * @return XSPI_SUCCESS or error code
- */
- int xspi_read(uint32_t src_off, uint32_t *des, uint32_t len);
- /*!
- * @details Sector erase, Minimum size
- * 256KB(0x40000)/128KB(0x20000)/64K(0x10000)/4K(0x1000)
- * depending upon flash, Calls xspi_wren() internally
- * @param[out] erase_offset Destination erase location on flash which
- * has to be erased, needs to be multiple of 0x40000/0x20000/0x10000
- * @param[in] erase_len length in bytes in Hex like 0x100000 for 1MB, minimum
- * erase size is 1 sector(0x40000/0x20000/0x10000)
- *
- * @return XSPI_SUCCESS or error code
- */
- int xspi_sector_erase(uint32_t erase_offset, uint32_t erase_len);
- /*!
- * @details IP write, For writing data to flash, calls xspi_wren() internally.
- * Single/multiple page write can start @any offset, but performance will be low
- * due to ERRATA
- * @param[out] dst_off Destination location on flash where data needs to
- * be written
- * @param[in] src source offset from where data to be read
- * @param[in] len length in bytes,where 1-word=4-bytes/32-bits
- *
- * @return XSPI_SUCCESS or error code
- */
- int xspi_write(uint32_t dst_off, void *src, uint32_t len);
- /*!
- * @details fspi_init, Init function.
- * @param[in] uint32_t base_reg_addr
- * @param[in] uint32_t flash_start_addr
- *
- * @return XSPI_SUCCESS or error code
- */
- int fspi_init(uint32_t base_reg_addr, uint32_t flash_start_addr);
- /*!
- * @details is_flash_busy, Check if any erase or write or lock is
- * pending on flash/slave
- * @param[in] void
- *
- * @return TRUE/FLASE
- */
- bool is_flash_busy(void);
- /*!
- * Advanced set of APIs.
- */
- /*!
- * @details Write enable, to be used by advance users only.
- * Step 1 for sending write commands to flash.
- * @param[in] dst_off destination offset where data will be written
- *
- * @return XSPI_SUCCESS or error code
- */
- int xspi_wren(uint32_t dst_off);
- /*!
- * @details AHB read, meaning direct memory mapped access to flash,
- * Minimum Read size = 1Byte
- * @param[in] src_off source offset from where data to read from flash,
- * needs to be word aligned
- * @param[out] des Destination location where data needs to be copied
- * @param[in] len length in Bytes,where 1-word=4-bytes/32-bits
- *
- * @return XSPI_SUCCESS or error code
- */
- int xspi_ahb_read(uint32_t src_off, uint32_t *des, uint32_t len);
- /*!
- * @details IP read, READ via RX buffer from flash, minimum READ size = 1Byte
- * @param[in] src_off source offset from where data to be read from flash
- * @param[out] des Destination location where data needs to be copied
- * @param[in] len length in Bytes,where 1-word=4-bytes/32-bits
- *
- * @return XSPI_SUCCESS or error code
- */
- int xspi_ip_read(uint32_t src_off, uint32_t *des, uint32_t len);
- /*!
- * @details CHIP erase, Erase complete chip in one go
- *
- * @return XSPI_SUCCESS or error code
- */
- int xspi_bulk_erase(void);
- /*!
- * Add test cases to confirm flash read/erase/write functionality.
- */
- void fspi_test(uint32_t fspi_test_addr, uint32_t size, int extra);
- #endif /* FSPI_API_H */
|