31#ifndef LIBOPENCM3_FLASH_H
32#define LIBOPENCM3_FLASH_H
42#define FLASH_ACR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x00)
44#define FLASH_KEYR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x04)
46#define FLASH_OPTKEYR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x08)
48#define FLASH_SR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x0C)
50#define FLASH_CR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x10)
52#define FLASH_AR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x14)
54#define FLASH_OBR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x1C)
56#define FLASH_WRPR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x20)
61#define FLASH_ACR_PRFTBS (1 << 5)
62#define FLASH_ACR_PRFTBE (1 << 4)
64#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTBE
65#define FLASH_ACR_HLFCYA (1 << 3)
66#define FLASH_ACR_LATENCY_SHIFT 0
67#define FLASH_ACR_LATENCY_MASK 0x0f
69#define FLASH_ACR_LATENCY(w) ((w) & FLASH_ACR_LATENCY_MASK)
74#define FLASH_SR_BSY (1 << 0)
75#define FLASH_SR_ERLYBSY (1 << 1)
76#define FLASH_SR_PGERR (1 << 2)
77#define FLASH_SR_WRPRTERR (1 << 4)
78#define FLASH_SR_EOP (1 << 5)
82#define FLASH_CR_OBL_LAUNCH (1 << 13)
83#define FLASH_CR_EOPIE (1 << 12)
84#define FLASH_CR_ERRIE (1 << 10)
85#define FLASH_CR_OPTWRE (1 << 9)
86#define FLASH_CR_LOCK (1 << 7)
87#define FLASH_CR_STRT (1 << 6)
88#define FLASH_CR_OPTER (1 << 5)
89#define FLASH_CR_OPTPG (1 << 4)
90#define FLASH_CR_MER (1 << 2)
91#define FLASH_CR_PER (1 << 1)
92#define FLASH_CR_PG (1 << 0)
95#define FLASH_KEYR_KEY1 ((uint32_t)0x45670123)
96#define FLASH_KEYR_KEY2 ((uint32_t)0xcdef89ab)
97#define FLASH_OPTKEYR_KEY1 FLASH_KEYR_KEY1
98#define FLASH_OPTKEYR_KEY2 FLASH_KEYR_KEY2
void flash_erase_page(uint32_t page_address)
void flash_clear_pgerr_flag(void)
void flash_clear_wrprterr_flag(void)
void flash_erase_all_pages(void)
void flash_program_half_word(uint32_t address, uint16_t data)