forked from micropython/micropython
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
add(board): add Pimoroni Explorer RP2350 (PIM720) #10778
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
tyeth
wants to merge
1
commit into
adafruit:main
Choose a base branch
from
tyeth:pimoroni-explorer-pim720
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,145 @@ | ||
| // This file is part of the CircuitPython project: https://circuitpython.org | ||
| // | ||
| // SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries | ||
| // | ||
| // SPDX-License-Identifier: MIT | ||
|
|
||
| #include "supervisor/board.h" | ||
| #include "mpconfigboard.h" | ||
| #include "shared-bindings/microcontroller/Pin.h" | ||
| #include "shared-bindings/paralleldisplaybus/ParallelBus.h" | ||
| #include "shared-module/displayio/__init__.h" | ||
| #include "shared-module/displayio/mipi_constants.h" | ||
| #include "hardware/gpio.h" | ||
|
|
||
| // Display pins from Pimoroni Explorer parallel bus: {cs=27, dc=28, wr=30, rd=31, d0=32, bl=26} | ||
| #define LCD_BACKLIGHT_PIN 26 | ||
| #define LCD_CS_PIN 27 | ||
| #define LCD_DC_PIN 28 | ||
| #define LCD_WR_PIN 30 | ||
| #define LCD_RD_PIN 31 | ||
| #define LCD_D0_PIN 32 // Data pins are GPIO32-39 (8 consecutive pins) | ||
|
|
||
| #define DELAY 0x80 | ||
|
|
||
| // ST7789V display init sequence for 320x240 parallel bus | ||
| // Based on Pimoroni's pimoroni-pico ST7789 driver configuration | ||
| uint8_t display_init_sequence[] = { | ||
| // Software reset | ||
| 0x01, 0 | DELAY, 150, | ||
| // Sleep out | ||
| 0x11, 0 | DELAY, 255, | ||
| // Tearing effect line on (frame sync) | ||
| 0x35, 1, 0x00, | ||
| // COLMOD: 16-bit color (5-6-5 RGB) | ||
| 0x3A, 1, 0x55, | ||
| // Porch control (PORCTRL) | ||
| 0xB2, 5, 0x0C, 0x0C, 0x00, 0x33, 0x33, | ||
| // Gate control (GCTRL) - VGH=13.26V, VGL=-10.43V | ||
| 0xB7, 1, 0x35, | ||
| // VCOM setting (VCOMS) | ||
| 0xBB, 1, 0x1F, | ||
| // LCM control (LCMCTRL) | ||
| 0xC0, 1, 0x2C, | ||
| // VDV and VRH command enable (VDVVRHEN) | ||
| 0xC2, 1, 0x01, | ||
| // VRH set (VRHS) | ||
| 0xC3, 1, 0x12, | ||
| // VDV set (VDVS) | ||
| 0xC4, 1, 0x20, | ||
| // Frame rate control (FRCTRL2) | ||
| 0xC6, 1, 0x0F, | ||
| // Power control 1 (PWCTRL1) | ||
| 0xD0, 2, 0xA4, 0xA1, | ||
| // RAM control (RAMCTRL) - for proper endianness | ||
| 0xB0, 2, 0x00, 0xC0, | ||
| // Positive gamma correction | ||
| 0xE0, 14, 0xD0, 0x08, 0x11, 0x08, 0x0C, 0x15, 0x39, 0x33, 0x50, 0x36, 0x13, 0x14, 0x29, 0x2D, | ||
| // Negative gamma correction | ||
| 0xE1, 14, 0xD0, 0x08, 0x10, 0x08, 0x06, 0x06, 0x39, 0x44, 0x51, 0x0B, 0x16, 0x14, 0x2F, 0x31, | ||
| // Inversion on | ||
| 0x21, 0, | ||
| // Normal display mode on | ||
| 0x13, 0 | DELAY, 10, | ||
| // MADCTL: MX=0, MY=1, MV=1, ML=1 (COL_ORDER | SWAP_XY | SCAN_ORDER) = 0x70 | ||
| // This configures the 320x240 display in landscape orientation | ||
| 0x36, 1, 0x70, | ||
| // Display on | ||
| 0x29, 0 | DELAY, 100, | ||
| }; | ||
|
|
||
| static void display_init(void) { | ||
| paralleldisplaybus_parallelbus_obj_t *bus = &allocate_display_bus()->parallel_bus; | ||
| bus->base.type = ¶lleldisplaybus_parallelbus_type; | ||
|
|
||
| common_hal_paralleldisplaybus_parallelbus_construct(bus, | ||
| &pin_GPIO32, // Data0 (D0) - data pins are sequential GPIO32-39 | ||
| &pin_GPIO28, // Command/Data (DC) | ||
| &pin_GPIO27, // Chip select (CS) | ||
| &pin_GPIO30, // Write (WR) | ||
| &pin_GPIO31, // Read (RD) | ||
| NULL, // Reset (directly connected to board reset) | ||
| 15000000); // Frequency - ST7789 min clock cycle ~66ns = ~15MHz | ||
|
|
||
| busdisplay_busdisplay_obj_t *display = &allocate_display()->display; | ||
| display->base.type = &busdisplay_busdisplay_type; | ||
|
|
||
| common_hal_busdisplay_busdisplay_construct(display, | ||
| bus, | ||
| 320, // Width | ||
| 240, // Height | ||
| 0, // column start | ||
| 0, // row start | ||
| 0, // rotation | ||
| 16, // Color depth | ||
| false, // grayscale | ||
| false, // pixels_in_byte_share_row | ||
| 1, // bytes per cell | ||
| false, // reverse_pixels_in_byte | ||
| true, // reverse_pixels_in_word | ||
| MIPI_COMMAND_SET_COLUMN_ADDRESS, // set column command | ||
| MIPI_COMMAND_SET_PAGE_ADDRESS, // set row command | ||
| MIPI_COMMAND_WRITE_MEMORY_START, // write memory command | ||
| display_init_sequence, | ||
| sizeof(display_init_sequence), | ||
| &pin_GPIO26, // Backlight pin (BL) | ||
| NO_BRIGHTNESS_COMMAND, | ||
| 1.0f, // brightness | ||
| false, // single_byte_bounds | ||
| false, // data_as_commands | ||
| true, // auto_refresh | ||
| 60, // native_frames_per_second | ||
| true, // backlight_on_high | ||
| false, // SH1107_addressing | ||
| 50000 // backlight pwm frequency | ||
| ); | ||
| } | ||
|
|
||
| void board_init(void) { | ||
| // Ensure backlight is on before display init | ||
| board_reset_pin_number(LCD_BACKLIGHT_PIN); | ||
| display_init(); | ||
| } | ||
|
|
||
| // Prevent the backlight pin from being reset, keeping display visible across soft resets | ||
| bool board_reset_pin_number(uint8_t pin_number) { | ||
| if (pin_number == LCD_BACKLIGHT_PIN) { | ||
| // Keep backlight on - set high output without glitching | ||
| gpio_put(pin_number, 1); | ||
| gpio_set_dir(pin_number, GPIO_OUT); | ||
| gpio_set_function(pin_number, GPIO_FUNC_SIO); | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
|
|
||
| void reset_board(void) { | ||
| // Keep backlight on during reset | ||
| board_reset_pin_number(LCD_BACKLIGHT_PIN); | ||
| } | ||
|
|
||
| void board_deinit(void) { | ||
| // Backlight will be handled by board_reset_pin_number | ||
| } | ||
|
|
||
| // Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. |
18 changes: 18 additions & 0 deletions
18
ports/raspberrypi/boards/pimoroni_explorer2350/mpconfigboard.h
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| // This file is part of the CircuitPython project: https://circuitpython.org | ||
| // | ||
| // SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries | ||
| // | ||
| // SPDX-License-Identifier: MIT | ||
|
|
||
| #pragma once | ||
|
|
||
| #define MICROPY_HW_BOARD_NAME "Pimoroni Explorer" | ||
| #define MICROPY_HW_MCU_NAME "rp2350b" | ||
|
|
||
| #define MICROPY_HW_LED_STATUS (&pin_GPIO25) | ||
|
|
||
| #define CIRCUITPY_BOARD_I2C (1) | ||
| #define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO21, .sda = &pin_GPIO20}} | ||
|
|
||
| #define DEFAULT_UART_BUS_RX (&pin_GPIO1) | ||
| #define DEFAULT_UART_BUS_TX (&pin_GPIO0) |
12 changes: 12 additions & 0 deletions
12
ports/raspberrypi/boards/pimoroni_explorer2350/mpconfigboard.mk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| USB_VID = 0x2E8A | ||
| USB_PID = 0x10C0 | ||
| USB_PRODUCT = "Explorer" | ||
| USB_MANUFACTURER = "Pimoroni" | ||
|
|
||
| CHIP_VARIANT = RP2350 | ||
| CHIP_PACKAGE = B | ||
| CHIP_FAMILY = rp2 | ||
|
|
||
| EXTERNAL_FLASH_DEVICES = "W25Q128JVxQ" | ||
|
|
||
| CIRCUITPY__EVE = 1 |
7 changes: 7 additions & 0 deletions
7
ports/raspberrypi/boards/pimoroni_explorer2350/pico-sdk-configboard.h
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| // This file is part of the CircuitPython project: https://circuitpython.org | ||
| // | ||
| // SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries | ||
| // | ||
| // SPDX-License-Identifier: MIT | ||
|
|
||
| // Put board-specific pico-sdk definitions here. This file must exist. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,124 @@ | ||
| // This file is part of the CircuitPython project: https://circuitpython.org | ||
| // | ||
| // SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries | ||
| // | ||
| // SPDX-License-Identifier: MIT | ||
|
|
||
| #include "shared-bindings/board/__init__.h" | ||
| #include "shared-module/displayio/__init__.h" | ||
|
|
||
| static const mp_rom_map_elem_t board_module_globals_table[] = { | ||
| CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS | ||
|
|
||
| // User GPIOs (accent connector) | ||
| { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, | ||
| { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) }, | ||
|
|
||
| // Servo pins | ||
| { MP_ROM_QSTR(MP_QSTR_SERVO1), MP_ROM_PTR(&pin_GPIO9) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SERVO2), MP_ROM_PTR(&pin_GPIO8) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SERVO3), MP_ROM_PTR(&pin_GPIO7) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SERVO4), MP_ROM_PTR(&pin_GPIO6) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP6), MP_ROM_PTR(&pin_GPIO6) }, | ||
|
|
||
| // Audio | ||
| { MP_ROM_QSTR(MP_QSTR_AUDIO), MP_ROM_PTR(&pin_GPIO12) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) }, | ||
| { MP_ROM_QSTR(MP_QSTR_AMP_EN), MP_ROM_PTR(&pin_GPIO13) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) }, | ||
|
|
||
| // Buttons | ||
| { MP_ROM_QSTR(MP_QSTR_SW_C), MP_ROM_PTR(&pin_GPIO14) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SW_B), MP_ROM_PTR(&pin_GPIO15) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SW_A), MP_ROM_PTR(&pin_GPIO16) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SW_X), MP_ROM_PTR(&pin_GPIO17) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SW_Y), MP_ROM_PTR(&pin_GPIO18) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SW_Z), MP_ROM_PTR(&pin_GPIO19) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) }, | ||
|
|
||
| // I2C | ||
| { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO20) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) }, | ||
| { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO21) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP21), MP_ROM_PTR(&pin_GPIO21) }, | ||
|
|
||
| // User button | ||
| { MP_ROM_QSTR(MP_QSTR_SW_USER), MP_ROM_PTR(&pin_GPIO22) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, | ||
|
|
||
| // LED? | ||
| { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO25) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP25), MP_ROM_PTR(&pin_GPIO25) }, | ||
|
|
||
| // Display parallel bus pins (ST7789V 320x240) | ||
| // Pins from Pimoroni: {cs=27, dc=28, wr=30, rd=31, d0=32, bl=26} | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_BL), MP_ROM_PTR(&pin_GPIO26) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_GPIO27) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_DC), MP_ROM_PTR(&pin_GPIO28) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_WR), MP_ROM_PTR(&pin_GPIO30) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP30), MP_ROM_PTR(&pin_GPIO30) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_RD), MP_ROM_PTR(&pin_GPIO31) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP31), MP_ROM_PTR(&pin_GPIO31) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_D0), MP_ROM_PTR(&pin_GPIO32) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP32), MP_ROM_PTR(&pin_GPIO32) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_D1), MP_ROM_PTR(&pin_GPIO33) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP33), MP_ROM_PTR(&pin_GPIO33) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_D2), MP_ROM_PTR(&pin_GPIO34) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP34), MP_ROM_PTR(&pin_GPIO34) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_D3), MP_ROM_PTR(&pin_GPIO35) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP35), MP_ROM_PTR(&pin_GPIO35) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_D4), MP_ROM_PTR(&pin_GPIO36) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP36), MP_ROM_PTR(&pin_GPIO36) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_D5), MP_ROM_PTR(&pin_GPIO37) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP37), MP_ROM_PTR(&pin_GPIO37) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_D6), MP_ROM_PTR(&pin_GPIO38) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP38), MP_ROM_PTR(&pin_GPIO38) }, | ||
| { MP_ROM_QSTR(MP_QSTR_LCD_D7), MP_ROM_PTR(&pin_GPIO39) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP39), MP_ROM_PTR(&pin_GPIO39) }, | ||
|
|
||
| // ADC pins (RP2350B extended GPIOs) | ||
| { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO40) }, | ||
| { MP_ROM_QSTR(MP_QSTR_ADC0), MP_ROM_PTR(&pin_GPIO40) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP40), MP_ROM_PTR(&pin_GPIO40) }, | ||
| { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO41) }, | ||
| { MP_ROM_QSTR(MP_QSTR_ADC1), MP_ROM_PTR(&pin_GPIO41) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP41), MP_ROM_PTR(&pin_GPIO41) }, | ||
| { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO42) }, | ||
| { MP_ROM_QSTR(MP_QSTR_ADC2), MP_ROM_PTR(&pin_GPIO42) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP42), MP_ROM_PTR(&pin_GPIO42) }, | ||
| { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO43) }, | ||
| { MP_ROM_QSTR(MP_QSTR_ADC3), MP_ROM_PTR(&pin_GPIO43) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP43), MP_ROM_PTR(&pin_GPIO43) }, | ||
| { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO44) }, | ||
| { MP_ROM_QSTR(MP_QSTR_ADC4), MP_ROM_PTR(&pin_GPIO44) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP44), MP_ROM_PTR(&pin_GPIO44) }, | ||
| { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO45) }, | ||
| { MP_ROM_QSTR(MP_QSTR_ADC5), MP_ROM_PTR(&pin_GPIO45) }, | ||
| { MP_ROM_QSTR(MP_QSTR_GP45), MP_ROM_PTR(&pin_GPIO45) }, | ||
|
|
||
| // I2C object | ||
| { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, | ||
| { MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj) }, | ||
|
|
||
| // Display object | ||
| { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display) }, | ||
| }; | ||
| MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.