#include "hpm_common.h"#include "hpm_otp_drv.h"#include "hpm_romapi_xpi_def.h"#include "hpm_romapi_xpi_soc_def.h"#include "hpm_romapi_xpi_nor_def.h"#include "hpm_romapi_xpi_ram_def.h"#include "hpm_sdp_drv.h"Go to the source code of this file.
Data Structures | |
| union | api_boot_arg_t |
| Enter Bootloader API argument. More... | |
| struct | exip_region_param_t |
| struct | exip_region_context_t |
| struct | otp_driver_interface_t |
| OTP driver interface. More... | |
| struct | xpi_driver_interface_t |
| XPI driver interface. More... | |
| struct | xpi_ram_driver_interface_t |
| XPI RAM driver interface. More... | |
| struct | xpi_nor_driver_interface_t |
| XPI NOR driver interface. More... | |
| struct | exip_driver_interface_t |
| EXIP driver interface. More... | |
| struct | sdp_driver_interface_t |
| SDP API interface. More... | |
| struct | bootloader_api_table_t |
| Bootloader API table. More... | |
Macros | |
| #define | HPM_XPI0_BASE (0xF3000000UL) |
| #define | HPM_XPI0 ((XPI_Type *) HPM_XPI0_BASE) |
| #define | API_BOOT_TAG (0xEBU) |
| #define | API_BOOT_SRC_OTP (0U) |
| #define | API_BOOT_SRC_PRIMARY (1U) |
| #define | API_BOOT_SRC_SERIAL_BOOT (2U) |
| #define | API_BOOT_SRC_ISP (3U) |
| #define | API_BOOT_PERIPH_AUTO (0U) |
| #define | API_BOOT_PERIPH_UART (1U) |
| #define | API_BOOT_PERIPH_USBHID (2U) |
| #define | ROM_API_TABLE_ROOT ((const bootloader_api_table_t *)0x2001FF00U) |
Functions | |
| static hpm_stat_t | rom_enter_bootloader (void *ctx) |
| Eneter specified Boot mode. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| static ATTR_RAMFUNC void | rom_xpi_nor_remap_disable (XPI_Type *base) |
| Disable XPI Remapping logic. More... | |
| static ATTR_RAMFUNC bool | rom_xpi_nor_is_remap_enabled (XPI_Type *base) |
| Check whether XPI Remapping is enabled. More... | |
| 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. More... | |
| static ATTR_RAMFUNC void | rom_xpi_nor_exip_region_disable (XPI_Type *base, uint32_t index) |
| Disable EXiP Feature on specified EXiP Region. More... | |
| static ATTR_RAMFUNC void | rom_xpi_nor_exip_enable (XPI_Type *base) |
| Enable global EXiP logic. More... | |
| static ATTR_RAMFUNC void | rom_xpi_nor_exip_disable (XPI_Type *base) |
| Disable global EXiP logic. More... | |
| 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. More... | |
| static hpm_stat_t | rom_xpi_ram_init (XPI_Type *base, xpi_ram_config_t *ram_cfg) |
| Initialize XPI RAM. More... | |
| static void | rom_sdp_init (void) |
| Initialize SDP IP. More... | |
| static void | rom_sdp_deinit (void) |
| De-initialize SDP IP. More... | |
| static hpm_stat_t | rom_sdp_aes_set_key (sdp_aes_ctx_t *aes_ctx, const uint8_t *key, sdp_aes_key_bits_t key_bits, uint32_t key_idx) |
| Set AES key to SDP. More... | |
| static hpm_stat_t | rom_sdp_aes_crypt_ecb (sdp_aes_ctx_t *aes_ctx, sdp_aes_op_t op, uint32_t len, const uint8_t *in, uint8_t *out) |
| SDP AES ECB crypto operation(Encrypt or Decrypt) More... | |
| static hpm_stat_t | rom_sdp_aes_crypt_cbc (sdp_aes_ctx_t *aes_ctx, sdp_aes_op_t op, uint32_t length, uint8_t iv[16], const uint8_t *in, uint8_t *out) |
| SDP AES CBC crypto operation(Encrypt or Decrypt) More... | |
| static hpm_stat_t | rom_sdp_sm4_set_key (sdp_sm4_ctx_t *sm4_ctx, const uint8_t *key, sdp_sm4_key_bits_t key_bits, uint32_t key_idx) |
| Set SM4 key to SDP. More... | |
| static hpm_stat_t | rom_sdp_sm4_crypt_ecb (sdp_sm4_ctx_t *sm4_ctx, sdp_sm4_op_t op, uint32_t len, const uint8_t *in, uint8_t *out) |
| SDP SM4 ECB crypto operation(Encrypt or Decrypt) More... | |
| static hpm_stat_t | rom_sdp_sm4_crypt_cbc (sdp_sm4_ctx_t *sm4_ctx, sdp_sm4_op_t op, uint32_t length, uint8_t iv[16], const uint8_t *in, uint8_t *out) |
| SDP SM4 CBC crypto operation(Encrypt or Decrypt) More... | |
| static hpm_stat_t | rom_sdp_hash_init (sdp_hash_ctx_t *hash_ctx, sdp_hash_alg_t alg) |
| HASH initialization. More... | |
| static hpm_stat_t | rom_sdp_hash_update (sdp_hash_ctx_t *hash_ctx, const uint8_t *data, uint32_t length) |
| HASH Update. More... | |
| static hpm_stat_t | rom_sdp_hash_finish (sdp_hash_ctx_t *hash_ctx, uint8_t *digest) |
| HASH finialize. More... | |
| static hpm_stat_t | rom_sdp_memcpy (sdp_dma_ctx_t *dma_ctx, void *dst, const void *src, uint32_t length) |
| SDP memcpy operation. More... | |
| static hpm_stat_t | rom_sdp_memset (sdp_dma_ctx_t *dma_ctx, void *dst, uint8_t pattern, uint32_t length) |
| SDP memset operation. More... | |
|
inlinestatic |
Eneter specified Boot mode.
| [in] | ctx | Enter bootloader context |
| status_invalid | Invalid parameters were deteced |
|
inlinestatic |
SDP AES CBC crypto operation(Encrypt or Decrypt)
| [in] | aes_ctx | AES context |
| [in] | op | AES operation: encrypt or decrypt |
| [in] | length | Data length for AES encryption/decryption |
| [in] | iv | Initial vector/nonce |
| [in] | in | Input data |
| [out] | out | Output data |
|
inlinestatic |
SDP AES ECB crypto operation(Encrypt or Decrypt)
| [in] | aes_ctx | AES context |
| [in] | op | AES operation: encrypt or decrypt |
| [in] | len | Data length for AES encryption/decryption |
| [in] | in | Input data |
| [out] | out | Output data |
|
inlinestatic |
Set AES key to SDP.
| [in] | aes_ctx | AES context |
| [in] | key | AES key buffer |
| [in] | key_bits | AES key-bit option |
| [in] | key_idx | AES key index |
|
inlinestatic |
De-initialize SDP IP.
|
inlinestatic |
HASH finialize.
| [in] | hash_ctx | HASH context |
| [out] | digest | the output digest |
|
inlinestatic |
HASH initialization.
| [in] | hash_ctx | HASH context |
| [in] | alg | HASH algorithm |
|
inlinestatic |
HASH Update.
| [in] | hash_ctx | HASH context |
| [in] | data | Data for HASH operation |
| [in] | length | of the data for HASH operation |
|
inlinestatic |
Initialize SDP IP.
|
inlinestatic |
SDP memcpy operation.
| [in] | dma_ctx | DMA context |
| [out] | dst | Destination address for memcpy |
| [in] | src | Source address for memcpy |
| [in] | length | Size of data for memcpy operation |
|
inlinestatic |
SDP memset operation.
| [in] | dma_ctx | DMA context |
| [out] | dst | Destination address for memset |
| [in] | pattern | pattern for memset |
| [in] | length | Size of data for memset operation |
|
inlinestatic |
SDP SM4 CBC crypto operation(Encrypt or Decrypt)
| [in] | sm4_ctx | SM4 context |
| [in] | op | SM4 operation: encrypt or decrypt |
| [in] | length | Data length for SM4 encryption/decryption |
| [in] | iv | Initial vector/nonce |
| [in] | in | Input data |
| [out] | out | Output data |
|
inlinestatic |
SDP SM4 ECB crypto operation(Encrypt or Decrypt)
| [in] | sm4_ctx | SM4 context |
| [in] | op | SM4 operation: encrypt or decrypt |
| [in] | len | Data length for SM4 encryption/decryption |
| [in] | in | Input data |
| [out] | out | Output data |
|
inlinestatic |
Set SM4 key to SDP.
| [in] | sm4_ctx | SM4 context |
| [in] | key | SM4 key buffer |
| [in] | key_bits | SM4 key-bit option |
| [in] | key_idx | SM4 key index |
|
inlinestatic |
Automatically configure XPI NOR based on cfg_option.
| [in] | base | XPI base address |
| [out] | config | XPI NOR configuration structure |
| [in] | cfg_option | XPI NOR configuration option |
|
inlinestatic |
Erase specified FLASH region.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI nOR configuration |
| [in] | start | Erase address start address |
| [in] | length | Region size to be erased |
|
inlinestatic |
Erase specified FLASH blcok in blocking way.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
| [in] | start | Block address |
|
inlinestatic |
Erase specified FLASH blcok in non-blocking way.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
| [in] | start | Block address |
|
inlinestatic |
Erase the whole FLASH in blocking way.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
|
inlinestatic |
Erase the whole FLASH in non-blocking way.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
|
inlinestatic |
Erase specified FLASH sector in blocking way.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
| [in] | start | Sector address |
|
inlinestatic |
Erase specified FLASH sector in non-blocking way.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
| [in] | start | Sector address |
|
inlinestatic |
Disable global EXiP logic.
| [in] | base | XPI base address |
|
inlinestatic |
Enable global EXiP logic.
| [in] | base | XPI base address |
|
inlinestatic |
Configure Specified EXiP Region.
| [in] | base | XPI base address |
| [in] | index | EXiP Region index |
| [in] | param | ExiP Region Parameter |
| true | All parameters are valid |
| false | Any parameter is invalid |
|
inlinestatic |
Disable EXiP Feature on specified EXiP Region.
| [in] | base | XPI base address |
| [in] | index | EXiP Region index |
|
inlinestatic |
Get XPI NOR configuration via cfg_option.
| [in] | base | XPI base address |
| [out] | nor_cfg | XPI NOR configuration structure |
| [in] | cfg_option | XPI NOR configuration option |
|
inlinestatic |
Get XPI NOR properties.
| [in] | base | XPI base address |
| [in] | nor_cfg | XPI NOR configuration structure |
| [in] | property_id | |
| [out] | value | property value retrieved by this API |
|
inlinestatic |
Return the status register value on XPI NOR FLASH.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
| [in] | addr | FLASH address offset |
| [out] | out_status | FLASH status register value |
|
inlinestatic |
Initialize XPI NOR based on nor_config.
| [in] | base | XPI base address |
| [in] | nor_config | XPI NOR configuration |
|
inlinestatic |
Check whether XPI Remapping is enabled.
| [in] | base | XPI base address |
| true | Remapping logic is enabled |
| false | Remapping logic is disabled |
|
inlinestatic |
Page-Program data to specified FLASH address in non-blocking way.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
| [in] | src | data source address |
| [in] | dst_addr | Destination FLASH address |
| [in] | length | length of data to be programmed |
|
inlinestatic |
Program data to specified FLASH address in blocking way.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
| [in] | src | data source address |
| [in] | dst_addr | Destination FLASH address |
| [in] | length | length of data to be programmed |
|
inlinestatic |
Read data from specified FLASH address.
| [in] | base | XPI base address |
| [in] | channel | XPI transfer channel |
| [in] | nor_config | XPI NOR configuration |
| [in] | dst | Memory start address to store the data read out from FLASH |
| [in] | start | FLASH address for data read |
| [in] | length | length of data to be read out |
|
inlinestatic |
Configure the XPI Address Remapping Logic.
| [in] | base | XPI base address |
| [in] | start | Start Address (memory mapped address) |
| [in] | len | Size for the remapping region |
| [in] | offset | Relative address based on parameter "start" |
| true | is all parameters are valid |
| false | if any parameter is invalid |
|
inlinestatic |
Disable XPI Remapping logic.
| [in] | base | XPI base address |
|
inlinestatic |
Get XPI RAM configuration based on cfg_option.
| [in] | base | XPI base address |
| [out] | ram_cfg | XPI RAM configuration structure |
| [in] | cfg_option | XPI RAM configuration option |
|
inlinestatic |
Initialize XPI RAM.
| [in] | base | XPI base address |
| [in] | ram_cfg | XPI ram configuration |