YAHAL
Yet Another Hardware Abstraction Library
Loading...
Searching...
No Matches
bootrom.h File Reference
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

Go to the source code of this file.

Macros

#define __force_inline   inline __attribute__((always_inline))
 
#define ROM_FUNC_POPCOUNT32   ROM_TABLE_CODE('P', '3')
 
#define ROM_FUNC_REVERSE32   ROM_TABLE_CODE('R', '3')
 
#define ROM_FUNC_CLZ32   ROM_TABLE_CODE('L', '3')
 
#define ROM_FUNC_CTZ32   ROM_TABLE_CODE('T', '3')
 
#define ROM_FUNC_MEMSET   ROM_TABLE_CODE('M', 'S')
 
#define ROM_FUNC_MEMSET4   ROM_TABLE_CODE('S', '4')
 
#define ROM_FUNC_MEMCPY   ROM_TABLE_CODE('M', 'C')
 
#define ROM_FUNC_MEMCPY44   ROM_TABLE_CODE('C', '4')
 
#define ROM_FUNC_RESET_USB_BOOT   ROM_TABLE_CODE('U', 'B')
 
#define ROM_FUNC_CONNECT_INTERNAL_FLASH   ROM_TABLE_CODE('I', 'F')
 
#define ROM_FUNC_FLASH_EXIT_XIP   ROM_TABLE_CODE('E', 'X')
 
#define ROM_FUNC_FLASH_RANGE_ERASE   ROM_TABLE_CODE('R', 'E')
 
#define ROM_FUNC_FLASH_RANGE_PROGRAM   ROM_TABLE_CODE('R', 'P')
 
#define ROM_FUNC_FLASH_FLUSH_CACHE   ROM_TABLE_CODE('F', 'C')
 
#define ROM_FUNC_FLASH_ENTER_CMD_XIP   ROM_TABLE_CODE('C', 'X')
 
#define ROM_TABLE_CODE(c1, c2)
 Return a bootrom lookup code based on two ASCII characters.
 
#define rom_hword_as_ptr(rom_address)
 

Typedefs

typedef uint32_t(* rom_popcount32_fn) (uint32_t)
 
typedef uint32_t(* rom_reverse32_fn) (uint32_t)
 
typedef uint32_t(* rom_clz32_fn) (uint32_t)
 
typedef uint32_t(* rom_ctz32_fn) (uint32_t)
 
typedef uint8_t *(* rom_memset_fn) (uint8_t *, uint8_t, uint32_t)
 
typedef uint32_t *(* rom_memset4_fn) (uint32_t *, uint8_t, uint32_t)
 
typedef uint32_t *(* rom_memcpy_fn) (uint8_t *, const uint8_t *, uint32_t)
 
typedef uint32_t *(* rom_memcpy44_fn) (uint32_t *, const uint32_t *, uint32_t)
 
typedef void __attribute__((noreturn)) reset_usb_boot(uint32_t usb_activity_gpio_pin_mask
 Reboot the device into BOOTSEL mode.
 
typedef void uint32_t
 
typedef rom_reset_usb_boot_fn reset_usb_boot_fn
 
typedef void(* rom_connect_internal_flash_fn) (void)
 
typedef void(* rom_flash_exit_xip_fn) (void)
 
typedef void(* rom_flash_range_erase_fn) (uint32_t, size_t, uint32_t, uint8_t)
 
typedef void(* rom_flash_range_program_fn) (uint32_t, const uint8_t *, size_t)
 
typedef void(* rom_flash_flush_cache_fn) (void)
 
typedef void(* rom_flash_enter_cmd_xip_fn) (void)
 
typedef void *(* rom_table_lookup_fn) (uint16_t *table, uint32_t code)
 

Functions

void * rom_func_lookup (uint32_t code)
 Lookup a bootrom function by code.
 
void * rom_data_lookup (uint32_t code)
 Lookup a bootrom address by code.
 
bool rom_funcs_lookup (uint32_t *table, unsigned int count)
 Helper function to lookup the addresses of multiple bootrom functions.
 
 func (usb_activity_gpio_pin_mask, disable_interface_mask)
 

Variables

static void uint32_t disable_interface_mask
 

Macro Definition Documentation

◆ __force_inline

#define __force_inline   inline __attribute__((always_inline))

Definition at line 15 of file bootrom.h.

◆ ROM_FUNC_CLZ32

#define ROM_FUNC_CLZ32   ROM_TABLE_CODE('L', '3')

Definition at line 29 of file bootrom.h.

◆ ROM_FUNC_CONNECT_INTERNAL_FLASH

#define ROM_FUNC_CONNECT_INTERNAL_FLASH   ROM_TABLE_CODE('I', 'F')

Definition at line 36 of file bootrom.h.

◆ ROM_FUNC_CTZ32

#define ROM_FUNC_CTZ32   ROM_TABLE_CODE('T', '3')

Definition at line 30 of file bootrom.h.

◆ ROM_FUNC_FLASH_ENTER_CMD_XIP

#define ROM_FUNC_FLASH_ENTER_CMD_XIP   ROM_TABLE_CODE('C', 'X')

Definition at line 41 of file bootrom.h.

◆ ROM_FUNC_FLASH_EXIT_XIP

#define ROM_FUNC_FLASH_EXIT_XIP   ROM_TABLE_CODE('E', 'X')

Definition at line 37 of file bootrom.h.

◆ ROM_FUNC_FLASH_FLUSH_CACHE

#define ROM_FUNC_FLASH_FLUSH_CACHE   ROM_TABLE_CODE('F', 'C')

Definition at line 40 of file bootrom.h.

◆ ROM_FUNC_FLASH_RANGE_ERASE

#define ROM_FUNC_FLASH_RANGE_ERASE   ROM_TABLE_CODE('R', 'E')

Definition at line 38 of file bootrom.h.

◆ ROM_FUNC_FLASH_RANGE_PROGRAM

#define ROM_FUNC_FLASH_RANGE_PROGRAM   ROM_TABLE_CODE('R', 'P')

Definition at line 39 of file bootrom.h.

◆ ROM_FUNC_MEMCPY

#define ROM_FUNC_MEMCPY   ROM_TABLE_CODE('M', 'C')

Definition at line 33 of file bootrom.h.

◆ ROM_FUNC_MEMCPY44

#define ROM_FUNC_MEMCPY44   ROM_TABLE_CODE('C', '4')

Definition at line 34 of file bootrom.h.

◆ ROM_FUNC_MEMSET

#define ROM_FUNC_MEMSET   ROM_TABLE_CODE('M', 'S')

Definition at line 31 of file bootrom.h.

◆ ROM_FUNC_MEMSET4

#define ROM_FUNC_MEMSET4   ROM_TABLE_CODE('S', '4')

Definition at line 32 of file bootrom.h.

◆ ROM_FUNC_POPCOUNT32

#define ROM_FUNC_POPCOUNT32   ROM_TABLE_CODE('P', '3')

Definition at line 27 of file bootrom.h.

◆ ROM_FUNC_RESET_USB_BOOT

#define ROM_FUNC_RESET_USB_BOOT   ROM_TABLE_CODE('U', 'B')

Definition at line 35 of file bootrom.h.

◆ ROM_FUNC_REVERSE32

#define ROM_FUNC_REVERSE32   ROM_TABLE_CODE('R', '3')

Definition at line 28 of file bootrom.h.

◆ rom_hword_as_ptr

#define rom_hword_as_ptr ( rom_address)
Value:
(void *)(uintptr_t)(*(uint16_t *)(uintptr_t)(rom_address))

Definition at line 135 of file bootrom.h.

Typedef Documentation

◆ reset_usb_boot_fn

typedef rom_reset_usb_boot_fn reset_usb_boot_fn

Definition at line 67 of file bootrom.h.

◆ rom_clz32_fn

typedef uint32_t(* rom_clz32_fn) (uint32_t)

Definition at line 60 of file bootrom.h.

◆ rom_connect_internal_flash_fn

typedef void(* rom_connect_internal_flash_fn) (void)

Definition at line 68 of file bootrom.h.

◆ rom_ctz32_fn

typedef uint32_t(* rom_ctz32_fn) (uint32_t)

Definition at line 61 of file bootrom.h.

◆ rom_flash_enter_cmd_xip_fn

typedef void(* rom_flash_enter_cmd_xip_fn) (void)

Definition at line 73 of file bootrom.h.

◆ rom_flash_exit_xip_fn

typedef void(* rom_flash_exit_xip_fn) (void)

Definition at line 69 of file bootrom.h.

◆ rom_flash_flush_cache_fn

typedef void(* rom_flash_flush_cache_fn) (void)

Definition at line 72 of file bootrom.h.

◆ rom_flash_range_erase_fn

typedef void(* rom_flash_range_erase_fn) (uint32_t, size_t, uint32_t, uint8_t)

Definition at line 70 of file bootrom.h.

◆ rom_flash_range_program_fn

typedef void(* rom_flash_range_program_fn) (uint32_t, const uint8_t *, size_t)

Definition at line 71 of file bootrom.h.

◆ rom_memcpy44_fn

typedef uint32_t *(* rom_memcpy44_fn) (uint32_t *, const uint32_t *, uint32_t)

Definition at line 65 of file bootrom.h.

◆ rom_memcpy_fn

typedef uint32_t *(* rom_memcpy_fn) (uint8_t *, const uint8_t *, uint32_t)

Definition at line 64 of file bootrom.h.

◆ rom_memset4_fn

typedef uint32_t *(* rom_memset4_fn) (uint32_t *, uint8_t, uint32_t)

Definition at line 63 of file bootrom.h.

◆ rom_memset_fn

typedef uint8_t *(* rom_memset_fn) (uint8_t *, uint8_t, uint32_t)

Definition at line 62 of file bootrom.h.

◆ rom_popcount32_fn

typedef uint32_t(* rom_popcount32_fn) (uint32_t)

Definition at line 58 of file bootrom.h.

◆ rom_reverse32_fn

typedef uint32_t(* rom_reverse32_fn) (uint32_t)

Definition at line 59 of file bootrom.h.

◆ rom_table_lookup_fn

typedef void *(* rom_table_lookup_fn) (uint16_t *table, uint32_t code)

Definition at line 123 of file bootrom.h.

◆ uint32_t

typedef void uint32_t

Definition at line 66 of file bootrom.h.

Variable Documentation

◆ disable_interface_mask

void uint32_t disable_interface_mask
Initial value:
{
rom_reset_usb_boot_fn func = (rom_reset_usb_boot_fn) rom_func_lookup(ROM_FUNC_RESET_USB_BOOT)
void * rom_func_lookup(uint32_t code)
Lookup a bootrom function by code.
Definition bootrom.c:15

Definition at line 168 of file bootrom.h.