SmartSnippets DA1459x SDK
qspi_common_v2.h
Go to the documentation of this file.
1 
40 #ifndef _QSPI_COMMON_V2_H_
41 #define _QSPI_COMMON_V2_H_
42 
43 
44 #include <stdbool.h>
45 #include "hw_qspi.h"
46 
47 #if __DBG_QSPI_ENABLED
48 #define __DBG_QSPI_VOLATILE__ volatile
49 #pragma message "qspi_automode.{h c} debugging mode enabled"
50 #else
51 #define __DBG_QSPI_VOLATILE__
52 #endif
53 
54 #define QSPI_WRITE_STATUS_REG_OPCODE (0x01)
55 #define QSPI_WRITE_DISABLE_OPCODE (0x04)
56 #define QSPI_READ_STATUS_REG_OPCODE (0x05)
57 #define QSPI_WRITE_ENABLE_OPCODE (0x06)
58 #define QSPI_RESET_EN_OPCODE (0x66)
59 #define QSPI_RESET_OPCODE (0x99)
60 #define QSPI_READ3B_OPCODE (0x03)
61 #define QSPI_FAST_READ_QUAD_OPCODE (0xEB)
62 #define QSPI_BLOCK_ERASE_OPCODE (0x52)
63 #define QSPI_CHIP_ERASE_OPCODE (0xC7)
64 #define QSPI_SECTOR_ERASE_OPCODE (0x20)
65 #define QSPI_PAGE_PROGRAM_QPI_OPCODE (0x02)
66 #define QSPI_PAGE_PROGRAM_QUAD_OPCODE (0x32)
67 #define QSPI_READ_JEDEC_ID_OPCODE (0x9F)
68 #define QSPI_EXIT_CONTINUOUS_MODE_BYTE (0xFF)
69 #define QSPI_EXIT_CONTINUOUS_MODE_WORD (0xFFFFFFFF)
70 
71 #define QSPI_RELEASE_POWER_DOWN_OPCODE (0xAB)
72 #define QSPI_ENTER_POWER_DOWN_OPCODE (0xB9)
73 
74 #define QSPI_ENTER_QPI_OPCODE (0x38)
75 #define QSPI_EXIT_QPI_OPCODE (0xFF)
76 
77 /* Erase/Write in progress */
78 #define QSPI_STATUS_REG_BUSY_BIT (0)
79 #define QSPI_STATUS_REG_BUSY_MASK (1 << QSPI_STATUS_REG_BUSY_BIT)
80 
81 /* WE Latch bit */
82 #define QSPI_STATUS_REG_WEL_BIT (1)
83 #define QSPI_STATUS_REG_WEL_MASK (1 << QSPI_STATUS_REG_WEL_BIT)
84 
85 #define QSPI_MEMORY_SIZE_1Mbit (1024 * 1024)
86 #define QSPI_MEMORY_SIZE_2Mbits (2 * QSPI_MEMORY_SIZE_1Mbit)
87 #define QSPI_MEMORY_SIZE_4Mbits (4 * QSPI_MEMORY_SIZE_1Mbit)
88 #define QSPI_MEMORY_SIZE_8Mbits (8 * QSPI_MEMORY_SIZE_1Mbit)
89 #define QSPI_MEMORY_SIZE_16Mbits (16 * QSPI_MEMORY_SIZE_1Mbit)
90 #define QSPI_MEMORY_SIZE_32Mbits (32 * QSPI_MEMORY_SIZE_1Mbit)
91 #define QSPI_MEMORY_SIZE_64Mbits (64 * QSPI_MEMORY_SIZE_1Mbit)
92 #define QSPI_MEMORY_SIZE_128Mbits (128 * QSPI_MEMORY_SIZE_1Mbit)
93 #define QSPI_MEMORY_SIZE_256Mbits (256 * QSPI_MEMORY_SIZE_1Mbit)
94 #define QSPI_MEMORY_SIZE_512Mbits (512 * QSPI_MEMORY_SIZE_1Mbit)
95 #define QSPI_MEMORY_SIZE_1Gbit (1024 * QSPI_MEMORY_SIZE_1Mbit)
96 
97 #define PRODUCT_HEADER_STRUCT(_N_) \
98 __PACKED_STRUCT { \
99  uint32_t burstcmdA; \
100  uint32_t burstcmdB; \
101  uint16_t flash_config_section; \
102  uint16_t flash_config_length; \
103  uint8_t config_seq[_N_]; \
104  uint16_t crc; \
105 }
106 
107 typedef void (* qspi_initialize_cb_t) (HW_QSPIC_ID id, sys_clk_t sys_clk);
108 typedef void (* qspi_sys_clk_cfg_cb_t) (HW_QSPIC_ID id, sys_clk_t sys_clk);
109 typedef bool (* qspi_exit_qpi_cb_t) (HW_QSPIC_ID id);
110 typedef uint8_t (* qspi_get_dummy_bytes_cb_t) (HW_QSPIC_ID id, sys_clk_t sys_clk);
111 typedef bool (* qspi_is_suspended_cb_t) (HW_QSPIC_ID id);
112 typedef bool (* qspi_is_busy_cb_t) (HW_QSPIC_ID id, HW_QSPI_BUSY_LEVEL busy_level);
113 typedef uint8_t (* qspi_read_status_reg_cb_t) (HW_QSPIC_ID id);
114 typedef void (* qspi_write_status_reg_cb_t) (HW_QSPIC_ID id, uint8_t value);
115 
119 typedef struct {
120  uint8_t manufacturer_id;
121  uint8_t type;
122  uint8_t density;
123  uint8_t density_mask;
126 } jedec_id_t;
127 
131 typedef struct {
132  qspi_initialize_cb_t initialize_cb;
133  qspi_sys_clk_cfg_cb_t sys_clk_cfg_cb;
135  qspi_exit_qpi_cb_t exit_qpi_cb;
137  qspi_get_dummy_bytes_cb_t get_dummy_bytes_cb;
139  qspi_is_suspended_cb_t is_suspended_cb;
141  qspi_is_busy_cb_t is_busy_cb;
142  qspi_read_status_reg_cb_t read_status_reg_cb;
143  qspi_write_status_reg_cb_t write_status_reg_cb;
145 
149 typedef struct {
150  uint16_t reset_usec;
151  uint16_t power_down_usec;
158  uint16_t power_up_usec;
159 } qspi_delay_t;
160 
166 typedef struct {
168  uint32_t size_bits;
191 
192 
193 #endif /* _QSPI_COMMON_V2_H_ */
194 
qspi_flash_config_t::clk_mode
HW_QSPI_CLK_MODE clk_mode
Definition: qspi_common_v2.h:170
HW_QSPIC_ID
void * HW_QSPIC_ID
QSPI Controller ID.
Definition: hw_qspi_v2.h:439
qspi_flash_config_t::jedec
jedec_id_t jedec
Definition: qspi_common_v2.h:167
qspi_flash_config_t::read_instr_cfg
hw_qspi_read_instr_config_t read_instr_cfg
Definition: qspi_common_v2.h:171
qspi_flash_config_t::delay
qspi_delay_t delay
Definition: qspi_common_v2.h:178
qspi_flash_config_t::read_status_instr_cfg
hw_qspi_read_status_instr_config_t read_status_instr_cfg
Definition: qspi_common_v2.h:173
hw_qspi_read_status_instr_config_t
QSPIC read status instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:378
hw_qspi_write_enable_instr_config_t
QSPIC write enable instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:394
qspi_delay_t::power_down_usec
uint16_t power_down_usec
Definition: qspi_common_v2.h:151
jedec_id_t::density_mask
uint8_t density_mask
Definition: qspi_common_v2.h:123
qspi_delay_t::power_up_usec
uint16_t power_up_usec
Definition: qspi_common_v2.h:158
qspi_flash_config_t::size_bits
uint32_t size_bits
Definition: qspi_common_v2.h:168
qspi_flash_config_t::write_enable_instr_cfg
hw_qspi_write_enable_instr_config_t write_enable_instr_cfg
Definition: qspi_common_v2.h:174
qspi_callback_t
QSPI memory callbacks struct.
Definition: qspi_common_v2.h:131
hw_qspi_page_program_instr_config_t
QSPIC Page Program instruction configuration structure (manual access mode)
Definition: hw_qspi_v2.h:402
hw_qspi_suspend_resume_instr_config_t
QSPIC Erase suspend/resume instruction structure (auto access mode)
Definition: hw_qspi_v2.h:412
sys_clk_t
enum sysclk_type sys_clk_t
The system clock type.
jedec_id_t::manufacturer_id
uint8_t manufacturer_id
Definition: qspi_common_v2.h:120
HW_QSPI_BUSY_LEVEL
HW_QSPI_BUSY_LEVEL
QSPIC device busy status setting.
Definition: hw_qspi_v2.h:94
qspi_delay_t::release_power_down_usec
uint16_t release_power_down_usec
Definition: qspi_common_v2.h:154
qspi_flash_config_t::resume_before_writing_regs
bool resume_before_writing_regs
Definition: qspi_common_v2.h:180
HW_QSPI_ADDR_SIZE
HW_QSPI_ADDR_SIZE
QSPIC memory address size.
Definition: hw_qspi_v2.h:68
qspi_delay_t::reset_usec
uint16_t reset_usec
Definition: qspi_common_v2.h:150
qspi_flash_config_t::callback
qspi_callback_t callback
Definition: qspi_common_v2.h:179
qspi_flash_config_t::erase_instr_cfg
hw_qspi_erase_instr_config_t erase_instr_cfg
Definition: qspi_common_v2.h:172
qspi_flash_config_t::suspend_resume_instr_cfg
hw_qspi_suspend_resume_instr_config_t suspend_resume_instr_cfg
Definition: qspi_common_v2.h:176
hw_qspi.h
Low Level Driver of QSPI controllers.
hw_qspi_erase_instr_config_t
QSPIC Erase instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:360
jedec_id_t
JEDEC ID struct.
Definition: qspi_common_v2.h:119
HW_QSPI_CLK_MODE
HW_QSPI_CLK_MODE
QSPIC clock mode.
Definition: hw_qspi_v2.h:112
jedec_id_t::density
uint8_t density
Definition: qspi_common_v2.h:122
hw_qspi_read_instr_config_t
Read instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:342
qspi_flash_config_t::page_program_instr_cfg
hw_qspi_page_program_instr_config_t page_program_instr_cfg
Definition: qspi_common_v2.h:175
qspi_delay_t
QSPI memory delays.
Definition: qspi_common_v2.h:149
qspi_flash_config_t::address_size
HW_QSPI_ADDR_SIZE address_size
Definition: qspi_common_v2.h:169
jedec_id_t::type
uint8_t type
Definition: qspi_common_v2.h:121
qspi_flash_config_t
QSPI memory configuration structure.
Definition: qspi_common_v2.h:166