HPM SDK
HPMicro Software Development Kit
XPI NOR driver APIs

XPI NOR ROM APIs. More...

Data Structures

struct  xpi_nor_config_option_t
 XPI NOR configuration option The ROM SW can detect the FLASH configuration based on the following structure specified by the end-user. More...
 
struct  device_mode_cfg_t
 Device Mode configuration structure. More...
 
struct  device_mode_param_t
 Device mode parameter structure. More...
 
struct  xpi_device_info_t
 XPI NOR device information structure. More...
 
struct  xpi_nor_config_t
 XPI NOR configuration structure. More...
 
union  flash_run_context_t
 FLASH runtime context structure. More...
 

Macros

#define XPI_NOR_CFG_TAG   0x524f4E58U
 
#define XPI_NOR_CFG_OPTION_TAG   (0xfcf90U)
 XPI NOR option tag. More...
 

Enumerations

enum  {
  xpi_nor_property_total_size , xpi_nor_property_page_size , xpi_nor_property_sector_size , xpi_nor_property_block_size ,
  xpi_nor_property_max = xpi_nor_property_block_size
}
 XPI NOR properties. More...
 
enum  { xpi_nor_clk_safe_clk_freq = 1 }
 XPI NOR safe frequency option. More...
 
enum  { xpi_nor_option_misc_spi_only = 1 , xpi_nor_option_misc_internal_loopback = 2 , xpi_nor_option_misc_ext_dqs = 3 }
 XPI NOR miscellaneous options. More...
 
enum  {
  xpi_nor_connection_sel_chna_cs0 , xpi_nor_connection_sel_chnb_cs0 , xpi_nor_connection_sel_chna_cs0_chnb_cs0 , xpi_nor_connection_sel_chna_cs0_cs1 ,
  xpi_nor_connection_sel_chnb_cs0_cs1
}
 XPI NOR connection option. More...
 
enum  xpi_nor_quad_enable_seq_t {
  xpi_nor_quad_en_auto_or_ignore = 0U , xpi_nor_quad_en_set_bit6_in_status_reg1 = 1U , xpi_nor_quad_en_set_bit1_in_status_reg2 = 2U , xpi_nor_quad_en_set_bit7_in_status_reg2 = 3U ,
  xpi_nor_quad_en_set_bi1_in_status_reg2_via_0x31_cmd = 4U
}
 QE bit enable sequence option. More...
 
enum  xpi_working_mode_t { xpi_working_mode_extend_spi , xpi_working_mode_xpi , xpi_working_mode_hyperbus }
 XPI working mode. More...
 
enum  xpi_nor_cfg_cmd_type_t { xpi_nor_cfg_cmd_type_no_cfg = 0U , xpi_nor_cfg_cmd_type_generic = 1U , xpi_nor_cfg_cmd_type_spi2xpi = 2U , xpi_nor_cfg_cmd_type_xpi2spi = 3U }
 XPI NOR configuration command type. More...
 
enum  xpi_nor_probe_t {
  xpi_nor_probe_sfdp_sdr = 0U , xpi_nor_probe_sfdp_ddr = 1U , xpi_nor_quad_read_0xeb = 2U , xpi_nor_dual_read_0xbb = 3U ,
  xpi_nor_hyperbus_1v8 = 4U , xpi_nor_hyperbus_3v0 = 5U , xpi_nor_octabus_ddr = 6U , xpi_nor_octabus_sdr = 7U ,
  xpi_nor_xccela_ddr = 8U , xpi_nor_xccela_sdr = 9U , xpi_nor_ecoxip_ddr = 10U , xpi_nor_ecoxip_sdr = 11U
}
 XPI NOR probe options. More...
 
enum  xpi_std_nor_instr_idx_t {
  xpi_std_nor_seq_idx_read = 0U , xpi_std_nor_seq_idx_page_program = 1U , xpi_std_nor_seq_idx_read_status = 2U , xpi_std_nor_seq_idx_read_status_xpi = 3U ,
  xpi_std_nor_seq_idx_write_enable = 4U , xpi_std_nor_seq_idx_write_enable_xpi = 5U , xpi_std_nor_seq_idx_erase_sector = 6U , xpi_std_nor_seq_idx_erase_block = 7U ,
  xpi_std_nor_seq_idx_erase_chip = 8U , xpi_std_nor_seq_idx_max = 9
}
 Standard XPI NOR seuqnce index definitions. More...
 
enum  { serial_nor_sector_size_4kb , serial_nor_sector_size_32kb , serial_nor_sector_size_64kb , serial_nor_sector_size_256kb }
 Sector size options. More...
 
enum  { serial_nor_erase_type_4kb , serial_nor_erase_type_32kb , serial_nor_erase_type_64kb , serial_nor_erase_type_256kb }
 Sector erase command options. More...
 
enum  { flash_size_4mb , flash_size_8mb , flash_size_16mb }
 FLASH size options. More...
 
enum  { status_xpi_nor_sfdp_not_found = ((uint32_t)( status_group_xpi_nor )*1000U + (uint32_t)( 0 )) , status_xpi_nor_ddr_read_dummy_cycle_probe_failed = ((uint32_t)( status_group_xpi_nor )*1000U + (uint32_t)( 1 )) , status_xpi_nor_flash_not_found = ((uint32_t)( status_group_xpi_nor )*1000U + (uint32_t)( 2 )) }
 XPI NOR API error codes. More...
 

Detailed Description

XPI NOR ROM APIs.

Macro Definition Documentation

◆ XPI_NOR_CFG_OPTION_TAG

#define XPI_NOR_CFG_OPTION_TAG   (0xfcf90U)

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI NOR option tag.

◆ XPI_NOR_CFG_TAG

#define XPI_NOR_CFG_TAG   0x524f4E58U

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

ASCII: "XNOR"

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI NOR properties.

Enumerator
xpi_nor_property_total_size 

Total size in bytes

xpi_nor_property_page_size 

Page size in bytes

xpi_nor_property_sector_size 

sector size in bytes

xpi_nor_property_block_size 

block size in bytes

xpi_nor_property_max 

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI NOR safe frequency option.

Enumerator
xpi_nor_clk_safe_clk_freq 

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI NOR miscellaneous options.

Enumerator
xpi_nor_option_misc_spi_only 

SPI only

xpi_nor_option_misc_internal_loopback 

Internal loopback mode

xpi_nor_option_misc_ext_dqs 

External DQS pin

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI NOR connection option.

Enumerator
xpi_nor_connection_sel_chna_cs0 

Channel A, CS0

xpi_nor_connection_sel_chnb_cs0 

Channel B, CS0

xpi_nor_connection_sel_chna_cs0_chnb_cs0 

Channel A + Channel B, CS0

xpi_nor_connection_sel_chna_cs0_cs1 

Channel A, CS0 + CS1

xpi_nor_connection_sel_chnb_cs0_cs1 

Channel B, CS0 + CS1

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

Sector size options.

Enumerator
serial_nor_sector_size_4kb 

Sector size: 4KB

serial_nor_sector_size_32kb 

Sector size: 32KB

serial_nor_sector_size_64kb 

Sector size: 64KB

serial_nor_sector_size_256kb 

Sector size: 256KB

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

Sector erase command options.

Enumerator
serial_nor_erase_type_4kb 

Sector erase command: 4KB Erase

serial_nor_erase_type_32kb 

Sector erase command: 32KB Erase

serial_nor_erase_type_64kb 

Sector erase command: 64KB Erase

serial_nor_erase_type_256kb 

Sector erase command: 256KB Erase

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

FLASH size options.

Enumerator
flash_size_4mb 

FLASH size: 4MB

flash_size_8mb 

FLASH size: 8MB

flash_size_16mb 

FLASH size: 16MB

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI NOR API error codes.

Enumerator
status_xpi_nor_sfdp_not_found 

SFDP table was not found

status_xpi_nor_ddr_read_dummy_cycle_probe_failed 

Probing Dummy cyles for DDR read failed

status_xpi_nor_flash_not_found 

FLASH was not detected

◆ xpi_nor_cfg_cmd_type_t

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI NOR configuration command type.

Enumerator
xpi_nor_cfg_cmd_type_no_cfg 

No configuration

xpi_nor_cfg_cmd_type_generic 

Generic configuration

xpi_nor_cfg_cmd_type_spi2xpi 

SPI to XPI mode

xpi_nor_cfg_cmd_type_xpi2spi 

XPI to SPI mode

◆ xpi_nor_probe_t

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI NOR probe options.

Enumerator
xpi_nor_probe_sfdp_sdr 

Probe FLASH using SFDP and set FLASH to SDR mode

xpi_nor_probe_sfdp_ddr 

Probe FLASH using SDP and set FLASH to DDR mode

xpi_nor_quad_read_0xeb 

Set FLASH to default Quad I/O read in SDR mode

xpi_nor_dual_read_0xbb 

Set FLASH to default Dual I/O read in SDR mode

xpi_nor_hyperbus_1v8 

Probe FLASH using HyperBus in 1.8V voltage

xpi_nor_hyperbus_3v0 

Probe FLASH using HyperBus in 3.0V voltage

xpi_nor_octabus_ddr 

Probe FLASH using Macronix OctaBus and configure FLASH to OPI DDR mode

xpi_nor_octabus_sdr 

Probe FLASH using Macronix OctaBus and configure FLASH to OPI SDR mode

xpi_nor_xccela_ddr 

Probe FLASH using Xccela Protocol and configure FLASH to OPI DDR mode

xpi_nor_xccela_sdr 

Probe FLASH using Xccela Protocol and configure FLASH to SDR mode

xpi_nor_ecoxip_ddr 

Probe FLASH using EcoXiP Protocol and configure FLASH to OPI DDR mode

xpi_nor_ecoxip_sdr 

Probe FLASH using EcoXiP Protocol and configure FLASH to SDR mode

◆ xpi_nor_quad_enable_seq_t

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

QE bit enable sequence option.

Enumerator
xpi_nor_quad_en_auto_or_ignore 

Auto enable or ignore

xpi_nor_quad_en_set_bit6_in_status_reg1 

QE bit is at bit6 in Status register 1

xpi_nor_quad_en_set_bit1_in_status_reg2 

QE bit is at bit1 in Status register 2 register 2

xpi_nor_quad_en_set_bit7_in_status_reg2 

QE bit is at bit7 in Status register 2

xpi_nor_quad_en_set_bi1_in_status_reg2_via_0x31_cmd 

QE bit is in status register 2 and configured by CMD 0x31

◆ xpi_std_nor_instr_idx_t

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

Standard XPI NOR seuqnce index definitions.

Enumerator
xpi_std_nor_seq_idx_read 

0 - Read

xpi_std_nor_seq_idx_page_program 

1 - Page Program

xpi_std_nor_seq_idx_read_status 

2 - Read Status

xpi_std_nor_seq_idx_read_status_xpi 

3 - Read Status in xSPI mode

xpi_std_nor_seq_idx_write_enable 

4 - Write Enable

xpi_std_nor_seq_idx_write_enable_xpi 

5 - Write Enable in xSPI mode

xpi_std_nor_seq_idx_erase_sector 

6 - Erase sector

xpi_std_nor_seq_idx_erase_block 

7 - Erase block

xpi_std_nor_seq_idx_erase_chip 

8 - Erase full chip

xpi_std_nor_seq_idx_max 

9

◆ xpi_working_mode_t

#include <drivers/inc/hpm_romapi_xpi_nor_def.h>

XPI working mode.

Enumerator
xpi_working_mode_extend_spi 

XPI works in extended SPI mode, including 1-1-1, 1-2-2, 1-4-4, 1-8-8

xpi_working_mode_xpi 

XPI works in XPI mode, including, 1-1-1, 2-2-2, 4-4-4, 8-8-8

xpi_working_mode_hyperbus 

XPI works in HyperBus mode