HPM SDK
HPMicro Software Development Kit
hpm_romapi_xpi_nor_def.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 #ifndef HPM_ROMAPI_XPI_NOR_DEF_H
8 #define HPM_ROMAPI_XPI_NOR_DEF_H
9 
18 #include "hpm_common.h"
19 #include "hpm_romapi_xpi_def.h"
20 
21 #define XPI_NOR_CFG_TAG 0x524f4E58U
26 enum {
32 };
33 
34 
38 enum {
40 };
41 
45 enum {
49 };
50 
54 enum {
60 };
61 
65 typedef enum {
72 
76 typedef enum {
81 
82 
86 typedef enum {
92 
96 typedef enum {
110 
114 typedef enum {
126 
130 #define XPI_NOR_CFG_OPTION_TAG (0xfcf90U)
131 
136 typedef struct {
137  union {
138  struct {
139  uint32_t words: 4;
140  uint32_t reserved: 8;
141  uint32_t tag: 20;
142  };
143  uint32_t U;
144  } header;
145  union {
146  struct {
147  uint32_t freq_opt: 4;
148  uint32_t misc: 4;
149  uint32_t dummy_cycles: 8;
150  uint32_t quad_enable_seq: 4;
151  uint32_t cmd_pads_after_init: 4;
152  uint32_t cmd_pads_after_por: 4;
153  uint32_t probe_type: 4;
154  };
155  uint32_t U;
156  } option0;
157  union {
158  struct {
159  uint32_t drive_strength: 8;
160  uint32_t connection_sel: 4;
161  uint32_t pin_group_sel: 4;
162  uint32_t io_voltage: 4;
163  uint32_t reserved: 12;
164  };
165  uint32_t U;
166  } option1;
167  union {
168  struct {
169  uint32_t flash_size_option:8;
172  uint32_t reserved:20;
173  };
174  uint32_t U;
175  } option2;
177 
181 enum {
186 };
187 
191 enum {
196 };
197 
201 enum {
205 };
206 
210 typedef struct {
211  uint8_t cfg_cmd_type;
212  uint8_t param_size;
214 
218 typedef struct {
219  uint32_t instr_seq[4];
220  uint32_t param;
222 
226 typedef struct {
227  uint32_t size_in_kbytes;
228  uint16_t page_size;
230  uint16_t block_size_kbytes;
231  uint8_t busy_offset;
232  uint8_t busy_polarity;
233  uint8_t data_pads;
234  uint8_t en_ddr_mode;
237  uint8_t working_mode;
238  uint8_t en_diff_clk;
239  uint8_t data_valid_time;
242  uint8_t dll_dly_target;
243  uint8_t io_voltage;
244  uint8_t reserved0;
245  uint8_t cs_hold_time;
246  uint8_t cs_setup_time;
247  uint8_t cs_interval;
248  uint8_t en_dev_mode_cfg;
249  uint32_t flash_state_ctx;
250  device_mode_cfg_t mode_cfg_list[2];
251  uint32_t mode_cfg_param[2];
252  uint32_t reserved1;
253  struct {
254  uint32_t entry[4];
255  } cfg_instr_seq[2];
257 
261 typedef struct {
262  uint32_t tag;
263  uint32_t reserved0;
264  uint8_t rxclk_src;
265  uint8_t clk_freq;
266  uint8_t drive_strength;
270  uint8_t reserved[2];
271  struct {
272  uint8_t enable;
273  uint8_t group;
274  uint8_t reserved[2];
275  } chn_info[4];
279 
283 typedef union {
284  struct {
285  uint32_t wait_time: 7;
286  uint32_t wait_time_unit: 1;
287  uint32_t reset_gpio: 8;
288  uint32_t restore_sequence: 4;
289  uint32_t exit_no_cmd_sequence: 4;
290  uint32_t current_mode: 4;
291  uint32_t por_mode: 4;
292  };
293  uint32_t U;
295 
299 enum {
303 };
304 
308 typedef struct {
310  uint32_t version;
312  hpm_stat_t (*get_config)(XPI_Type *base, xpi_nor_config_t *nor_cfg, xpi_nor_config_option_t *cfg_option);
314  hpm_stat_t (*init)(XPI_Type *base, xpi_nor_config_t *nor_config);
317  (*enable_write)(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t addr);
319  hpm_stat_t (*get_status)(XPI_Type *base,
320  xpi_xfer_channel_t channel,
321  const xpi_nor_config_t *nor_config,
322  uint32_t addr,
323  uint16_t *out_status);
326  (*wait_busy)(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t addr);
328  hpm_stat_t (*erase)(XPI_Type *base,
329  xpi_xfer_channel_t channel,
330  const xpi_nor_config_t *nor_config,
331  uint32_t start,
332  uint32_t length);
334  hpm_stat_t (*erase_chip)(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config);
337  (*erase_sector)(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t addr);
340  (*erase_block)(XPI_Type *base, xpi_xfer_channel_t channel, const xpi_nor_config_t *nor_config, uint32_t addr);
342  hpm_stat_t (*program)(XPI_Type *base,
343  xpi_xfer_channel_t channel,
344  const xpi_nor_config_t *nor_config,
345  const uint32_t *src,
346  uint32_t dst_addr,
347  uint32_t length);
350  xpi_xfer_channel_t channel,
351  const xpi_nor_config_t *nor_config,
352  uint32_t *dst,
353  uint32_t start,
354  uint32_t length);
356  hpm_stat_t (*page_program_nonblocking)(XPI_Type *base,
357  xpi_xfer_channel_t channel,
358  const xpi_nor_config_t *nor_config,
359  const uint32_t *src,
360  uint32_t dst_addr,
361  uint32_t length);
363  hpm_stat_t (*erase_sector_nonblocking)(XPI_Type *base,
364  xpi_xfer_channel_t channel,
365  const xpi_nor_config_t *nor_config,
366  uint32_t addr);
368  hpm_stat_t (*erase_block_nonblocking)(XPI_Type *base,
369  xpi_xfer_channel_t channel,
370  const xpi_nor_config_t *nor_config,
371  uint32_t addr);
373  hpm_stat_t (*erase_chip_nonblocking)(XPI_Type *base,
374  xpi_xfer_channel_t channel,
375  const xpi_nor_config_t *nor_config);
376 
377  uint32_t reserved0[3];
378 
380  hpm_stat_t (*auto_config)(XPI_Type *base, xpi_nor_config_t *nor_cfg, xpi_nor_config_option_t *cfg_option);
381 
383  hpm_stat_t (*get_property)(XPI_Type *base, xpi_nor_config_t *nor_cfg, uint32_t property_id, uint32_t *value);
384 
385  uint32_t reserved1;
386 
388  hpm_stat_t (*post_erase_sector_nonblocking)(XPI_Type *base, xpi_xfer_channel_t chn, xpi_nor_config_t *nor_cfg, uint32_t addr);
389 
391  hpm_stat_t (*post_erase_block_nonblocking)(XPI_Type *base, xpi_xfer_channel_t chn, xpi_nor_config_t *nor_cfg, uint32_t addr);
392 
394  hpm_stat_t (*post_erase_chip_nonblocking)(XPI_Type *base, xpi_xfer_channel_t chn, xpi_nor_config_t *nor_cfg);
395 
397  hpm_stat_t (*post_page_program_nonblocking)(XPI_Type *base, xpi_xfer_channel_t chn, xpi_nor_config_t *nor_config,
398  const uint32_t *src, uint32_t dst_addr, uint32_t length);
400  void (*sip_flash_power_on)(XPI_Type *base);
401 
403  void (*sip_flash_power_off)(XPI_Type *base);
404 
406  void (*enable_hybrid_xpi)(XPI_Type *base);
407 
409  void (*disable_hybrid_xpi)(XPI_Type *base);
410 
412 
417 #endif /* HPM_ROMAPI_XPI_NOR_DEF_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
#define MAKE_STATUS(group, code)
Definition: hpm_common.h:144
@ status_group_xpi_nor
Definition: hpm_common.h:158
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
xpi_nor_cfg_cmd_type_t
XPI NOR configuration command type.
Definition: hpm_romapi_xpi_nor_def.h:86
xpi_nor_probe_t
XPI NOR probe options.
Definition: hpm_romapi_xpi_nor_def.h:96
xpi_working_mode_t
XPI working mode.
Definition: hpm_romapi_xpi_nor_def.h:76
xpi_std_nor_instr_idx_t
Standard XPI NOR seuqnce index definitions.
Definition: hpm_romapi_xpi_nor_def.h:114
xpi_nor_quad_enable_seq_t
QE bit enable sequence option.
Definition: hpm_romapi_xpi_nor_def.h:65
@ xpi_nor_cfg_cmd_type_generic
Definition: hpm_romapi_xpi_nor_def.h:88
@ xpi_nor_cfg_cmd_type_xpi2spi
Definition: hpm_romapi_xpi_nor_def.h:90
@ xpi_nor_cfg_cmd_type_no_cfg
Definition: hpm_romapi_xpi_nor_def.h:87
@ xpi_nor_cfg_cmd_type_spi2xpi
Definition: hpm_romapi_xpi_nor_def.h:89
@ xpi_nor_hyperbus_1v8
Definition: hpm_romapi_xpi_nor_def.h:101
@ xpi_nor_octabus_sdr
Definition: hpm_romapi_xpi_nor_def.h:104
@ xpi_nor_xccela_sdr
Definition: hpm_romapi_xpi_nor_def.h:106
@ xpi_nor_ecoxip_ddr
Definition: hpm_romapi_xpi_nor_def.h:107
@ xpi_nor_xccela_ddr
Definition: hpm_romapi_xpi_nor_def.h:105
@ xpi_nor_probe_sfdp_ddr
Definition: hpm_romapi_xpi_nor_def.h:98
@ xpi_nor_probe_sfdp_sdr
Definition: hpm_romapi_xpi_nor_def.h:97
@ xpi_nor_ecoxip_sdr
Definition: hpm_romapi_xpi_nor_def.h:108
@ xpi_nor_hyperbus_3v0
Definition: hpm_romapi_xpi_nor_def.h:102
@ xpi_nor_octabus_ddr
Definition: hpm_romapi_xpi_nor_def.h:103
@ xpi_nor_dual_read_0xbb
Definition: hpm_romapi_xpi_nor_def.h:100
@ xpi_nor_quad_read_0xeb
Definition: hpm_romapi_xpi_nor_def.h:99
@ xpi_working_mode_extend_spi
Definition: hpm_romapi_xpi_nor_def.h:77
@ xpi_working_mode_hyperbus
Definition: hpm_romapi_xpi_nor_def.h:79
@ xpi_working_mode_xpi
Definition: hpm_romapi_xpi_nor_def.h:78
@ xpi_nor_property_sector_size
Definition: hpm_romapi_xpi_nor_def.h:29
@ xpi_nor_property_total_size
Definition: hpm_romapi_xpi_nor_def.h:27
@ xpi_nor_property_page_size
Definition: hpm_romapi_xpi_nor_def.h:28
@ xpi_nor_property_block_size
Definition: hpm_romapi_xpi_nor_def.h:30
@ xpi_nor_property_max
Definition: hpm_romapi_xpi_nor_def.h:31
@ serial_nor_sector_size_4kb
Definition: hpm_romapi_xpi_nor_def.h:182
@ serial_nor_sector_size_256kb
Definition: hpm_romapi_xpi_nor_def.h:185
@ serial_nor_sector_size_64kb
Definition: hpm_romapi_xpi_nor_def.h:184
@ serial_nor_sector_size_32kb
Definition: hpm_romapi_xpi_nor_def.h:183
@ serial_nor_erase_type_4kb
Definition: hpm_romapi_xpi_nor_def.h:192
@ serial_nor_erase_type_32kb
Definition: hpm_romapi_xpi_nor_def.h:193
@ serial_nor_erase_type_64kb
Definition: hpm_romapi_xpi_nor_def.h:194
@ serial_nor_erase_type_256kb
Definition: hpm_romapi_xpi_nor_def.h:195
@ xpi_nor_clk_safe_clk_freq
Definition: hpm_romapi_xpi_nor_def.h:39
@ xpi_nor_connection_sel_chnb_cs0
Definition: hpm_romapi_xpi_nor_def.h:56
@ xpi_nor_connection_sel_chna_cs0_chnb_cs0
Definition: hpm_romapi_xpi_nor_def.h:57
@ xpi_nor_connection_sel_chna_cs0
Definition: hpm_romapi_xpi_nor_def.h:55
@ xpi_nor_connection_sel_chnb_cs0_cs1
Definition: hpm_romapi_xpi_nor_def.h:59
@ xpi_nor_connection_sel_chna_cs0_cs1
Definition: hpm_romapi_xpi_nor_def.h:58
@ xpi_nor_option_misc_internal_loopback
Definition: hpm_romapi_xpi_nor_def.h:47
@ xpi_nor_option_misc_spi_only
Definition: hpm_romapi_xpi_nor_def.h:46
@ xpi_nor_option_misc_ext_dqs
Definition: hpm_romapi_xpi_nor_def.h:48
@ status_xpi_nor_sfdp_not_found
Definition: hpm_romapi_xpi_nor_def.h:300
@ status_xpi_nor_ddr_read_dummy_cycle_probe_failed
Definition: hpm_romapi_xpi_nor_def.h:301
@ status_xpi_nor_flash_not_found
Definition: hpm_romapi_xpi_nor_def.h:302
@ flash_size_8mb
Definition: hpm_romapi_xpi_nor_def.h:203
@ flash_size_4mb
Definition: hpm_romapi_xpi_nor_def.h:202
@ flash_size_16mb
Definition: hpm_romapi_xpi_nor_def.h:204
@ xpi_std_nor_seq_idx_page_program
Definition: hpm_romapi_xpi_nor_def.h:116
@ xpi_std_nor_seq_idx_read_status
Definition: hpm_romapi_xpi_nor_def.h:117
@ xpi_std_nor_seq_idx_erase_sector
Definition: hpm_romapi_xpi_nor_def.h:121
@ xpi_std_nor_seq_idx_read_status_xpi
Definition: hpm_romapi_xpi_nor_def.h:118
@ xpi_std_nor_seq_idx_erase_block
Definition: hpm_romapi_xpi_nor_def.h:122
@ xpi_std_nor_seq_idx_write_enable_xpi
Definition: hpm_romapi_xpi_nor_def.h:120
@ xpi_std_nor_seq_idx_read
Definition: hpm_romapi_xpi_nor_def.h:115
@ xpi_std_nor_seq_idx_max
Definition: hpm_romapi_xpi_nor_def.h:124
@ xpi_std_nor_seq_idx_erase_chip
Definition: hpm_romapi_xpi_nor_def.h:123
@ xpi_std_nor_seq_idx_write_enable
Definition: hpm_romapi_xpi_nor_def.h:119
@ xpi_nor_quad_en_set_bit1_in_status_reg2
Definition: hpm_romapi_xpi_nor_def.h:68
@ xpi_nor_quad_en_set_bit6_in_status_reg1
Definition: hpm_romapi_xpi_nor_def.h:67
@ xpi_nor_quad_en_auto_or_ignore
Definition: hpm_romapi_xpi_nor_def.h:66
@ xpi_nor_quad_en_set_bit7_in_status_reg2
Definition: hpm_romapi_xpi_nor_def.h:69
@ xpi_nor_quad_en_set_bi1_in_status_reg2_via_0x31_cmd
Definition: hpm_romapi_xpi_nor_def.h:70
static hpm_stat_t read(void *ops, hpm_serial_nor_transfer_seq_t *cmd_seq)
Definition: hpm_serial_nor_host_spi.c:398
Device Mode configuration structure.
Definition: hpm_romapi_xpi_nor_def.h:210
uint8_t cfg_cmd_type
Definition: hpm_romapi_xpi_nor_def.h:211
uint8_t param_size
Definition: hpm_romapi_xpi_nor_def.h:212
Device mode parameter structure.
Definition: hpm_romapi_xpi_nor_def.h:218
uint32_t param
Definition: hpm_romapi_xpi_nor_def.h:220
XPI NOR device information structure.
Definition: hpm_romapi_xpi_nor_def.h:226
uint8_t data_pads
Definition: hpm_romapi_xpi_nor_def.h:233
uint8_t busy_polarity
Definition: hpm_romapi_xpi_nor_def.h:232
uint8_t cs_setup_time
Definition: hpm_romapi_xpi_nor_def.h:246
uint8_t working_mode
Definition: hpm_romapi_xpi_nor_def.h:237
uint16_t page_size
Definition: hpm_romapi_xpi_nor_def.h:228
uint8_t en_half_clk_for_non_read_cmd
Definition: hpm_romapi_xpi_nor_def.h:240
uint8_t en_dev_mode_cfg
Definition: hpm_romapi_xpi_nor_def.h:248
uint8_t en_ddr_mode
Definition: hpm_romapi_xpi_nor_def.h:234
uint8_t io_voltage
Definition: hpm_romapi_xpi_nor_def.h:243
uint8_t reserved0
Definition: hpm_romapi_xpi_nor_def.h:244
uint16_t block_size_kbytes
Definition: hpm_romapi_xpi_nor_def.h:230
uint8_t working_mode_por
Definition: hpm_romapi_xpi_nor_def.h:236
uint8_t dll_dly_target
Definition: hpm_romapi_xpi_nor_def.h:242
uint32_t size_in_kbytes
Definition: hpm_romapi_xpi_nor_def.h:227
uint8_t clk_freq_for_non_read_cmd
Definition: hpm_romapi_xpi_nor_def.h:241
uint8_t cs_hold_time
Definition: hpm_romapi_xpi_nor_def.h:245
uint8_t data_valid_time
Definition: hpm_romapi_xpi_nor_def.h:239
uint32_t reserved1
Definition: hpm_romapi_xpi_nor_def.h:252
uint8_t busy_offset
Definition: hpm_romapi_xpi_nor_def.h:231
uint8_t clk_freq_for_device_cfg
Definition: hpm_romapi_xpi_nor_def.h:235
uint16_t sector_size_kbytes
Definition: hpm_romapi_xpi_nor_def.h:229
uint32_t flash_state_ctx
Definition: hpm_romapi_xpi_nor_def.h:249
uint8_t en_diff_clk
Definition: hpm_romapi_xpi_nor_def.h:238
uint8_t cs_interval
Definition: hpm_romapi_xpi_nor_def.h:247
XPI instruction sequence.
Definition: hpm_romapi_xpi_def.h:106
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
uint32_t misc
Definition: hpm_romapi_xpi_nor_def.h:148
uint32_t quad_enable_seq
Definition: hpm_romapi_xpi_nor_def.h:150
uint32_t words
Definition: hpm_romapi_xpi_nor_def.h:139
uint32_t probe_type
Definition: hpm_romapi_xpi_nor_def.h:153
uint32_t io_voltage
Definition: hpm_romapi_xpi_nor_def.h:162
uint32_t freq_opt
Definition: hpm_romapi_xpi_nor_def.h:147
uint32_t flash_size_option
Definition: hpm_romapi_xpi_nor_def.h:169
uint32_t dummy_cycles
Definition: hpm_romapi_xpi_nor_def.h:149
uint32_t cmd_pads_after_por
Definition: hpm_romapi_xpi_nor_def.h:152
uint32_t cmd_pads_after_init
Definition: hpm_romapi_xpi_nor_def.h:151
uint32_t tag
Definition: hpm_romapi_xpi_nor_def.h:141
uint32_t drive_strength
Definition: hpm_romapi_xpi_nor_def.h:159
uint32_t U
Definition: hpm_romapi_xpi_nor_def.h:143
uint32_t reserved
Definition: hpm_romapi_xpi_nor_def.h:140
uint32_t connection_sel
Definition: hpm_romapi_xpi_nor_def.h:160
uint32_t flash_sector_size_option
Definition: hpm_romapi_xpi_nor_def.h:170
uint32_t pin_group_sel
Definition: hpm_romapi_xpi_nor_def.h:161
uint32_t flash_sector_erase_cmd_option
Definition: hpm_romapi_xpi_nor_def.h:171
XPI NOR configuration structure.
Definition: hpm_romapi_xpi_nor_def.h:261
uint8_t clk_freq
Definition: hpm_romapi_xpi_nor_def.h:265
uint32_t reserved0
Definition: hpm_romapi_xpi_nor_def.h:263
uint8_t rxclk_src_for_init
Definition: hpm_romapi_xpi_nor_def.h:268
uint8_t rxclk_src
Definition: hpm_romapi_xpi_nor_def.h:264
uint8_t enable
Definition: hpm_romapi_xpi_nor_def.h:272
uint8_t column_addr_size
Definition: hpm_romapi_xpi_nor_def.h:267
uint32_t tag
Definition: hpm_romapi_xpi_nor_def.h:262
uint8_t drive_strength
Definition: hpm_romapi_xpi_nor_def.h:266
uint8_t group
Definition: hpm_romapi_xpi_nor_def.h:273
xpi_device_info_t device_info
Definition: hpm_romapi_xpi_nor_def.h:276
uint8_t config_in_progress
Definition: hpm_romapi_xpi_nor_def.h:269
XPI NOR driver interface.
Definition: hpm_romapi_xpi_nor_def.h:308
uint32_t reserved1
Definition: hpm_romapi_xpi_nor_def.h:385
uint32_t version
Definition: hpm_romapi_xpi_nor_def.h:310
FLASH runtime context structure.
Definition: hpm_romapi_xpi_nor_def.h:283
uint32_t wait_time
Definition: hpm_romapi_xpi_nor_def.h:285
uint32_t U
Definition: hpm_romapi_xpi_nor_def.h:293
uint32_t exit_no_cmd_sequence
Definition: hpm_romapi_xpi_nor_def.h:289
uint32_t restore_sequence
Definition: hpm_romapi_xpi_nor_def.h:288
uint32_t por_mode
Definition: hpm_romapi_xpi_nor_def.h:291
uint32_t wait_time_unit
Definition: hpm_romapi_xpi_nor_def.h:286
uint32_t current_mode
Definition: hpm_romapi_xpi_nor_def.h:290
uint32_t reset_gpio
Definition: hpm_romapi_xpi_nor_def.h:287