HPM SDK
HPMicro Software Development Kit
hpm_romapi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_ROMAPI_H
9 #define HPM_ROMAPI_H
10 
17 #include "hpm_common.h"
18 #include "hpm_otp_drv.h"
19 #include "hpm_romapi_xpi_def.h"
20 #include "hpm_romapi_xpi_soc_def.h"
21 #include "hpm_romapi_xpi_nor_def.h"
22 #include "hpm_romapi_xpi_ram_def.h"
23 #include "riscv/riscv_core.h"
24 
25 /* XPI0 base address */
26 #define HPM_XPI0_BASE (0xF3000000UL)
27 /* XPI0 base pointer */
28 #define HPM_XPI0 ((XPI_Type *) HPM_XPI0_BASE)
31 /***********************************************************************************************************************
32  *
33  *
34  * Definitions
35  *
36  *
37  **********************************************************************************************************************/
41 typedef union {
42  uint32_t U;
43  struct {
44  uint32_t index: 8;
45  uint32_t peripheral: 8;
46  uint32_t src: 8;
47  uint32_t tag: 8;
48  };
50 
51 /*EXiP Region Parameter */
52 typedef struct {
53  uint32_t start;
54  uint32_t len;
55  uint8_t key[16];
56  uint8_t ctr[8];
58 
59 typedef struct {
60  uint32_t region_start;
61  uint32_t region_end;
62  uint8_t aes_key[16];
63  uint8_t nonce[8];
64  uint8_t index;
65  bool enable;
66  bool valid;
67  bool lock;
69 
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)
82 typedef struct {
84  uint32_t version;
86  void (*init)(void);
88  void (*deinit)(void);
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);
96  hpm_stat_t (*reload)(otp_region_t region);
98  hpm_stat_t (*lock)(uint32_t addr, otp_lock_option_t lock_option);
100  hpm_stat_t (*lock_shadow)(uint32_t addr, otp_lock_option_t lock_option);
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);
106 
110 typedef struct {
112  uint32_t version;
113 
115  hpm_stat_t (*get_config)(XPI_Type *base, xpi_ram_config_t *ram_cfg, xpi_ram_config_option_t *cfg_option);
116 
120 
121 
125 typedef struct {
126  uint32_t version;
127  hpm_stat_t (*enable)(XPI_Type *base);
128  hpm_stat_t (*disable)(XPI_Type *base);
129  hpm_stat_t (*lock_reg_access)(XPI_Type *base);
130  hpm_stat_t (*configure_region)(XPI_Type *base, const exip_region_context_t *ctx);
131 
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);
135  bool (*exip_region_config)(XPI_Type *base, uint32_t index, exip_region_param_t *param);
136  void (*exip_region_disable)(XPI_Type *base, uint32_t index);
138 
139 
143 typedef struct {
145  const uint32_t version;
147  const char *copyright;
149  hpm_stat_t (*run_bootloader)(void *arg);
151  const otp_driver_interface_t *otp_driver_if;
153  const xpi_driver_interface_t *xpi_driver_if;
155  const xpi_nor_driver_interface_t *xpi_nor_driver_if;
159  const uint32_t reserved1[4];
160  const exip_driver_interface_t *exip_api_if;
161  const uint32_t family_id;
163 
165 #define ROM_API_TABLE_ROOT ((const bootloader_api_table_t *)0x2001FF00U)
166 
167 
168 #ifdef __cplusplus
169 extern "C" {
170 #endif
171 
172 /***********************************************************************************************************************
173  *
174  *
175  * Enter bootloader Wrapper
176  *
177  *
178  **********************************************************************************************************************/
179 
185 static inline hpm_stat_t rom_enter_bootloader(void *ctx)
186 {
187  return ROM_API_TABLE_ROOT->run_bootloader(ctx);
188 }
189 
190 /***********************************************************************************************************************
191  *
192  *
193  * XPI NOR Driver Wrapper
194  *
195  *
196  **********************************************************************************************************************/
197 
205 ATTR_RAMFUNC
207  xpi_nor_config_t *nor_cfg,
208  xpi_nor_config_option_t *cfg_option)
209 {
210  hpm_stat_t status;
211  status = ROM_API_TABLE_ROOT->xpi_nor_driver_if->get_config(base, nor_cfg, cfg_option);
212  fencei();
213  return status;
214 }
215 
222 ATTR_RAMFUNC
223 static inline hpm_stat_t rom_xpi_nor_init(XPI_Type *base, xpi_nor_config_t *nor_config)
224 {
225  hpm_stat_t status;
226  status = ROM_API_TABLE_ROOT->xpi_nor_driver_if->init(base, nor_config);
227  fencei();
228  return status;
229 }
230 
240 ATTR_RAMFUNC
242  xpi_xfer_channel_t channel,
243  const xpi_nor_config_t *nor_config,
244  uint32_t start,
245  uint32_t length)
246 {
247  hpm_stat_t status = ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase(base, channel, nor_config, start, length);
248  fencei();
249  return status;
250 }
251 
260 ATTR_RAMFUNC
262  xpi_xfer_channel_t channel,
263  const xpi_nor_config_t *nor_config,
264  uint32_t start)
265 {
266  hpm_stat_t status = ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase_sector(base, channel, nor_config, start);
267  fencei();
268  return status;
269 }
270 
279 ATTR_RAMFUNC
281  xpi_xfer_channel_t channel,
282  const xpi_nor_config_t *nor_config,
283  uint32_t start)
284 {
285  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase_sector_nonblocking(base, channel, nor_config, start);
286 }
287 
296 ATTR_RAMFUNC
298  xpi_xfer_channel_t channel,
299  const xpi_nor_config_t *nor_config,
300  uint32_t start)
301 {
302  hpm_stat_t status = ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase_block(base, channel, nor_config, start);
303  fencei();
304  return status;
305 }
306 
315 ATTR_RAMFUNC
317  xpi_xfer_channel_t channel,
318  const xpi_nor_config_t *nor_config,
319  uint32_t start)
320 {
321  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase_block_nonblocking(base, channel, nor_config, start);
322 }
323 
331 ATTR_RAMFUNC
333  xpi_xfer_channel_t channel,
334  const xpi_nor_config_t *nor_config)
335 {
336  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase_chip(base, channel, nor_config);
337 }
338 
346 ATTR_RAMFUNC
348  xpi_xfer_channel_t channel,
349  const xpi_nor_config_t *nor_config)
350 {
351  hpm_stat_t status = ROM_API_TABLE_ROOT->xpi_nor_driver_if->erase_chip_nonblocking(base, channel, nor_config);
352  fencei();
353  return status;
354 }
355 
366 ATTR_RAMFUNC
368  xpi_xfer_channel_t channel,
369  const xpi_nor_config_t *nor_config,
370  const uint32_t *src,
371  uint32_t dst_addr,
372  uint32_t length)
373 {
374  hpm_stat_t status = ROM_API_TABLE_ROOT->xpi_nor_driver_if->program(base, channel, nor_config, src, dst_addr, length);
375  fencei();
376  return status;
377 }
378 
389 ATTR_RAMFUNC
391  xpi_xfer_channel_t channel,
392  const xpi_nor_config_t *nor_config,
393  const uint32_t *src,
394  uint32_t dst_addr,
395  uint32_t length)
396 {
397  return ROM_API_TABLE_ROOT->xpi_nor_driver_if
398  ->page_program_nonblocking(base, channel, nor_config, src, dst_addr, length);
399 }
400 
412  xpi_xfer_channel_t channel,
413  const xpi_nor_config_t *nor_config,
414  uint32_t *dst,
415  uint32_t start,
416  uint32_t length)
417 {
418  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->read(base, channel, nor_config, dst, start, length);
419 }
420 
428 ATTR_RAMFUNC
430  xpi_nor_config_t *config,
431  xpi_nor_config_option_t *cfg_option)
432 {
433  hpm_stat_t status;
434  status = ROM_API_TABLE_ROOT->xpi_nor_driver_if->auto_config(base, config, cfg_option);
435  fencei();
436  return status;
437 }
438 
448  xpi_nor_config_t *nor_cfg,
449  uint32_t property_id,
450  uint32_t *value)
451 {
452  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->get_property(base, nor_cfg, property_id, value);
453 }
454 
466  xpi_xfer_channel_t channel,
467  const xpi_nor_config_t *nor_config,
468  uint32_t addr,
469  uint16_t *out_status)
470 {
471  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->get_status(base, channel, nor_config, addr, out_status);
472 }
473 
478 static inline void rom_xpi_nor_power_on_sip_flash(XPI_Type *base)
479 {
480  ROM_API_TABLE_ROOT->xpi_nor_driver_if->sip_flash_power_on(base);
481 }
486 static inline void rom_xpi_nor_power_off_sip_flash(XPI_Type *base)
487 {
488  ROM_API_TABLE_ROOT->xpi_nor_driver_if->sip_flash_power_off(base);
489 }
490 
495 static inline void rom_xpi_nor_enable_hybrid_mode(XPI_Type *base)
496 {
497  ROM_API_TABLE_ROOT->xpi_nor_driver_if->enable_hybrid_xpi(base);
498 }
499 
504 static inline void rom_xpi_nor_disable_hybrid_mode(XPI_Type *base)
505 {
506  ROM_API_TABLE_ROOT->xpi_nor_driver_if->disable_hybrid_xpi(base);
507 }
508 
519  xpi_xfer_channel_t chn,
520  xpi_nor_config_t *nor_cfg,
521  uint32_t addr)
522 {
523  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->post_erase_sector_nonblocking(base, chn, nor_cfg, addr);
524 }
525 
536  xpi_xfer_channel_t chn,
537  xpi_nor_config_t *nor_cfg,
538  uint32_t addr)
539 {
540  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->post_erase_block_nonblocking(base, chn, nor_cfg, addr);
541 }
542 
552  xpi_xfer_channel_t chn,
553  xpi_nor_config_t *nor_cfg)
554 {
555  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->post_erase_chip_nonblocking(base, chn, nor_cfg);
556 }
557 
568  xpi_xfer_channel_t chn,
569  xpi_nor_config_t *nor_cfg,
570  const uint32_t *src,
571  uint32_t dst_addr,
572  uint32_t length)
573 {
574  return ROM_API_TABLE_ROOT->xpi_nor_driver_if->post_page_program_nonblocking(base,
575  chn,
576  nor_cfg,
577  src,
578  dst_addr,
579  length);
580 }
581 
591 ATTR_RAMFUNC
592 static inline bool rom_xpi_nor_remap_config(XPI_Type *base, uint32_t start, uint32_t len, uint32_t offset)
593 {
594  return ROM_API_TABLE_ROOT->exip_api_if->remap_config(base, start, len, offset);
595 }
596 
601 ATTR_RAMFUNC
602 static inline void rom_xpi_nor_remap_disable(XPI_Type *base)
603 {
604  ROM_API_TABLE_ROOT->exip_api_if->remap_disable(base);
605  fencei();
606 }
607 
615 ATTR_RAMFUNC
616 static inline bool rom_xpi_nor_is_remap_enabled(XPI_Type *base)
617 {
618  return ROM_API_TABLE_ROOT->exip_api_if->remap_enabled(base);
619 }
620 
629 ATTR_RAMFUNC
630 static inline bool rom_xpi_nor_exip_region_config(XPI_Type *base, uint32_t index, exip_region_param_t *param)
631 {
632  bool result = ROM_API_TABLE_ROOT->exip_api_if->exip_region_config(base, index, param);
633  ROM_API_TABLE_ROOT->xpi_driver_if->software_reset(base);
634  fencei();
635  return result;
636 }
637 
643 ATTR_RAMFUNC
644 static inline void rom_xpi_nor_exip_region_disable(XPI_Type *base, uint32_t index)
645 {
646  ROM_API_TABLE_ROOT->exip_api_if->exip_region_disable(base, index);
647  fencei();
648 }
649 
654 ATTR_RAMFUNC
655 static inline void rom_xpi_nor_exip_enable(XPI_Type *base)
656 {
657  ROM_API_TABLE_ROOT->exip_api_if->enable(base);
658  fencei();
659 }
660 
665 ATTR_RAMFUNC
666 static inline void rom_xpi_nor_exip_disable(XPI_Type *base)
667 {
668  ROM_API_TABLE_ROOT->exip_api_if->disable(base);
669  fencei();
670 }
671 
672 /***********************************************************************************************************************
673  *
674  *
675  * XPI RAM Driver Wrapper
676  *
677  *
678  **********************************************************************************************************************/
687  xpi_ram_config_t *ram_cfg,
688  xpi_ram_config_option_t *cfg_option)
689 {
690  return ROM_API_TABLE_ROOT->xpi_ram_driver_if->get_config(base, ram_cfg, cfg_option);
691 }
692 
699 static inline hpm_stat_t rom_xpi_ram_init(XPI_Type *base, xpi_ram_config_t *ram_cfg)
700 {
701  return ROM_API_TABLE_ROOT->xpi_ram_driver_if->init(base, ram_cfg);
702 }
703 
704 
705 #ifdef __cplusplus
706 }
707 #endif
708 
714 #endif /* HPM_ROMAPI_H */
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