Go to the documentation of this file.
25 #ifndef HAL_SERIAL_NOR_H
26 #define HAL_SERIAL_NOR_H
38 #define SNOR_BUS_DRIVER_SPI 0U
39 #define SNOR_BUS_DRIVER_WSPI 1U
53 #if !defined(SNOR_BUS_DRIVER) || defined(__DOXYGEN__)
54 #define SNOR_BUS_DRIVER SNOR_BUS_DRIVER_WSPI
65 #if !defined(SNOR_SHARED_BUS) || defined(__DOXYGEN__)
66 #define SNOR_SHARED_BUS TRUE
74 #if (SNOR_BUS_DRIVER == SNOR_BUS_DRIVER_SPI) || defined(__DOXYGEN__)
75 #define BUSConfig SPIConfig
76 #define BUSDriver SPIDriver
77 #elif SNOR_BUS_DRIVER == SNOR_BUS_DRIVER_WSPI
78 #define BUSConfig WSPIConfig
79 #define BUSDriver WSPIDriver
81 #error "invalid SNOR_BUS_DRIVER setting"
93 const BUSConfig *buscfg;
99 #define _snor_flash_methods_alone \
101 flash_error_t (*read_sfdp)(void *instance, \
102 flash_offset_t offset, \
109 #define _snor_flash_methods \
110 _base_flash_methods \
111 _snor_flash_methods_alone
140 uint8_t device_id[20];
147 #if SNOR_SHARED_BUS == FALSE
148 #define bus_acquire(busp, config)
149 #define bus_release(busp)
159 void bus_acquire(BUSDriver *busp,
const BUSConfig *config);
161 void bus_cmd(BUSDriver *busp, uint32_t cmd);
162 void bus_cmd_send(BUSDriver *busp, uint32_t cmd,
size_t n,
const uint8_t *p);
178 #if (SNOR_BUS_DRIVER == SNOR_BUS_DRIVER_WSPI) || defined(__DOXYGEN__)
194 #if (SNOR_BUS_DRIVER == SNOR_BUS_DRIVER_WSPI) || defined(__DOXYGEN__)
195 #if (WSPI_SUPPORTS_MEMMAP == TRUE) || defined(__DOXYGEN__)
205 #include "hal_flash_device.h"
void bus_cmd_dummy_receive(BUSDriver *busp, uint32_t cmd, uint32_t dummy, size_t n, uint8_t *p)
Sends a command followed by dummy cycles and a data receive phase.
void bus_release(BUSDriver *busp)
Bus release.
Type of SNOR flash class.
Generic flash driver class header.
#define _snor_flash_methods
SNORDriver specific methods with inherited ones.
void snorMemoryMap(SNORDriver *devp, uint8_t **addrp)
Enters the memory Mapping mode.
Type of a SNOR configuration structure.
void bus_cmd_addr_receive(BUSDriver *busp, uint32_t cmd, flash_offset_t offset, size_t n, uint8_t *p)
Sends a command followed by a flash address and a data receive phase.
void bus_acquire(BUSDriver *busp, const BUSConfig *config)
Bus acquisition and lock.
SNOR virtual methods table.
const struct SNORDriverVMT * vmt
SNORDriver Virtual Methods Table.
void bus_cmd_receive(BUSDriver *busp, uint32_t cmd, size_t n, uint8_t *p)
Sends a command followed by a data receive phase.
void snorObjectInit(SNORDriver *devp)
Initializes an instance.
void bus_cmd_addr_dummy_receive(BUSDriver *busp, uint32_t cmd, flash_offset_t offset, uint32_t dummy, size_t n, uint8_t *p)
Sends a command followed by a flash address, dummy cycles and a data receive phase.
#define _base_flash_data
BaseFlash specific data.
void bus_cmd_send(BUSDriver *busp, uint32_t cmd, size_t n, const uint8_t *p)
Sends a command followed by a data transmit phase.
void snorStart(SNORDriver *devp, const SNORConfig *config)
Configures and activates SNOR driver.
void bus_cmd_addr(BUSDriver *busp, uint32_t cmd, flash_offset_t offset)
Sends a command followed by a flash address.
uint32_t flash_offset_t
Type of a flash offset.
const _base_flash_data SNORConfig * config
Current configuration data.
void snorStop(SNORDriver *devp)
Deactivates the SNOR driver.
void snorMemoryUnmap(SNORDriver *devp)
Leaves the memory Mapping mode.
void bus_cmd_addr_send(BUSDriver *busp, uint32_t cmd, flash_offset_t offset, size_t n, const uint8_t *p)
Sends a command followed by a flash address and a data transmit phase.
void bus_cmd(BUSDriver *busp, uint32_t cmd)
Sends a naked command.