26 #define HPM_XPI0_BASE (0xF3000000UL)
28 #define HPM_XPI0 ((XPI_Type *) HPM_XPI0_BASE)
45 uint32_t peripheral: 8;
60 uint32_t region_start;
70 #define API_BOOT_TAG (0xEBU)
71 #define API_BOOT_SRC_OTP (0U)
72 #define API_BOOT_SRC_PRIMARY (1U)
73 #define API_BOOT_SRC_SERIAL_BOOT (2U)
74 #define API_BOOT_SRC_ISP (3U)
75 #define API_BOOT_PERIPH_AUTO (0U)
76 #define API_BOOT_PERIPH_UART (1U)
77 #define API_BOOT_PERIPH_USBHID (2U)
90 uint32_t (*read_from_shadow)(uint32_t addr);
92 uint32_t (*read_from_ip)(uint32_t addr);
94 hpm_stat_t (*program)(uint32_t addr,
const uint32_t *src, uint32_t num_of_words);
102 hpm_stat_t (*set_configurable_region)(uint32_t start, uint32_t num_of_words);
104 hpm_stat_t (*write_shadow_register)(uint32_t addr, uint32_t data);
132 bool (*remap_config)(
XPI_Type *base, uint32_t start, uint32_t len, uint32_t offset);
133 bool (*remap_enabled)(
XPI_Type *base);
134 void (*remap_disable)(
XPI_Type *base);
136 void (*exip_region_disable)(
XPI_Type *base, uint32_t index);
145 const uint32_t version;
147 const char *copyright;
159 const uint32_t reserved1[4];
161 const uint32_t family_id;
165 #define ROM_API_TABLE_ROOT ((const bootloader_api_table_t *)0x2001FF00U)
211 status =
ROM_API_TABLE_ROOT->xpi_nor_driver_if->get_config(base, nor_cfg, cfg_option);
285 return ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase_sector_nonblocking(base, channel, nor_config, start);
321 return ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase_block_nonblocking(base, channel, nor_config, start);
398 ->page_program_nonblocking(base, channel, nor_config, src, dst_addr, length);
418 return ROM_API_TABLE_ROOT->xpi_nor_driver_if->read(base, channel, nor_config, dst, start, length);
434 status =
ROM_API_TABLE_ROOT->xpi_nor_driver_if->auto_config(base, config, cfg_option);
449 uint32_t property_id,
452 return ROM_API_TABLE_ROOT->xpi_nor_driver_if->get_property(base, nor_cfg, property_id, value);
469 uint16_t *out_status)
471 return ROM_API_TABLE_ROOT->xpi_nor_driver_if->get_status(base, channel, nor_config, addr, out_status);
523 return ROM_API_TABLE_ROOT->xpi_nor_driver_if->post_erase_sector_nonblocking(base, chn, nor_cfg, addr);
540 return ROM_API_TABLE_ROOT->xpi_nor_driver_if->post_erase_block_nonblocking(base, chn, nor_cfg, addr);
555 return ROM_API_TABLE_ROOT->xpi_nor_driver_if->post_erase_chip_nonblocking(base, chn, nor_cfg);
632 bool result =
ROM_API_TABLE_ROOT->exip_api_if->exip_region_config(base, index, param);
static void init(hpm_panel_t *panel, const hpm_panel_timing_t *timing)
Definition: cc10128007.c:86
uint32_t hpm_stat_t
Definition: hpm_common.h:135
otp_region_t
OTP region definitions.
Definition: hpm_otp_drv.h:24
otp_lock_option_t
OTP lock options.
Definition: hpm_otp_drv.h:34
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_post_erase_block_nonblocking(XPI_Type *base, xpi_xfer_channel_t chn, xpi_nor_config_t *nor_cfg, uint32_t addr)
Post Erase Block Nonblocking API (required only if Hybrid XPI mode is used)
Definition: hpm_romapi.h:535
static hpm_stat_t rom_xpi_nor_read(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t *dst, uint32_t start, uint32_t length)
Read data from specified FLASH address.
Definition: hpm_romapi.h:411
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_erase_sector(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t start)
Erase specified FLASH sector in blocking way.
Definition: hpm_romapi.h:261
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_erase_block_nonblocking(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t start)
Erase specified FLASH blcok in non-blocking way.
Definition: hpm_romapi.h:316
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_post_erase_chip_nonblocking(XPI_Type *base, xpi_xfer_channel_t chn, xpi_nor_config_t *nor_cfg)
Post Erase Chip Nonblocking API (required only if Hybrid XPI mode is used)
Definition: hpm_romapi.h:551
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_post_erase_sector_nonblocking(XPI_Type *base, xpi_xfer_channel_t chn, xpi_nor_config_t *nor_cfg, uint32_t addr)
Post Erase Sector Nonblocking API (required only if Hybrid XPI mode is used)
Definition: hpm_romapi.h:518
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_erase(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t start, uint32_t length)
Erase specified FLASH region.
Definition: hpm_romapi.h:241
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_erase_chip_nonblocking(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config)
Erase the whole FLASH in non-blocking way.
Definition: hpm_romapi.h:347
static void rom_xpi_nor_power_off_sip_flash(XPI_Type *base)
Power off the SIP FLASH.
Definition: hpm_romapi.h:486
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_init(XPI_Type *base, xpi_nor_config_t *nor_config)
Initialize XPI NOR based on nor_config.
Definition: hpm_romapi.h:223
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_erase_sector_nonblocking(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t start)
Erase specified FLASH sector in non-blocking way.
Definition: hpm_romapi.h:280
static ATTR_RAMFUNC bool rom_xpi_nor_remap_config(XPI_Type *base, uint32_t start, uint32_t len, uint32_t offset)
Configure the XPI Address Remapping Logic.
Definition: hpm_romapi.h:592
static ATTR_RAMFUNC bool rom_xpi_nor_exip_region_config(XPI_Type *base, uint32_t index, exip_region_param_t *param)
Configure Specified EXiP Region.
Definition: hpm_romapi.h:630
static ATTR_RAMFUNC void rom_xpi_nor_exip_enable(XPI_Type *base)
Enable global EXiP logic.
Definition: hpm_romapi.h:655
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_erase_block(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t start)
Erase specified FLASH blcok in blocking way.
Definition: hpm_romapi.h:297
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_auto_config(XPI_Type *base, xpi_nor_config_t *config, xpi_nor_config_option_t *cfg_option)
Automatically configure XPI NOR based on cfg_option.
Definition: hpm_romapi.h:429
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_post_program_nonblocking(XPI_Type *base, xpi_xfer_channel_t chn, xpi_nor_config_t *nor_cfg, const uint32_t *src, uint32_t dst_addr, uint32_t length)
Post Page Program Nonblocking API (required only if Hybrid XPI mode is used)
Definition: hpm_romapi.h:567
#define ROM_API_TABLE_ROOT
Definition: hpm_romapi.h:165
static ATTR_RAMFUNC void rom_xpi_nor_exip_region_disable(XPI_Type *base, uint32_t index)
Disable EXiP Feature on specified EXiP Region.
Definition: hpm_romapi.h:644
static void rom_xpi_nor_power_on_sip_flash(XPI_Type *base)
Power on the SIP FLASH.
Definition: hpm_romapi.h:478
static void rom_xpi_nor_disable_hybrid_mode(XPI_Type *base)
Disable Hybrid XPI mode.
Definition: hpm_romapi.h:504
static hpm_stat_t rom_enter_bootloader(void *ctx)
Eneter specified Boot mode.
Definition: hpm_romapi.h:185
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_erase_chip(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config)
Erase the whole FLASH in blocking way.
Definition: hpm_romapi.h:332
static ATTR_RAMFUNC void rom_xpi_nor_remap_disable(XPI_Type *base)
Disable XPI Remapping logic.
Definition: hpm_romapi.h:602
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_program(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, const uint32_t *src, uint32_t dst_addr, uint32_t length)
Program data to specified FLASH address in blocking way.
Definition: hpm_romapi.h:367
static hpm_stat_t rom_xpi_ram_get_config(XPI_Type *base, xpi_ram_config_t *ram_cfg, xpi_ram_config_option_t *cfg_option)
Get XPI RAM configuration based on cfg_option.
Definition: hpm_romapi.h:686
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_get_config(XPI_Type *base, xpi_nor_config_t *nor_cfg, xpi_nor_config_option_t *cfg_option)
Get XPI NOR configuration via cfg_option.
Definition: hpm_romapi.h:206
static hpm_stat_t rom_xpi_ram_init(XPI_Type *base, xpi_ram_config_t *ram_cfg)
Initialize XPI RAM.
Definition: hpm_romapi.h:699
static hpm_stat_t rom_xpi_nor_get_status(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t addr, uint16_t *out_status)
Return the status register value on XPI NOR FLASH.
Definition: hpm_romapi.h:465
static void rom_xpi_nor_enable_hybrid_mode(XPI_Type *base)
Enable Hybrid XPI mode.
Definition: hpm_romapi.h:495
static ATTR_RAMFUNC void rom_xpi_nor_exip_disable(XPI_Type *base)
Disable global EXiP logic.
Definition: hpm_romapi.h:666
static ATTR_RAMFUNC hpm_stat_t rom_xpi_nor_page_program_nonblocking(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, const uint32_t *src, uint32_t dst_addr, uint32_t length)
Page-Program data to specified FLASH address in non-blocking way.
Definition: hpm_romapi.h:390
static ATTR_RAMFUNC bool rom_xpi_nor_is_remap_enabled(XPI_Type *base)
Check whether XPI Remapping is enabled.
Definition: hpm_romapi.h:616
static hpm_stat_t rom_xpi_nor_get_property(XPI_Type *base, xpi_nor_config_t *nor_cfg, uint32_t property_id, uint32_t *value)
Get XPI NOR properties.
Definition: hpm_romapi.h:447
xpi_xfer_channel_t
XPI Transfer Channel type definitions.
Definition: hpm_romapi_xpi_def.h:53
uint32_t XPI_Type
XPI_Type definitions for.
Definition: hpm_romapi_xpi_def.h:22
#define fencei()
execute fence.i
Definition: riscv_core.h:88
Bootloader API table.
Definition: hpm_romapi.h:127
const xpi_ram_driver_interface_t * xpi_ram_driver_if
Definition: hpm_romapi.h:157
EXIP driver interface.
Definition: hpm_romapi.h:110
Definition: hpm_romapi.h:59
Definition: hpm_romapi.h:52
OTP driver interface.
Definition: hpm_romapi.h:82
XPI driver interface.
Definition: hpm_romapi_xpi_def.h:225
XPI NOR configuration option The ROM SW can detect the FLASH configuration based on the following str...
Definition: hpm_romapi_xpi_nor_def.h:136
XPI NOR configuration structure.
Definition: hpm_romapi_xpi_nor_def.h:261
XPI NOR driver interface.
Definition: hpm_romapi_xpi_nor_def.h:308
XPI RAM configuration option The ROM SW can detect the FLASH configuration based on the following str...
Definition: hpm_romapi_xpi_ram_def.h:39
XPI RAM configuration structure.
Definition: hpm_romapi_xpi_ram_def.h:152
XPI RAM driver interface.
Definition: hpm_romapi.h:110
uint32_t version
Definition: hpm_romapi.h:112
Enter Bootloader API argument.
Definition: hpm_romapi.h:41