GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
+89
@@ -0,0 +1,89 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
/*
|
||||
* Copyright 2020-2021 NXP
|
||||
*/
|
||||
|
||||
/**
|
||||
* @Flash info
|
||||
*
|
||||
*/
|
||||
#ifndef FLASH_INFO_H
|
||||
#define FLASH_INFO_H
|
||||
|
||||
#define SZ_16M_BYTES 0x1000000U
|
||||
|
||||
/* Start of "if defined(CONFIG_MT25QU512A)" */
|
||||
#if defined(CONFIG_MT25QU512A)
|
||||
#define F_SECTOR_64K 0x10000U
|
||||
#define F_PAGE_256 0x100U
|
||||
#define F_SECTOR_4K 0x1000U
|
||||
#define F_FLASH_SIZE_BYTES 0x4000000U
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_64K
|
||||
#ifdef CONFIG_FSPI_4K_ERASE
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_4K
|
||||
#endif
|
||||
|
||||
/* End of "if defined(CONFIG_MT25QU512A)" */
|
||||
|
||||
/* Start of "if defined(CONFIG_MX25U25645G)" */
|
||||
#elif defined(CONFIG_MX25U25645G)
|
||||
#define F_SECTOR_64K 0x10000U
|
||||
#define F_PAGE_256 0x100U
|
||||
#define F_SECTOR_4K 0x1000U
|
||||
#define F_FLASH_SIZE_BYTES 0x2000000U
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_64K
|
||||
#ifdef CONFIG_FSPI_4K_ERASE
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_4K
|
||||
#endif
|
||||
|
||||
/* End of "if defined(CONFIG_MX25U25645G)" */
|
||||
|
||||
/* Start of "if defined(CONFIG_MX25U51245G)" */
|
||||
#elif defined(CONFIG_MX25U51245G)
|
||||
#define F_SECTOR_64K 0x10000U
|
||||
#define F_PAGE_256 0x100U
|
||||
#define F_SECTOR_4K 0x1000U
|
||||
#define F_FLASH_SIZE_BYTES 0x4000000U
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_64K
|
||||
#ifdef CONFIG_FSPI_4K_ERASE
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_4K
|
||||
#endif
|
||||
|
||||
/* End of "if defined(CONFIG_MX25U51245G)" */
|
||||
|
||||
/* Start of "if defined(CONFIG_MT35XU512A)" */
|
||||
#elif defined(CONFIG_MT35XU512A)
|
||||
#define F_SECTOR_128K 0x20000U
|
||||
#define F_SECTOR_32K 0x8000U
|
||||
#define F_PAGE_256 0x100U
|
||||
#define F_SECTOR_4K 0x1000U
|
||||
#define F_FLASH_SIZE_BYTES 0x4000000U
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_128K
|
||||
#ifdef CONFIG_FSPI_4K_ERASE
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_4K
|
||||
#endif
|
||||
/* If Warm boot is enabled for the platform,
|
||||
* count of arm instruction N-OP(s) to mark
|
||||
* the completion of write operation to flash;
|
||||
* varies from one flash to other.
|
||||
*/
|
||||
#ifdef NXP_WARM_BOOT
|
||||
#define FLASH_WR_COMP_WAIT_BY_NOP_COUNT 0x20000
|
||||
#endif
|
||||
|
||||
/* End of "if defined(CONFIG_MT35XU512A)" */
|
||||
|
||||
/* Start of #elif defined(CONFIG_MT35XU02G) */
|
||||
#elif defined(CONFIG_MT35XU02G)
|
||||
#define F_SECTOR_128K 0x20000U
|
||||
#define F_PAGE_256 0x100U
|
||||
#define F_SECTOR_4K 0x1000U
|
||||
#define F_FLASH_SIZE_BYTES 0x10000000U
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_128K
|
||||
#ifdef CONFIG_FSPI_4K_ERASE
|
||||
#define F_SECTOR_ERASE_SZ F_SECTOR_4K
|
||||
#endif
|
||||
|
||||
#endif /* End of #elif defined(CONFIG_MT35XU02G) */
|
||||
|
||||
#endif /* FLASH_INFO_H */
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* 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 */
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright 2020 NXP
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
*/
|
||||
|
||||
/* error codes */
|
||||
#ifndef XSPI_ERROR_CODES_H
|
||||
#define XSPI_ERROR_CODES_H
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
typedef enum {
|
||||
XSPI_SUCCESS = 0,
|
||||
XSPI_READ_FAIL = ELAST + 1,
|
||||
XSPI_ERASE_FAIL,
|
||||
XSPI_IP_READ_FAIL,
|
||||
XSPI_AHB_READ_FAIL,
|
||||
XSPI_IP_WRITE_FAIL,
|
||||
XSPI_AHB_WRITE_FAIL,
|
||||
XSPI_BLOCK_TIMEOUT,
|
||||
XSPI_UNALIGN_ADDR,
|
||||
XSPI_UNALIGN_SIZE,
|
||||
} XSPI_STATUS_CODES;
|
||||
#undef ELAST
|
||||
#define ELAST XSPI_STATUS_CODES.XSPI_UNALIGN_SIZE
|
||||
#endif
|
||||
Reference in New Issue
Block a user