123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836 |
- enum _ftfx_status
- {
- kStatus_FTFx_Success = MAKE_STATUS(kStatusGroupGeneric, 0),
- kStatus_FTFx_InvalidArgument = MAKE_STATUS(kStatusGroupGeneric, 4),
- kStatus_FTFx_SizeError = MAKE_STATUS(kStatusGroupFtfxDriver, 0),
- kStatus_FTFx_AlignmentError =
- MAKE_STATUS(kStatusGroupFtfxDriver, 1),
- kStatus_FTFx_AddressError = MAKE_STATUS(kStatusGroupFtfxDriver, 2),
- kStatus_FTFx_AccessError =
- MAKE_STATUS(kStatusGroupFtfxDriver, 3),
- kStatus_FTFx_ProtectionViolation = MAKE_STATUS(
- kStatusGroupFtfxDriver, 4),
- kStatus_FTFx_CommandFailure =
- MAKE_STATUS(kStatusGroupFtfxDriver, 5),
- kStatus_FTFx_UnknownProperty = MAKE_STATUS(kStatusGroupFtfxDriver, 6),
- kStatus_FTFx_EraseKeyError = MAKE_STATUS(kStatusGroupFtfxDriver, 7),
- kStatus_FTFx_RegionExecuteOnly =
- MAKE_STATUS(kStatusGroupFtfxDriver, 8),
- kStatus_FTFx_ExecuteInRamFunctionNotReady =
- MAKE_STATUS(kStatusGroupFtfxDriver, 9),
- kStatus_FTFx_PartitionStatusUpdateFailure =
- MAKE_STATUS(kStatusGroupFtfxDriver, 10),
- kStatus_FTFx_SetFlexramAsEepromError =
- MAKE_STATUS(kStatusGroupFtfxDriver, 11),
- kStatus_FTFx_RecoverFlexramAsRamError =
- MAKE_STATUS(kStatusGroupFtfxDriver, 12),
- kStatus_FTFx_SetFlexramAsRamError = MAKE_STATUS(kStatusGroupFtfxDriver, 13),
- kStatus_FTFx_RecoverFlexramAsEepromError =
- MAKE_STATUS(kStatusGroupFtfxDriver, 14),
- kStatus_FTFx_CommandNotSupported = MAKE_STATUS(kStatusGroupFtfxDriver, 15),
- kStatus_FTFx_SwapSystemNotInUninitialized =
- MAKE_STATUS(kStatusGroupFtfxDriver, 16),
- kStatus_FTFx_SwapIndicatorAddressError =
- MAKE_STATUS(kStatusGroupFtfxDriver, 17),
- kStatus_FTFx_ReadOnlyProperty = MAKE_STATUS(kStatusGroupFtfxDriver, 18),
- kStatus_FTFx_InvalidPropertyValue =
- MAKE_STATUS(kStatusGroupFtfxDriver, 19),
- kStatus_FTFx_InvalidSpeculationOption =
- MAKE_STATUS(kStatusGroupFtfxDriver, 20),
- };
- enum _ftfx_driver_api_keys
- {
- kFTFx_ApiEraseKey = FOUR_CHAR_CODE('k', 'f', 'e', 'k')
- };
- typedef enum _ftfx_partition_flexram_load_option
- {
- kFTFx_PartitionFlexramLoadOptLoadedWithValidEepromData =
- 0x00U,
- kFTFx_PartitionFlexramLoadOptNotLoaded = 0x01U
- } ftfx_partition_flexram_load_opt_t;
- typedef enum _ftfx_read_resource_opt
- {
- kFTFx_ResourceOptionFlashIfr =
- 0x00U,
- kFTFx_ResourceOptionVersionId = 0x01U
- } ftfx_read_resource_opt_t;
- typedef enum _ftfx_margin_value
- {
- kFTFx_MarginValueNormal,
- kFTFx_MarginValueUser,
- kFTFx_MarginValueFactory,
- kFTFx_MarginValueInvalid
- } ftfx_margin_value_t;
- typedef enum _ftfx_security_state
- {
- kFTFx_SecurityStateNotSecure = 0xc33cc33cU,
- kFTFx_SecurityStateBackdoorEnabled = 0x5aa55aa5U,
- kFTFx_SecurityStateBackdoorDisabled = 0x5ac33ca5U
- } ftfx_security_state_t;
- typedef enum _ftfx_flexram_function_option
- {
- kFTFx_FlexramFuncOptAvailableAsRam = 0xFFU,
- kFTFx_FlexramFuncOptAvailableForEeprom = 0x00U
- } ftfx_flexram_func_opt_t;
- typedef enum _ftfx_swap_control_option
- {
- kFTFx_SwapControlOptionIntializeSystem = 0x01U,
- kFTFx_SwapControlOptionSetInUpdateState = 0x02U,
- kFTFx_SwapControlOptionSetInCompleteState = 0x04U,
- kFTFx_SwapControlOptionReportStatus = 0x08U,
- kFTFx_SwapControlOptionDisableSystem = 0x10U
- } ftfx_swap_control_opt_t;
- typedef enum _ftfx_swap_state
- {
- kFTFx_SwapStateUninitialized = 0x00U,
- kFTFx_SwapStateReady = 0x01U,
- kFTFx_SwapStateUpdate = 0x02U,
- kFTFx_SwapStateUpdateErased = 0x03U,
- kFTFx_SwapStateComplete = 0x04U,
- kFTFx_SwapStateDisabled = 0x05U
- } ftfx_swap_state_t;
- typedef enum _ftfx_swap_block_status
- {
- kFTFx_SwapBlockStatusLowerHalfProgramBlocksAtZero =
- 0x00U,
- kFTFx_SwapBlockStatusUpperHalfProgramBlocksAtZero =
- 0x01U,
- } ftfx_swap_block_status_t;
- typedef struct _ftfx_swap_state_config
- {
- ftfx_swap_state_t flashSwapState;
- ftfx_swap_block_status_t currentSwapBlockStatus;
- ftfx_swap_block_status_t nextSwapBlockStatus;
- } ftfx_swap_state_config_t;
- enum _ftfx_memory_type
- {
- kFTFx_MemTypePflash = 0x00U,
- kFTFx_MemTypeFlexnvm = 0x01U
- } ;
- typedef struct _ftfx_special_mem
- {
- uint32_t base;
- uint32_t size;
- uint32_t count;
- } ftfx_spec_mem_t;
- typedef struct _ftfx_mem_descriptor
- {
- uint8_t type;
- uint8_t index;
- uint8_t reserved[2];
- struct {
- uint32_t isIndBlock:1;
- uint32_t hasIndPfsizeReg:1;
- uint32_t hasProtControl:1;
- uint32_t hasIndProtReg:1;
- uint32_t hasXaccControl:1;
- uint32_t hasIndXaccReg:1;
- uint32_t :18;
- uint32_t ProtRegBits:8;
- } feature;
- uint32_t blockBase;
- uint32_t totalSize;
- uint32_t sectorSize;
- uint32_t blockCount;
- ftfx_spec_mem_t accessSegmentMem;
- ftfx_spec_mem_t protectRegionMem;
- } ftfx_mem_desc_t;
- typedef struct _ftfx_ops_config
- {
- uint32_t convertedAddress;
- struct {
- uint8_t sectorCmd;
- uint8_t sectionCmd;
- uint8_t resourceCmd;
- uint8_t checkCmd;
- uint8_t swapCtrlCmd;
- uint8_t blockWriteUnitSize;
- uint8_t reserved[2];
- } addrAligment;
- } ftfx_ops_config_t;
- typedef struct _ftfx_ifr_descriptor
- {
- struct {
- uint32_t has4ByteIdxSupport:1;
- uint32_t has8ByteIdxSupport:1;
- uint32_t :30;
- } feature;
- struct {
- uint8_t versionIdStart;
- uint8_t versionIdSize;
- uint16_t ifrMemSize;
- uint32_t pflashIfrStart;
- uint32_t dflashIfrStart;
- uint32_t pflashSwapIfrStart;
- } resRange;
- struct {
- uint16_t mix8byteIdxStart;
- uint16_t mix8byteIdxEnd;
- } idxInfo;
- } ftfx_ifr_desc_t;
- typedef struct _ftfx_config
- {
- ftfx_mem_desc_t flashDesc;
- ftfx_ops_config_t opsConfig;
- uint32_t flexramBlockBase;
- uint32_t flexramTotalSize;
- uint16_t eepromTotalSize;
- uint16_t reserved;
- uint32_t *runCmdFuncAddr;
- ftfx_ifr_desc_t ifrDesc;
- } ftfx_config_t;
- extern "C" {
- status_t FTFx_API_Init(ftfx_config_t *config);
- status_t FTFx_API_UpdateFlexnvmPartitionStatus(ftfx_config_t *config);
- status_t FTFx_CMD_Erase(ftfx_config_t *config,
- uint32_t start,
- uint32_t lengthInBytes,
- uint32_t key);
- status_t FTFx_CMD_EraseAll(ftfx_config_t *config, uint32_t key);
- status_t FTFx_CMD_EraseAllUnsecure(ftfx_config_t *config, uint32_t key);
- status_t FTFx_CMD_EraseAllExecuteOnlySegments(ftfx_config_t *config, uint32_t key);
- status_t FTFx_CMD_Program(ftfx_config_t *config,
- uint32_t start,
- uint8_t *src,
- uint32_t lengthInBytes);
- status_t FTFx_CMD_ProgramOnce(ftfx_config_t *config, uint32_t index, uint8_t *src, uint32_t lengthInBytes);
- status_t FTFx_CMD_ProgramSection(ftfx_config_t *config,
- uint32_t start,
- uint8_t *src,
- uint32_t lengthInBytes);
- status_t FTFx_CMD_ProgramPartition(ftfx_config_t *config,
- ftfx_partition_flexram_load_opt_t option,
- uint32_t eepromDataSizeCode,
- uint32_t flexnvmPartitionCode);
- status_t FTFx_CMD_ReadOnce(ftfx_config_t *config, uint32_t index, uint8_t *dst, uint32_t lengthInBytes);
- status_t FTFx_CMD_ReadResource(ftfx_config_t *config,
- uint32_t start,
- uint8_t *dst,
- uint32_t lengthInBytes,
- ftfx_read_resource_opt_t option);
- status_t FTFx_CMD_VerifyErase(ftfx_config_t *config,
- uint32_t start,
- uint32_t lengthInBytes,
- ftfx_margin_value_t margin);
- status_t FTFx_CMD_VerifyEraseAll(ftfx_config_t *config, ftfx_margin_value_t margin);
- status_t FTFx_CMD_VerifyEraseAllExecuteOnlySegments(ftfx_config_t *config, ftfx_margin_value_t margin);
- status_t FTFx_CMD_VerifyProgram(ftfx_config_t *config,
- uint32_t start,
- uint32_t lengthInBytes,
- const uint8_t *expectedData,
- ftfx_margin_value_t margin,
- uint32_t *failedAddress,
- uint32_t *failedData);
- status_t FTFx_REG_GetSecurityState(ftfx_config_t *config, ftfx_security_state_t *state);
- status_t FTFx_CMD_SecurityBypass(ftfx_config_t *config, const uint8_t *backdoorKey);
- status_t FTFx_CMD_SetFlexramFunction(ftfx_config_t *config, ftfx_flexram_func_opt_t option);
- status_t FTFx_CMD_SwapControl(ftfx_config_t *config,
- uint32_t address,
- ftfx_swap_control_opt_t option,
- ftfx_swap_state_config_t *returnInfo);
- }
|