2022-04-08 14:46:35 +00:00
|
|
|
/*
|
2022-08-24 15:30:23 +00:00
|
|
|
* Copyright 2019-2022 NXP
|
2022-04-08 14:46:35 +00:00
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __FSL_NOR_FLASH_H__
|
|
|
|
#define __FSL_NOR_FLASH_H__
|
|
|
|
|
|
|
|
#include "fsl_common.h"
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @addtogroup nor_flash_component
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
* Definitions
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
/*! @brief NOR Flash Config block structure */
|
|
|
|
typedef struct _nor_config
|
|
|
|
{
|
|
|
|
void *memControlConfig; /*!< memory controller configuration, should be assigned to specific controller
|
|
|
|
configuration structure pointer.*/
|
|
|
|
void *driverBaseAddr; /*! Driver Base address. */
|
|
|
|
} nor_config_t;
|
|
|
|
|
|
|
|
/*!@brief NOR Flash handle info*/
|
|
|
|
typedef struct _nor_handle
|
|
|
|
{
|
|
|
|
/*------------Common parameters used for normal NOR flash controller operation ----------*/
|
|
|
|
void *driverBaseAddr; /*! Driver Base address. */
|
|
|
|
uint32_t bytesInPageSize; /*!< Page size in byte of Serial NOR */
|
|
|
|
uint32_t bytesInSectorSize; /*!< Minimun Sector size in byte supported by Serial NOR */
|
|
|
|
uint32_t bytesInMemorySize; /*!< Memory size in byte of Serial NOR */
|
|
|
|
/*------------Specific parameters used for specific NOR flash controller ----------*/
|
|
|
|
void *deviceSpecific; /*!< Device specific control parameter */
|
|
|
|
} nor_handle_t;
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
* API
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @name NOR FLASH Driver
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Initialize NOR FLASH devices.
|
|
|
|
*
|
|
|
|
* This function initialize NOR Flash controller and NOR Flash.
|
|
|
|
*
|
|
|
|
* @param config NOR flash configuration.
|
|
|
|
* The "memControlConfig" and "driverBaseAddr" are controller specific structure.
|
|
|
|
* please set those two parameter with your Nand controller configuration structure type pointer.
|
|
|
|
* such as for SEMC:
|
|
|
|
*
|
|
|
|
* spifi_mem_nor_config_t spifiNorconfig =
|
|
|
|
* {
|
|
|
|
* .....
|
|
|
|
* }
|
|
|
|
* nor_config_t config =
|
|
|
|
* {
|
|
|
|
* .memControlConfig = (void *)\&spifiNorconfig;
|
|
|
|
* .driverBaseAddr = (void *)SPIFI0;
|
|
|
|
* }
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Init(nor_config_t *config, nor_handle_t *handle);
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Read page data from NOR Flash.
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @param address NOR flash start address to read data from.
|
|
|
|
* @param buffer NOR flash buffer to read data to.
|
|
|
|
* @param length NOR flash read length.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Read(nor_handle_t *handle, uint32_t address, uint8_t *buffer, uint32_t length);
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Program page data to NOR Flash.
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @param address The address to be programed.
|
|
|
|
* @param buffer The buffer to be programed to the page.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Page_Program(nor_handle_t *handle, uint32_t address, uint8_t *buffer);
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Program data to NOR Flash.
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @param address The address to be programed.
|
|
|
|
* @param buffer The buffer to be programed to the page.
|
|
|
|
* @param length The data length to be programed to the page.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Program(nor_handle_t *handle, uint32_t address, uint8_t *buffer, uint32_t length);
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Erase sector.
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @param address The start address to be erased.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Erase_Sector(nor_handle_t *handle, uint32_t address);
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Erase block.
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @param address The start address to be erased.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Erase_Block(nor_handle_t *handle, uint32_t address);
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Erase flash with any size.
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @param address The start address to be erased.
|
|
|
|
* @param size_Byte Erase flash size.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Erase(nor_handle_t *handle, uint32_t address, uint32_t size_Byte);
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Erase Chip NOR Flash .
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Erase_Chip(nor_handle_t *handle);
|
|
|
|
|
2022-08-24 15:30:23 +00:00
|
|
|
/*!
|
|
|
|
* @brief Get the busy status of the NOR Flash.
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @param isBusy Pointer of the variable which has the busy status of the NOR flash.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_Is_Busy(nor_handle_t *handle, bool *isBusy);
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* @brief Deinitialize NOR FLASH devices.
|
|
|
|
*
|
|
|
|
* @param handle The NOR Flash handler.
|
|
|
|
* @retval execution status
|
|
|
|
*/
|
|
|
|
status_t Nor_Flash_DeInit(nor_handle_t *handle);
|
|
|
|
|
2022-04-08 14:46:35 +00:00
|
|
|
/*! @} */
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
/*! @} */
|
|
|
|
#endif /* __FSL_NOR_FLASH_H__ */
|