OpenOCD
pac55xx.c File Reference
Include dependency graph for pac55xx.c:

Go to the source code of this file.

Macros

#define FLASH_ERASE_TIMEOUT_MS   20
 
#define FLASH_WRITE_TIMEOUT_MS   20
 
#define PAC55XX_FLASH_BASE   0x00000000UL
 
#define PAC55XX_MEMCTL_BASE   (PAC55XX_PERIPH_BASE + 0xD0000)
 
#define PAC55XX_MEMCTL_FLASHERASE   (PAC55XX_MEMCTL_BASE + 0x20)
 
#define PAC55XX_MEMCTL_FLASHERASE_ERASE   0x8C799CA7
 
#define PAC55XX_MEMCTL_FLASHLOCK   (PAC55XX_MEMCTL_BASE + 0x08)
 
#define PAC55XX_MEMCTL_FLASHLOCK_ALLOWWRITEERASE   0x43DF140A
 
#define PAC55XX_MEMCTL_FLASHLOCK_LOCKED   0x0
 
#define PAC55XX_MEMCTL_FLASHPAGE   (PAC55XX_MEMCTL_BASE + 0x0C)
 
#define PAC55XX_MEMCTL_FLASHSTATUS   (PAC55XX_MEMCTL_BASE + 0x04)
 
#define PAC55XX_MEMCTL_FLASHSTATUS_ERASEBUSY   BIT(1)
 
#define PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY   BIT(0)
 
#define PAC55XX_PERIPH_BASE   0x40000000UL
 

Functions

 FLASH_BANK_COMMAND_HANDLER (pac55xx_flash_bank_command)
 
int pac55xx_erase (struct flash_bank *bank, unsigned int first, unsigned int last)
 
int pac55xx_probe (struct flash_bank *bank)
 
static int pac55xx_wait_for_operation_to_finish (struct flash_bank *bank, unsigned int timeout_ms)
 Wait until the flash controller is not busy anymore. More...
 
int pac55xx_write (struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
 

Variables

const struct flash_driver pac55xx_flash
 

Macro Definition Documentation

◆ FLASH_ERASE_TIMEOUT_MS

#define FLASH_ERASE_TIMEOUT_MS   20

Definition at line 33 of file pac55xx.c.

◆ FLASH_WRITE_TIMEOUT_MS

#define FLASH_WRITE_TIMEOUT_MS   20

Definition at line 34 of file pac55xx.c.

◆ PAC55XX_FLASH_BASE

#define PAC55XX_FLASH_BASE   0x00000000UL

Definition at line 15 of file pac55xx.c.

◆ PAC55XX_MEMCTL_BASE

#define PAC55XX_MEMCTL_BASE   (PAC55XX_PERIPH_BASE + 0xD0000)

Definition at line 18 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHERASE

#define PAC55XX_MEMCTL_FLASHERASE   (PAC55XX_MEMCTL_BASE + 0x20)

Definition at line 23 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHERASE_ERASE

#define PAC55XX_MEMCTL_FLASHERASE_ERASE   0x8C799CA7

Definition at line 30 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHLOCK

#define PAC55XX_MEMCTL_FLASHLOCK   (PAC55XX_MEMCTL_BASE + 0x08)

Definition at line 21 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHLOCK_ALLOWWRITEERASE

#define PAC55XX_MEMCTL_FLASHLOCK_ALLOWWRITEERASE   0x43DF140A

Definition at line 28 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHLOCK_LOCKED

#define PAC55XX_MEMCTL_FLASHLOCK_LOCKED   0x0

Definition at line 29 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHPAGE

#define PAC55XX_MEMCTL_FLASHPAGE   (PAC55XX_MEMCTL_BASE + 0x0C)

Definition at line 22 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHSTATUS

#define PAC55XX_MEMCTL_FLASHSTATUS   (PAC55XX_MEMCTL_BASE + 0x04)

Definition at line 20 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHSTATUS_ERASEBUSY

#define PAC55XX_MEMCTL_FLASHSTATUS_ERASEBUSY   BIT(1)

Definition at line 25 of file pac55xx.c.

◆ PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY

#define PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY   BIT(0)

Definition at line 26 of file pac55xx.c.

◆ PAC55XX_PERIPH_BASE

#define PAC55XX_PERIPH_BASE   0x40000000UL

Definition at line 17 of file pac55xx.c.

Function Documentation

◆ FLASH_BANK_COMMAND_HANDLER()

FLASH_BANK_COMMAND_HANDLER ( pac55xx_flash_bank_command  )

Definition at line 166 of file pac55xx.c.

References alloc_block_array(), bank, ERROR_FAIL, ERROR_OK, PAC55XX_FLASH_BASE, and page_size.

◆ pac55xx_erase()

◆ pac55xx_probe()

int pac55xx_probe ( struct flash_bank *  bank)

Definition at line 161 of file pac55xx.c.

References ERROR_OK.

◆ pac55xx_wait_for_operation_to_finish()

static int pac55xx_wait_for_operation_to_finish ( struct flash_bank *  bank,
unsigned int  timeout_ms 
)
static

Wait until the flash controller is not busy anymore.


Parameters
bankcurrent flash bank
Returns
ERROR_OK in case of success, ERROR_XXX code otherwise

Definition at line 42 of file pac55xx.c.

References bank, ERROR_OK, ERROR_TIMEOUT_REACHED, keep_alive(), LOG_ERROR, PAC55XX_MEMCTL_FLASHSTATUS, PAC55XX_MEMCTL_FLASHSTATUS_ERASEBUSY, PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY, status, target_read_u32(), and timeval_ms().

Referenced by pac55xx_erase(), and pac55xx_write().

◆ pac55xx_write()

Variable Documentation

◆ pac55xx_flash

const struct flash_driver pac55xx_flash
Initial value:
= {
.name = "pac55xx",
.flash_bank_command = pac55xx_flash_bank_command,
.erase = pac55xx_erase,
.write = pac55xx_write,
.probe = pac55xx_probe,
.erase_check = default_flash_blank_check,
.auto_probe = pac55xx_probe,
.free_driver_priv = default_flash_free_driver_priv,
}
int default_flash_blank_check(struct flash_bank *bank)
Provides default erased-bank check handling.
int default_flash_read(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
Provides default read implementation for flash memory.
void default_flash_free_driver_priv(struct flash_bank *bank)
Deallocates bank->driver_priv.
int pac55xx_erase(struct flash_bank *bank, unsigned int first, unsigned int last)
Definition: pac55xx.c:68
int pac55xx_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
Definition: pac55xx.c:110
int pac55xx_probe(struct flash_bank *bank)
Definition: pac55xx.c:161

Definition at line 166 of file pac55xx.c.