OpenOCD
max32xxx_qspi_common_defs.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 /***************************************************************************
4  * Copyright (C) 2026 Analog Devices, Inc. *
5  ***************************************************************************/
6 
7 #ifndef OPENOCD_FLASH_NOR_MAX32XXX_QSPI_COMMON_DEFS_H
8 #define OPENOCD_FLASH_NOR_MAX32XXX_QSPI_COMMON_DEFS_H
9 
10 #include <stddef.h>
11 #include <stdint.h>
12 
13 #define SPIXFC_BASE 0x40027000
14 #define SPIXFC_CFG (SPIXFC_BASE | 0x00)
15 #define SPIXFC_SS_POL (SPIXFC_BASE | 0x04)
16 #define SPIXFC_GEN_CTRL (SPIXFC_BASE | 0x08)
17 #define SPIXFC_FIFO_CTRL (SPIXFC_BASE | 0x0C)
18 
19 #define SPIXFC_CONFIG_PAGE_SIZE_POS 6
20 #define SPIXFC_CONFIG_PAGE_SIZE (0x3 << SPIXFC_CONFIG_PAGE_SIZE_POS)
21 #define SPIXFC_CONFIG_PAGE_SIZE_4_BYTES (0x0 << SPIXFC_CONFIG_PAGE_SIZE_POS)
22 #define SPIXFC_CONFIG_PAGE_SIZE_8_BYTES (0x1 << SPIXFC_CONFIG_PAGE_SIZE_POS)
23 #define SPIXFC_CONFIG_PAGE_SIZE_16_BYTES (0x2 << SPIXFC_CONFIG_PAGE_SIZE_POS)
24 #define SPIXFC_CONFIG_PAGE_SIZE_32_BYTES (0x3 << SPIXFC_CONFIG_PAGE_SIZE_POS)
25 
26 #define SPIXFC_FIFO_CTRL_TX_FIFO_CNT_POS 8
27 #define SPIXFC_FIFO_CTRL_TX_FIFO_CNT (0x1FUL << SPIXFC_FIFO_CTRL_TX_FIFO_CNT_POS)
28 
29 #define SPIXFC_FIFO_CTRL_RX_FIFO_CNT_POS 24
30 #define SPIXFC_FIFO_CTRL_RX_FIFO_CNT (0x3FUL << SPIXFC_FIFO_CTRL_RX_FIFO_CNT_POS)
31 
32 #define SPIXFC_FIFO_TX 0x400BC000
33 #define SPIXFC_FIFO_RX 0x400BC004
34 
35 #define SPIXFC_HEADER_TX 0x1
36 #define SPIXFC_HEADER_RX 0x2
37 #define SPIXFC_HEADER_BIT (0x0 << 2)
38 #define SPIXFC_HEADER_BYTE (0x1 << 2)
39 #define SPIXFC_HEADER_PAGE (0x2 << 2)
40 #define SPIXFC_HEADER_SIZE_POS 4
41 #define SPIXFC_HEADER_WIDTH_POS 9
42 #define SPIXFC_HEADER_SS_DEASS (0x1 << 13)
43 
44 #define SPI_WRITE_BOUNDARY 256
45 
46 #define SPIX_ALGO_STACK_SIZE 256U
47 
48 /*
49  * Shared host/loader working-area layout:
50  * [header | fifo payload ... | tail]
51  *
52  * header:
53  * write_ptr (ring write pointer)
54  * read_ptr (ring read pointer)
55  *
56  * tail:
57  * spi_write_cmd
58  * options
59  * stack (reserved downward-growing stack space for loader code)
60  */
61 
63  uint32_t write_ptr;
64  uint32_t read_ptr;
65 };
66 
68  uint32_t spi_write_cmd;
69  uint32_t options;
71 };
72 
73 #define SPIX_ALGO_HEADER_SIZE ((uint32_t)sizeof(struct max32xxx_qspi_algo_header))
74 #define SPIX_ALGO_TAIL_SIZE ((uint32_t)sizeof(struct max32xxx_qspi_algo_tail))
75 
76 #define SPIX_ALGO_WRITE_PTR_OFFSET ((uint32_t)offsetof(struct max32xxx_qspi_algo_header, write_ptr))
77 #define SPIX_ALGO_READ_PTR_OFFSET ((uint32_t)offsetof(struct max32xxx_qspi_algo_header, read_ptr))
78 
79 #define SPIX_ALGO_SPI_WRITE_CMD_OFFSET ((uint32_t)offsetof(struct max32xxx_qspi_algo_tail, spi_write_cmd))
80 #define SPIX_ALGO_OPTIONS_OFFSET ((uint32_t)offsetof(struct max32xxx_qspi_algo_tail, options))
81 
82 #endif /* OPENOCD_FLASH_NOR_MAX32XXX_QSPI_COMMON_DEFS_H */
#define SPIX_ALGO_STACK_SIZE
uint8_t stack[SPIX_ALGO_STACK_SIZE]