ChibiOS 21.11.4
hal_xsnor_macronix_mx25_impl.inc File Reference

Template of SNOR Macronix MX25 source. More...

#include <string.h>

Go to the source code of this file.

Macros

#define PAGE_SIZE   256U
#define PAGE_MASK   (PAGE_SIZE - 1U)
Command codes, SPI mode
#define CMD_SPI_READ3B   0x03U
#define CMD_SPI_FAST_READ3B   0x0BU
#define CMD_SPI_PP3B   0x02U
#define CMD_SPI_SE3B   0x20U
#define CMD_SPI_BE3B   0xD8U
#define CMD_SPI_CE   0xC7U
#define CMD_SPI_READ4B   0x13U
#define CMD_SPI_FAST_READ4B   0x0CU
#define CMD_SPI_PP4B   0x12U
#define CMD_SPI_SE4B   0x21U
#define CMD_SPI_BE4B   0xDCU
#define CMD_SPI_WREN   0x06U
#define CMD_SPI_WRDI   0x04U
#define CMD_SPI_PE_SUSPEND   0xB0U
#define CMD_SPI_PE_RESUME   0x30U
#define CMD_SPI_DP   0xB9U
#define CMD_SPI_SBL   0xC0U
#define CMD_SPI_ENSO   0xB1U
#define CMD_SPI_EXSO   0xC1U
#define CMD_SPI_NOP   0x00U
#define CMD_SPI_RSTEN   0x66U
#define CMD_SPI_RST   0x99U
#define CMD_SPI_RDID   0x9FU
#define CMD_SPI_RDSFDP   0x5AU
#define CMD_SPI_RDSR   0x05U
#define CMD_SPI_RDCR   0x15U
#define CMD_SPI_WRSR   0x01U
#define CMD_SPI_RDCR2   0x71U
#define CMD_SPI_WRCR2   0x72U
#define CMD_SPI_RDFBR   0x16U
#define CMD_SPI_WRFBR   0x17U
#define CMD_SPI_ESFBR   0x18U
#define CMD_SPI_RDSCUR   0x2BU
#define CMD_SPI_WRSCUR   0x2FU
#define CMD_SPI_WRLR   0x2CU
#define CMD_SPI_RDLR   0x2DU
#define CMD_SPI_WRSPB   0xE3U
#define CMD_SPI_ESSPB   0xE4U
#define CMD_SPI_RDSPB   0xE2U
#define CMD_SPI_WRDPB   0xE1U
#define CMD_SPI_RDDPB   0xE0U
#define CMD_SPI_WPSEL   0x68U
#define CMD_SPI_GBLK   0x7EU
#define CMD_SPI_GBULK   0x98U
#define CMD_SPI_RDPASS   0x27U
#define CMD_SPI_WRPASS   0x28U
#define CMD_SPI_PASSULK   0x29U
Command codes, OPI mode
#define CMD_OPI_8READ   0xEC13U
#define CMD_OPI_8DTRD   0xEE11U
#define CMD_OPI_RDID   0x9F60U
#define CMD_OPI_RDSFDP   0x5AA5U
#define CMD_OPI_PP   0x12EDU
#define CMD_OPI_SE   0x21DEU
#define CMD_OPI_BE   0xDC23U
#define CMD_OPI_CE   0xC738U
#define CMD_OPI_WREN   0x06F9U
#define CMD_OPI_WRDI   0x04FBU
#define CMD_OPI_PE_SUSPEND   0xB04FU
#define CMD_OPI_PE_RESUME   0x30CFU
#define CMD_OPI_DP   0xB946U
#define CMD_OPI_SBL   0xC03FU
#define CMD_OPI_ENSO   0xB14EU
#define CMD_OPI_EXSO   0xC13EU
#define CMD_OPI_NOP   0x00FFU
#define CMD_OPI_RSTEN   0x6699U
#define CMD_OPI_RST   0x9966U
#define CMD_OPI_RDSR   0x05FAU
#define CMD_OPI_RDCR   0x15EAU
#define CMD_OPI_WRSR   0x01FEU
#define CMD_OPI_WRCR   0x01FEU
#define CMD_OPI_RDCR2   0x718EU
#define CMD_OPI_WRCR2   0x728DU
#define CMD_OPI_RDFBR   0x16E9U
#define CMD_OPI_WRFBR   0x17E8U
#define CMD_OPI_ESFBR   0x18E7U
#define CMD_OPI_RDSCUR   0x2BD4U
#define CMD_OPI_WRSCUR   0x2FD0U
#define CMD_OPI_WRLR   0x2CD3U
#define CMD_OPI_RDLR   0x2DD2U
#define CMD_OPI_WRSPB   0xE31CU
#define CMD_OPI_ESSPB   0xE41BU
#define CMD_OPI_RDSPB   0xE21DU
#define CMD_OPI_WRDPB   0xE11EU
#define CMD_OPI_RDDPB   0xE01FU
#define CMD_OPI_WPSEL   0x6897U
#define CMD_OPI_GBLK   0x7E81U
#define CMD_OPI_GBULK   0x9867U
#define CMD_OPI_RDPASS   0x27D8U
#define CMD_OPI_WRPASS   0x28D7U
#define CMD_OPI_PASSULK   0x29D6U
Flags status register bits
#define FLAGS_WPSEL   0x80U
#define FLAGS_E_FAIL   0x40U
#define FLAGS_P_FAIL   0x20U
#define FLAGS_ESB   0x08U
#define FLAGS_PSB   0x04U
#define FLAGS_LDSO   0x02U
#define FLAGS_SECURED_OTP   0x01U
#define FLAGS_ALL_ERRORS   (FLAGS_E_FAIL | FLAGS_P_FAIL)
MX25-required transfer modes
#define CFG_C8_SPI
#define CFG_C16_8STR
#define CFG_C16_8DTR
#define CFG_C8_A32_SPI
#define CFG_C16_A32_8STR
#define CFG_C16_A32_8DTR
#define CFG_C8_DATA_SPI
#define CFG_C16_DATA_8STR
#define CFG_C16_DATA_8DTR
#define CFG_C8_A32_DATA_SPI
#define CFG_C16_A32_DATA_8STR
#define CFG_C16_A32_DATA_8DTR

Functions

static bool mx25_find_id (const uint8_t *set, size_t size, uint8_t element)
static flash_error_t mx25_poll_status (hal_xsnor_macronix_mx25_c *self)
static void mx25_reset_memory (hal_xsnor_macronix_mx25_c *self)
static void mx25_read_id (hal_xsnor_macronix_mx25_c *self, uint8_t *buf)
static void mx25_write_cr2 (hal_xsnor_macronix_mx25_c *self, uint32_t addr, const uint8_t *value)
Methods implementations of hal_xsnor_macronix_mx25_c
void * __mx25_objinit_impl (void *ip, const void *vmt)
 Implementation of object creation.
void __mx25_dispose_impl (void *ip)
 Implementation of object finalization.
flash_error_t __mx25_init_impl (void *ip)
 Override of method xsnor_device_init().
flash_error_t __mx25_read_impl (void *ip, flash_offset_t offset, size_t n, uint8_t *rp)
 Override of method xsnor_device_read().
flash_error_t __mx25_program_impl (void *ip, flash_offset_t offset, size_t n, const uint8_t *pp)
 Override of method xsnor_device_program().
flash_error_t __mx25_start_erase_all_impl (void *ip)
 Override of method xsnor_device_start_erase_all().
flash_error_t __mx25_start_erase_sector_impl (void *ip, flash_sector_t sector)
 Override of method xsnor_device_start_erase_sector().
flash_error_t __mx25_query_erase_impl (void *ip, unsigned *msec)
 Override of method xsnor_device_query_erase().
flash_error_t __mx25_verify_erase_impl (void *ip, flash_sector_t sector)
 Override of method xsnor_device_verify_erase().
flash_error_t __mx25_mmap_on_impl (void *ip, uint8_t **addrp)
 Override of method xsnor_device_mmap_on().
void __mx25_mmap_off_impl (void *ip)
 Override of method xsnor_device_mmap_off().

Variables

static const xsnor_commands_t cmd_spi
static const xsnor_commands_t cmd_8str
static const xsnor_commands_t cmd_8dtr
static const wspi_command_t cmd_reset_enable_spi
static const wspi_command_t cmd_reset_memory_spi
static const wspi_command_t cmd_reset_enable_8str
static const wspi_command_t cmd_reset_memory_8str
static const wspi_command_t cmd_reset_enable_8dtr
static const wspi_command_t cmd_reset_memory_8dtr
static const uint8_t mx25_manufacturer_ids [] = {0xC2}
static const uint8_t mx25_memory_type_ids [] = {0x85}
const struct hal_xsnor_macronix_mx25_vmt __hal_xsnor_macronix_mx25_vmt
 VMT structure of SNOR Macronix MX25 driver class.

Detailed Description

Template of SNOR Macronix MX25 source.

Note
This is a template file, can be edited directly.

Definition in file hal_xsnor_macronix_mx25_impl.inc.