Skip to content

Commit 34bcb06

Browse files
authored
Merge pull request #1165 from tannewt/grandcentral
Initial Grand Central definition
2 parents 449756e + e29cbf6 commit 34bcb06

File tree

11 files changed

+271
-4
lines changed

11 files changed

+271
-4
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ env:
1414
- TRAVIS_BOARD=pca10056
1515
- TRAVIS_BOARD=trinket_m0
1616
- TRAVIS_BOARD=feather_m4_express
17+
- TRAVIS_BOARD=grandcentral_m4_express
1718
- TRAVIS_BOARD=feather_radiofruit_zigbee
1819
- TRAVIS_BOARD=arduino_zero
1920
- TRAVIS_BOARD=circuitplayground_express_crickit

main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,6 @@ void __attribute__ ((noinline)) run_boot_py(safe_mode_t safe_mode) {
325325
}
326326
#endif
327327

328-
stack_init();
329328
// TODO(tannewt): Allocate temporary space to hold custom usb descriptors.
330329
filesystem_flush();
331330
supervisor_allocation* heap = allocate_remaining_memory();
@@ -381,6 +380,8 @@ int __attribute__((used)) main(void) {
381380

382381
rgb_led_status_init();
383382

383+
stack_init();
384+
384385
// Create a new filesystem only if we're not in a safe mode.
385386
// A power brownout here could make it appear as if there's
386387
// no SPI flash filesystem, and we might erase the existing one.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* This file is part of the MicroPython project, http://micropython.org/
3+
*
4+
* The MIT License (MIT)
5+
*
6+
* Copyright (c) 2018 Scott Shawcroft for Adafruit Industries
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy
9+
* of this software and associated documentation files (the "Software"), to deal
10+
* in the Software without restriction, including without limitation the rights
11+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+
* copies of the Software, and to permit persons to whom the Software is
13+
* furnished to do so, subject to the following conditions:
14+
*
15+
* The above copyright notice and this permission notice shall be included in
16+
* all copies or substantial portions of the Software.
17+
*
18+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24+
* THE SOFTWARE.
25+
*/
26+
27+
#include "boards/board.h"
28+
#include "mpconfigboard.h"
29+
#include "hal/include/hal_gpio.h"
30+
31+
void board_init(void) {
32+
gpio_set_pin_function(MICROPY_HW_LED_TX, GPIO_PIN_FUNCTION_OFF);
33+
gpio_set_pin_direction(MICROPY_HW_LED_TX, GPIO_DIRECTION_OUT);
34+
gpio_set_pin_level(MICROPY_HW_LED_TX, true);
35+
36+
gpio_set_pin_function(MICROPY_HW_LED_RX, GPIO_PIN_FUNCTION_OFF);
37+
gpio_set_pin_direction(MICROPY_HW_LED_RX, GPIO_DIRECTION_OUT);
38+
gpio_set_pin_level(MICROPY_HW_LED_RX, true);
39+
}
40+
41+
bool board_requests_safe_mode(void) {
42+
return false;
43+
}
44+
45+
void reset_board(void) {
46+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#define MICROPY_HW_BOARD_NAME "Adafruit Grand Central M4 Express"
2+
#define MICROPY_HW_MCU_NAME "samd51p20"
3+
4+
#define CIRCUITPY_MCU_FAMILY samd51
5+
6+
// This is for Rev A which is green
7+
8+
#define MICROPY_HW_LED_TX PIN_PC30
9+
#define MICROPY_HW_LED_RX PIN_PC31
10+
11+
#define MICROPY_HW_NEOPIXEL (&pin_PC24)
12+
13+
// These are pins not to reset.
14+
// QSPI Data pins
15+
#define MICROPY_PORT_A ( PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11 )
16+
// QSPI CS, and QSPI SCK
17+
#define MICROPY_PORT_B ( PORT_PB10 | PORT_PB11 )
18+
// NeoPixel pin, RX LED, TX LED
19+
#define MICROPY_PORT_C ( PORT_PC24 | PORT_PC30 | PORT_PC31 )
20+
#define MICROPY_PORT_D (0)
21+
22+
#define AUTORESET_DELAY_MS 500
23+
24+
// If you change this, then make sure to update the linker scripts as well to
25+
// make sure you don't overwrite code
26+
#define CIRCUITPY_INTERNAL_NVM_SIZE 8192
27+
28+
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000 - CIRCUITPY_INTERNAL_NVM_SIZE)
29+
30+
#include "external_flash/devices.h"
31+
32+
#define EXTERNAL_FLASH_DEVICE_COUNT 1
33+
#define EXTERNAL_FLASH_DEVICES GD25Q64C
34+
35+
#include "external_flash/external_flash.h"
36+
37+
#define BOARD_HAS_CRYSTAL 1
38+
39+
#define DEFAULT_I2C_BUS_SCL (&pin_PB21)
40+
#define DEFAULT_I2C_BUS_SDA (&pin_PB20)
41+
42+
#define DEFAULT_SPI_BUS_SCK (&pin_PD09)
43+
#define DEFAULT_SPI_BUS_MOSI (&pin_PD08)
44+
#define DEFAULT_SPI_BUS_MISO (&pin_PD11)
45+
46+
#define DEFAULT_UART_BUS_RX (&pin_PB25)
47+
#define DEFAULT_UART_BUS_TX (&pin_PB24)
48+
49+
// USB is always used internally so skip the pin objects for it.
50+
#define IGNORE_PIN_PA24 1
51+
#define IGNORE_PIN_PA25 1
52+
53+
#define CIRCUITPY_I2CSLAVE
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
LD_FILE = boards/samd51x20-bootloader-external-flash.ld
2+
USB_VID = 0x239A
3+
USB_PID = 0x8032
4+
USB_PRODUCT = "Grand Central M4 Express"
5+
USB_MANUFACTURER = "Adafruit Industries LLC"
6+
7+
QSPI_FLASH_FILESYSTEM = 1
8+
LONGINT_IMPL = MPZ
9+
10+
CHIP_VARIANT = SAMD51P20A
11+
CHIP_FAMILY = samd51
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
#include "shared-bindings/board/__init__.h"
2+
3+
#include "board_busses.h"
4+
5+
// This mapping only includes functional names because pins broken
6+
// out on connectors are labeled with their MCU name available from
7+
// microcontroller.pin.
8+
STATIC const mp_map_elem_t board_global_dict_table[] = {
9+
{ MP_OBJ_NEW_QSTR(MP_QSTR_AREF), (mp_obj_t)&pin_PA03 },
10+
11+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), (mp_obj_t)&pin_PA02 },
12+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), (mp_obj_t)&pin_PA05 },
13+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), (mp_obj_t)&pin_PB03 },
14+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), (mp_obj_t)&pin_PC00 },
15+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), (mp_obj_t)&pin_PC01 },
16+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), (mp_obj_t)&pin_PC02 },
17+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A6), (mp_obj_t)&pin_PC03 },
18+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A7), (mp_obj_t)&pin_PB04 },
19+
20+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A8), (mp_obj_t)&pin_PB05 },
21+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A9), (mp_obj_t)&pin_PB06 },
22+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A10), (mp_obj_t)&pin_PB07 },
23+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A11), (mp_obj_t)&pin_PB08 },
24+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A12), (mp_obj_t)&pin_PB09 },
25+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A13), (mp_obj_t)&pin_PA04 },
26+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A14), (mp_obj_t)&pin_PA06 },
27+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A15), (mp_obj_t)&pin_PA07 },
28+
29+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), (mp_obj_t)&pin_PB25 },
30+
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), (mp_obj_t)&pin_PB25 },
31+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), (mp_obj_t)&pin_PB24 },
32+
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), (mp_obj_t)&pin_PB24 },
33+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), (mp_obj_t)&pin_PC18 },
34+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), (mp_obj_t)&pin_PC19 },
35+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), (mp_obj_t)&pin_PC20 },
36+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), (mp_obj_t)&pin_PC21 },
37+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), (mp_obj_t)&pin_PD20 },
38+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), (mp_obj_t)&pin_PD21 },
39+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D8), (mp_obj_t)&pin_PB18 },
40+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D9), (mp_obj_t)&pin_PB19 },
41+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D10), (mp_obj_t)&pin_PB22 },
42+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), (mp_obj_t)&pin_PB23 },
43+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), (mp_obj_t)&pin_PB00 },
44+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13), (mp_obj_t)&pin_PB01 },
45+
46+
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX3), (mp_obj_t)&pin_PB16 },
47+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D14), (mp_obj_t)&pin_PB16 },
48+
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX3), (mp_obj_t)&pin_PB17 },
49+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D15), (mp_obj_t)&pin_PB17 },
50+
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX2), (mp_obj_t)&pin_PC22 },
51+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D16), (mp_obj_t)&pin_PC22 },
52+
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX2), (mp_obj_t)&pin_PC23 },
53+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D17), (mp_obj_t)&pin_PC23 },
54+
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX1), (mp_obj_t)&pin_PB12 },
55+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D18), (mp_obj_t)&pin_PB12 },
56+
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX1), (mp_obj_t)&pin_PB13 },
57+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D19), (mp_obj_t)&pin_PB13 },
58+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D20), (mp_obj_t)&pin_PB20 },
59+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D21), (mp_obj_t)&pin_PB21 },
60+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), (mp_obj_t)&pin_PB20 },
61+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), (mp_obj_t)&pin_PB21 },
62+
63+
// Not connected but probably should be.
64+
//{ MP_OBJ_NEW_QSTR(MP_QSTR_D22), (mp_obj_t)&pin_PB01 },
65+
//{ MP_OBJ_NEW_QSTR(MP_QSTR_D23), (mp_obj_t)&pin_PB01 },
66+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D24), (mp_obj_t)&pin_PC17 },
67+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL1), (mp_obj_t)&pin_PC17 },
68+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D25), (mp_obj_t)&pin_PC16 },
69+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA1), (mp_obj_t)&pin_PC16 },
70+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D26), (mp_obj_t)&pin_PA12 },
71+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_DEN1), (mp_obj_t)&pin_PA12 },
72+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D27), (mp_obj_t)&pin_PA13 },
73+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_DEN2), (mp_obj_t)&pin_PA13 },
74+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D28), (mp_obj_t)&pin_PA14 },
75+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_CLK), (mp_obj_t)&pin_PA14 },
76+
// { MP_OBJ_NEW_QSTR(MP_QSTR_D29), (mp_obj_t)&pin_PB01 }, // TODO GCLK
77+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D30), (mp_obj_t)&pin_PA23 },
78+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D7), (mp_obj_t)&pin_PA23 },
79+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D31), (mp_obj_t)&pin_PA22 },
80+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D6), (mp_obj_t)&pin_PA22 },
81+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D32), (mp_obj_t)&pin_PA21 },
82+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D5), (mp_obj_t)&pin_PA21 },
83+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D33), (mp_obj_t)&pin_PA20 },
84+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D4), (mp_obj_t)&pin_PA20 },
85+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D34), (mp_obj_t)&pin_PA19 },
86+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D3), (mp_obj_t)&pin_PA19 },
87+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D35), (mp_obj_t)&pin_PA18 },
88+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D2), (mp_obj_t)&pin_PA18 },
89+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D36), (mp_obj_t)&pin_PA17 },
90+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D1), (mp_obj_t)&pin_PA17 },
91+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D37), (mp_obj_t)&pin_PA16 },
92+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D0), (mp_obj_t)&pin_PA16 },
93+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D38), (mp_obj_t)&pin_PB15 },
94+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D9), (mp_obj_t)&pin_PB15 },
95+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D39), (mp_obj_t)&pin_PB14 },
96+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D8), (mp_obj_t)&pin_PB14 },
97+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D40), (mp_obj_t)&pin_PC13 },
98+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D11), (mp_obj_t)&pin_PC13 },
99+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D41), (mp_obj_t)&pin_PC12 },
100+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D10), (mp_obj_t)&pin_PC12 },
101+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D42), (mp_obj_t)&pin_PC15 },
102+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D13), (mp_obj_t)&pin_PC15 },
103+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D43), (mp_obj_t)&pin_PC14 },
104+
{ MP_OBJ_NEW_QSTR(MP_QSTR_PCC_D12), (mp_obj_t)&pin_PC14 },
105+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D44), (mp_obj_t)&pin_PC11 },
106+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D45), (mp_obj_t)&pin_PC10 },
107+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D46), (mp_obj_t)&pin_PC06 },
108+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D47), (mp_obj_t)&pin_PC07 },
109+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D48), (mp_obj_t)&pin_PC04 },
110+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D49), (mp_obj_t)&pin_PC05 },
111+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D50), (mp_obj_t)&pin_PD11 },
112+
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO), (mp_obj_t)&pin_PD11 },
113+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D51), (mp_obj_t)&pin_PD08 },
114+
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), (mp_obj_t)&pin_PD08 },
115+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D52), (mp_obj_t)&pin_PD09 },
116+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK), (mp_obj_t)&pin_PD09 },
117+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D53), (mp_obj_t)&pin_PD10 },
118+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SS), (mp_obj_t)&pin_PD10 },
119+
120+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_MOSI), (mp_obj_t)&pin_PB26 },
121+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_SCK), (mp_obj_t)&pin_PB27 },
122+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_CS), (mp_obj_t)&pin_PB28 },
123+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_MISO), (mp_obj_t)&pin_PB29 },
124+
125+
{ MP_OBJ_NEW_QSTR(MP_QSTR_NEOPIXEL), (mp_obj_t)&pin_PC24 },
126+
127+
{ MP_OBJ_NEW_QSTR(MP_QSTR_LED_RX), (mp_obj_t)&pin_PC31 },
128+
{ MP_OBJ_NEW_QSTR(MP_QSTR_LED_TX), (mp_obj_t)&pin_PC30 },
129+
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
130+
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
131+
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
132+
};
133+
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

ports/atmel-samd/external_flash/common_commands.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#define CMD_READ_STATUS 0x05
3838
#define CMD_READ_STATUS2 0x35
3939
#define CMD_WRITE_STATUS_BYTE1 0x01
40+
#define CMD_WRITE_STATUS_BYTE2 0x31
4041
#define CMD_DUAL_READ 0x3b
4142
#define CMD_QUAD_READ 0x6b
4243
#define CMD_ENABLE_RESET 0x66

ports/atmel-samd/external_flash/devices.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ typedef struct {
5454
// Supports the quad input page program command 0x32. This is known as 1-1-4 because it only
5555
// uses all four lines for data.
5656
bool supports_qspi_writes: 1;
57+
58+
// Requires a separate command 0x31 to write to the second byte of the status register.
59+
// Otherwise two byte are written via 0x01.
60+
bool write_status_register_split: 1;
5761
} external_flash_device;
5862

5963
// Settings for the Adesto Tech AT25DF081A 1MiB SPI flash. Its on the SAMD21
@@ -71,6 +75,7 @@ typedef struct {
7175
.supports_qspi = false, \
7276
.has_quad_enable = false, \
7377
.supports_qspi_writes = false, \
78+
.write_status_register_split = false, \
7479
}
7580

7681
// Settings for the Gigadevice GD25Q16C 2MiB SPI flash.
@@ -87,6 +92,7 @@ typedef struct {
8792
.supports_qspi = true, \
8893
.has_quad_enable = true, \
8994
.supports_qspi_writes = true, \
95+
.write_status_register_split = false, \
9096
}
9197

9298
// Settings for the Gigadevice GD25Q64C 8MiB SPI flash.
@@ -103,6 +109,7 @@ typedef struct {
103109
.supports_qspi = true, \
104110
.has_quad_enable = true, \
105111
.supports_qspi_writes = true, \
112+
.write_status_register_split = true, \
106113
}
107114

108115
// Settings for the Cypress (was Spansion) S25FL064L 8MiB SPI flash.
@@ -119,6 +126,7 @@ typedef struct {
119126
.supports_qspi = true, \
120127
.has_quad_enable = true, \
121128
.supports_qspi_writes = true, \
129+
.write_status_register_split = false, \
122130
}
123131

124132
// Settings for the Cypress (was Spansion) S25FL116K 2MiB SPI flash.
@@ -135,6 +143,7 @@ typedef struct {
135143
.supports_qspi = true, \
136144
.has_quad_enable = true, \
137145
.supports_qspi_writes = false, \
146+
.write_status_register_split = false, \
138147
}
139148

140149
// Settings for the Cypress (was Spansion) S25FL216K 2MiB SPI flash.
@@ -151,6 +160,7 @@ typedef struct {
151160
.supports_qspi = false, \
152161
.has_quad_enable = false, \
153162
.supports_qspi_writes = false, \
163+
.write_status_register_split = false, \
154164
}
155165

156166
// Settings for the Winbond W25Q16FW 2MiB SPI flash.
@@ -167,6 +177,7 @@ typedef struct {
167177
.supports_qspi = true, \
168178
.has_quad_enable = true, \
169179
.supports_qspi_writes = true, \
180+
.write_status_register_split = false, \
170181
}
171182

172183
// Settings for the Winbond W25Q16JV 2MiB SPI flash.
@@ -183,6 +194,7 @@ typedef struct {
183194
.supports_qspi = true, \
184195
.has_quad_enable = true, \
185196
.supports_qspi_writes = true, \
197+
.write_status_register_split = false, \
186198
}
187199

188200
// Settings for the Winbond W25Q32BV 4MiB SPI flash.
@@ -199,6 +211,7 @@ typedef struct {
199211
.supports_qspi = true, \
200212
.has_quad_enable = true, \
201213
.supports_qspi_writes = false, \
214+
.write_status_register_split = false, \
202215
}
203216

204217
// Settings for the Winbond W25Q64JV-IM 8MiB SPI flash. Note that JV-IQ has a different .memory_type (0x40)
@@ -215,6 +228,7 @@ typedef struct {
215228
.supports_qspi = true, \
216229
.has_quad_enable = true, \
217230
.supports_qspi_writes = true, \
231+
.write_status_register_split = false, \
218232
}
219233

220234
// Settings for the Winbond W25Q64JV-IQ 8MiB SPI flash. Note that JV-IM has a different .memory_type (0x70)
@@ -231,6 +245,7 @@ typedef struct {
231245
.supports_qspi = true, \
232246
.has_quad_enable = true, \
233247
.supports_qspi_writes = true, \
248+
.write_status_register_split = false, \
234249
}
235250

236251
// Settings for the Winbond W25Q80DL 1MiB SPI flash.
@@ -247,6 +262,7 @@ typedef struct {
247262
.supports_qspi = true, \
248263
.has_quad_enable = true, \
249264
.supports_qspi_writes = false, \
265+
.write_status_register_split = false, \
250266
}
251267

252268

0 commit comments

Comments
 (0)