123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- /*
- * @file hv_drv_Flash.h
- * @brief Header file of misc module.
- *
- * @verbatim
- * ==============================================================================
- * ##### How to use #####
- * ==============================================================================
- * (+) Use ()
- *
- * @endverbatim
- * @author HiView SoC Software Team
- * @version 1.0.0
- * @date 2023-05-11
- */
- #ifndef _HV_DRV_FLASH_H
- #define _HV_DRV_FLASH_H
- typedef enum _FlashAddressWidth
- {
- FLASH_ADDRESS_WIDTH_24 = 24,
- FLASH_ADDRESS_WIDTH_32 = 32,
- } FlashAddressWidth;
- typedef enum FlashRateMode
- {
- FLASH_STANDARD = 0,
- FLASH_DUAL,
- FLASH_QUAD,
- FLASH_4XIO,
- FLASH_QPI,
- } FlashRateMode;
- typedef enum _FlashMultiIOType
- {
- /*!< In Dual and quad mode, instruction and address send by one line*/
- FLASH_MULTIIO_FAST_TYPE = 0,
- /*!< instruction and address send by 4 line */
- FLASH_INSTRUCT_ADDR_4LINE,
- FLASH_ADDR_4LINE,
- } FlashMultiIOType;
- typedef enum _FlashWorkModeSel
- {
- FLASH_USE_POLLING = 0,
- FLASH_USE_INT,
- FLASH_USE_DMA,
- } FlashWorkModeSel;
- typedef enum _FlashDataWidth
- {
- /*! <The DataSize for transmition is 8bits */
- FLASH_DATAWIDTH_8 = 8,
- /*!< The DataSize for transmition is 16bits */
- FLASH_DATAWIDTH_16 = 16,
- /*!< The DataSize for transmition is 32bits */
- FLASH_DATAWIDTH_32 = 32,
- } FlashDataWidth;
- typedef enum _FlashEraseType
- {
- FLASH_ERASE_SECTOR = 0,
- FLASH_ERASE_MULTI_SECTOR,
- FLASH_ERASE_CHIP
- } FlashEraseType;
- typedef enum _FlashTransRW
- {
- FLASH_WRITE = 0,
- FLASH_READ,
- } FlashTransRW;
- typedef enum _FlashCSSel
- {
- FLASH_CS_HARDWARE_SELF = 0,
- FLASH_CS_BY_GPIO,
- } FlashCSSel;
- typedef struct _FlashTxMem
- {
- UCHAR8 cmdAddr[20];
- UCHAR8 txData[256];
- } FlashTxMem;
- typedef Status (*Flash_CpltCallback)(FlashTransRW transType, void *arg);
- typedef struct _FlashInitParam
- {
- /*!< Specifies flash adress is 24 or 32 bits */
- FlashAddressWidth AddrWidth;
- FlashWorkModeSel WorkModeSel;
- FlashRateMode RateMode;
- /*!< Specifies the SPI data size. */
- FlashDataWidth DataSize;
- FlashMultiIOType TransType;
- Flash_CpltCallback FlashCpltCallback;
- FlashModel FlashModel;
- FlashCSSel CsSel;
- void* FlashCallback;
- }FlashInitParam;
- typedef struct _FlashSelf FlashSelf;
- /** @defgroup flash flash
- * flash rd/rw functions
- * @{
- */
- /**
- * @brief write pm data to flash.
- * @param uiAddress write offset at flash
- * @param pucData address write data to
- * @param uiDataSize write data size
- * @retval Status
- */
- Status Hv_Drv_Flash_WritePMConfigData(UINT32 uiIndex, UINT32 uiData);
- /**
- * @brief write data to flash.
- * @param uiAddress write offset at flash. only support monitordata partition
- * @param pucData address write data to
- * @param uiDataSize write data size
- * @retval Status
- */
- Status Hv_Drv_Flash_WriteMonitorData(UINT32 uiAddress, UCHAR8 *pucData, UINT32 uiDataSize);
- /**
- * @brief read data from flash in xip mode.
- * @param uiAddress read offset at flash
- * @param pucData address for read data
- * @param uiDataSize size to read data
- * @retval Status
- */
- Status Hv_Drv_Flash_ReadXIP(UINT32 uiAddress, UCHAR8 *pucData, UINT32 uiDataSize);
- /**
- * @brief read data from flash.
- * @param uiAddress read offset at flash. only support monitordata partition
- * @param pucData address for read data
- * @param uiDataSize size to read data
- * @retval Status
- */
- Status Hv_Drv_Flash_ReadMonitorData(UINT32 uiAddress, UCHAR8 *pucData, UINT32 uiDataSize);
- /**
- * @brief int flash interface.
- */
- void Hv_Drv_Flash_SetQspiMode(FlashModel FlashModel, FlashRateMode RateMode, FlashWorkModeSel workMode);
- /**
- * @brief deint flash interface.
- */
- void Hv_Drv_Flash_SetXipMode(void);
- /**
- * @brief config logo data and pq etc data partition flag
- */
- void Hv_Drv_Flash_ConfigPartFlag(void);
- /**
- * @brief erase flash.
- * @param[in] uiWriteAddr Address of flash to do erase.
- * @param[in] uiLength Date length to be written.
- * @return None
- */
- void Hv_Drv_Flash_OnlyErase(UINT32 uiReadAddr, UINT32 uiLength);
- /**
- * @brief Erase flash by a 64K Bytes(Multi Sector) length.
- Warning: Always erase 64K bytes, please be sure to keep your data safe.
- * @param[in] uiAddr Address of flash to do erase.
- * @return None
- */
- void Hv_Drv_Flash_OnlyEraseMultiSector(UINT32 uiAddr);
- /**
- * @brief Write flash.
- * @param[in] uiWriteAddr Address of flash to do write.
- * @param[in] pucWriteBuf Date buffer to be written.
- * @param[in] uiLength Date length to be written.
- * @return Status
- */
- Status Hv_Drv_Flash_OnlyWrite(UINT32 uiWriteAddr, UCHAR8 *pucWriteBuf, UINT32 uiLength);
- /**
- * @brief Write flash.
- * @param[in] uiReadAddr Address of flash to do read.
- * @param[in] pucReadBuf Buffer for saving read back data.
- * @param[in] uiLength Date length to be read.
- * @return None
- */
- void Hv_Drv_Flash_OnlyRead(UINT32 uiReadAddr, UCHAR8* pucReadBuf, UINT32 uiLength);
- /**
- * @brief whether w/r is ongoing.
- * @return w/r state
- */
- UCHAR8 Hv_Drv_Flash_InWritting(void);
- /**
- * @brief Flash chip erase.
- * @param[in] None.
- * @return None
- */
- void Hv_Drv_Flash_EraseChip(void);
- /** @} */
- #endif
|