HPM SDK
HPMicro Software Development Kit
hpm_serial_nor_host.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef _HPM_SERIAL_NOR_HOST_H
9 #define _HPM_SERIAL_NOR_HOST_H
10 #include "hpm_common.h"
11 #include "sfdp_def.h"
12 
13 #define SERIAL_NOR_HOST_SUPPORT_SINGLE_IO_MODE (1UL << 0)
14 #define SERIAL_NOR_HOST_SUPPORT_DUAL_IO_MODE (1UL << 1)
15 #define SERIAL_NOR_HOST_SUPPORT_QUAD_IO_MODE (1UL << 2)
16 #define SERIAL_NOR_HOST_SUPPORT_SPI_INTERFACE (1UL << 3)
17 #define SERIAL_NOR_HOST_SUPPORT_DMA (1UL << 8)
18 #define SERIAL_NOR_HOST_CS_CONTROL_AUTO (1UL << 9)
19 
23 typedef enum {
28 
32 typedef enum {
36 
40 typedef enum {
44 
48 typedef struct {
49  uint8_t en_dev_mode_cfg;
50  uint8_t sfdp_version;
52  uint8_t block_erase_cmd;
53  uint32_t size_in_kbytes;
54  uint16_t page_size;
58 
62 typedef struct {
63  uint8_t rx_dma_ch;
64  uint8_t tx_dma_ch;
65  uint8_t rx_dma_req;
66  uint8_t tx_dma_req;
67  void *dma_base;
68  void *dmamux_base;
70 
74 typedef struct {
75  uint8_t pin_or_cs_index;
77  uint32_t clock_name;
78  uint32_t frequency;
80  void *host_base;
81  void (*set_cs)(uint32_t cs_pin, uint8_t state);
82  void (*set_frequency)(void *host, uint32_t freq);
84 
88 typedef struct {
89  uint8_t read_cmd;
95 
99 typedef struct {
105 
109 typedef struct {
110  uint32_t flags;
112  void *user_data;
114 
121 typedef struct {
122  /* can choose whether to use DMA in a transfer, even if the flags has DMA*/
123  uint8_t use_dma;
124 
125  struct {
126  uint8_t cmd;
127  } cmd_phase;
128 
129  struct {
130  bool enable;
133  uint32_t addr;
134  } addr_phase;
135 
136  struct {
137  uint8_t dummy_count;
138  } dummy_phase;
139 
140  struct {
141  /* the operation direction of the data phase, it's include write and read */
143  /* the SPI operation mode of the data phase, it's include SPI/DUAL SPI/QUAD SPI and so on */
145  uint32_t len;
146  uint8_t *buf;
147  } data_phase;
148 
150 
154 typedef struct {
155  hpm_stat_t (*init)(void *host);
156 
157  hpm_stat_t (*transfer)(void *host, hpm_serial_nor_transfer_seq_t *command_seq);
158 
159  void (*set_cs)(uint32_t cs_pin, uint8_t state);
160 
161  void (*set_frequency)(void *host, uint32_t freq);
162 
163  void *user_data;
165 
169 typedef struct {
172  void *user_data;
174 
178 typedef struct {
184 
185 #ifdef __cplusplus
186 extern "C" {
187 #endif
188 
200 #ifdef __cplusplus
201 }
202 #endif
203 
204 #endif
static void init(hpm_panel_t *panel)
Definition: cc10128007.c:86
uint32_t hpm_stat_t
Definition: hpm_common.h:126
@ cs_pin
Definition: hpm_spi_drv.h:265
hpm_serial_nor_seq_io_mode_t
IO mode of serial nor flash sequence.
Definition: hpm_serial_nor_host.h:23
@ dual_io_mode
Definition: hpm_serial_nor_host.h:25
@ quad_io_mode
Definition: hpm_serial_nor_host.h:26
@ single_io_mode
Definition: hpm_serial_nor_host.h:24
hpm_stat_t serial_nor_host_ops_use_spi(hpm_serial_nor_t *dev)
serial nor host operation is use spi operation
Definition: hpm_serial_nor_host_spi.c:43
hpm_serial_nor_seq_addr_bit_t
number of address bits of serial nor flash sequence
Definition: hpm_serial_nor_host.h:32
@ flash_addrlen_32bit
Definition: hpm_serial_nor_host.h:34
@ flash_addrlen_24bit
Definition: hpm_serial_nor_host.h:33
hpm_serial_nor_seq_direction_t
transfer direction serial nor flash sequence
Definition: hpm_serial_nor_host.h:40
@ write_direction
Definition: hpm_serial_nor_host.h:41
@ read_direction
Definition: hpm_serial_nor_host.h:42
static hpm_stat_t transfer(void *host, hpm_serial_nor_transfer_seq_t *command_seq)
Definition: hpm_serial_nor_host_spi.c:55
dma control param of serial nor flash host
Definition: hpm_serial_nor_host.h:62
uint8_t tx_dma_ch
Definition: hpm_serial_nor_host.h:64
uint8_t rx_dma_ch
Definition: hpm_serial_nor_host.h:63
void * dma_base
Definition: hpm_serial_nor_host.h:67
uint8_t rx_dma_req
Definition: hpm_serial_nor_host.h:65
uint8_t tx_dma_req
Definition: hpm_serial_nor_host.h:66
void * dmamux_base
Definition: hpm_serial_nor_host.h:68
param and operation of serial nor flash host
Definition: hpm_serial_nor_host.h:74
hpm_nor_host_dma_control_t dma_control
Definition: hpm_serial_nor_host.h:76
uint32_t clock_name
Definition: hpm_serial_nor_host.h:77
uint8_t pin_or_cs_index
Definition: hpm_serial_nor_host.h:75
uint32_t transfer_max_size
Definition: hpm_serial_nor_host.h:79
uint32_t frequency
Definition: hpm_serial_nor_host.h:78
void * host_base
Definition: hpm_serial_nor_host.h:80
param of serial nor flash host
Definition: hpm_serial_nor_host.h:109
uint32_t flags
Definition: hpm_serial_nor_host.h:110
hpm_nor_host_param_t param
Definition: hpm_serial_nor_host.h:111
void * user_data
Definition: hpm_serial_nor_host.h:112
serial nor flash host parameters structure
Definition: hpm_serial_nor_host.h:169
void * user_data
Definition: hpm_serial_nor_host.h:172
serial_nor_host_ops_t host_ops
Definition: hpm_serial_nor_host.h:171
hpm_serial_nor_host_param_t host_param
Definition: hpm_serial_nor_host.h:170
information of serial nor flash
Definition: hpm_serial_nor_host.h:48
uint32_t size_in_kbytes
Definition: hpm_serial_nor_host.h:53
uint8_t block_erase_cmd
Definition: hpm_serial_nor_host.h:52
uint16_t sector_size_kbytes
Definition: hpm_serial_nor_host.h:55
uint8_t en_dev_mode_cfg
Definition: hpm_serial_nor_host.h:49
uint16_t block_size_kbytes
Definition: hpm_serial_nor_host.h:56
uint8_t sector_erase_cmd
Definition: hpm_serial_nor_host.h:51
uint16_t page_size
Definition: hpm_serial_nor_host.h:54
uint8_t sfdp_version
Definition: hpm_serial_nor_host.h:50
serial nor flash parameters structure
Definition: hpm_serial_nor_host.h:178
hpm_sfdp_program_para_t nor_program_para
Definition: hpm_serial_nor_host.h:181
hpm_serial_nor_host_t host
Definition: hpm_serial_nor_host.h:179
hpm_serial_nor_info_t flash_info
Definition: hpm_serial_nor_host.h:182
hpm_sfdp_read_para_t nor_read_para
Definition: hpm_serial_nor_host.h:180
operation sequence of serial nor flash
Definition: hpm_serial_nor_host.h:121
uint8_t cmd
Definition: hpm_serial_nor_host.h:126
bool enable
Definition: hpm_serial_nor_host.h:130
hpm_serial_nor_seq_io_mode_t data_io_mode
Definition: hpm_serial_nor_host.h:144
uint32_t addr
Definition: hpm_serial_nor_host.h:133
uint8_t use_dma
Definition: hpm_serial_nor_host.h:123
hpm_serial_nor_seq_io_mode_t addr_io_mode
Definition: hpm_serial_nor_host.h:132
uint32_t len
Definition: hpm_serial_nor_host.h:145
hpm_serial_nor_seq_addr_bit_t addr_bit
Definition: hpm_serial_nor_host.h:131
uint8_t * buf
Definition: hpm_serial_nor_host.h:146
hpm_serial_nor_seq_direction_t direction
Definition: hpm_serial_nor_host.h:142
uint8_t dummy_count
Definition: hpm_serial_nor_host.h:137
spi nor program parameters structure
Definition: hpm_serial_nor_host.h:99
uint8_t page_program_cmd
Definition: hpm_serial_nor_host.h:103
bool has_4b_addressing_inst_table
Definition: hpm_serial_nor_host.h:100
bool support_1_4_4_page_program
Definition: hpm_serial_nor_host.h:101
bool support_1_1_4_page_program
Definition: hpm_serial_nor_host.h:102
spi nor read parameters structure
Definition: hpm_serial_nor_host.h:88
hpm_serial_nor_seq_addr_bit_t addr_bit
Definition: hpm_serial_nor_host.h:91
hpm_serial_nor_seq_io_mode_t data_phase_format
Definition: hpm_serial_nor_host.h:92
hpm_serial_nor_seq_io_mode_t addr_phase_format
Definition: hpm_serial_nor_host.h:93
uint8_t read_cmd
Definition: hpm_serial_nor_host.h:89
uint8_t data_dummy_count
Definition: hpm_serial_nor_host.h:90
operation of serial nor flash host
Definition: hpm_serial_nor_host.h:154
void * user_data
Definition: hpm_serial_nor_host.h:163