49 #ifndef __FLASHSAFE_H__
50 #define __FLASHSAFE_H__
65 #include <inc/hw_types.h>
66 #include <inc/hw_flash.h>
67 #include <inc/hw_memmap.h>
68 #include <inc/hw_ints.h>
69 #include <inc/hw_fcfg1.h>
90 #define FlashsafeSizeGet NOROM_FlashsafeSizeGet
91 #define FlashsafeSectorSizeGet NOROM_FlashsafeSectorSizeGet
92 #define FlashsafePowerModeSet NOROM_FlashsafePowerModeSet
93 #define FlashsafePowerModeGet NOROM_FlashsafePowerModeGet
94 #define FlashsafeProtectionSet NOROM_FlashsafeProtectionSet
95 #define FlashsafeProtectionGet NOROM_FlashsafeProtectionGet
96 #define FlashsafeProtectionSave NOROM_FlashsafeProtectionSave
97 #define FlashsafeCheckFsmForError NOROM_FlashsafeCheckFsmForError
98 #define FlashsafeCheckFsmForReady NOROM_FlashsafeCheckFsmForReady
99 #define FlashsafeIntRegister NOROM_FlashsafeIntRegister
100 #define FlashsafeIntUnregister NOROM_FlashsafeIntUnregister
101 #define FlashsafeIntEnable NOROM_FlashsafeIntEnable
102 #define FlashsafeIntDisable NOROM_FlashsafeIntDisable
103 #define FlashsafeIntStatus NOROM_FlashsafeIntStatus
104 #define FlashsafeIntClear NOROM_FlashsafeIntClear
105 #define FlashsafeSectorErase NOROM_FlashsafeSectorErase
106 #define FlashsafeProgram NOROM_FlashsafeProgram
107 #define FlashsafeDisableSectorsForWrite NOROM_FlashsafeDisableSectorsForWrite
116 #define FLASHSAFE_ACCESS_DENIED 0x000000ff
117 #define FLASHSAFE_ACCESS_OK 0x000000ee
118 #define SMPH_ALLOC_FLASH 1
125 #define FAPI_STATUS_SUCCESS 0x00000000 // Function completed successfully
126 #define FAPI_STATUS_FSM_BUSY 0x00000001 // FSM is Busy
127 #define FAPI_STATUS_FSM_READY 0x00000002 // FSM is Ready
128 #define FAPI_STATUS_INCORRECT_DATABUFFER_LENGTH \
129 0x00000003 // Incorrect parameter value
130 #define FAPI_STATUS_FSM_ERROR 0x00000004 // Operation failed
138 #define FLASH_INT_FSM_DONE 0x00400000 // FSM Done Interrupt Mask
139 #define FLASH_INT_RV 0x00010000 // Read Verify error Interrupt Mask
146 #define FLASH_PWR_ACTIVE_MODE 0x00000000
147 #define FLASH_PWR_OFF_MODE 0x00000001
148 #define FLASH_PWR_DEEP_STDBY_MODE \
156 #define FLASH_NO_PROTECT 0x00000000 // Sector not protected
157 #define FLASH_WRITE_PROTECT 0x00000001 // Sector erase and program
165 #define FSM_REG_WRT_ENABLE 5
166 #define FSM_REG_WRT_DISABLE 2
266 uint32_t ui32BankGracePeriode,
267 uint32_t ui32PumpGracePeriode);
309 uint32_t ui32ProtectMode);
562 extern uint32_t
FlashsafeProgram(uint8_t *pui8DataBuffer, uint32_t ui32Address,
587 #if !defined(DRIVERLIB_NOROM) && !defined(DOXYGEN)
589 #ifdef ROM_FlashsafeSizeGet
590 #undef FlashsafeSizeGet
591 #define FlashsafeSizeGet ROM_FlashsafeSizeGet
593 #ifdef ROM_FlashsafeSectorSizeGet
594 #undef FlashsafeSectorSizeGet
595 #define FlashsafeSectorSizeGet ROM_FlashsafeSectorSizeGet
597 #ifdef ROM_FlashsafePowerModeSet
598 #undef FlashsafePowerModeSet
599 #define FlashsafePowerModeSet ROM_FlashsafePowerModeSet
601 #ifdef ROM_FlashsafePowerModeGet
602 #undef FlashsafePowerModeGet
603 #define FlashsafePowerModeGet ROM_FlashsafePowerModeGet
605 #ifdef ROM_FlashsafeProtectionSet
606 #undef FlashsafeProtectionSet
607 #define FlashsafeProtectionSet ROM_FlashsafeProtectionSet
609 #ifdef ROM_FlashsafeProtectionGet
610 #undef FlashsafeProtectionGet
611 #define FlashsafeProtectionGet ROM_FlashsafeProtectionGet
613 #ifdef ROM_FlashsafeProtectionSave
614 #undef FlashsafeProtectionSave
615 #define FlashsafeProtectionSave ROM_FlashsafeProtectionSave
617 #ifdef ROM_FlashsafeCheckFsmForError
618 #undef FlashsafeCheckFsmForError
619 #define FlashsafeCheckFsmForError ROM_FlashsafeCheckFsmForError
621 #ifdef ROM_FlashsafeCheckFsmForReady
622 #undef FlashsafeCheckFsmForReady
623 #define FlashsafeCheckFsmForReady ROM_FlashsafeCheckFsmForReady
625 #ifdef ROM_FlashsafeIntRegister
626 #undef FlashsafeIntRegister
627 #define FlashsafeIntRegister ROM_FlashsafeIntRegister
629 #ifdef ROM_FlashsafeIntUnregister
630 #undef FlashsafeIntUnregister
631 #define FlashsafeIntUnregister ROM_FlashsafeIntUnregister
633 #ifdef ROM_FlashsafeIntEnable
634 #undef FlashsafeIntEnable
635 #define FlashsafeIntEnable ROM_FlashsafeIntEnable
637 #ifdef ROM_FlashsafeIntDisable
638 #undef FlashsafeIntDisable
639 #define FlashsafeIntDisable ROM_FlashsafeIntDisable
641 #ifdef ROM_FlashsafeIntStatus
642 #undef FlashsafeIntStatus
643 #define FlashsafeIntStatus ROM_FlashsafeIntStatus
645 #ifdef ROM_FlashsafeIntClear
646 #undef FlashsafeIntClear
647 #define FlashsafeIntClear ROM_FlashsafeIntClear
649 #ifdef ROM_FlashsafeSectorErase
650 #undef FlashsafeSectorErase
651 #define FlashsafeSectorErase ROM_FlashsafeSectorErase
653 #ifdef ROM_FlashsafeProgram
654 #undef FlashsafeProgram
655 #define FlashsafeProgram ROM_FlashsafeProgram
657 #ifdef ROM_FlashsafeDisableSectorsForWrite
658 #undef FlashsafeDisableSectorsForWrite
659 #define FlashsafeDisableSectorsForWrite ROM_FlashsafeDisableSectorsForWrite
672 #endif // __FLASHSAFE_H__
uint32_t FlashsafeSectorSizeGet(void)
Get size of a flash sector in no of bytes.
uint32_t FlashsafeSectorErase(uint32_t ui32SectorAddress)
Erase a flash sector.
uint32_t FlashsafeIntEnable(uint32_t ui32IntFlags)
Enables flash controller interrupt sources.
static bool FlashsafeSMPHTryAcquire(void)
Aquire the flash semaphore.
uint32_t FlashsafeCheckFsmForError(void)
Checks if the Flashsafe state machine has detected an error.
uint32_t FlashsafePowerModeGet(void)
Get current configured power mode.
uint32_t FlashsafeProgram(uint8_t *pui8DataBuffer, uint32_t ui32Address, uint32_t ui32Count)
Programs unprotected main bank flash sectors.
uint32_t FlashsafeIntClear(uint32_t ui32IntFlags)
Clears flash controller interrupt source.
uint32_t FlashsafeIntDisable(uint32_t ui32IntFlags)
Disables individual flash controller interrupt sources.
uint32_t FlashsafeCheckFsmForReady(void)
Checks if the Flash state machine is ready.
static void SMPHRelease(uint32_t ui32Semaphore)
Release a semaphore.
static bool SMPHTryAcquire(uint32_t ui32Semaphore)
Try to Acquire a semaphore.
uint32_t FlashsafeProtectionSet(uint32_t ui32SectorAddress, uint32_t ui32ProtectMode)
Set sector protection.
uint32_t FlashsafePowerModeSet(uint32_t ui32PowerMode, uint32_t ui32BankGracePeriode, uint32_t ui32PumpGracePeriode)
Set power mode.
uint32_t FlashsafeDisableSectorsForWrite(void)
Disables all sectors for erase and programming on the active bank.
uint32_t FlashsafeProtectionGet(uint32_t ui32SectorAddress)
Get sector protection.
uint32_t FlashsafeProtectionSave(uint32_t ui32SectorAddress)
Save sector protection to make it permanent.
uint32_t FlashsafeIntStatus(void)
Gets the current interrupt status.
uint32_t FlashsafeSizeGet(void)
Get the size of the flash.
static void FlashsafeSMPHRelease(void)
Release the flash semaphore.
uint32_t FlashsafeIntUnregister(void)
Unregisters the interrupt handler for the flash interrupt.
uint32_t FlashsafeIntRegister(void(*pfnHandler)(void))
Registers an interrupt handler for the flash interrupt.