From adb0dce457194b93f78685c43c063a177a54c3e4 Mon Sep 17 00:00:00 2001 From: Maxime Mauduit Date: Mon, 29 Jul 2024 11:39:14 +0200 Subject: [PATCH 01/10] test --- ports/espressif/boards/elio_eliobot/board.c | 9 ++ .../boards/elio_eliobot/mpconfigboard.h | 24 +++ .../boards/elio_eliobot/mpconfigboard.mk | 22 +++ .../elio_eliobot/partitions-4MB-no-ota.csv | 10 ++ ports/espressif/boards/elio_eliobot/pins.c | 147 ++++++++++++++++++ ports/espressif/boards/elio_eliobot/sdkconfig | 24 +++ 6 files changed, 236 insertions(+) create mode 100644 ports/espressif/boards/elio_eliobot/board.c create mode 100644 ports/espressif/boards/elio_eliobot/mpconfigboard.h create mode 100644 ports/espressif/boards/elio_eliobot/mpconfigboard.mk create mode 100644 ports/espressif/boards/elio_eliobot/partitions-4MB-no-ota.csv create mode 100644 ports/espressif/boards/elio_eliobot/pins.c create mode 100644 ports/espressif/boards/elio_eliobot/sdkconfig diff --git a/ports/espressif/boards/elio_eliobot/board.c b/ports/espressif/boards/elio_eliobot/board.c new file mode 100644 index 0000000000000..a3a9eec047145 --- /dev/null +++ b/ports/espressif/boards/elio_eliobot/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/elio_eliobot/mpconfigboard.h b/ports/espressif/boards/elio_eliobot/mpconfigboard.h new file mode 100644 index 0000000000000..7c940cc08a36b --- /dev/null +++ b/ports/espressif/boards/elio_eliobot/mpconfigboard.h @@ -0,0 +1,24 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "Eliobot V1" +#define MICROPY_HW_MCU_NAME "ESP32S2" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO1) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO9) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO30) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO32) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO31) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO44) +#define DEFAULT_UART_BUS_TX (&pin_GPIO43) diff --git a/ports/espressif/boards/elio_eliobot/mpconfigboard.mk b/ports/espressif/boards/elio_eliobot/mpconfigboard.mk new file mode 100644 index 0000000000000..074c06f70dcfa --- /dev/null +++ b/ports/espressif/boards/elio_eliobot/mpconfigboard.mk @@ -0,0 +1,22 @@ +USB_VID = 0x303A +USB_PID = 0x8002 +USB_PRODUCT = "Eliobot" +USB_MANUFACTURER = "Elio" + +IDF_TARGET = esp32s2 + +CIRCUITPY_ESP_FLASH_SIZE = 4MB +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m + +CIRCUITPY_ESP_PSRAM_SIZE = 2MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY_BITBANG_NEOPIXEL = 1 + +CIRCUITPY_STAGE = 1 + +# Include these Python libraries in firmware. +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HTTPServer diff --git a/ports/espressif/boards/elio_eliobot/partitions-4MB-no-ota.csv b/ports/espressif/boards/elio_eliobot/partitions-4MB-no-ota.csv new file mode 100644 index 0000000000000..ab7fa8669d05a --- /dev/null +++ b/ports/espressif/boards/elio_eliobot/partitions-4MB-no-ota.csv @@ -0,0 +1,10 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +# bootloader.bin,, 0x1000, 32K +# partition table, 0x8000, 4K + +nvs, data, nvs, 0x9000, 20K, +otadata, data, ota, 0xe000, 8K, +ota_0, app, ota_0, 0x10000, 2816K, +uf2, app, factory,0x2d0000, 256K, +ffat, data, fat, 0x310000, 960K, diff --git a/ports/espressif/boards/elio_eliobot/pins.c b/ports/espressif/boards/elio_eliobot/pins.c new file mode 100644 index 0000000000000..a406630290572 --- /dev/null +++ b/ports/espressif/boards/elio_eliobot/pins.c @@ -0,0 +1,147 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO0) }, + + // GPIO1 : NEOPIXEL + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + + // GPIO3 : BATTERY SENSE + { MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_VBAT), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_VBAT_SENSE), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_GPIO3) }, + + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO4) }, + + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO5) }, + + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO6) }, + + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO7) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO8) }, + + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO9) }, + + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO14) }, + + // GPIO15 : XTAL_32K_P + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + + // GPIO16 : XTAL_32K_P + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_GPIO17) }, + + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_DAC2), MP_ROM_PTR(&pin_GPIO18) }, + + // GPIO19 : USB_D- + // GPIO20 : USB_D+ + + // 5V present sense pin + { MP_ROM_QSTR(MP_QSTR_VBUS), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_VBUS_SENSE), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_IO26), MP_ROM_PTR(&pin_GPIO26) }, + + { MP_ROM_QSTR(MP_QSTR_IO27), MP_ROM_PTR(&pin_GPIO27) }, + + { MP_ROM_QSTR(MP_QSTR_IO28), MP_ROM_PTR(&pin_GPIO28) }, + + { MP_ROM_QSTR(MP_QSTR_IO29), MP_ROM_PTR(&pin_GPIO29) }, + + { MP_ROM_QSTR(MP_QSTR_IO30), MP_ROM_PTR(&pin_GPIO30) }, + + { MP_ROM_QSTR(MP_QSTR_IO31), MP_ROM_PTR(&pin_GPIO31) }, + + { MP_ROM_QSTR(MP_QSTR_IO32), MP_ROM_PTR(&pin_GPIO32) }, + + { MP_ROM_QSTR(MP_QSTR_IO33), MP_ROM_PTR(&pin_GPIO33) }, + { MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO33) }, + + { MP_ROM_QSTR(MP_QSTR_IO34), MP_ROM_PTR(&pin_GPIO34) }, + + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_SDO), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO35) }, + + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_SDI), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO36) }, + + { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO37) }, + + { MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO38) }, + + { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) }, + + { MP_ROM_QSTR(MP_QSTR_IO40), MP_ROM_PTR(&pin_GPIO40) }, + + { MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) }, + + { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + + { MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) }, + + { MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) }, + + { MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) }, + + { MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) }, + + + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/elio_eliobot/sdkconfig b/ports/espressif/boards/elio_eliobot/sdkconfig new file mode 100644 index 0000000000000..9e8bcdce55ab7 --- /dev/null +++ b/ports/espressif/boards/elio_eliobot/sdkconfig @@ -0,0 +1,24 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config + +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y + +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" + +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="esp-idf-config/partitions-4MB-no-ota.csv" +CONFIG_PARTITION_TABLE_FILENAME="esp-idf-config/partitions-4MB-no-ota.csv" + + +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="EliobotV1" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration From f18d1f53577f44baa39880a0adc6773c405b570f Mon Sep 17 00:00:00 2001 From: Maxime Mauduit Date: Wed, 31 Jul 2024 16:22:55 +0200 Subject: [PATCH 02/10] htb --- ports/espressif/boards/elio_eliobot/mpconfigboard.h | 1 + .../boards/elio_eliobot/partitions-4MB-no-ota.csv | 10 ---------- ports/espressif/boards/elio_eliobot/pins.c | 1 + 3 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 ports/espressif/boards/elio_eliobot/partitions-4MB-no-ota.csv diff --git a/ports/espressif/boards/elio_eliobot/mpconfigboard.h b/ports/espressif/boards/elio_eliobot/mpconfigboard.h index 7c940cc08a36b..d958f5a764f2b 100644 --- a/ports/espressif/boards/elio_eliobot/mpconfigboard.h +++ b/ports/espressif/boards/elio_eliobot/mpconfigboard.h @@ -10,6 +10,7 @@ #define MICROPY_HW_BOARD_NAME "Eliobot V1" #define MICROPY_HW_MCU_NAME "ESP32S2" +#define CIRCUITPY_DRIVE_LABEL "ELIOBOT" #define MICROPY_HW_NEOPIXEL (&pin_GPIO1) diff --git a/ports/espressif/boards/elio_eliobot/partitions-4MB-no-ota.csv b/ports/espressif/boards/elio_eliobot/partitions-4MB-no-ota.csv deleted file mode 100644 index ab7fa8669d05a..0000000000000 --- a/ports/espressif/boards/elio_eliobot/partitions-4MB-no-ota.csv +++ /dev/null @@ -1,10 +0,0 @@ -# ESP-IDF Partition Table -# Name, Type, SubType, Offset, Size, Flags -# bootloader.bin,, 0x1000, 32K -# partition table, 0x8000, 4K - -nvs, data, nvs, 0x9000, 20K, -otadata, data, ota, 0xe000, 8K, -ota_0, app, ota_0, 0x10000, 2816K, -uf2, app, factory,0x2d0000, 256K, -ffat, data, fat, 0x310000, 960K, diff --git a/ports/espressif/boards/elio_eliobot/pins.c b/ports/espressif/boards/elio_eliobot/pins.c index a406630290572..9163a17e3ac95 100644 --- a/ports/espressif/boards/elio_eliobot/pins.c +++ b/ports/espressif/boards/elio_eliobot/pins.c @@ -30,6 +30,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO6) }, From 50f1014b28bd57ea9b8d55bb9643d9eddc0ba885 Mon Sep 17 00:00:00 2001 From: Maxime Mauduit Date: Wed, 31 Jul 2024 16:33:25 +0200 Subject: [PATCH 03/10] htb --- HOW-TO-BUILD.md | 117 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 HOW-TO-BUILD.md diff --git a/HOW-TO-BUILD.md b/HOW-TO-BUILD.md new file mode 100644 index 0000000000000..909c001af32ed --- /dev/null +++ b/HOW-TO-BUILD.md @@ -0,0 +1,117 @@ +# Build CircuitPython for Eliobot + +1. Read the [CircuitPython BUILDING.md](BUILDING.md) guide and follow the instructions to build CircuitPython. + +2. before the "make BOARD" step of the build process, go to "ports/espressif/esp-idf/" and run : + +```bash +./install.sh +``` + +after the installation, run : + +```bash +. ./export.sh +``` + +(this step is needed every time you open a new terminal session) + +3. go back to "ports/espressif/" and run : + +```bash +make BOARD=elio_eliobot +``` + +if the build fails, you may need to run : + +```bash +pip3 install minify_html jsmin +``` + +if the build fails again, it might be because of the PATH variable of the esp-idf tools, +you can try to find the path that is missing and add it to the PATH variable of your system. + +To make a clean build, you need to create a git tag and push it to the repository : + +```bash +git tag -a +git push origin +``` + +example : + +```bash +git tag -a 9.1.2 +git push origin 9.1.2 +``` + +# elio_eliobot specific files + +## board.c + +- Purpose: +This file typically contains board-specific initialization code. It includes definitions for hardware setup, initialization routines for various peripherals (like GPIOs, UARTs, etc.), and board-specific configurations. This is where you'd set up things that are unique to the specific board your firmware will run on. + +No modifications have been made to this file. + +## mpconfigboard.h + +Purpose: This header file contains macro definitions for microcontroller configurations specific to the board. +These include settings like the CPU frequency, available memory, and specific hardware feature enablement. + +In this file, the following changes have been made: + +We defined the following macros: + +- MICROPY_HW_BOARD_NAME: This macro defines the name of the board. +- MICROPY_HW_MCU_NAME: This macro defines the name of the microcontroller. +- CIRCUITPY_DRIVE_LABEL: This macro defines the name of the drive that will be used to store files on the board. +- MICROPY_HW_NEOPIXEL: This macro defines the pin number of the neopixel LED on the board. +- DEFAULT_I2C_BUS_SCL/SDA: This macro defines the pin number of the I2C bus on the board. +- DEFAULT_SPI_BUS_SCK/MISO/MOSI: This macro defines the pin numbers of the SPI bus on the board. +- DEFAULT_UART_BUS_RX/TX: This macro defines the pin numbers of the UART bus on the board. + +## mpconfigboard.mk + +Purpose: This makefile is typically used for setting up board-specific flags and variables for the build process. It might set options that affect how the firmware is compiled and linked, such as compiler flags, source file locations, and definitions specific to the board. This helps in creating a firmware build that is optimized for your hardware. + +In this file, the following changes have been made: + +- USB_VID: This variable defines the USB vendor ID for the board. +- USB_PID: This variable defines the USB product ID for the board. +- USB_PRODUCT: This variable defines the USB product name for +the board. +- USB_MANUFACTURER: This variable defines the USB manufacturer name for the board. + +- IDF_TARGET: This variable defines the target chip for the ESP-IDF build system. + +- CIRCUITPY_ESP_FLASH_SIZE/MODE/FREQ: These variables define the flash size, mode, and frequency for the ESP32 chip. + +- CIRCUITPY_ESP_PSRAM_SIZE/MODE/FREQ: These variables define the PSRAM size, mode, and frequency for the ESP32 chip. + +- CIRCUITPY_BITBANG_NEOPIXEL: This variable defines whether the neopixel LED is controlled using bit-banging. + +- CIRCUITPY_STAGE: This variable defines the stage of the build process. + +- FROZEN_MPY_DIRS: These variables define the directories containing the frozen libraries to be included in the firmware. + +## pins.c + +Purpose: This file defines the pin layout for the microcontroller, mapping pin names to physical hardware pins. + +## sdkconfig + +Purpose: This file contains the configuration settings for the ESP-IDF build system. It defines various options related to the build process, such as compiler flags, feature enablement, and other build configurations. + +In this file, the following changes have been made: + +- CONFIG_ESPTOOLPY_FLASHSIZE_4MB: This option says that the flash size is 4MB. +- CONFIG_ESPTOOLPY_FLASHSIZE: This option sets the flash size to 4MB. + +- CONFIG_PARTITION_TABLE_CUSTOM_FILENAME: This option specifies the custom partition table filename. +- CONFIG_PARTITION_TABLE_FILENAME: This option specifies the partition table filename. + +- CONFIG_LWIP_LOCAL_HOSTNAME: This option sets the local hostname for the device. + +In this file we use a custom partition table because it left us some space for more frozen modules. + From 6dec534921a7c61e3071e8f501716e01875830b7 Mon Sep 17 00:00:00 2001 From: Maxime Mauduit Date: Thu, 1 Aug 2024 11:19:19 +0200 Subject: [PATCH 04/10] add frozen lib for ir remote and boot.py to flash in repl --- .gitmodules | 3 +++ Adafruit_CircuitPython_IRRemote | 1 + HOW-TO-BUILD.md | 12 +++++++++++- ports/espressif/boards/elio_eliobot/mpconfigboard.mk | 1 + supervisor/shared/filesystem.c | 2 +- 5 files changed, 17 insertions(+), 2 deletions(-) create mode 160000 Adafruit_CircuitPython_IRRemote diff --git a/.gitmodules b/.gitmodules index 1c523aa76d535..140cd0b20d4d4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -395,3 +395,6 @@ [submodule "frozen/Adafruit_CircuitPython_LED_Animation"] path = frozen/Adafruit_CircuitPython_LED_Animation url = https://github.com/adafruit/Adafruit_CircuitPython_LED_Animation +[submodule "Adafruit_CircuitPython_IRRemote"] + path = Adafruit_CircuitPython_IRRemote + url = https://github.com/adafruit/Adafruit_CircuitPython_IRRemote diff --git a/Adafruit_CircuitPython_IRRemote b/Adafruit_CircuitPython_IRRemote new file mode 160000 index 0000000000000..c4daaa7521a49 --- /dev/null +++ b/Adafruit_CircuitPython_IRRemote @@ -0,0 +1 @@ +Subproject commit c4daaa7521a491f7045cf10007764e95e4e2c265 diff --git a/HOW-TO-BUILD.md b/HOW-TO-BUILD.md index 909c001af32ed..9886898eb2b3f 100644 --- a/HOW-TO-BUILD.md +++ b/HOW-TO-BUILD.md @@ -106,7 +106,7 @@ Purpose: This file contains the configuration settings for the ESP-IDF build sys In this file, the following changes have been made: - CONFIG_ESPTOOLPY_FLASHSIZE_4MB: This option says that the flash size is 4MB. -- CONFIG_ESPTOOLPY_FLASHSIZE: This option sets the flash size to 4MB. +- CONFIG_ESPTOOLPY_FLASHSIZE: This option sets the flashsize to 4MB. - CONFIG_PARTITION_TABLE_CUSTOM_FILENAME: This option specifies the custom partition table filename. - CONFIG_PARTITION_TABLE_FILENAME: This option specifies the partition table filename. @@ -115,3 +115,13 @@ In this file, the following changes have been made: In this file we use a custom partition table because it left us some space for more frozen modules. + +# How to flash with repl ON + +go to supervisor/filesystem.c and change the line 137 that create the code.py file to : + +```c + MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/boot.py", "import board\nimport storage\n\n# Attribution de l'ecriture : True = Mass Storage, False = REPL\nstorage.remount(\"/\", False)\n"); +``` + +it will create a boot.py file that will remount the filesystem in REPL mode when the board is powered on. \ No newline at end of file diff --git a/ports/espressif/boards/elio_eliobot/mpconfigboard.mk b/ports/espressif/boards/elio_eliobot/mpconfigboard.mk index 074c06f70dcfa..3605fbb6fc3d1 100644 --- a/ports/espressif/boards/elio_eliobot/mpconfigboard.mk +++ b/ports/espressif/boards/elio_eliobot/mpconfigboard.mk @@ -20,3 +20,4 @@ CIRCUITPY_STAGE = 1 # Include these Python libraries in firmware. FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HTTPServer +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IRRemote diff --git a/supervisor/shared/filesystem.c b/supervisor/shared/filesystem.c index e5edb148e4145..994d4c29ad0ea 100644 --- a/supervisor/shared/filesystem.c +++ b/supervisor/shared/filesystem.c @@ -134,7 +134,7 @@ bool filesystem_init(bool create_allowed, bool force_create) { make_empty_file(&vfs_fat->fatfs, "/settings.toml"); #endif // make a sample code.py file - MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/code.py", "print(\"Hello World!\")\n"); + MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/boot.py", "import board\nimport storage\n\n# Attribution de l'ecriture : True = Mass Storage, False = REPL\nstorage.remount(\"/\", False)\n"); // create empty lib directory res = f_mkdir(&vfs_fat->fatfs, "/lib"); From d66bd5e43ac8d0e89d83c092ba4dbdf6da22235d Mon Sep 17 00:00:00 2001 From: Maxime Mauduit Date: Thu, 1 Aug 2024 11:42:35 +0200 Subject: [PATCH 05/10] remove broadcom board that are making cyrcuitpy dirty --- ports/broadcom/Makefile | 166 ------ ports/broadcom/README.rst | 5 - ports/broadcom/background.c | 20 - ports/broadcom/background.h | 9 - .../broadcom/bindings/videocore/Framebuffer.c | 160 ------ .../broadcom/bindings/videocore/Framebuffer.h | 20 - ports/broadcom/bindings/videocore/__init__.c | 28 - .../boards/diodes_delight_piunora/board.c | 28 - .../diodes_delight_piunora/mpconfigboard.h | 17 - .../diodes_delight_piunora/mpconfigboard.mk | 6 - .../boards/diodes_delight_piunora/pins.c | 77 --- ports/broadcom/boards/raspberrypi_cm4/board.c | 28 - .../boards/raspberrypi_cm4/mpconfigboard.h | 9 - .../boards/raspberrypi_cm4/mpconfigboard.mk | 6 - ports/broadcom/boards/raspberrypi_cm4/pins.c | 54 -- .../broadcom/boards/raspberrypi_cm4io/board.c | 28 - .../boards/raspberrypi_cm4io/mpconfigboard.h | 17 - .../boards/raspberrypi_cm4io/mpconfigboard.mk | 6 - .../broadcom/boards/raspberrypi_cm4io/pins.c | 71 --- .../broadcom/boards/raspberrypi_pi4b/board.c | 28 - .../boards/raspberrypi_pi4b/mpconfigboard.h | 17 - .../boards/raspberrypi_pi4b/mpconfigboard.mk | 6 - ports/broadcom/boards/raspberrypi_pi4b/pins.c | 71 --- .../broadcom/boards/raspberrypi_zero/board.c | 28 - .../boards/raspberrypi_zero/mpconfigboard.h | 17 - .../boards/raspberrypi_zero/mpconfigboard.mk | 8 - ports/broadcom/boards/raspberrypi_zero/pins.c | 68 --- .../boards/raspberrypi_zero2w/board.c | 28 - .../boards/raspberrypi_zero2w/mpconfigboard.h | 17 - .../raspberrypi_zero2w/mpconfigboard.mk | 6 - .../broadcom/boards/raspberrypi_zero2w/pins.c | 69 --- .../boards/raspberrypi_zero_w/board.c | 28 - .../boards/raspberrypi_zero_w/mpconfigboard.h | 17 - .../raspberrypi_zero_w/mpconfigboard.mk | 8 - .../broadcom/boards/raspberrypi_zero_w/pins.c | 68 --- ports/broadcom/broadcom_peripherals_config.h | 14 - ports/broadcom/common-hal/board/__init__.c | 14 - ports/broadcom/common-hal/busio/I2C.c | 250 --------- ports/broadcom/common-hal/busio/I2C.h | 27 - ports/broadcom/common-hal/busio/SPI.c | 328 ------------ ports/broadcom/common-hal/busio/SPI.h | 27 - ports/broadcom/common-hal/busio/UART.c | 489 ------------------ ports/broadcom/common-hal/busio/UART.h | 25 - ports/broadcom/common-hal/busio/__init__.c | 7 - .../common-hal/digitalio/DigitalInOut.c | 144 ------ .../common-hal/digitalio/DigitalInOut.h | 17 - .../broadcom/common-hal/digitalio/__init__.c | 7 - .../broadcom/common-hal/microcontroller/Pin.c | 89 ---- .../broadcom/common-hal/microcontroller/Pin.h | 22 - .../common-hal/microcontroller/Processor.c | 35 -- .../common-hal/microcontroller/Processor.h | 16 - .../common-hal/microcontroller/__init__.c | 178 ------- .../common-hal/microcontroller/__init__.h | 9 - .../common-hal/neopixel_write/__init__.c | 165 ------ ports/broadcom/common-hal/os/__init__.c | 42 -- ports/broadcom/common-hal/rtc/RTC.c | 38 -- ports/broadcom/common-hal/rtc/RTC.h | 10 - ports/broadcom/common-hal/rtc/__init__.c | 5 - ports/broadcom/common-hal/sdioio/SDCard.c | 380 -------------- ports/broadcom/common-hal/sdioio/SDCard.h | 24 - ports/broadcom/common-hal/sdioio/__init__.c | 5 - ports/broadcom/common-hal/sdioio/__init__.h | 7 - .../common-hal/videocore/Framebuffer.c | 80 --- .../common-hal/videocore/Framebuffer.h | 18 - ports/broadcom/config.txt | 10 - ports/broadcom/firmware | 1 - ports/broadcom/mpconfigport.h | 37 -- ports/broadcom/mpconfigport.mk | 27 - ports/broadcom/mphalport.c | 63 --- ports/broadcom/mphalport.h | 28 - ports/broadcom/peripherals | 1 - ports/broadcom/qstrdefsport.h | 16 - ports/broadcom/supervisor/internal_flash.c | 160 ------ ports/broadcom/supervisor/internal_flash.h | 10 - ports/broadcom/supervisor/port.c | 178 ------- ports/broadcom/supervisor/usb.c | 28 - 76 files changed, 4270 deletions(-) delete mode 100644 ports/broadcom/Makefile delete mode 100644 ports/broadcom/README.rst delete mode 100644 ports/broadcom/background.c delete mode 100644 ports/broadcom/background.h delete mode 100644 ports/broadcom/bindings/videocore/Framebuffer.c delete mode 100644 ports/broadcom/bindings/videocore/Framebuffer.h delete mode 100644 ports/broadcom/bindings/videocore/__init__.c delete mode 100644 ports/broadcom/boards/diodes_delight_piunora/board.c delete mode 100644 ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h delete mode 100644 ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.mk delete mode 100644 ports/broadcom/boards/diodes_delight_piunora/pins.c delete mode 100644 ports/broadcom/boards/raspberrypi_cm4/board.c delete mode 100644 ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h delete mode 100644 ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.mk delete mode 100644 ports/broadcom/boards/raspberrypi_cm4/pins.c delete mode 100644 ports/broadcom/boards/raspberrypi_cm4io/board.c delete mode 100644 ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h delete mode 100644 ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.mk delete mode 100644 ports/broadcom/boards/raspberrypi_cm4io/pins.c delete mode 100644 ports/broadcom/boards/raspberrypi_pi4b/board.c delete mode 100644 ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h delete mode 100644 ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.mk delete mode 100644 ports/broadcom/boards/raspberrypi_pi4b/pins.c delete mode 100644 ports/broadcom/boards/raspberrypi_zero/board.c delete mode 100644 ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h delete mode 100644 ports/broadcom/boards/raspberrypi_zero/mpconfigboard.mk delete mode 100644 ports/broadcom/boards/raspberrypi_zero/pins.c delete mode 100644 ports/broadcom/boards/raspberrypi_zero2w/board.c delete mode 100644 ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h delete mode 100644 ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk delete mode 100644 ports/broadcom/boards/raspberrypi_zero2w/pins.c delete mode 100644 ports/broadcom/boards/raspberrypi_zero_w/board.c delete mode 100644 ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h delete mode 100644 ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.mk delete mode 100644 ports/broadcom/boards/raspberrypi_zero_w/pins.c delete mode 100644 ports/broadcom/broadcom_peripherals_config.h delete mode 100644 ports/broadcom/common-hal/board/__init__.c delete mode 100644 ports/broadcom/common-hal/busio/I2C.c delete mode 100644 ports/broadcom/common-hal/busio/I2C.h delete mode 100644 ports/broadcom/common-hal/busio/SPI.c delete mode 100644 ports/broadcom/common-hal/busio/SPI.h delete mode 100644 ports/broadcom/common-hal/busio/UART.c delete mode 100644 ports/broadcom/common-hal/busio/UART.h delete mode 100644 ports/broadcom/common-hal/busio/__init__.c delete mode 100644 ports/broadcom/common-hal/digitalio/DigitalInOut.c delete mode 100644 ports/broadcom/common-hal/digitalio/DigitalInOut.h delete mode 100644 ports/broadcom/common-hal/digitalio/__init__.c delete mode 100644 ports/broadcom/common-hal/microcontroller/Pin.c delete mode 100644 ports/broadcom/common-hal/microcontroller/Pin.h delete mode 100644 ports/broadcom/common-hal/microcontroller/Processor.c delete mode 100644 ports/broadcom/common-hal/microcontroller/Processor.h delete mode 100644 ports/broadcom/common-hal/microcontroller/__init__.c delete mode 100644 ports/broadcom/common-hal/microcontroller/__init__.h delete mode 100644 ports/broadcom/common-hal/neopixel_write/__init__.c delete mode 100644 ports/broadcom/common-hal/os/__init__.c delete mode 100644 ports/broadcom/common-hal/rtc/RTC.c delete mode 100644 ports/broadcom/common-hal/rtc/RTC.h delete mode 100644 ports/broadcom/common-hal/rtc/__init__.c delete mode 100644 ports/broadcom/common-hal/sdioio/SDCard.c delete mode 100644 ports/broadcom/common-hal/sdioio/SDCard.h delete mode 100644 ports/broadcom/common-hal/sdioio/__init__.c delete mode 100644 ports/broadcom/common-hal/sdioio/__init__.h delete mode 100644 ports/broadcom/common-hal/videocore/Framebuffer.c delete mode 100644 ports/broadcom/common-hal/videocore/Framebuffer.h delete mode 100644 ports/broadcom/config.txt delete mode 160000 ports/broadcom/firmware delete mode 100644 ports/broadcom/mpconfigport.h delete mode 100644 ports/broadcom/mpconfigport.mk delete mode 100644 ports/broadcom/mphalport.c delete mode 100644 ports/broadcom/mphalport.h delete mode 160000 ports/broadcom/peripherals delete mode 100644 ports/broadcom/qstrdefsport.h delete mode 100644 ports/broadcom/supervisor/internal_flash.c delete mode 100644 ports/broadcom/supervisor/internal_flash.h delete mode 100644 ports/broadcom/supervisor/port.c delete mode 100644 ports/broadcom/supervisor/usb.c diff --git a/ports/broadcom/Makefile b/ports/broadcom/Makefile deleted file mode 100644 index 92c00ebf944c6..0000000000000 --- a/ports/broadcom/Makefile +++ /dev/null @@ -1,166 +0,0 @@ -# This file is part of the CircuitPython project: https://circuitpython.org -# -# SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries -# -# SPDX-License-Identifier: MIT - -include ../../py/circuitpy_mkenv.mk - -ifeq ($(CHIP_VARIANT), "bcm2711") -CFLAGS += -mcpu=cortex-a72 -DBCM_VERSION=2711 -CROSS_COMPILE = aarch64-none-elf- -SUFFIX = 8 -else ifeq ($(CHIP_VARIANT), "bcm2837") -CFLAGS += -mcpu=cortex-a53 -DBCM_VERSION=2837 -CROSS_COMPILE = aarch64-none-elf- -SUFFIX = 8 -else ifeq ($(CHIP_VARIANT), "bcm2835") -CFLAGS += -mcpu=arm1176jzf-s -DBCM_VERSION=2835 -CROSS_COMPILE = arm-none-eabi- -SUFFIX = -# TODO add 32-bit support for Cortex-A7 in 2836 -endif - -INC += -I. \ - -I../.. \ - -I../../lib/mp-readline \ - -I../../lib/timeutils \ - -I../../lib/sdmmc/include \ - -Iboards/$(BOARD) \ - -Iboards/ \ - -Iperipherals/ \ - -I../../lib/tinyusb/src \ - -I../../supervisor/shared/usb \ - -I$(BUILD) - - -SRC_C += bindings/videocore/__init__.c \ - bindings/videocore/Framebuffer.c \ - boards/$(BOARD)/board.c \ - boards/$(BOARD)/pins.c \ - background.c \ - common-hal/videocore/Framebuffer.c \ - mphalport.c \ - lib/sdmmc/sdmmc_cmd.c \ - lib/sdmmc/sdmmc_common.c \ - lib/sdmmc/sdmmc_init.c \ - lib/sdmmc/sdmmc_io.c \ - lib/sdmmc/sdmmc_mmc.c \ - lib/sdmmc/sdmmc_sd.c \ - lib/tinyusb/src/portable/synopsys/dwc2/dcd_dwc2.c \ - peripherals/broadcom/caches.c \ - peripherals/broadcom/gen/interrupt_handlers.c \ - peripherals/broadcom/gen/pins.c \ - peripherals/broadcom/gpio.c \ - peripherals/broadcom/interrupts.c \ - peripherals/broadcom/mmu.c \ - peripherals/broadcom/vcmailbox.c - -SRC_S = peripherals/broadcom/boot$(SUFFIX).s - -SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \ - $(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \ - $(addprefix common-hal/, $(SRC_COMMON_HAL)) - -SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) \ - $(addprefix shared-module/, $(SRC_SHARED_MODULE)) \ - $(addprefix shared-module/, $(SRC_SHARED_MODULE_INTERNAL)) - -# There may be duplicates between SRC_COMMON_HAL_EXPANDED and SRC_SHARED_MODULE_EXPANDED, -# because a few modules have files both in common-hal/ and shared-modules/. -# Doing a $(sort ...) removes duplicates as part of sorting. -SRC_COMMON_HAL_SHARED_MODULE_EXPANDED = $(sort $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED)) - -OBJ = $(PY_O) $(SUPERVISOR_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o)) -OBJ += $(addprefix $(BUILD)/, $(SRC_COMMON_HAL_SHARED_MODULE_EXPANDED:.c=.o)) - ifeq ($(INTERNAL_LIBM),1) -OBJ += $(addprefix $(BUILD)/, $(SRC_LIBM:.c=.o)) -endif -OBJ += $(addprefix $(BUILD)/, $(SRC_CIRCUITPY_COMMON:.c=.o)) -OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o)) -OBJ += $(addprefix $(BUILD)/, $(SRC_MOD:.c=.o)) - -# BCM CLFAGS -CFLAGS += -nostartfiles -DMICROPY_HW_MCU_NAME="\"$(CHIP_VARIANT)\"" - - -OPTIMIZATION_FLAGS ?= -O3 -CFLAGS += $(OPTIMIZATION_FLAGS) - -# TinyUSB defines -CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_BCM2711 -DCFG_TUD_MIDI_RX_BUFSIZE=512 \ - -DCFG_TUD_CDC_RX_BUFSIZE=640 -DCFG_TUD_MIDI_TX_BUFSIZE=512 \ - -DCFG_TUD_CDC_TX_BUFSIZE=512 -DCFG_TUD_MSC_BUFSIZE=1024 - -#Debugging/Optimization -ifeq ($(DEBUG), 1) - CFLAGS += -ggdb3 -Og - # No LTO because we may place some functions in RAM instead of flash. -else - CFLAGS += -DNDEBUG -ggdb3 - - # No LTO because we may place some functions in RAM instead of flash. - - ifdef CFLAGS_BOARD - CFLAGS += $(CFLAGS_BOARD) - endif -endif - - -CFLAGS += $(INC) -Wall -Werror -std=gnu11 $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT) $(DISABLE_WARNINGS) - -$(BUILD)/lib/tlsf/tlsf.o: CFLAGS += -Wno-cast-align - -SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED) $(SRC_CIRCUITPY_COMMON) - -LDFLAGS += $(CFLAGS) -T peripherals/broadcom/link$(SUFFIX).ld -Wl,--gc-sections -Wl,-Map=$@.map # -Wl,--cref - -# Use toolchain libm if we're not using our own. -ifndef INTERNAL_LIBM -LIBS += -lm -endif - -all: $(BUILD)/firmware.kernel$(SUFFIX).img $(BUILD)/firmware.disk.img.zip - -%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ - -ifeq ($(VALID_BOARD),) -$(BUILD)/kernel$(SUFFIX).elf: invalid-board -else -$(BUILD)/kernel$(SUFFIX).elf: $(OBJ) - $(STEPECHO) "LINK $@" - $(Q)echo $(OBJ) > $(BUILD)/firmware.objs - $(Q)$(CC) -o $@ $(LDFLAGS) @$(BUILD)/firmware.objs -Wl,--print-memory-usage -Wl,--start-group $(LIBS) -Wl,--end-group -endif - -$(BUILD)/kernel$(SUFFIX).img: $(BUILD)/kernel$(SUFFIX).elf - $(STEPECHO) "Create $@" - $(OBJCOPY) -O binary $(BUILD)/kernel$(SUFFIX).elf $@ - -$(BUILD)/firmware.kernel$(SUFFIX).img: $(BUILD)/kernel$(SUFFIX).img - $(STEPECHO) "Create $@" - $(CP) $^ $@ - -$(BUILD)/firmware.disk.img.zip: $(BUILD)/kernel$(SUFFIX).img - $(STEPECHO) "Create $@" - $(Q)dd if=/dev/zero of=$(BUILD)/circuitpython-disk.img bs=1 count=0 seek=256M - $(Q)parted -s $(BUILD)/circuitpython-disk.img mktable msdos - $(Q)parted -s $(BUILD)/circuitpython-disk.img mkpart primary fat32 0% 100% - $(Q)mkfs.fat -F 32 -n BOOT --offset=2048 $(BUILD)/circuitpython-disk.img - - $(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M config.txt firmware/bootcode.bin firmware/fixup* firmware/start* firmware/*.dtb :: - $(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M $(BUILD)/kernel$(SUFFIX).img :: - $(Q)zip $@ $(BUILD)/circuitpython-disk.img - $(Q)rm $(BUILD)/circuitpython-disk.img - -.PHONY: $(BUILD)/rpiboot rpiboot -rpiboot: $(BUILD)/rpiboot -$(BUILD)/rpiboot: $(BUILD)/kernel$(SUFFIX).img - mkdir -vp $@ - cp -vf $(BUILD)/kernel$(SUFFIX).img $@/ - cp -vfr config.txt firmware/bootcode.bin firmware/fixup* firmware/start* firmware/*.dtb $@/ - #sed -i -e "s/BOOT_UART=0/BOOT_UART=1/" $@/bootcode.bin $@/bootcode.bin - echo uart_2ndstage=1 >> $@/config.txt - -include $(TOP)/py/mkrules.mk diff --git a/ports/broadcom/README.rst b/ports/broadcom/README.rst deleted file mode 100644 index 10ff81711bded..0000000000000 --- a/ports/broadcom/README.rst +++ /dev/null @@ -1,5 +0,0 @@ -Broadcom -================== - -This port supports running CircuitPython bare-metal on Raspberry Pi single board -computers that utilize Broadcom system-on-chips. diff --git a/ports/broadcom/background.c b/ports/broadcom/background.c deleted file mode 100644 index 5bb961eea59ac..0000000000000 --- a/ports/broadcom/background.c +++ /dev/null @@ -1,20 +0,0 @@ -// 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 "background.h" - -#include "py/runtime.h" -#include "supervisor/port.h" - -void port_start_background_tick(void) { -} -void port_finish_background_tick(void) { -} - -void port_background_tick(void) { -} - -void port_background_task(void) { -} diff --git a/ports/broadcom/background.h b/ports/broadcom/background.h deleted file mode 100644 index fe71149ab4b42..0000000000000 --- a/ports/broadcom/background.h +++ /dev/null @@ -1,9 +0,0 @@ -// 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 - -#pragma once - -#include diff --git a/ports/broadcom/bindings/videocore/Framebuffer.c b/ports/broadcom/bindings/videocore/Framebuffer.c deleted file mode 100644 index f5d8ab8d34b38..0000000000000 --- a/ports/broadcom/bindings/videocore/Framebuffer.c +++ /dev/null @@ -1,160 +0,0 @@ -// 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 "py/obj.h" -#include "py/objproperty.h" -#include "py/runtime.h" -#include "py/objarray.h" - -#include "bindings/videocore/Framebuffer.h" -#include "shared-bindings/util.h" -#include "shared-module/displayio/__init__.h" -#include "shared-module/framebufferio/__init__.h" -#include "shared-module/framebufferio/FramebufferDisplay.h" - -//| class Framebuffer: -//| """A VideoCore managed frame buffer.""" -//| -//| def __init__(self, width: int, height: int) -> None: -//| """Create a Framebuffer object with the given dimensions. Memory is -//| allocated outside of the heap in GPU memory. -//| -//| The framebuffer is in "ARGB8888" format. -//| -//| A Framebuffer is often used in conjunction with a -//| `framebufferio.FramebufferDisplay`.""" - -static mp_obj_t videocore_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { - enum { ARG_width, ARG_height, }; - static const mp_arg_t allowed_args[] = { - { MP_QSTR_width, MP_ARG_INT | MP_ARG_REQUIRED }, - { MP_QSTR_height, MP_ARG_INT | MP_ARG_REQUIRED }, - }; - mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; - mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); - - videocore_framebuffer_obj_t *self = &allocate_display_bus_or_raise()->videocore; - self->base.type = &videocore_framebuffer_type; - - mp_uint_t width = (mp_uint_t)mp_arg_validate_int_min(args[ARG_width].u_int, 0, MP_QSTR_width); - mp_uint_t height = (mp_uint_t)mp_arg_validate_int_min(args[ARG_height].u_int, 0, MP_QSTR_height); - common_hal_videocore_framebuffer_construct(self, width, height); - - return MP_OBJ_FROM_PTR(self); -} - -//| def deinit(self) -> None: -//| """Free the resources (pins, timers, etc.) associated with this -//| rgbmatrix instance. After deinitialization, no further operations -//| may be performed.""" -//| ... -static mp_obj_t videocore_framebuffer_deinit(mp_obj_t self_in) { - videocore_framebuffer_obj_t *self = (videocore_framebuffer_obj_t *)self_in; - common_hal_videocore_framebuffer_deinit(self); - return mp_const_none; -} - -static MP_DEFINE_CONST_FUN_OBJ_1(videocore_framebuffer_deinit_obj, videocore_framebuffer_deinit); - -static void check_for_deinit(videocore_framebuffer_obj_t *self) { - if (common_hal_videocore_framebuffer_deinited(self)) { - raise_deinited_error(); - } -} - -//| width: int -//| """The width of the display, in pixels""" -static mp_obj_t videocore_framebuffer_get_width(mp_obj_t self_in) { - videocore_framebuffer_obj_t *self = (videocore_framebuffer_obj_t *)self_in; - check_for_deinit(self); - return MP_OBJ_NEW_SMALL_INT(common_hal_videocore_framebuffer_get_width(self)); -} -MP_DEFINE_CONST_FUN_OBJ_1(videocore_framebuffer_get_width_obj, videocore_framebuffer_get_width); -MP_PROPERTY_GETTER(videocore_framebuffer_width_obj, - (mp_obj_t)&videocore_framebuffer_get_width_obj); - -//| height: int -//| """The height of the display, in pixels""" -//| -static mp_obj_t videocore_framebuffer_get_height(mp_obj_t self_in) { - videocore_framebuffer_obj_t *self = (videocore_framebuffer_obj_t *)self_in; - check_for_deinit(self); - return MP_OBJ_NEW_SMALL_INT(common_hal_videocore_framebuffer_get_height(self)); -} -MP_DEFINE_CONST_FUN_OBJ_1(videocore_framebuffer_get_height_obj, videocore_framebuffer_get_height); - -MP_PROPERTY_GETTER(videocore_framebuffer_height_obj, - (mp_obj_t)&videocore_framebuffer_get_height_obj); - -static const mp_rom_map_elem_t videocore_framebuffer_locals_dict_table[] = { - { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&videocore_framebuffer_deinit_obj) }, - - { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&videocore_framebuffer_width_obj) }, - { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&videocore_framebuffer_height_obj) }, -}; -static MP_DEFINE_CONST_DICT(videocore_framebuffer_locals_dict, videocore_framebuffer_locals_dict_table); - -static void videocore_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { - common_hal_videocore_framebuffer_get_buffer(self_in, bufinfo, 0); -} - -// These versions exist so that the prototype matches the protocol, -// avoiding a type cast that can hide errors -static void videocore_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { - (void)dirty_row_bitmap; - common_hal_videocore_framebuffer_refresh(self_in); -} - -static void videocore_framebuffer_deinit_proto(mp_obj_t self_in) { - common_hal_videocore_framebuffer_deinit(self_in); -} - -static int videocore_framebuffer_get_width_proto(mp_obj_t self_in) { - return common_hal_videocore_framebuffer_get_width(self_in); -} - -static int videocore_framebuffer_get_height_proto(mp_obj_t self_in) { - return common_hal_videocore_framebuffer_get_height(self_in); -} - -static int videocore_framebuffer_get_color_depth_proto(mp_obj_t self_in) { - return 32; -} - -static int videocore_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { - return 1; -} - -static int videocore_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { - return 30; -} - -static int videocore_framebuffer_get_row_stride_proto(mp_obj_t self_in) { - return common_hal_videocore_framebuffer_get_row_stride(self_in); -} - -static const framebuffer_p_t videocore_framebuffer_proto = { - MP_PROTO_IMPLEMENT(MP_QSTR_protocol_framebuffer) - .get_bufinfo = videocore_framebuffer_get_bufinfo, - .get_width = videocore_framebuffer_get_width_proto, - .get_height = videocore_framebuffer_get_height_proto, - .get_color_depth = videocore_framebuffer_get_color_depth_proto, - .get_row_stride = videocore_framebuffer_get_row_stride_proto, - .get_bytes_per_cell = videocore_framebuffer_get_bytes_per_cell_proto, - .get_native_frames_per_second = videocore_framebuffer_get_native_frames_per_second_proto, - .swapbuffers = videocore_framebuffer_swapbuffers, - .deinit = videocore_framebuffer_deinit_proto, -}; - -MP_DEFINE_CONST_OBJ_TYPE( - videocore_framebuffer_type, - MP_QSTR_Framebuffer, - MP_TYPE_FLAG_HAS_SPECIAL_ACCESSORS, - locals_dict, (mp_obj_dict_t *)&videocore_framebuffer_locals_dict, - make_new, videocore_framebuffer_make_new, - buffer, common_hal_videocore_framebuffer_get_buffer, - protocol, &videocore_framebuffer_proto - ); diff --git a/ports/broadcom/bindings/videocore/Framebuffer.h b/ports/broadcom/bindings/videocore/Framebuffer.h deleted file mode 100644 index cb6c04a67bca4..0000000000000 --- a/ports/broadcom/bindings/videocore/Framebuffer.h +++ /dev/null @@ -1,20 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries -// -// SPDX-License-Identifier: MIT - -#pragma once - -#include "common-hal/videocore/Framebuffer.h" - -extern const mp_obj_type_t videocore_framebuffer_type; - -void common_hal_videocore_framebuffer_construct(videocore_framebuffer_obj_t *self, mp_uint_t width, mp_uint_t height); -void common_hal_videocore_framebuffer_deinit(videocore_framebuffer_obj_t *self); -bool common_hal_videocore_framebuffer_deinited(videocore_framebuffer_obj_t *self); -void common_hal_videocore_framebuffer_refresh(videocore_framebuffer_obj_t *self); -int common_hal_videocore_framebuffer_get_width(videocore_framebuffer_obj_t *self); -int common_hal_videocore_framebuffer_get_height(videocore_framebuffer_obj_t *self); -int common_hal_videocore_framebuffer_get_row_stride(videocore_framebuffer_obj_t *self); -mp_int_t common_hal_videocore_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags); diff --git a/ports/broadcom/bindings/videocore/__init__.c b/ports/broadcom/bindings/videocore/__init__.c deleted file mode 100644 index 3c83ba2ac7837..0000000000000 --- a/ports/broadcom/bindings/videocore/__init__.c +++ /dev/null @@ -1,28 +0,0 @@ -// 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 - -#include "py/obj.h" -#include "py/runtime.h" - -#include "bindings/videocore/Framebuffer.h" - -//| """Low-level routines for interacting with the Broadcom VideoCore GPU""" - -static const mp_rom_map_elem_t videocore_module_globals_table[] = { - { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_videocore) }, - { MP_ROM_QSTR(MP_QSTR_Framebuffer), MP_ROM_PTR(&videocore_framebuffer_type) }, -}; - -static MP_DEFINE_CONST_DICT(videocore_module_globals, videocore_module_globals_table); - -const mp_obj_module_t videocore_module = { - .base = { &mp_type_module }, - .globals = (mp_obj_dict_t *)&videocore_module_globals, -}; - -MP_REGISTER_MODULE(MP_QSTR_videocore, videocore_module); diff --git a/ports/broadcom/boards/diodes_delight_piunora/board.c b/ports/broadcom/boards/diodes_delight_piunora/board.c deleted file mode 100644 index 612d93776df1e..0000000000000 --- a/ports/broadcom/boards/diodes_delight_piunora/board.c +++ /dev/null @@ -1,28 +0,0 @@ -// 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 "bindings/videocore/Framebuffer.h" -#include "shared-module/displayio/__init__.h" -#include "shared-bindings/framebufferio/FramebufferDisplay.h" - -void board_init(void) { - videocore_framebuffer_obj_t *fb = &allocate_display_bus()->videocore; - fb->base.type = &videocore_framebuffer_type; - common_hal_videocore_framebuffer_construct(fb, 640, 480); - - framebufferio_framebufferdisplay_obj_t *display = &allocate_display()->framebuffer_display; - display->base.type = &framebufferio_framebufferdisplay_type; - common_hal_framebufferio_framebufferdisplay_construct( - display, - MP_OBJ_FROM_PTR(fb), - 0, - true); -} - -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h b/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h deleted file mode 100644 index 298a94316ad8b..0000000000000 --- a/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h +++ /dev/null @@ -1,17 +0,0 @@ -// 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 - -#pragma once - -#define MICROPY_HW_BOARD_NAME "Diodes Delight Piunora" - -#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) -#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) - -#define MICROPY_HW_NEOPIXEL (&pin_GPIO12) - -#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO4) -#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO5) diff --git a/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.mk b/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.mk deleted file mode 100644 index d05bb160282e8..0000000000000 --- a/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.mk +++ /dev/null @@ -1,6 +0,0 @@ -USB_VID = 0x1209 -USB_PID = 0xD10D -USB_PRODUCT = "Piunora" -USB_MANUFACTURER = "Diodes Delight" - -CHIP_VARIANT = "bcm2711" diff --git a/ports/broadcom/boards/diodes_delight_piunora/pins.c b/ports/broadcom/boards/diodes_delight_piunora/pins.c deleted file mode 100644 index 27bbe93e1eeca..0000000000000 --- a/ports/broadcom/boards/diodes_delight_piunora/pins.c +++ /dev/null @@ -1,77 +0,0 @@ -// 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 "shared-bindings/board/__init__.h" - -#include "shared-module/displayio/__init__.h" - -static const mp_rom_map_elem_t board_global_dict_table[] = { - CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - - { MP_ROM_QSTR(MP_QSTR_GPIO5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO5) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO4), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO4) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO18), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO18) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO19) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO20), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO20) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO21), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO21) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO22), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_SDA6), MP_ROM_PTR(&pin_GPIO22) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO23), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_SCL6), MP_ROM_PTR(&pin_GPIO23) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO6), MP_ROM_PTR(&pin_GPIO6) }, - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO6) }, - { MP_ROM_QSTR(MP_QSTR_SDA4), MP_ROM_PTR(&pin_GPIO6) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO7), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_SCL4), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_SPI0_CE1), MP_ROM_PTR(&pin_GPIO7) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO8), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_SPI0_CE0), MP_ROM_PTR(&pin_GPIO8) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_SPI0_MOSI), MP_ROM_PTR(&pin_GPIO10) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO9), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_SPI0_MISO), MP_ROM_PTR(&pin_GPIO9) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SPI0_SCLK), MP_ROM_PTR(&pin_GPIO11) }, - - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_SDA1), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO12), MP_ROM_PTR(&pin_GPIO12) }, - { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO12) }, - - { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, -}; -MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/broadcom/boards/raspberrypi_cm4/board.c b/ports/broadcom/boards/raspberrypi_cm4/board.c deleted file mode 100644 index 612d93776df1e..0000000000000 --- a/ports/broadcom/boards/raspberrypi_cm4/board.c +++ /dev/null @@ -1,28 +0,0 @@ -// 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 "bindings/videocore/Framebuffer.h" -#include "shared-module/displayio/__init__.h" -#include "shared-bindings/framebufferio/FramebufferDisplay.h" - -void board_init(void) { - videocore_framebuffer_obj_t *fb = &allocate_display_bus()->videocore; - fb->base.type = &videocore_framebuffer_type; - common_hal_videocore_framebuffer_construct(fb, 640, 480); - - framebufferio_framebufferdisplay_obj_t *display = &allocate_display()->framebuffer_display; - display->base.type = &framebufferio_framebufferdisplay_type; - common_hal_framebufferio_framebufferdisplay_construct( - display, - MP_OBJ_FROM_PTR(fb), - 0, - true); -} - -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h deleted file mode 100644 index 23b99342facb8..0000000000000 --- a/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h +++ /dev/null @@ -1,9 +0,0 @@ -// 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 - -#pragma once - -#define MICROPY_HW_BOARD_NAME "Raspberry Pi Compute Module 4" diff --git a/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.mk b/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.mk deleted file mode 100644 index ee54efe84be51..0000000000000 --- a/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.mk +++ /dev/null @@ -1,6 +0,0 @@ -USB_VID = 0x2E8A -USB_PID = 0x1014 -USB_PRODUCT = "Compute Module 4" -USB_MANUFACTURER = "Raspberry Pi" - -CHIP_VARIANT = "bcm2711" diff --git a/ports/broadcom/boards/raspberrypi_cm4/pins.c b/ports/broadcom/boards/raspberrypi_cm4/pins.c deleted file mode 100644 index 83f781eea97ac..0000000000000 --- a/ports/broadcom/boards/raspberrypi_cm4/pins.c +++ /dev/null @@ -1,54 +0,0 @@ -// 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 "shared-bindings/board/__init__.h" - -#include "shared-module/displayio/__init__.h" - -static const mp_rom_map_elem_t board_global_dict_table[] = { - CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - - // These match the names used in the CM4 datasheet - { MP_ROM_QSTR(MP_QSTR_ID_SD), MP_ROM_PTR(&pin_GPIO0) }, - { MP_ROM_QSTR(MP_QSTR_ID_SC), MP_ROM_PTR(&pin_GPIO1) }, - { MP_ROM_QSTR(MP_QSTR_GPIO2), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_GPIO3), MP_ROM_PTR(&pin_GPIO3) }, - { MP_ROM_QSTR(MP_QSTR_GPIO4), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_GPIO5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_GPIO6), MP_ROM_PTR(&pin_GPIO6) }, - { MP_ROM_QSTR(MP_QSTR_GPIO7), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_GPIO8), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_GPIO9), MP_ROM_PTR(&pin_GPIO9) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_GPIO11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_GPIO12), MP_ROM_PTR(&pin_GPIO12) }, - { MP_ROM_QSTR(MP_QSTR_GPIO13), MP_ROM_PTR(&pin_GPIO13) }, - { MP_ROM_QSTR(MP_QSTR_GPIO14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_GPIO15), MP_ROM_PTR(&pin_GPIO15) }, - - { MP_ROM_QSTR(MP_QSTR_GPIO16), MP_ROM_PTR(&pin_GPIO16) }, - { MP_ROM_QSTR(MP_QSTR_GPIO17), MP_ROM_PTR(&pin_GPIO17) }, - { MP_ROM_QSTR(MP_QSTR_GPIO18), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_GPIO19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_GPIO20), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_GPIO21), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_GPIO22), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_GPIO23), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_GPIO24), MP_ROM_PTR(&pin_GPIO24) }, - { MP_ROM_QSTR(MP_QSTR_GPIO25), MP_ROM_PTR(&pin_GPIO25) }, - { MP_ROM_QSTR(MP_QSTR_GPIO26), MP_ROM_PTR(&pin_GPIO26) }, - { MP_ROM_QSTR(MP_QSTR_GPIO27), MP_ROM_PTR(&pin_GPIO27) }, - - { MP_ROM_QSTR(MP_QSTR_LED_nACT), MP_ROM_PTR(&pin_GPIO42) }, - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO42) }, - - { MP_ROM_QSTR(MP_QSTR_SDA0), MP_ROM_PTR(&pin_GPIO44) }, - { MP_ROM_QSTR(MP_QSTR_SCL0), MP_ROM_PTR(&pin_GPIO45) }, - - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, -}; -MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/broadcom/boards/raspberrypi_cm4io/board.c b/ports/broadcom/boards/raspberrypi_cm4io/board.c deleted file mode 100644 index 612d93776df1e..0000000000000 --- a/ports/broadcom/boards/raspberrypi_cm4io/board.c +++ /dev/null @@ -1,28 +0,0 @@ -// 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 "bindings/videocore/Framebuffer.h" -#include "shared-module/displayio/__init__.h" -#include "shared-bindings/framebufferio/FramebufferDisplay.h" - -void board_init(void) { - videocore_framebuffer_obj_t *fb = &allocate_display_bus()->videocore; - fb->base.type = &videocore_framebuffer_type; - common_hal_videocore_framebuffer_construct(fb, 640, 480); - - framebufferio_framebufferdisplay_obj_t *display = &allocate_display()->framebuffer_display; - display->base.type = &framebufferio_framebufferdisplay_type; - common_hal_framebufferio_framebufferdisplay_construct( - display, - MP_OBJ_FROM_PTR(fb), - 0, - true); -} - -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h deleted file mode 100644 index 2c02fabd9ec94..0000000000000 --- a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h +++ /dev/null @@ -1,17 +0,0 @@ -// 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 - -#pragma once - -#define MICROPY_HW_BOARD_NAME "Raspberry Pi Compute Module 4 IO Board" - -#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) -#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) - -#define MICROPY_HW_LED_STATUS (&pin_GPIO42) - -#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO14) -#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO15) diff --git a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.mk b/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.mk deleted file mode 100644 index d021462bc6b57..0000000000000 --- a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.mk +++ /dev/null @@ -1,6 +0,0 @@ -USB_VID = 0x2E8A -USB_PID = 0x1012 -USB_PRODUCT = "Compute Module 4 IO Board" -USB_MANUFACTURER = "Raspberry Pi" - -CHIP_VARIANT = "bcm2711" diff --git a/ports/broadcom/boards/raspberrypi_cm4io/pins.c b/ports/broadcom/boards/raspberrypi_cm4io/pins.c deleted file mode 100644 index d9666eafda321..0000000000000 --- a/ports/broadcom/boards/raspberrypi_cm4io/pins.c +++ /dev/null @@ -1,71 +0,0 @@ -// 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 "shared-bindings/board/__init__.h" - -#include "shared-module/displayio/__init__.h" - -static const mp_rom_map_elem_t board_global_dict_table[] = { - CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - - // These match the names used in Blinka - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, - - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, - - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, - - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_CE1), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_CE0), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCLK), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO11) }, - - { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, - - { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_TXD), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_RXD), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO15) }, - - { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) }, - { MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) }, - { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_MISO_1), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_MOSI_1), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCLK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) }, - { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) }, - { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, - { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, - - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO42) }, - - { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, -}; -MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/broadcom/boards/raspberrypi_pi4b/board.c b/ports/broadcom/boards/raspberrypi_pi4b/board.c deleted file mode 100644 index 612d93776df1e..0000000000000 --- a/ports/broadcom/boards/raspberrypi_pi4b/board.c +++ /dev/null @@ -1,28 +0,0 @@ -// 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 "bindings/videocore/Framebuffer.h" -#include "shared-module/displayio/__init__.h" -#include "shared-bindings/framebufferio/FramebufferDisplay.h" - -void board_init(void) { - videocore_framebuffer_obj_t *fb = &allocate_display_bus()->videocore; - fb->base.type = &videocore_framebuffer_type; - common_hal_videocore_framebuffer_construct(fb, 640, 480); - - framebufferio_framebufferdisplay_obj_t *display = &allocate_display()->framebuffer_display; - display->base.type = &framebufferio_framebufferdisplay_type; - common_hal_framebufferio_framebufferdisplay_construct( - display, - MP_OBJ_FROM_PTR(fb), - 0, - true); -} - -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h deleted file mode 100644 index 45eeff3b59b43..0000000000000 --- a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h +++ /dev/null @@ -1,17 +0,0 @@ -// 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 - -#pragma once - -#define MICROPY_HW_BOARD_NAME "Raspberry Pi 4B" - -#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) -#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) - -#define MICROPY_HW_LED_STATUS (&pin_GPIO42) - -#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO14) -#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO15) diff --git a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.mk b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.mk deleted file mode 100644 index 2c808931da542..0000000000000 --- a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.mk +++ /dev/null @@ -1,6 +0,0 @@ -USB_VID = 0x2E8A -USB_PID = 0x1013 -USB_PRODUCT = "Raspberry Pi 4B" -USB_MANUFACTURER = "Raspberry Pi" - -CHIP_VARIANT = "bcm2711" diff --git a/ports/broadcom/boards/raspberrypi_pi4b/pins.c b/ports/broadcom/boards/raspberrypi_pi4b/pins.c deleted file mode 100644 index d9666eafda321..0000000000000 --- a/ports/broadcom/boards/raspberrypi_pi4b/pins.c +++ /dev/null @@ -1,71 +0,0 @@ -// 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 "shared-bindings/board/__init__.h" - -#include "shared-module/displayio/__init__.h" - -static const mp_rom_map_elem_t board_global_dict_table[] = { - CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - - // These match the names used in Blinka - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, - - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, - - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, - - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_CE1), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_CE0), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCLK), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO11) }, - - { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, - - { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_TXD), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_RXD), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO15) }, - - { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) }, - { MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) }, - { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_MISO_1), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_MOSI_1), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCLK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) }, - { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) }, - { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, - { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, - - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO42) }, - - { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, -}; -MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/broadcom/boards/raspberrypi_zero/board.c b/ports/broadcom/boards/raspberrypi_zero/board.c deleted file mode 100644 index 612d93776df1e..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero/board.c +++ /dev/null @@ -1,28 +0,0 @@ -// 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 "bindings/videocore/Framebuffer.h" -#include "shared-module/displayio/__init__.h" -#include "shared-bindings/framebufferio/FramebufferDisplay.h" - -void board_init(void) { - videocore_framebuffer_obj_t *fb = &allocate_display_bus()->videocore; - fb->base.type = &videocore_framebuffer_type; - common_hal_videocore_framebuffer_construct(fb, 640, 480); - - framebufferio_framebufferdisplay_obj_t *display = &allocate_display()->framebuffer_display; - display->base.type = &framebufferio_framebufferdisplay_type; - common_hal_framebufferio_framebufferdisplay_construct( - display, - MP_OBJ_FROM_PTR(fb), - 0, - true); -} - -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h deleted file mode 100644 index 64da629317e7c..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h +++ /dev/null @@ -1,17 +0,0 @@ -// 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 - -#pragma once - -#define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero" - -#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) -#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) - -#define MICROPY_HW_LED_STATUS (&pin_GPIO47) - -#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO14) -#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO15) diff --git a/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.mk b/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.mk deleted file mode 100644 index b6adb5d6bb823..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.mk +++ /dev/null @@ -1,8 +0,0 @@ -USB_VID = 0x2E8A -USB_PID = 0x100E -USB_PRODUCT = "Zero" -USB_MANUFACTURER = "Raspberry Pi" - -CHIP_VARIANT = "bcm2835" - -CIRCUITPY_BUILD_EXTENSIONS = disk.img.zip,kernel.img diff --git a/ports/broadcom/boards/raspberrypi_zero/pins.c b/ports/broadcom/boards/raspberrypi_zero/pins.c deleted file mode 100644 index 4b3cf22813585..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero/pins.c +++ /dev/null @@ -1,68 +0,0 @@ -// 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 "shared-bindings/board/__init__.h" - -#include "shared-module/displayio/__init__.h" - -static const mp_rom_map_elem_t board_global_dict_table[] = { - CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - // These match the names used in Blinka - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, - - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, - - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, - - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_CE1), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_CE0), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCLK), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO11) }, - - { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, - - { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_TXD), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_RXD), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO15) }, - - { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) }, - { MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) }, - { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_MISO_1), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_MOSI_1), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCLK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) }, - { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) }, - { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, - { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, - - { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, -}; -MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/broadcom/boards/raspberrypi_zero2w/board.c b/ports/broadcom/boards/raspberrypi_zero2w/board.c deleted file mode 100644 index 612d93776df1e..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero2w/board.c +++ /dev/null @@ -1,28 +0,0 @@ -// 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 "bindings/videocore/Framebuffer.h" -#include "shared-module/displayio/__init__.h" -#include "shared-bindings/framebufferio/FramebufferDisplay.h" - -void board_init(void) { - videocore_framebuffer_obj_t *fb = &allocate_display_bus()->videocore; - fb->base.type = &videocore_framebuffer_type; - common_hal_videocore_framebuffer_construct(fb, 640, 480); - - framebufferio_framebufferdisplay_obj_t *display = &allocate_display()->framebuffer_display; - display->base.type = &framebufferio_framebufferdisplay_type; - common_hal_framebufferio_framebufferdisplay_construct( - display, - MP_OBJ_FROM_PTR(fb), - 0, - true); -} - -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h deleted file mode 100644 index 4168832fb8242..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h +++ /dev/null @@ -1,17 +0,0 @@ -// 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 - -#pragma once - -#define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero 2W" - -#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) -#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) - -#define MICROPY_HW_LED_STATUS (&pin_GPIO29) - -#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO14) -#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO15) diff --git a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk b/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk deleted file mode 100644 index 1479cb3b8c4b9..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk +++ /dev/null @@ -1,6 +0,0 @@ -USB_VID = 0x2E8A -USB_PID = 0x1015 -USB_PRODUCT = "Raspberry Pi Zero 2W" -USB_MANUFACTURER = "Raspberry Pi" - -CHIP_VARIANT = "bcm2837" diff --git a/ports/broadcom/boards/raspberrypi_zero2w/pins.c b/ports/broadcom/boards/raspberrypi_zero2w/pins.c deleted file mode 100644 index 1d8f247487e63..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero2w/pins.c +++ /dev/null @@ -1,69 +0,0 @@ -// 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 "shared-bindings/board/__init__.h" - -#include "shared-module/displayio/__init__.h" - -static const mp_rom_map_elem_t board_global_dict_table[] = { - CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - // These match the names used in Blinka - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, - - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, - - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, - - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_CE1), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_CE0), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCLK), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO11) }, - - { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, - - { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_TXD), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_RXD), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO15) }, - - { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) }, - { MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) }, - { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_MISO_1), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_MOSI_1), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCLK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) }, - { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) }, - { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, - { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO29) }, - - { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, -}; -MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/broadcom/boards/raspberrypi_zero_w/board.c b/ports/broadcom/boards/raspberrypi_zero_w/board.c deleted file mode 100644 index 612d93776df1e..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero_w/board.c +++ /dev/null @@ -1,28 +0,0 @@ -// 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 "bindings/videocore/Framebuffer.h" -#include "shared-module/displayio/__init__.h" -#include "shared-bindings/framebufferio/FramebufferDisplay.h" - -void board_init(void) { - videocore_framebuffer_obj_t *fb = &allocate_display_bus()->videocore; - fb->base.type = &videocore_framebuffer_type; - common_hal_videocore_framebuffer_construct(fb, 640, 480); - - framebufferio_framebufferdisplay_obj_t *display = &allocate_display()->framebuffer_display; - display->base.type = &framebufferio_framebufferdisplay_type; - common_hal_framebufferio_framebufferdisplay_construct( - display, - MP_OBJ_FROM_PTR(fb), - 0, - true); -} - -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h deleted file mode 100644 index 526a152011e1c..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h +++ /dev/null @@ -1,17 +0,0 @@ -// 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 - -#pragma once - -#define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero W" - -#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) -#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) - -#define MICROPY_HW_LED_STATUS (&pin_GPIO47) - -#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO14) -#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO15) diff --git a/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.mk b/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.mk deleted file mode 100644 index cd55f73ee8431..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.mk +++ /dev/null @@ -1,8 +0,0 @@ -USB_VID = 0x2E8A -USB_PID = 0x101E -USB_PRODUCT = "Zero W" -USB_MANUFACTURER = "Raspberry Pi" - -CHIP_VARIANT = "bcm2835" - -CIRCUITPY_BUILD_EXTENSIONS = disk.img.zip,kernel.img diff --git a/ports/broadcom/boards/raspberrypi_zero_w/pins.c b/ports/broadcom/boards/raspberrypi_zero_w/pins.c deleted file mode 100644 index 4b3cf22813585..0000000000000 --- a/ports/broadcom/boards/raspberrypi_zero_w/pins.c +++ /dev/null @@ -1,68 +0,0 @@ -// 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 "shared-bindings/board/__init__.h" - -#include "shared-module/displayio/__init__.h" - -static const mp_rom_map_elem_t board_global_dict_table[] = { - CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - // These match the names used in Blinka - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, - - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, - - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, - - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_CE1), MP_ROM_PTR(&pin_GPIO7) }, - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_CE0), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCLK), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO11) }, - - { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, - - { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_TXD), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_RXD), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO15) }, - - { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) }, - { MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) }, - { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_MISO_1), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_MOSI_1), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCLK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_SCK_1), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) }, - { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) }, - { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, - { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, - - { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, -}; -MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/broadcom/broadcom_peripherals_config.h b/ports/broadcom/broadcom_peripherals_config.h deleted file mode 100644 index 64d35affea3e0..0000000000000 --- a/ports/broadcom/broadcom_peripherals_config.h +++ /dev/null @@ -1,14 +0,0 @@ -// 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 - -#pragma once - -#include "py/obj.h" - -extern const mp_obj_type_t mcu_pin_type; - -#define PIN_PREFIX_VALUES { &mcu_pin_type }, -#define PIN_PREFIX_FIELDS mp_obj_base_t base; diff --git a/ports/broadcom/common-hal/board/__init__.c b/ports/broadcom/common-hal/board/__init__.c deleted file mode 100644 index bbb34aa3454a3..0000000000000 --- a/ports/broadcom/common-hal/board/__init__.c +++ /dev/null @@ -1,14 +0,0 @@ -// 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 - -#include "py/runtime.h" -#include "py/mphal.h" -#include "common-hal/microcontroller/Pin.h" - -// Pins aren't actually defined here. They are in the board specific directory -// such as boards/arduino_zero/pins.c. diff --git a/ports/broadcom/common-hal/busio/I2C.c b/ports/broadcom/common-hal/busio/I2C.c deleted file mode 100644 index 19f346595f738..0000000000000 --- a/ports/broadcom/common-hal/busio/I2C.c +++ /dev/null @@ -1,250 +0,0 @@ -// 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 "py/mperrno.h" -#include "py/mphal.h" -#include "shared-bindings/busio/I2C.h" -#include "py/runtime.h" - -#include "shared-bindings/microcontroller/__init__.h" -#include "shared-bindings/microcontroller/Pin.h" - -#include "peripherals/broadcom/cpu.h" -#include "peripherals/broadcom/vcmailbox.h" - -#if BCM_VERSION == 2711 -#define NUM_I2C (8) -static BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL, BSC3, BSC4, BSC5, BSC6, NULL}; -#else -#define NUM_I2C (3) -static BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL}; -#endif - -static bool never_reset_i2c[NUM_I2C]; -static bool i2c_in_use[NUM_I2C]; - -void reset_i2c(void) { - // BSC2 is dedicated to the first HDMI output. - never_reset_i2c[2] = true; - i2c_in_use[2] = true; - #if BCM_VERSION == 2711 - // BSC7 is dedicated to the second HDMI output. - never_reset_i2c[7] = true; - i2c_in_use[7] = true; - #endif - for (size_t i = 0; i < NUM_I2C; i++) { - if (never_reset_i2c[i]) { - continue; - } - i2c_in_use[i] = false; - i2c[i]->C_b.I2CEN = false; - COMPLETE_MEMORY_READS; - } -} - -void common_hal_busio_i2c_construct(busio_i2c_obj_t *self, - const mcu_pin_obj_t *scl, const mcu_pin_obj_t *sda, uint32_t frequency, uint32_t timeout) { - size_t instance_index = NUM_I2C; - uint8_t scl_alt = 0; - uint8_t sda_alt = 0; - for (scl_alt = 0; scl_alt < 6; scl_alt++) { - if (scl->functions[scl_alt].type != PIN_FUNCTION_I2C || - i2c_in_use[scl->functions[scl_alt].index] || - scl->functions[scl_alt].function != I2C_FUNCTION_SCL) { - continue; - } - for (sda_alt = 0; sda_alt < 6; sda_alt++) { - if (sda->functions[sda_alt].type != PIN_FUNCTION_I2C || - scl->functions[scl_alt].index != sda->functions[sda_alt].index || - sda->functions[sda_alt].function != I2C_FUNCTION_SDA) { - continue; - } - instance_index = scl->functions[scl_alt].index; - break; - } - if (instance_index != NUM_I2C) { - break; - } - } - if (instance_index == NUM_I2C) { - raise_ValueError_invalid_pins(); - } - i2c_in_use[instance_index] = true; - self->index = instance_index; - self->peripheral = i2c[self->index]; - self->sda_pin = sda; - self->scl_pin = scl; - - uint32_t source_clock = vcmailbox_get_clock_rate(VCMAILBOX_CLOCK_CORE); - uint16_t clock_divider = source_clock / frequency; - self->peripheral->DIV_b.CDIV = clock_divider; - - gpio_set_function(sda->number, FSEL_VALUES[sda_alt]); - gpio_set_function(scl->number, FSEL_VALUES[scl_alt]); -} - -bool common_hal_busio_i2c_deinited(busio_i2c_obj_t *self) { - return self->sda_pin == NULL; -} - -void common_hal_busio_i2c_deinit(busio_i2c_obj_t *self) { - if (common_hal_busio_i2c_deinited(self)) { - return; - } - never_reset_i2c[self->index] = false; - i2c_in_use[self->index] = false; - - common_hal_reset_pin(self->sda_pin); - common_hal_reset_pin(self->scl_pin); - self->sda_pin = NULL; - self->scl_pin = NULL; -} - -bool common_hal_busio_i2c_probe(busio_i2c_obj_t *self, uint8_t addr) { - uint8_t result = common_hal_busio_i2c_write(self, addr, NULL, 0); - return result == 0; -} - -bool common_hal_busio_i2c_try_lock(busio_i2c_obj_t *self) { - bool grabbed_lock = false; - if (!self->has_lock) { - grabbed_lock = true; - self->has_lock = true; - } - return grabbed_lock; -} - -bool common_hal_busio_i2c_has_lock(busio_i2c_obj_t *self) { - return self->has_lock; -} - -void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) { - self->has_lock = false; -} - -// Discussion of I2C implementation is here: https://github.com/raspberrypi/linux/issues/254 - -static uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, - const uint8_t *data, size_t len, bool transmit_stop_bit) { - COMPLETE_MEMORY_READS; - self->peripheral->S_b.DONE = true; - self->peripheral->A_b.ADDR = addr; - size_t loop_len = len; - // Prevent the stop bit by transmitting everything but the last byte. Doing - // so is left up to the subsequent read. - if (!transmit_stop_bit) { - loop_len -= 1; - } - self->peripheral->DLEN_b.DLEN = len; - self->peripheral->C = BSC0_C_ST_Msk | BSC0_C_I2CEN_Msk; - // Wait for the transaction to start. - while (self->peripheral->S_b.TA == 0) { - RUN_BACKGROUND_TASKS; - } - for (size_t i = 0; i < loop_len; i++) { - if (self->peripheral->S_b.ERR) { - break; - } - self->peripheral->FIFO_b.DATA = data[i]; - // Wait for the FIFO to empty enough that we can write more data. - while (self->peripheral->S_b.TXE == 0) { - RUN_BACKGROUND_TASKS; - } - } - // Wait for the FIFO to empty completely, not DONE, because we may not complete the - // transaction with a write. - while (self->peripheral->S_b.ERR == 0 && - ((!transmit_stop_bit && self->peripheral->S_b.TXE == 0) || - (transmit_stop_bit && self->peripheral->S_b.TA == 1))) { - RUN_BACKGROUND_TASKS; - } - self->finish_write = false; - if (self->peripheral->S_b.ERR) { - // Wait for the transfer to finish. - while (self->peripheral->S_b.TA == 1) { - RUN_BACKGROUND_TASKS; - } - // Clear the flag by writing it and wait for it to clear. - self->peripheral->S_b.ERR = true; - while (self->peripheral->S_b.ERR == 1) { - RUN_BACKGROUND_TASKS; - } - return MP_ENODEV; - } - - if (loop_len < len) { - self->finish_write = true; - self->last_write_data = data[len - 1]; - } - return 0; -} - -uint8_t common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, - const uint8_t *data, size_t len) { - return _common_hal_busio_i2c_write(self, addr, data, len, true); -} - -uint8_t common_hal_busio_i2c_read(busio_i2c_obj_t *self, uint16_t addr, - uint8_t *data, size_t len) { - COMPLETE_MEMORY_READS; - self->peripheral->A_b.ADDR = addr; - if (self->finish_write) { - self->finish_write = false; - if (self->peripheral->S_b.ERR == 1) { - return MP_ENODEV; - } - self->peripheral->FIFO_b.DATA = self->last_write_data; - } else { - self->peripheral->S_b.DONE = true; - } - self->peripheral->DLEN_b.DLEN = len; - self->peripheral->C = BSC0_C_READ_Msk | BSC0_C_ST_Msk | BSC0_C_I2CEN_Msk; - // Wait for the transaction to start. - while (self->peripheral->S_b.TA == 0) { - RUN_BACKGROUND_TASKS; - } - for (size_t i = 0; i < len; i++) { - if (self->peripheral->S_b.ERR) { - break; - } - // Wait for the FIFO to have enough data that we can read it. RXR is low - // once the transaction is done so we check the done bit too. - while (!self->peripheral->S_b.RXR && !self->peripheral->S_b.DONE) { - RUN_BACKGROUND_TASKS; - } - data[i] = self->peripheral->FIFO_b.DATA; - } - // Wait for the transaction to finish. - while (!self->peripheral->S_b.DONE && !self->peripheral->S_b.ERR) { - RUN_BACKGROUND_TASKS; - } - if (self->peripheral->S_b.ERR) { - self->peripheral->S_b.ERR = true; - while (self->peripheral->S_b.ERR == 1) { - RUN_BACKGROUND_TASKS; - } - return MP_ENODEV; - } - - return 0; -} - -uint8_t common_hal_busio_i2c_write_read(busio_i2c_obj_t *self, uint16_t addr, - uint8_t *out_data, size_t out_len, uint8_t *in_data, size_t in_len) { - uint8_t result = _common_hal_busio_i2c_write(self, addr, out_data, out_len, false); - if (result != 0) { - return result; - } - - return common_hal_busio_i2c_read(self, addr, in_data, in_len); -} - -void common_hal_busio_i2c_never_reset(busio_i2c_obj_t *self) { - never_reset_i2c[self->index] = true; - - common_hal_never_reset_pin(self->scl_pin); - common_hal_never_reset_pin(self->sda_pin); -} diff --git a/ports/broadcom/common-hal/busio/I2C.h b/ports/broadcom/common-hal/busio/I2C.h deleted file mode 100644 index 11416c0203fa9..0000000000000 --- a/ports/broadcom/common-hal/busio/I2C.h +++ /dev/null @@ -1,27 +0,0 @@ -// 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 - -#pragma once - -#include "common-hal/microcontroller/Pin.h" - -#include "py/obj.h" - -#include "peripherals/broadcom/defines.h" -#include "peripherals/broadcom/gpio.h" - -typedef struct { - mp_obj_base_t base; - const mcu_pin_obj_t *scl_pin; - const mcu_pin_obj_t *sda_pin; - BSC0_Type *peripheral; - uint8_t index; - bool has_lock; - bool finish_write; - uint8_t last_write_data; -} busio_i2c_obj_t; - -void reset_i2c(void); diff --git a/ports/broadcom/common-hal/busio/SPI.c b/ports/broadcom/common-hal/busio/SPI.c deleted file mode 100644 index f573d7b032991..0000000000000 --- a/ports/broadcom/common-hal/busio/SPI.c +++ /dev/null @@ -1,328 +0,0 @@ -// 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 "shared-bindings/busio/SPI.h" - -#include "shared/runtime/interrupt_char.h" -#include "py/mperrno.h" -#include "py/runtime.h" - -#include "supervisor/board.h" -#include "common-hal/microcontroller/Pin.h" -#include "shared-bindings/microcontroller/Pin.h" - -#include "peripherals/broadcom/cpu.h" -#include "peripherals/broadcom/defines.h" -#include "peripherals/broadcom/gpio.h" -#include "peripherals/broadcom/pins.h" -#include "peripherals/broadcom/vcmailbox.h" - -#if BCM_VERSION == 2711 -#define NUM_SPI (7) -static SPI0_Type *spi[NUM_SPI] = {SPI0, NULL, NULL, SPI3, SPI4, SPI5, SPI6}; -static SPI1_Type *aux_spi[NUM_SPI] = {NULL, SPI1, SPI2, NULL, NULL, NULL, NULL}; -#else -#define NUM_SPI (3) -static SPI0_Type *spi[NUM_SPI] = {SPI0, NULL, NULL}; -static SPI1_Type *aux_spi[NUM_SPI] = {NULL, SPI1, SPI2}; -#endif - -static bool never_reset_spi[NUM_SPI]; -static bool spi_in_use[NUM_SPI]; - -void reset_spi(void) { - for (size_t i = 0; i < NUM_SPI; i++) { - if (never_reset_spi[i]) { - continue; - } - - if (i == 1 || i == 2) { - if (i == 1) { - AUX->ENABLES_b.SPI_1 = false; - } else { - AUX->ENABLES_b.SPI_2 = false; - } - aux_spi[i]->CNTL0 = 0; - } else { - // Set CS back to default. All 0 except read enable. - spi[i]->CS = SPI0_CS_REN_Msk; - } - - spi_in_use[i] = false; - } -} - -void common_hal_busio_spi_construct(busio_spi_obj_t *self, - const mcu_pin_obj_t *clock, const mcu_pin_obj_t *mosi, - const mcu_pin_obj_t *miso, bool half_duplex) { - size_t instance_index = NUM_SPI; - BP_Function_Enum clock_alt = 0; - BP_Function_Enum mosi_alt = 0; - BP_Function_Enum miso_alt = 0; - - if (half_duplex) { - mp_raise_NotImplementedError(MP_ERROR_TEXT("Half duplex SPI is not implemented")); - } - - // BCM_VERSION != 2711 have 3 SPI but as listed in peripherals/gen/pins.c two are on - // index 0, once one index 0 SPI is found the other will throw an invalid_pins error. - for (size_t i = 0; i < NUM_SPI; i++) { - if (spi_in_use[i]) { - continue; - } - if (!pin_find_alt(clock, PIN_FUNCTION_SPI, i, SPI_FUNCTION_SCLK, &clock_alt)) { - continue; - } - if (mosi != NULL && !pin_find_alt(mosi, PIN_FUNCTION_SPI, i, SPI_FUNCTION_MOSI, &mosi_alt)) { - continue; - } - if (miso != NULL && !pin_find_alt(miso, PIN_FUNCTION_SPI, i, SPI_FUNCTION_MISO, &miso_alt)) { - continue; - } - instance_index = i; - break; - } - if (instance_index == NUM_SPI) { - raise_ValueError_invalid_pins(); - } - - self->clock = clock; - self->MOSI = mosi; - self->MISO = miso; - self->index = instance_index; - spi_in_use[instance_index] = true; - - - if (instance_index == 1) { - AUX->ENABLES_b.SPI_1 = true; - } else if (instance_index == 2) { - AUX->ENABLES_b.SPI_2 = true; - } - - common_hal_busio_spi_configure(self, 250000, 0, 0, 8); - - COMPLETE_MEMORY_READS; - gpio_set_pull(clock->number, BP_PULL_NONE); - gpio_set_function(clock->number, clock_alt); - if (mosi != NULL) { - gpio_set_pull(mosi->number, BP_PULL_NONE); - gpio_set_function(mosi->number, mosi_alt); - } - if (miso != NULL) { - gpio_set_pull(miso->number, BP_PULL_NONE); - gpio_set_function(miso->number, miso_alt); - } -} - -void common_hal_busio_spi_never_reset(busio_spi_obj_t *self) { - never_reset_spi[self->index] = true; - - common_hal_never_reset_pin(self->clock); - common_hal_never_reset_pin(self->MOSI); - common_hal_never_reset_pin(self->MISO); -} - -bool common_hal_busio_spi_deinited(busio_spi_obj_t *self) { - return self->clock == NULL; -} - -void common_hal_busio_spi_deinit(busio_spi_obj_t *self) { - if (common_hal_busio_spi_deinited(self)) { - return; - } - never_reset_spi[self->index] = false; - - common_hal_reset_pin(self->clock); - common_hal_reset_pin(self->MOSI); - common_hal_reset_pin(self->MISO); - self->clock = NULL; - spi_in_use[self->index] = false; - - if (self->index == 1 || - self->index == 2) { - aux_spi[self->index]->CNTL0_b.ENABLE = false; - if (self->index == 1) { - AUX->ENABLES_b.SPI_1 = false; - } else if (self->index == 2) { - AUX->ENABLES_b.SPI_2 = false; - } - } -} - -bool common_hal_busio_spi_configure(busio_spi_obj_t *self, - uint32_t baudrate, uint8_t polarity, uint8_t phase, uint8_t bits) { - if (baudrate == self->target_frequency && - polarity == self->polarity && - phase == self->phase && - bits == self->bits) { - return true; - } - - if (self->index == 1 || self->index == 2) { - SPI1_Type *p = aux_spi[self->index]; - uint32_t source_clock = vcmailbox_get_clock_rate(VCMAILBOX_CLOCK_CORE); - uint16_t clock_divider = source_clock / baudrate; - if (source_clock % baudrate > 0) { - clock_divider += 2; - } - - p->CNTL0 = (clock_divider / 2 - 1) << SPI1_CNTL0_SPEED_Pos | - SPI1_CNTL0_ENABLE_Msk | - SPI1_CNTL0_MSB_FIRST_Msk | - (polarity == 1? SPI1_CNTL0_INVERT_CLK_Msk : 0) | - (phase == polarity? SPI1_CNTL0_IN_RISING_Msk : SPI1_CNTL0_OUT_RISING_Msk) | - 8 << SPI1_CNTL0_SHIFT_LENGTH_Pos; - p->CNTL1 = SPI1_CNTL1_MSB_FIRST_Msk; - self->real_frequency = source_clock / clock_divider; - } else { - SPI0_Type *p = spi[self->index]; - p->CS = polarity << SPI0_CS_CPOL_Pos | - phase << SPI0_CS_CPHA_Pos; - uint32_t source_clock = vcmailbox_get_clock_rate(VCMAILBOX_CLOCK_CORE); - uint16_t clock_divider = source_clock / baudrate; - if (source_clock % baudrate > 0) { - clock_divider += 2; - } - - p->CLK = clock_divider; - self->real_frequency = source_clock / clock_divider; - } - - self->polarity = polarity; - self->phase = phase; - self->bits = bits; - self->target_frequency = baudrate; - - return true; -} - -bool common_hal_busio_spi_try_lock(busio_spi_obj_t *self) { - bool grabbed_lock = false; - if (!self->has_lock) { - grabbed_lock = true; - self->has_lock = true; - } - return grabbed_lock; -} - -bool common_hal_busio_spi_has_lock(busio_spi_obj_t *self) { - return self->has_lock; -} - -void common_hal_busio_spi_unlock(busio_spi_obj_t *self) { - self->has_lock = false; -} - -static void _spi_transfer(SPI0_Type *p, - const uint8_t *data_out, size_t out_len, - uint8_t *data_in, size_t in_len) { - size_t len = MAX(out_len, in_len); - COMPLETE_MEMORY_READS; - p->DLEN = len; - p->CS |= SPI0_CS_TA_Msk | SPI0_CS_CLEAR_Msk; - size_t in = 0; - size_t out = 0; - while (in < len) { - while (out < len && p->CS_b.TXD == 1) { - if (out_len == 1) { - p->FIFO = data_out[0]; - } else { - p->FIFO = data_out[out]; - } - out++; - } - // Wait for data to read (also means data has been sent.) - while (p->CS_b.RXD == 0) { - RUN_BACKGROUND_TASKS; - } - while (p->CS_b.RXD == 1) { - uint8_t data = p->FIFO; - if (data_in != NULL) { - data_in[in] = data; - } else { - (void)data; - } - in++; - } - } - p->CS_b.TA = false; - COMPLETE_MEMORY_READS; -} - -static void _aux_spi_transfer(SPI1_Type *p, - const uint8_t *data_out, size_t out_len, - uint8_t *data_in, size_t in_len) { - size_t len = MAX(out_len, in_len); - p->CNTL0 |= SPI1_CNTL0_CLEAR_FIFOS_Msk; - p->CNTL0 &= ~SPI1_CNTL0_CLEAR_FIFOS_Msk; - size_t in = 0; - size_t out = 0; - while (in < len) { - while (out < len && p->STAT_b.TX_FULL == 0) { - if (out_len == 1) { - p->TXHOLD0 = data_out[0] << 24; - } else { - p->TXHOLD0 = data_out[out] << 24; - } - out++; - } - // Wait for data to read (also means data has been sent.) - while (p->STAT_b.RX_EMPTY == 1) { - RUN_BACKGROUND_TASKS; - } - while (p->STAT_b.RX_EMPTY == 0) { - uint8_t data = p->TXHOLD0; - if (data_in != NULL) { - data_in[in] = data; - } else { - (void)data; - } - in++; - } - } -} - -bool common_hal_busio_spi_write(busio_spi_obj_t *self, - const uint8_t *data, size_t len) { - if (self->index == 1 || self->index == 2) { - _aux_spi_transfer(aux_spi[self->index], data, len, NULL, 0); - } else { - _spi_transfer(spi[self->index], data, len, NULL, 0); - } - return true; -} - -bool common_hal_busio_spi_read(busio_spi_obj_t *self, - uint8_t *data, size_t len, uint8_t write_value) { - if (self->index == 1 || self->index == 2) { - _aux_spi_transfer(aux_spi[self->index], &write_value, 1, data, len); - } else { - _spi_transfer(spi[self->index], &write_value, 1, data, len); - } - return true; -} - -bool common_hal_busio_spi_transfer(busio_spi_obj_t *self, - const uint8_t *data_out, uint8_t *data_in, size_t len) { - if (self->index == 1 || self->index == 2) { - _aux_spi_transfer(aux_spi[self->index], data_out, len, data_in, len); - } else { - _spi_transfer(spi[self->index], data_out, len, data_in, len); - } - return true; -} - -uint32_t common_hal_busio_spi_get_frequency(busio_spi_obj_t *self) { - return self->real_frequency; -} - -uint8_t common_hal_busio_spi_get_phase(busio_spi_obj_t *self) { - return self->phase; -} - -uint8_t common_hal_busio_spi_get_polarity(busio_spi_obj_t *self) { - return self->polarity; -} diff --git a/ports/broadcom/common-hal/busio/SPI.h b/ports/broadcom/common-hal/busio/SPI.h deleted file mode 100644 index aec91263677c0..0000000000000 --- a/ports/broadcom/common-hal/busio/SPI.h +++ /dev/null @@ -1,27 +0,0 @@ -// 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 - -#pragma once - -#include "common-hal/microcontroller/Pin.h" - -#include "py/obj.h" - -typedef struct { - mp_obj_base_t base; - bool has_lock; - const mcu_pin_obj_t *clock; - const mcu_pin_obj_t *MOSI; - const mcu_pin_obj_t *MISO; - uint32_t target_frequency; - int32_t real_frequency; - uint8_t polarity; - uint8_t phase; - uint8_t bits; - uint8_t index; -} busio_spi_obj_t; - -void reset_spi(void); diff --git a/ports/broadcom/common-hal/busio/UART.c b/ports/broadcom/common-hal/busio/UART.c deleted file mode 100644 index 55c890475eb65..0000000000000 --- a/ports/broadcom/common-hal/busio/UART.c +++ /dev/null @@ -1,489 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2021 microDev -// -// SPDX-License-Identifier: MIT - -#include "shared-bindings/busio/UART.h" - -#include "py/stream.h" -#include "py/mperrno.h" -#include "py/runtime.h" -#include "supervisor/shared/tick.h" -#include "shared/runtime/interrupt_char.h" -#include "shared-bindings/microcontroller/Pin.h" - -#include "peripherals/broadcom/cpu.h" -#include "peripherals/broadcom/defines.h" -#include "peripherals/broadcom/gpio.h" -#include "peripherals/broadcom/interrupts.h" -#include "peripherals/broadcom/vcmailbox.h" - -#define NO_PIN 0xff - -// UART1 is a different peripheral than the rest so it is hardcoded below. -#if BCM_VERSION == 2711 -#define NUM_UART (6) -static ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL, UART2, UART3, UART4, UART5}; -#else -#define NUM_UART (2) -static ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL}; -#endif - -typedef enum { - STATUS_FREE = 0, - STATUS_BUSY, - STATUS_NEVER_RESET -} uart_status_t; - -static uart_status_t uart_status[NUM_UART]; -static busio_uart_obj_t *active_uart[NUM_UART]; - -void reset_uart(void) { - bool any_pl011_active = false; - for (uint8_t num = 0; num < NUM_UART; num++) { - if (uart_status[num] == STATUS_BUSY) { - if (num == 1) { - UART1->IER_b.DATA_READY = false; - UART1->CNTL = 0; - COMPLETE_MEMORY_READS; - AUX->ENABLES_b.UART_1 = false; - } else { - ARM_UART_PL011_Type *pl011 = uart[num]; - pl011->CR = 0; - } - active_uart[num] = NULL; - uart_status[num] = STATUS_FREE; - } else { - any_pl011_active = any_pl011_active || (num != 1 && uart_status[num] == STATUS_NEVER_RESET); - } - } - if (!any_pl011_active) { - BP_DisableIRQ(UART_IRQn); - } - COMPLETE_MEMORY_READS; - if (AUX->ENABLES == 0) { - BP_DisableIRQ(AUX_IRQn); - } -} - -static void fetch_all_from_fifo(busio_uart_obj_t *self) { - if (self->uart_id == 1) { - while (UART1->STAT_b.DATA_READY && ringbuf_num_empty(&self->ringbuf) > 0) { - int c = UART1->IO_b.DATA; - if (self->sigint_enabled && c == mp_interrupt_char) { - mp_sched_keyboard_interrupt(); - continue; - } - ringbuf_put(&self->ringbuf, c); - } - } else { - ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; - while (!pl011->FR_b.RXFE && ringbuf_num_empty(&self->ringbuf) > 0) { - int c = pl011->DR_b.DATA; - if (self->sigint_enabled && c == mp_interrupt_char) { - mp_sched_keyboard_interrupt(); - continue; - } - ringbuf_put(&self->ringbuf, c); - } - } -} - -void UART1_IRQHandler(void) { - fetch_all_from_fifo(active_uart[1]); - // We couldn't read all pending data (overrun) so clear the FIFO so that the interrupt - // can finish. - if (UART1->STAT_b.DATA_READY) { - UART1->IIR_b.DATA_READY = 1; - } -} - -void pl011_IRQHandler(uint8_t index) { - fetch_all_from_fifo(active_uart[index]); - // Clear the interrupt in case we weren't able to clear it by emptying the - // FIFO. (This won't clear the FIFO.) - ARM_UART_PL011_Type *pl011 = uart[index]; - pl011->ICR = ARM_UART_PL011_ICR_RXIC_Msk; -} - -void UART0_IRQHandler(void) { - pl011_IRQHandler(0); -} - -#if BCM_VERSION == 2711 -void UART2_IRQHandler(void) { - pl011_IRQHandler(2); -} -void UART3_IRQHandler(void) { - pl011_IRQHandler(3); -} -void UART4_IRQHandler(void) { - pl011_IRQHandler(4); -} -void UART5_IRQHandler(void) { - pl011_IRQHandler(5); -} -#endif - -void common_hal_busio_uart_never_reset(busio_uart_obj_t *self) { - uart_status[self->uart_id] = STATUS_NEVER_RESET; - common_hal_never_reset_pin(self->tx_pin); - common_hal_never_reset_pin(self->rx_pin); - common_hal_never_reset_pin(self->cts_pin); - common_hal_never_reset_pin(self->rts_pin); -} - -void common_hal_busio_uart_construct(busio_uart_obj_t *self, - const mcu_pin_obj_t *tx, const mcu_pin_obj_t *rx, - const mcu_pin_obj_t *rts, const mcu_pin_obj_t *cts, - const mcu_pin_obj_t *rs485_dir, bool rs485_invert, - uint32_t baudrate, uint8_t bits, busio_uart_parity_t parity, uint8_t stop, - mp_float_t timeout, uint16_t receiver_buffer_size, byte *receiver_buffer, - bool sigint_enabled) { - - mp_arg_validate_int_max(bits, 8, MP_QSTR_bits); - mp_arg_validate_int_min(receiver_buffer_size, 1, MP_QSTR_receiver_buffer_size); - - if ((rs485_dir != NULL) || (rs485_invert)) { - mp_raise_NotImplementedError(MP_ERROR_TEXT("RS485 Not yet supported on this device")); - } - - size_t instance_index = NUM_UART; - BP_Function_Enum tx_alt = 0; - BP_Function_Enum rx_alt = 0; - BP_Function_Enum rts_alt = 0; - BP_Function_Enum cts_alt = 0; - for (size_t i = 0; i < NUM_UART; i++) { - if (uart_status[i] != STATUS_FREE) { - continue; - } - if (tx != NULL) { - if (!pin_find_alt(tx, PIN_FUNCTION_UART, i, UART_FUNCTION_TXD, &tx_alt)) { - continue; - } - if (rts != NULL && !pin_find_alt(rts, PIN_FUNCTION_UART, i, UART_FUNCTION_RTS, &rts_alt)) { - continue; - } - } - if (rx != NULL) { - if (!pin_find_alt(rx, PIN_FUNCTION_UART, i, UART_FUNCTION_RXD, &rx_alt)) { - continue; - } - if (cts != NULL && !pin_find_alt(cts, PIN_FUNCTION_UART, i, UART_FUNCTION_CTS, &cts_alt)) { - continue; - } - } - instance_index = i; - break; - } - if (instance_index == NUM_UART) { - raise_ValueError_invalid_pins(); - } - - self->rx_pin = rx; - self->tx_pin = tx; - self->rts_pin = rts; - self->cts_pin = cts; - self->sigint_enabled = sigint_enabled; - - if (rx != NULL) { - // Use the provided buffer when given. - if (receiver_buffer != NULL) { - ringbuf_init(&self->ringbuf, receiver_buffer, receiver_buffer_size); - } else { - if (!ringbuf_alloc(&self->ringbuf, receiver_buffer_size)) { - m_malloc_fail(receiver_buffer_size); - } - } - } - - active_uart[self->uart_id] = self; - - ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; - - if (self->uart_id == 1) { - AUX->ENABLES_b.UART_1 = true; - - UART1->IER = 0; - UART1->CNTL = 0; - if (bits == 8) { - UART1->LCR_b.DATA_SIZE = UART1_LCR_DATA_SIZE_MODE_8BIT; - } else if (bits == 7) { - UART1->LCR_b.DATA_SIZE = UART1_LCR_DATA_SIZE_MODE_7BIT; - } - UART1->MCR = 0; - UART1->IER = 0; - - // Clear interrupts - UART1->IIR = 0xff; - common_hal_busio_uart_set_baudrate(self, baudrate); - if (tx != NULL) { - UART1->CNTL |= UART1_CNTL_TX_ENABLE_Msk; - } - if (rx != NULL) { - UART1->CNTL |= UART1_CNTL_RX_ENABLE_Msk; - } - } else { - // Ensure the UART is disabled as we configure it. - pl011->CR_b.UARTEN = false; - pl011->IMSC = 0; - pl011->ICR = 0x3ff; - - common_hal_busio_uart_set_baudrate(self, baudrate); - - uint32_t line_control = ARM_UART_PL011_LCR_H_FEN_Msk; - line_control |= (bits - 5) << ARM_UART_PL011_LCR_H_WLEN_Pos; - if (stop == 2) { - line_control |= ARM_UART_PL011_LCR_H_STP2_Msk; - } - if (parity != BUSIO_UART_PARITY_NONE) { - line_control |= ARM_UART_PL011_LCR_H_PEN_Msk; - } - if (parity == BUSIO_UART_PARITY_EVEN) { - line_control |= ARM_UART_PL011_LCR_H_EPS_Msk; - } - pl011->LCR_H = line_control; - - uint32_t control = ARM_UART_PL011_CR_UARTEN_Msk; - if (tx != NULL) { - control |= ARM_UART_PL011_CR_TXE_Msk; - } - if (rx != NULL) { - control |= ARM_UART_PL011_CR_RXE_Msk; - } - if (cts != NULL) { - control |= ARM_UART_PL011_CR_CTSEN_Msk; - } - if (rts != NULL) { - control |= ARM_UART_PL011_CR_RTSEN_Msk; - } - pl011->CR = control; - } - - // Setup the pins after waiting for UART stuff - COMPLETE_MEMORY_READS; - if (tx != NULL) { - gpio_set_pull(tx->number, BP_PULL_NONE); - gpio_set_function(tx->number, tx_alt); - } - if (rx != NULL) { - gpio_set_pull(rx->number, BP_PULL_NONE); - gpio_set_function(rx->number, rx_alt); - } - if (rts != NULL) { - gpio_set_pull(rts->number, BP_PULL_NONE); - gpio_set_function(rts->number, rts_alt); - } - if (cts != NULL) { - gpio_set_pull(cts->number, BP_PULL_NONE); - gpio_set_function(cts->number, cts_alt); - } - - // Turn on interrupts - COMPLETE_MEMORY_READS; - if (self->uart_id == 1) { - UART1->IER_b.DATA_READY = true; - // Never disable this in case the SPIs are used. They can each be - // disabled at the peripheral itself. - BP_EnableIRQ(AUX_IRQn); - } else { - pl011->IMSC_b.RXIM = true; - // Never disable this in case the other PL011 UARTs are used. - BP_EnableIRQ(UART_IRQn); - } -} - -bool common_hal_busio_uart_deinited(busio_uart_obj_t *self) { - return self->tx_pin == NULL && self->rx_pin == NULL; -} - -void common_hal_busio_uart_deinit(busio_uart_obj_t *self) { - if (common_hal_busio_uart_deinited(self)) { - return; - } - if (self->uart_id == 1) { - UART1->IER_b.DATA_READY = false; - UART1->CNTL = 0; - AUX->ENABLES_b.UART_1 = false; - } else { - ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; - pl011->CR = 0; - } - active_uart[self->uart_id] = NULL; - ringbuf_deinit(&self->ringbuf); - uart_status[self->uart_id] = STATUS_FREE; - common_hal_reset_pin(self->tx_pin); - common_hal_reset_pin(self->rx_pin); - common_hal_reset_pin(self->cts_pin); - common_hal_reset_pin(self->rts_pin); - self->tx_pin = NULL; - self->rx_pin = NULL; - self->cts_pin = NULL; - self->rts_pin = NULL; -} - -// Write characters. -size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data, size_t len, int *errcode) { - if (self->tx_pin == NULL) { - mp_raise_ValueError_varg(MP_ERROR_TEXT("No %q pin"), MP_QSTR_tx); - } - - COMPLETE_MEMORY_READS; - ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; - for (size_t i = 0; i < len; i++) { - if (self->uart_id == 1) { - // Wait for the FIFO to have space. - while (!UART1->STAT_b.TX_READY) { - RUN_BACKGROUND_TASKS; - } - UART1->IO = data[i]; - } else { - while (pl011->FR_b.TXFF) { - RUN_BACKGROUND_TASKS; - } - pl011->DR_b.DATA = data[i]; - } - } - // Wait for the data to be shifted out - if (self->uart_id == 1) { - while (!UART1->STAT_b.TX_DONE) { - RUN_BACKGROUND_TASKS; - } - } else { - while (pl011->FR_b.BUSY) { - RUN_BACKGROUND_TASKS; - } - } - COMPLETE_MEMORY_READS; - return len; -} - -static void disable_interrupt(busio_uart_obj_t *self) { - if (self->uart_id == 1) { - UART1->IER_b.DATA_READY = false; - } -} - -static void enable_interrupt(busio_uart_obj_t *self) { - if (self->uart_id == 1) { - UART1->IER_b.DATA_READY = true; - } -} - -// Read characters. -size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t len, int *errcode) { - if (self->rx_pin == NULL) { - mp_raise_ValueError_varg(MP_ERROR_TEXT("No %q pin"), MP_QSTR_rx); - } - - if (len == 0) { - // Nothing to read. - return 0; - } - COMPLETE_MEMORY_READS; - - // Prevent conflict with uart irq. - disable_interrupt(self); - - // Copy as much received data as available, up to len bytes. - size_t total_read = ringbuf_get_n(&self->ringbuf, data, len); - - // Check if we still need to read more data. - if (len > total_read) { - len -= total_read; - uint64_t start_ticks = supervisor_ticks_ms64(); - // Busy-wait until timeout or until we've read enough chars. - while (len > 0 && (supervisor_ticks_ms64() - start_ticks < self->timeout_ms)) { - fetch_all_from_fifo(self); - size_t additional_read = ringbuf_get_n(&self->ringbuf, data + total_read, len); - len -= additional_read; - total_read += additional_read; - if (additional_read > 0) { - // Reset the timeout on every character read. - start_ticks = supervisor_ticks_ms64(); - } - RUN_BACKGROUND_TASKS; - // Allow user to break out of a timeout with a KeyboardInterrupt. - if (mp_hal_is_interrupted()) { - break; - } - } - } - - // Now that we've emptied the ringbuf some, fill it up with anything in the - // FIFO. This ensures that we'll empty the FIFO as much as possible and - // reset the interrupt when we catch up. - fetch_all_from_fifo(self); - - // Re-enable irq. - enable_interrupt(self); - - COMPLETE_MEMORY_READS; - if (total_read == 0) { - *errcode = EAGAIN; - return MP_STREAM_ERROR; - } - - return total_read; -} - -uint32_t common_hal_busio_uart_get_baudrate(busio_uart_obj_t *self) { - return self->baudrate; -} - -void common_hal_busio_uart_set_baudrate(busio_uart_obj_t *self, uint32_t baudrate) { - if (self->uart_id == 1) { - uint32_t source_clock = vcmailbox_get_clock_rate(VCMAILBOX_CLOCK_CORE); - UART1->BAUD = ((source_clock / (baudrate * 8)) - 1); - } else { - ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; - bool reenable = false; - if (pl011->CR_b.UARTEN) { - pl011->CR_b.UARTEN = false; - reenable = true; - } - uint32_t source_clock = vcmailbox_get_clock_rate_measured(VCMAILBOX_CLOCK_UART); - uint32_t divisor = 16 * baudrate; - pl011->IBRD = source_clock / divisor; - // The fractional divisor is 64ths. - uint32_t remainder = source_clock % divisor; - uint32_t per_tick = (divisor / 64) + 1; - uint32_t adjust = 0; - if (remainder % per_tick > 0) { - adjust = 1; - } - pl011->FBRD = remainder / per_tick + adjust; - if (reenable) { - pl011->CR_b.UARTEN = true; - } - } - self->baudrate = baudrate; -} - -mp_float_t common_hal_busio_uart_get_timeout(busio_uart_obj_t *self) { - return (mp_float_t)(self->timeout_ms / 1000.0L); -} - -void common_hal_busio_uart_set_timeout(busio_uart_obj_t *self, mp_float_t timeout) { - self->timeout_ms = timeout * 1000; -} - -uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) { - fetch_all_from_fifo(self); - return ringbuf_num_filled(&self->ringbuf); -} - -void common_hal_busio_uart_clear_rx_buffer(busio_uart_obj_t *self) { - ringbuf_clear(&self->ringbuf); -} - -bool common_hal_busio_uart_ready_to_tx(busio_uart_obj_t *self) { - if (self->tx_pin == NULL) { - return false; - } - if (self->uart_id == 1) { - return UART1->STAT_b.TX_READY; - } - return !uart[self->uart_id]->FR_b.TXFF; -} diff --git a/ports/broadcom/common-hal/busio/UART.h b/ports/broadcom/common-hal/busio/UART.h deleted file mode 100644 index 866e64c4855d5..0000000000000 --- a/ports/broadcom/common-hal/busio/UART.h +++ /dev/null @@ -1,25 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2021 microDev -// -// SPDX-License-Identifier: MIT - -#pragma once - -#include "py/obj.h" -#include "py/ringbuf.h" - -typedef struct { - mp_obj_base_t base; - const mcu_pin_obj_t *tx_pin; - const mcu_pin_obj_t *rx_pin; - const mcu_pin_obj_t *cts_pin; - const mcu_pin_obj_t *rts_pin; - uint32_t baudrate; - uint32_t timeout_ms; - ringbuf_t ringbuf; - bool sigint_enabled; - uint8_t uart_id; -} busio_uart_obj_t; - -extern void reset_uart(void); diff --git a/ports/broadcom/common-hal/busio/__init__.c b/ports/broadcom/common-hal/busio/__init__.c deleted file mode 100644 index b726684324a3c..0000000000000 --- a/ports/broadcom/common-hal/busio/__init__.c +++ /dev/null @@ -1,7 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC -// -// SPDX-License-Identifier: MIT - -// No busio module functions. diff --git a/ports/broadcom/common-hal/digitalio/DigitalInOut.c b/ports/broadcom/common-hal/digitalio/DigitalInOut.c deleted file mode 100644 index b2b0aae404bd0..0000000000000 --- a/ports/broadcom/common-hal/digitalio/DigitalInOut.c +++ /dev/null @@ -1,144 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries -// -// SPDX-License-Identifier: MIT - -#include -#include - -#include "py/runtime.h" -#include "py/mphal.h" - -#include "common-hal/microcontroller/Pin.h" -#include "shared-bindings/digitalio/DigitalInOut.h" - -#include "peripherals/broadcom/gpio.h" - -digitalinout_result_t common_hal_digitalio_digitalinout_construct( - digitalio_digitalinout_obj_t *self, const mcu_pin_obj_t *pin) { - claim_pin(pin); - self->pin = pin; - self->output = false; - self->open_drain = false; - - return DIGITALINOUT_OK; -} - -void common_hal_digitalio_digitalinout_never_reset( - digitalio_digitalinout_obj_t *self) { - never_reset_pin_number(self->pin->number); -} - -bool common_hal_digitalio_digitalinout_deinited(digitalio_digitalinout_obj_t *self) { - return self->pin == NULL; -} - -void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t *self) { - if (common_hal_digitalio_digitalinout_deinited(self)) { - return; - } - reset_pin_number(self->pin->number); - self->pin = NULL; -} - -digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_input( - digitalio_digitalinout_obj_t *self, digitalio_pull_t pull) { - self->output = false; - // This also sets direction to input. - common_hal_digitalio_digitalinout_set_pull(self, pull); - return DIGITALINOUT_OK; -} - -digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output( - digitalio_digitalinout_obj_t *self, bool value, - digitalio_drive_mode_t drive_mode) { - const uint8_t pin = self->pin->number; - gpio_set_pull(pin, PULL_NONE); - - self->output = true; - self->open_drain = drive_mode == DRIVE_MODE_OPEN_DRAIN; - - // Pin direction is ultimately set in set_value. We don't need to do it here. - common_hal_digitalio_digitalinout_set_value(self, value); - return DIGITALINOUT_OK; -} - -digitalio_direction_t common_hal_digitalio_digitalinout_get_direction( - digitalio_digitalinout_obj_t *self) { - return self->output ? DIRECTION_OUTPUT : DIRECTION_INPUT; -} - -void common_hal_digitalio_digitalinout_set_value( - digitalio_digitalinout_obj_t *self, bool value) { - const uint8_t pin = self->pin->number; - if (self->open_drain && value) { - // If true and open-drain, set the direction -before- setting - // the pin value, to to avoid a high glitch on the pin before - // switching from output to input for open-drain. - gpio_set_function(pin, GPIO_FUNCTION_INPUT); - gpio_set_value(pin, value); - } else { - // Otherwise set the direction -after- setting the pin value, - // to avoid a glitch which might occur if the old value was - // different and the pin was previously set to input. - gpio_set_value(pin, value); - gpio_set_function(pin, GPIO_FUNCTION_OUTPUT); - } -} - -bool common_hal_digitalio_digitalinout_get_value( - digitalio_digitalinout_obj_t *self) { - return gpio_get_value(self->pin->number); -} - -digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode( - digitalio_digitalinout_obj_t *self, - digitalio_drive_mode_t drive_mode) { - bool value = common_hal_digitalio_digitalinout_get_value(self); - self->open_drain = drive_mode == DRIVE_MODE_OPEN_DRAIN; - // True is implemented differently between modes so reset the value to make - // sure it's correct for the new mode. - if (value) { - common_hal_digitalio_digitalinout_set_value(self, value); - } - return DIGITALINOUT_OK; -} - -digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode( - digitalio_digitalinout_obj_t *self) { - if (self->open_drain) { - return DRIVE_MODE_OPEN_DRAIN; - } else { - return DRIVE_MODE_PUSH_PULL; - } -} - -digitalinout_result_t common_hal_digitalio_digitalinout_set_pull( - digitalio_digitalinout_obj_t *self, digitalio_pull_t pull) { - const uint8_t pin = self->pin->number; - BP_PULL_Enum bp_pull = BP_PULL_NONE; - if (pull == PULL_UP) { - bp_pull = BP_PULL_UP; - } else if (pull == PULL_DOWN) { - bp_pull = BP_PULL_DOWN; - } - gpio_set_pull(pin, bp_pull); - return DIGITALINOUT_OK; -} - -digitalio_pull_t common_hal_digitalio_digitalinout_get_pull( - digitalio_digitalinout_obj_t *self) { - uint32_t pin = self->pin->number; - if (self->output) { - mp_raise_AttributeError(MP_ERROR_TEXT("Cannot get pull while in output mode")); - return PULL_NONE; - } else { - if (gpio_get_pull(pin) == BP_PULL_UP) { - return PULL_UP; - } else if (gpio_get_pull(pin) == BP_PULL_DOWN) { - return PULL_DOWN; - } - } - return PULL_NONE; -} diff --git a/ports/broadcom/common-hal/digitalio/DigitalInOut.h b/ports/broadcom/common-hal/digitalio/DigitalInOut.h deleted file mode 100644 index 69520a92bff30..0000000000000 --- a/ports/broadcom/common-hal/digitalio/DigitalInOut.h +++ /dev/null @@ -1,17 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries -// -// SPDX-License-Identifier: MIT - -#pragma once - -#include "common-hal/microcontroller/Pin.h" -#include "py/obj.h" - -typedef struct { - mp_obj_base_t base; - const mcu_pin_obj_t *pin; - bool output; - bool open_drain; -} digitalio_digitalinout_obj_t; diff --git a/ports/broadcom/common-hal/digitalio/__init__.c b/ports/broadcom/common-hal/digitalio/__init__.c deleted file mode 100644 index fa222ed01f03d..0000000000000 --- a/ports/broadcom/common-hal/digitalio/__init__.c +++ /dev/null @@ -1,7 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC -// -// SPDX-License-Identifier: MIT - -// No digitalio module functions. diff --git a/ports/broadcom/common-hal/microcontroller/Pin.c b/ports/broadcom/common-hal/microcontroller/Pin.c deleted file mode 100644 index be5c0ff621088..0000000000000 --- a/ports/broadcom/common-hal/microcontroller/Pin.c +++ /dev/null @@ -1,89 +0,0 @@ -// 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 "shared-bindings/microcontroller/Pin.h" - -#include "peripherals/broadcom/gpio.h" - -static bool pin_in_use[BCM_PIN_COUNT]; -static bool never_reset_pin[BCM_PIN_COUNT]; - -void reset_all_pins(void) { - for (size_t i = 0; i < BCM_PIN_COUNT; i++) { - if (never_reset_pin[i]) { - continue; - } - reset_pin_number(i); - } -} - -void never_reset_pin_number(uint8_t pin_number) { - never_reset_pin[pin_number] = true; -} - -void reset_pin_number(uint8_t pin_number) { - pin_in_use[pin_number] = false; - never_reset_pin[pin_number] = false; - // Reset JTAG pins back to JTAG. - BP_PULL_Enum pull = BP_PULL_NONE; - if (22 <= pin_number && pin_number <= 27) { - gpio_set_function(pin_number, GPIO_FUNCTION_ALT4); - } else { - gpio_set_function(pin_number, GPIO_FUNCTION_INPUT); - } - // Set the pull to match the datasheet. - if (pin_number < 9 || - (33 < pin_number && pin_number < 37) || - pin_number > 45) { - pull = BP_PULL_UP; - } else if (pin_number != 28 && - pin_number != 29 && - pin_number != 44 && - pin_number != 45) { - // Most pins are pulled low so we only exclude the four pins that aren't - // pulled at all. This will also set the JTAG pins 22-27 - pull = BP_PULL_DOWN; - } - gpio_set_pull(pin_number, pull); -} - -void common_hal_never_reset_pin(const mcu_pin_obj_t *pin) { - if (pin == NULL) { - return; - } - never_reset_pin_number(pin->number); -} - -void common_hal_reset_pin(const mcu_pin_obj_t *pin) { - if (pin == NULL) { - return; - } - reset_pin_number(pin->number); -} - -void claim_pin(const mcu_pin_obj_t *pin) { - pin_in_use[pin->number] = true; -} - -bool pin_number_is_free(uint8_t pin_number) { - return !pin_in_use[pin_number]; -} - -bool common_hal_mcu_pin_is_free(const mcu_pin_obj_t *pin) { - return pin_number_is_free(pin->number); -} - -uint8_t common_hal_mcu_pin_number(const mcu_pin_obj_t *pin) { - return pin->number; -} - -void common_hal_mcu_pin_claim(const mcu_pin_obj_t *pin) { - return claim_pin(pin); -} - -void common_hal_mcu_pin_reset_number(uint8_t pin_no) { - reset_pin_number(pin_no); -} diff --git a/ports/broadcom/common-hal/microcontroller/Pin.h b/ports/broadcom/common-hal/microcontroller/Pin.h deleted file mode 100644 index 4e0e2e2e65986..0000000000000 --- a/ports/broadcom/common-hal/microcontroller/Pin.h +++ /dev/null @@ -1,22 +0,0 @@ -// 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 - -#pragma once - -#include -#include - -#include - -#include "peripherals/broadcom/pins.h" - -void reset_all_pins(void); -// reset_pin_number takes the pin number instead of the pointer so that objects don't -// need to store a full pointer. -void reset_pin_number(uint8_t pin_number); -void never_reset_pin_number(uint8_t pin_number); -void claim_pin(const mcu_pin_obj_t *pin); -bool pin_number_is_free(uint8_t pin_number); diff --git a/ports/broadcom/common-hal/microcontroller/Processor.c b/ports/broadcom/common-hal/microcontroller/Processor.c deleted file mode 100644 index 4956604f9b6bb..0000000000000 --- a/ports/broadcom/common-hal/microcontroller/Processor.c +++ /dev/null @@ -1,35 +0,0 @@ -// 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 "shared-bindings/microcontroller/Processor.h" - -#include - -#include "peripherals/broadcom/vcmailbox.h" - -float common_hal_mcu_processor_get_temperature(void) { - uint32_t temp = vcmailbox_get_temperature(); - return temp / 1000.0f; -} - -float common_hal_mcu_processor_get_voltage(void) { - return NAN; -} - -uint32_t common_hal_mcu_processor_get_frequency(void) { - return vcmailbox_get_clock_rate_measured(VCMAILBOX_CLOCK_ARM); -} - -void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) { - uint64_t serial = vcmailbox_get_serial_number(); - for (size_t i = 0; i < sizeof(uint64_t); i++) { - raw_id[i] = (serial >> (64 - ((i + 1) * 8))) & 0xff; - } -} - -mcu_reset_reason_t common_hal_mcu_processor_get_reset_reason(void) { - return RESET_REASON_UNKNOWN; -} diff --git a/ports/broadcom/common-hal/microcontroller/Processor.h b/ports/broadcom/common-hal/microcontroller/Processor.h deleted file mode 100644 index 0c9088f18810b..0000000000000 --- a/ports/broadcom/common-hal/microcontroller/Processor.h +++ /dev/null @@ -1,16 +0,0 @@ -// 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 - -#pragma once - -#include "py/obj.h" - -typedef struct { - mp_obj_base_t base; - // Stores no state currently. -} mcu_processor_obj_t; - -#define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 8 diff --git a/ports/broadcom/common-hal/microcontroller/__init__.c b/ports/broadcom/common-hal/microcontroller/__init__.c deleted file mode 100644 index b0ed1fcb9ec6f..0000000000000 --- a/ports/broadcom/common-hal/microcontroller/__init__.c +++ /dev/null @@ -1,178 +0,0 @@ -// 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 "shared-bindings/microcontroller/__init__.h" - -#include "shared-bindings/microcontroller/Pin.h" -#include "shared-bindings/microcontroller/Processor.h" -#include "common-hal/microcontroller/__init__.h" -#include "peripherals/broadcom/defines.h" -#include "peripherals/broadcom/interrupts.h" - -#include "mphalport.h" - -void common_hal_mcu_delay_us(uint32_t delay) { - mp_hal_delay_us(delay); -} - -volatile uint32_t nesting_count = 0; -void common_hal_mcu_disable_interrupts(void) { - BP_DisableIRQs(); - nesting_count++; -} - -void common_hal_mcu_enable_interrupts(void) { - if (nesting_count == 0) { - // reset_into_safe_mode(SAFE_MODE_INTERRUPT_ERROR); - } - nesting_count--; - if (nesting_count > 0) { - return; - } - BP_EnableIRQs(); -} - -void common_hal_mcu_on_next_reset(mcu_runmode_t runmode) { -} - -void common_hal_mcu_reset(void) { -} - -// The singleton microcontroller.Processor object, bound to microcontroller.cpu -// It currently only has properties, and no state. -#if CIRCUITPY_PROCESSOR_COUNT > 1 -static const mcu_processor_obj_t processor0 = { - .base = { - .type = &mcu_processor_type, - }, -}; - -static const mcu_processor_obj_t processor1 = { - .base = { - .type = &mcu_processor_type, - }, -}; - -static const mcu_processor_obj_t processor2 = { - .base = { - .type = &mcu_processor_type, - }, -}; - -static const mcu_processor_obj_t processor3 = { - .base = { - .type = &mcu_processor_type, - }, -}; - -const mp_rom_obj_tuple_t common_hal_multi_processor_obj = { - {&mp_type_tuple}, - CIRCUITPY_PROCESSOR_COUNT, - { - MP_ROM_PTR(&processor0), - MP_ROM_PTR(&processor1), - MP_ROM_PTR(&processor2), - MP_ROM_PTR(&processor3) - } -}; -#endif - -const mcu_processor_obj_t common_hal_mcu_processor_obj = { - .base = { - .type = &mcu_processor_type, - }, -}; - -#if CIRCUITPY_NVM && CIRCUITPY_INTERNAL_NVM_SIZE > 0 -// The singleton nvm.ByteArray object. -const nvm_bytearray_obj_t common_hal_mcu_nvm_obj = { - .base = { - .type = &nvm_bytearray_type, - }, - .len = CIRCUITPY_INTERNAL_NVM_SIZE, - .start_address = (uint8_t *)(CIRCUITPY_INTERNAL_NVM_START_ADDR) -}; -#endif - -#if CIRCUITPY_WATCHDOG -// The singleton watchdog.WatchDogTimer object. -watchdog_watchdogtimer_obj_t common_hal_mcu_watchdogtimer_obj = { - .base = { - .type = &watchdog_watchdogtimer_type, - }, - .timeout = 0.0f, - .mode = WATCHDOGMODE_NONE, -}; -#endif - -// This maps MCU pin names to pin objects. -#define PIN(num) { MP_ROM_QSTR(MP_QSTR_GPIO##num), MP_ROM_PTR(&pin_GPIO##num) }, -const mp_rom_map_elem_t mcu_pin_global_dict_table[TOTAL_GPIO_COUNT] = { - PIN(0) - PIN(1) - PIN(2) - PIN(3) - PIN(4) - PIN(5) - PIN(6) - PIN(7) - PIN(8) - PIN(9) - PIN(10) - PIN(11) - PIN(12) - PIN(13) - PIN(14) - PIN(15) - PIN(16) - PIN(17) - PIN(18) - PIN(19) - PIN(20) - PIN(21) - PIN(22) - PIN(23) - PIN(24) - PIN(25) - PIN(26) - PIN(27) - PIN(28) - PIN(29) - - PIN(30) - PIN(31) - PIN(32) - PIN(33) - PIN(34) - PIN(35) - PIN(36) - PIN(37) - PIN(38) - PIN(39) - - PIN(40) - PIN(41) - PIN(42) - PIN(43) - PIN(44) - PIN(45) - PIN(46) - PIN(47) - PIN(48) - PIN(49) - - PIN(50) - PIN(51) - PIN(52) - PIN(53) - #if BCM_VERSION == 2711 - PIN(54) - PIN(55) - PIN(56) - PIN(57) - #endif -}; -MP_DEFINE_CONST_DICT(mcu_pin_globals, mcu_pin_global_dict_table); diff --git a/ports/broadcom/common-hal/microcontroller/__init__.h b/ports/broadcom/common-hal/microcontroller/__init__.h deleted file mode 100644 index 217a3de3c7a4f..0000000000000 --- a/ports/broadcom/common-hal/microcontroller/__init__.h +++ /dev/null @@ -1,9 +0,0 @@ -// 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 - -#pragma once - -#define TOTAL_GPIO_COUNT 58 diff --git a/ports/broadcom/common-hal/neopixel_write/__init__.c b/ports/broadcom/common-hal/neopixel_write/__init__.c deleted file mode 100644 index 175caf5404175..0000000000000 --- a/ports/broadcom/common-hal/neopixel_write/__init__.c +++ /dev/null @@ -1,165 +0,0 @@ -// 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 "shared-bindings/neopixel_write/__init__.h" - -#include "py/runtime.h" - -#include "shared-bindings/microcontroller/__init__.h" -#include "shared-bindings/digitalio/DigitalInOut.h" -#include "shared-bindings/time/__init__.h" - -#include "peripherals/broadcom/cpu.h" - -#include "supervisor/port.h" - -uint64_t next_start_raw_ticks = 0; - -// NeoPixels are 800khz bit streams. Zeroes are 1/3 duty cycle (~416ns) and ones -// are 2/3 duty cycle (~833ns). - -void common_hal_neopixel_write(const digitalio_digitalinout_obj_t *digitalinout, - uint8_t *pixels, uint32_t num_bytes) { - // Wait to make sure we don't append onto the last transmission. This should only be a tick or - // two. - int icnt; - while ((port_get_raw_ticks(NULL) < next_start_raw_ticks) && - (next_start_raw_ticks - port_get_raw_ticks(NULL) < 100)) { - RUN_BACKGROUND_TASKS; - } - - BP_Function_Enum alt_function = GPIO_FUNCTION_OUTPUT; - uint8_t index = 0; - uint8_t channel = 0; - bool found = false; - for (size_t i = 0; i < NUM_ALT_FUNC; i++) { - const pin_function_t *f = &digitalinout->pin->functions[i]; - if (f->type == PIN_FUNCTION_PWM) { - index = f->index; - channel = f->function; - alt_function = FSEL_VALUES[i]; - found = true; - break; - } - } - if (!found) { - mp_raise_ValueError(MP_ERROR_TEXT("NeoPixel not supported on pin")); - return; - } - - // Turn on the PWM clock. The speed is NeoPixel specific. - if (CM_PWM->CS_b.BUSY == 0) { - uint32_t source_clock; - #if BCM_VERSION == 2711 - source_clock = 54000000; - #else - source_clock = 19200000; - #endif - // Three clocks per 800khz bit to get the 1/3 or 2/3 timing. - uint32_t target_clock = 3 * 800000; - uint32_t int_div = source_clock / target_clock; - - CM_PWM->DIV = CM_PCM_DIV_PASSWD_PASSWD << CM_PCM_DIV_PASSWD_Pos | - (int_div) << CM_PCM_DIV_DIVI_Pos; - - CM_PWM->CS = CM_PCM_CS_PASSWD_PASSWD << CM_PCM_CS_PASSWD_Pos | - CM_PCM_CS_SRC_XOSC << CM_PCM_CS_SRC_Pos; - - // Set enable after setting the source to ensure it is stable. - CM_PWM->CS = CM_PCM_CS_PASSWD_PASSWD << CM_PCM_CS_PASSWD_Pos | - CM_PCM_CS_SRC_XOSC << CM_PCM_CS_SRC_Pos | - CM_PCM_CS_ENAB_Msk; - - // Wait for the clock to start up. - COMPLETE_MEMORY_READS; - icnt = 0; - while ((CM_PWM->CS_b.BUSY == 0) && (icnt++ < 1000)) { - } - } - - PWM0_Type *pwm = PWM0; - #if BCM_VERSION == 2711 - if (index == 1) { - pwm = PWM1; - } - #else - (void)index; - #endif - - pwm->RNG1 = 24; - pwm->RNG2 = 24; - COMPLETE_MEMORY_READS; - pwm->CTL = PWM0_CTL_CLRF1_Msk; - COMPLETE_MEMORY_READS; - - // Even though we're only transmitting one channel, we enable both. Without - // the second channel enabled, the output is repeated forever. - pwm->CTL = - PWM0_CTL_USEF2_Msk | - PWM0_CTL_MODE2_Msk | - PWM0_CTL_USEF1_Msk | - PWM0_CTL_MODE1_Msk; - - COMPLETE_MEMORY_READS; - pwm->CTL |= PWM0_CTL_PWEN1_Msk | PWM0_CTL_PWEN2_Msk; - - gpio_set_function(digitalinout->pin->number, alt_function); - - for (size_t i = 0; i < num_bytes; i++) { - uint32_t expanded = 0; - for (size_t j = 0; j < 8; j++) { - expanded = expanded >> 3; - if ((pixels[i] & (1 << j)) != 0) { - expanded |= 0xc0000000; - } else { - expanded |= 0x80000000; - } - } - if (channel == 1) { - icnt = 0; - while ((pwm->STA_b.FULL1 == 1) && (icnt++ < 150)) { - RUN_BACKGROUND_TASKS; - } - // Dummy value for the first channel. - pwm->FIF1 = 0x000000; - } - icnt = 0; - while ((pwm->STA_b.FULL1 == 1) && (icnt++ < 150)) { - RUN_BACKGROUND_TASKS; - } - pwm->FIF1 = expanded; - if (channel == 0) { - icnt = 0; - while ((pwm->STA_b.FULL1 == 1) && (icnt++ < 150)) { - RUN_BACKGROUND_TASKS; - } - // Dummy value for the second channel. - pwm->FIF1 = 0x000000; - } - } - - icnt = 0; - while ((pwm->STA_b.EMPT1 == 0) && (icnt++ < 2500)) { - RUN_BACKGROUND_TASKS; - } - // Wait for transmission to start. - icnt = 0; - while (((pwm->STA_b.STA1 == 0) && (pwm->STA_b.STA2 == 0)) && (icnt++ < 150)) { - RUN_BACKGROUND_TASKS; - } - // Wait for transmission to complete. - icnt = 0; - while (((pwm->STA_b.STA1 == 1) || (pwm->STA_b.STA2 == 1)) && (icnt++ < 150)) { - RUN_BACKGROUND_TASKS; - } - // Shouldn't be anything left in queue but clear it so the clock doesn't crash if there is - pwm->CTL = PWM0_CTL_CLRF1_Msk; - - gpio_set_function(digitalinout->pin->number, GPIO_FUNCTION_OUTPUT); - - // Update the next start. - next_start_raw_ticks = port_get_raw_ticks(NULL) + 1; -} diff --git a/ports/broadcom/common-hal/os/__init__.c b/ports/broadcom/common-hal/os/__init__.c deleted file mode 100644 index 72a9a07e9077e..0000000000000 --- a/ports/broadcom/common-hal/os/__init__.c +++ /dev/null @@ -1,42 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries -// -// SPDX-License-Identifier: MIT - -#include "genhdr/mpversion.h" -#include "py/mpconfig.h" -#include "py/objstr.h" -#include "py/objtuple.h" -#include "py/qstr.h" - -static const qstr os_uname_info_fields[] = { - MP_QSTR_sysname, MP_QSTR_nodename, - MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine -}; - -static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, MICROPY_HW_MCU_NAME); -static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, MICROPY_HW_MCU_NAME); -static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); - - -static MP_DEFINE_ATTRTUPLE( - os_uname_info_obj, - os_uname_info_fields, - 5, - (mp_obj_t)&os_uname_info_sysname_obj, - (mp_obj_t)&os_uname_info_nodename_obj, - (mp_obj_t)&os_uname_info_release_obj, - (mp_obj_t)&os_uname_info_version_obj, - (mp_obj_t)&os_uname_info_machine_obj - ); - -mp_obj_t common_hal_os_uname(void) { - return (mp_obj_t)&os_uname_info_obj; -} - -bool common_hal_os_urandom(uint8_t *buffer, uint32_t length) { - return false; -} diff --git a/ports/broadcom/common-hal/rtc/RTC.c b/ports/broadcom/common-hal/rtc/RTC.c deleted file mode 100644 index c7092edd3fe71..0000000000000 --- a/ports/broadcom/common-hal/rtc/RTC.c +++ /dev/null @@ -1,38 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries -// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec -// -// SPDX-License-Identifier: MIT - -#include - -#include "py/obj.h" -#include "py/runtime.h" -#include "shared/timeutils/timeutils.h" -#include "supervisor/port.h" - -// This is the time in seconds since 2000 that the RTC was started. -// TODO: Change the offset to ticks so that it can be a subsecond adjustment. -static uint32_t rtc_offset = 0; - -void common_hal_rtc_get_time(timeutils_struct_time_t *tm) { - uint64_t ticks_s = port_get_raw_ticks(NULL) / 1024; - timeutils_seconds_since_2000_to_struct_time(rtc_offset + ticks_s, tm); -} - -void common_hal_rtc_set_time(timeutils_struct_time_t *tm) { - uint64_t ticks_s = port_get_raw_ticks(NULL) / 1024; - uint32_t epoch_s = timeutils_seconds_since_2000( - tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec - ); - rtc_offset = epoch_s - ticks_s; -} - -int common_hal_rtc_get_calibration(void) { - return 0; -} - -void common_hal_rtc_set_calibration(int calibration) { - mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_calibration); -} diff --git a/ports/broadcom/common-hal/rtc/RTC.h b/ports/broadcom/common-hal/rtc/RTC.h deleted file mode 100644 index 9f310488793f5..0000000000000 --- a/ports/broadcom/common-hal/rtc/RTC.h +++ /dev/null @@ -1,10 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes -// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec -// -// SPDX-License-Identifier: MIT - -#pragma once - -extern void rtc_reset(void); diff --git a/ports/broadcom/common-hal/rtc/__init__.c b/ports/broadcom/common-hal/rtc/__init__.c deleted file mode 100644 index 72d32ef2b2c5d..0000000000000 --- a/ports/broadcom/common-hal/rtc/__init__.c +++ /dev/null @@ -1,5 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC -// -// SPDX-License-Identifier: MIT diff --git a/ports/broadcom/common-hal/sdioio/SDCard.c b/ports/broadcom/common-hal/sdioio/SDCard.c deleted file mode 100644 index f87d40cd8dcab..0000000000000 --- a/ports/broadcom/common-hal/sdioio/SDCard.c +++ /dev/null @@ -1,380 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries -// -// SPDX-License-Identifier: MIT -#include - -#include "mphalport.h" - -#include "py/mperrno.h" -#include "py/runtime.h" - -#include "common-hal/microcontroller/Pin.h" -#include "shared-bindings/sdioio/SDCard.h" -#include "shared-bindings/microcontroller/Pin.h" -#include "shared-bindings/microcontroller/__init__.h" -#include "supervisor/port.h" - -#include "peripherals/broadcom/cpu.h" -#include "peripherals/broadcom/defines.h" -#include "peripherals/broadcom/gpio.h" - -#include "lib/sdmmc/include/sdmmc_cmd.h" - -void osal_task_delay(uint32_t msec) { - mp_hal_delay_ms(msec); -} - -/*!< Host function to initialize the driver */ -static sdmmc_err_t _init(void) { - return SDMMC_OK; -} - -/*!< host function to set bus width */ -static sdmmc_err_t _set_bus_width(int slot, size_t width) { - if (width == 4) { - EMMC->CONTROL0_b.HCTL_DWIDTH = true; - } else if (width == 8) { - EMMC->CONTROL0_b.HCTL_8BIT = true; - } - return SDMMC_OK; -} - -/*!< host function to get the maximum bus width of a particular slot */ -static size_t _get_bus_width(int slot) { - return 4; -} - -/*!< host function to set card clock frequency */ -static sdmmc_err_t _set_card_clk(int slot, uint32_t freq_khz) { - uint32_t base_clock = 125000000; - uint32_t frequency = freq_khz * 1000; - uint64_t start_ticks = port_get_raw_ticks(NULL); - while ((EMMC->STATUS_b.CMD_INHIBIT || EMMC->STATUS_b.DAT_INHIBIT) && (port_get_raw_ticks(NULL) - start_ticks) < 1024) { - } - if (EMMC->STATUS_b.CMD_INHIBIT || EMMC->STATUS_b.DAT_INHIBIT) { - return SDMMC_ERR_TIMEOUT; - } - - EMMC->CONTROL1_b.CLK_EN = false; - - uint32_t divisor = base_clock / frequency; - // + 1 to ensure we round the frequency down. - if (base_clock % frequency > 0) { - divisor += 1; - } - // Only even divisors are supported - uint32_t register_value = divisor / 2; - if (divisor % 2 == 1) { - register_value += 1; - } - - // The divisor is stored with bits swapped. - EMMC->CONTROL1_b.CLK_FREQ8 = divisor & 0xff; - EMMC->CONTROL1_b.CLK_FREQ_MS2 = (divisor >> 8) & 0x3; - - EMMC->CONTROL1_b.CLK_EN = true; - start_ticks = port_get_raw_ticks(NULL); - while (!EMMC->CONTROL1_b.CLK_STABLE && (port_get_raw_ticks(NULL) - start_ticks) < 1024) { - } - if (!EMMC->CONTROL1_b.CLK_STABLE) { - return SDMMC_ERR_TIMEOUT; - } - return SDMMC_OK; -} - -/*!< host function to do a transaction */ -static sdmmc_err_t _do_transaction(int slot, sdmmc_command_t *cmdinfo) { - if (EMMC->STATUS_b.CMD_INHIBIT) { - return SDMMC_ERR_BUSY; - } - - // Clear interrupts and then send the command - EMMC->INTERRUPT = 0xffffffff; - EMMC->ARG1 = cmdinfo->arg; - - uint32_t cmd_flags = 0; - bool read = (cmdinfo->flags & SCF_CMD_READ) != 0; - if (SCF_CMD(cmdinfo->flags) == SCF_CMD_ADTC || - SCF_CMD(cmdinfo->flags) == (SCF_CMD_ADTC | SCF_CMD_READ)) { - if (EMMC->STATUS_b.DAT_INHIBIT) { - return SDMMC_ERR_BUSY; - } - cmd_flags = Arasan_EMMC_Distributor_CMDTM_TM_BLKCNT_EN_Msk | Arasan_EMMC_Distributor_CMDTM_CMD_ISDATA_Msk; - if (cmdinfo->datalen > cmdinfo->blklen) { - cmd_flags |= Arasan_EMMC_Distributor_CMDTM_TM_MULTI_BLOCK_Msk; - if ((cmdinfo->flags & SCF_AUTO_STOP) != 0) { - cmd_flags |= 1 << Arasan_EMMC_Distributor_CMDTM_TM_AUTO_CMD_EN_Pos; - } - } - if (read) { - cmd_flags |= Arasan_EMMC_Distributor_CMDTM_TM_DAT_DIR_Msk; - } - EMMC->BLKSIZECNT = (cmdinfo->datalen / cmdinfo->blklen) << Arasan_EMMC_Distributor_BLKSIZECNT_BLKCNT_Pos | - cmdinfo->blklen << Arasan_EMMC_Distributor_BLKSIZECNT_BLKSIZE_Pos; - } - - uint32_t response_type = EMMC_CMDTM_CMD_RSPNS_TYPE_RESPONSE_48BITS; - uint32_t crc = 0; - if ((cmdinfo->flags & SCF_RSP_CRC) != 0) { - crc |= Arasan_EMMC_Distributor_CMDTM_CMD_CRCCHK_EN_Msk; - } - if ((cmdinfo->flags & SCF_RSP_IDX) != 0) { - crc |= Arasan_EMMC_Distributor_CMDTM_CMD_IXCHK_EN_Msk; - } - if ((cmdinfo->flags & SCF_RSP_136) != 0) { - response_type = EMMC_CMDTM_CMD_RSPNS_TYPE_RESPONSE_136BITS; - } else if ((cmdinfo->flags & SCF_RSP_BSY) != 0) { - response_type = EMMC_CMDTM_CMD_RSPNS_TYPE_RESPONSE_48BITS_USING_BUSY; - } else if ((cmdinfo->flags & SCF_RSP_PRESENT) == 0) { - response_type = EMMC_CMDTM_CMD_RSPNS_TYPE_RESPONSE_NONE; - } - uint32_t full_cmd = cmd_flags | crc | - cmdinfo->opcode << Arasan_EMMC_Distributor_CMDTM_CMD_INDEX_Pos | - response_type << Arasan_EMMC_Distributor_CMDTM_CMD_RSPNS_TYPE_Pos; - EMMC->CMDTM = full_cmd; - - // Wait for an interrupt to indicate completion of the command. - uint64_t start_ticks = port_get_raw_ticks(NULL); - while (EMMC->INTERRUPT == 0 && (port_get_raw_ticks(NULL) - start_ticks) < (size_t)cmdinfo->timeout_ms) { - } - if (!EMMC->INTERRUPT_b.CMD_DONE) { - cmdinfo->response[0] = 0; - // Reset the command circuit - EMMC->CONTROL1_b.SRST_CMD = true; - // Wait for the bit to clear - start_ticks = port_get_raw_ticks(NULL); - while (EMMC->CONTROL1_b.SRST_CMD && (port_get_raw_ticks(NULL) - start_ticks) < (size_t)cmdinfo->timeout_ms) { - } - return SDMMC_ERR_TIMEOUT; - } else { - EMMC->INTERRUPT = Arasan_EMMC_Distributor_INTERRUPT_CMD_DONE_Msk; - } - - // Transfer the data. - // TODO: Use DMA - if (cmd_flags != 0) { - if (read) { - for (size_t i = 0; i < cmdinfo->datalen / sizeof(uint32_t); i++) { - start_ticks = port_get_raw_ticks(NULL); - while (!EMMC->INTERRUPT_b.READ_RDY && (port_get_raw_ticks(NULL) - start_ticks) < (size_t)cmdinfo->timeout_ms) { - } - if (!EMMC->INTERRUPT_b.READ_RDY) { - return SDMMC_ERR_TIMEOUT; - } - ((uint32_t *)cmdinfo->data)[i] = EMMC->DATA; - } - } else { - for (size_t i = 0; i < cmdinfo->datalen / sizeof(uint32_t); i++) { - start_ticks = port_get_raw_ticks(NULL); - while (!EMMC->INTERRUPT_b.WRITE_RDY && (port_get_raw_ticks(NULL) - start_ticks) < (size_t)cmdinfo->timeout_ms) { - } - if (!EMMC->INTERRUPT_b.WRITE_RDY) { - return SDMMC_ERR_TIMEOUT; - } - EMMC->DATA = ((uint32_t *)cmdinfo->data)[i]; - } - } - uint32_t data_done_mask = Arasan_EMMC_Distributor_INTERRUPT_ERR_Msk | Arasan_EMMC_Distributor_INTERRUPT_DATA_DONE_Msk; - start_ticks = port_get_raw_ticks(NULL); - while ((EMMC->INTERRUPT & data_done_mask) == 0 && (port_get_raw_ticks(NULL) - start_ticks) < (size_t)cmdinfo->timeout_ms) { - } - if (!EMMC->INTERRUPT_b.DATA_DONE) { - cmdinfo->response[0] = 0; - // Reset the command circuit - EMMC->CONTROL1_b.SRST_DATA = true; - // Wait for the bit to clear - start_ticks = port_get_raw_ticks(NULL); - while (EMMC->CONTROL1_b.SRST_DATA && (port_get_raw_ticks(NULL) - start_ticks) < (size_t)cmdinfo->timeout_ms) { - } - return SDMMC_ERR_TIMEOUT; - } - } - - cmdinfo->response[0] = EMMC->RESP0; - if (response_type == EMMC_CMDTM_CMD_RSPNS_TYPE_RESPONSE_136BITS) { - // Rotate one more byte for some reason. - cmdinfo->response[3] = EMMC->RESP3 << 8 | ((EMMC->RESP2 >> 24) & 0xff); - cmdinfo->response[2] = EMMC->RESP2 << 8 | ((EMMC->RESP1 >> 24) & 0xff); - cmdinfo->response[1] = EMMC->RESP1 << 8 | ((EMMC->RESP0 >> 24) & 0xff); - cmdinfo->response[0] <<= 8; - } - return SDMMC_OK; -} - -/*!< host function to deinitialize the driver, called with the `slot` */ -static sdmmc_err_t _deinit(int slot) { - return SDMMC_OK; -} - -void common_hal_sdioio_sdcard_construct(sdioio_sdcard_obj_t *self, - const mcu_pin_obj_t *clock, const mcu_pin_obj_t *command, - uint8_t num_data, const mcu_pin_obj_t **data, uint32_t frequency) { - - if (clock != NULL) { - gpio_set_function(clock->number, GPIO_GPFSEL4_FSEL48_SD1_CLK); - gpio_set_pull(clock->number, BP_PULL_NONE); - self->clock_pin = clock->number; - gpio_set_function(command->number, GPIO_GPFSEL4_FSEL49_SD1_CMD); - gpio_set_pull(command->number, BP_PULL_UP); - self->command_pin = command->number; - gpio_set_function(data[0]->number, GPIO_GPFSEL5_FSEL50_SD1_DAT0); - gpio_set_pull(data[0]->number, BP_PULL_UP); - self->data_pins[0] = data[0]->number; - gpio_set_function(data[1]->number, GPIO_GPFSEL5_FSEL51_SD1_DAT1); - gpio_set_pull(data[1]->number, BP_PULL_UP); - self->data_pins[1] = data[1]->number; - gpio_set_function(data[2]->number, GPIO_GPFSEL5_FSEL52_SD1_DAT2); - gpio_set_pull(data[2]->number, BP_PULL_UP); - self->data_pins[2] = data[2]->number; - gpio_set_function(data[3]->number, GPIO_GPFSEL5_FSEL53_SD1_DAT3); - gpio_set_pull(data[3]->number, BP_PULL_UP); - self->data_pins[3] = data[3]->number; - } else { - // Switch the sdcard to use the old arasan interface. - GPIO->EXTRA_MUX_b.SDIO = GPIO_EXTRA_MUX_SDIO_ARASAN; - } - - COMPLETE_MEMORY_READS; - - self->host_info = (sdmmc_host_t) { - .flags = SDMMC_HOST_FLAG_1BIT | SDMMC_HOST_FLAG_4BIT | SDMMC_HOST_FLAG_DEINIT_ARG, - .slot = 0, - .max_freq_khz = SDMMC_FREQ_HIGHSPEED, - .io_voltage = 3.3f, - .command_timeout_ms = 0, - .init = _init, - .set_bus_width = _set_bus_width, - .get_bus_width = _get_bus_width, - .set_bus_ddr_mode = NULL, - .set_card_clk = _set_card_clk, - .do_transaction = _do_transaction, - .deinit_p = _deinit, - }; - - // Reset the peripheral. - EMMC->CONTROL0 = 0; - EMMC->CONTROL1_b.SRST_HC = true; - // Wait for the bit to clear - while (EMMC->CONTROL1_b.SRST_HC) { - - } - // Set max timeout - EMMC->CONTROL1 |= Arasan_EMMC_Distributor_CONTROL1_CLK_INTLEN_Msk | (0xe << Arasan_EMMC_Distributor_CONTROL1_DATA_TOUNIT_Pos); - - EMMC->IRPT_MASK = 0xffffffff; - - // Start clocking the card. - _set_card_clk(0, 400); - - sdmmc_err_t err = SDMMC_ERR_INVALID_RESPONSE; - size_t tries = 3; - while (err == SDMMC_ERR_INVALID_RESPONSE && tries > 0) { - err = sdmmc_card_init(&self->host_info, &self->card_info); - if (err != SDMMC_OK) { - mp_printf(&mp_plat_print, "SD card init failed %d\n", err); - } else if (tries < 3) { - mp_printf(&mp_plat_print, "SD card init success\n"); - } - tries--; - } - - self->init = err == SDMMC_OK; - - self->capacity = self->card_info.csd.capacity; - COMPLETE_MEMORY_READS; -} - -uint32_t common_hal_sdioio_sdcard_get_count(sdioio_sdcard_obj_t *self) { - return self->capacity; -} - -uint32_t common_hal_sdioio_sdcard_get_frequency(sdioio_sdcard_obj_t *self) { - return self->frequency; -} - -uint8_t common_hal_sdioio_sdcard_get_width(sdioio_sdcard_obj_t *self) { - return self->num_data; -} - -static void check_whole_block(mp_buffer_info_t *bufinfo) { - if (bufinfo->len % 512) { - mp_raise_ValueError(MP_ERROR_TEXT("Buffer length must be a multiple of 512")); - } -} - -int common_hal_sdioio_sdcard_writeblocks(sdioio_sdcard_obj_t *self, uint32_t start_block, mp_buffer_info_t *bufinfo) { - if (!self->init) { - return -EIO; - } - check_whole_block(bufinfo); - self->state_programming = true; - - COMPLETE_MEMORY_READS; - sdmmc_err_t error = sdmmc_write_sectors(&self->card_info, bufinfo->buf, - start_block, bufinfo->len / 512); - COMPLETE_MEMORY_READS; - - if (error != SDMMC_OK) { - mp_printf(&mp_plat_print, "write sectors result %d\n", error); - return -EIO; - } - - return 0; -} - -int common_hal_sdioio_sdcard_readblocks(sdioio_sdcard_obj_t *self, uint32_t start_block, mp_buffer_info_t *bufinfo) { - if (!self->init) { - return -EIO; - } - check_whole_block(bufinfo); - COMPLETE_MEMORY_READS; - sdmmc_err_t error = sdmmc_read_sectors(&self->card_info, bufinfo->buf, - start_block, bufinfo->len / 512); - COMPLETE_MEMORY_READS; - - if (error != SDMMC_OK) { - mp_printf(&mp_plat_print, "read sectors result %d when reading block %d for %d\n", error, start_block, bufinfo->len / 512); - return -EIO; - } - - return 0; -} - -bool common_hal_sdioio_sdcard_configure(sdioio_sdcard_obj_t *self, uint32_t frequency, uint8_t bits) { - if (!self->init) { - return false; - } - return true; -} - -bool common_hal_sdioio_sdcard_deinited(sdioio_sdcard_obj_t *self) { - return self->command_pin == COMMON_HAL_MCU_NO_PIN; -} - -void common_hal_sdioio_sdcard_deinit(sdioio_sdcard_obj_t *self) { - reset_pin_number(self->command_pin); - reset_pin_number(self->clock_pin); - reset_pin_number(self->data_pins[0]); - reset_pin_number(self->data_pins[1]); - reset_pin_number(self->data_pins[2]); - reset_pin_number(self->data_pins[3]); - - self->command_pin = COMMON_HAL_MCU_NO_PIN; - self->clock_pin = COMMON_HAL_MCU_NO_PIN; - self->data_pins[0] = COMMON_HAL_MCU_NO_PIN; - self->data_pins[1] = COMMON_HAL_MCU_NO_PIN; - self->data_pins[2] = COMMON_HAL_MCU_NO_PIN; - self->data_pins[3] = COMMON_HAL_MCU_NO_PIN; - self->init = false; -} - -void common_hal_sdioio_sdcard_never_reset(sdioio_sdcard_obj_t *self) { - never_reset_pin_number(self->command_pin); - never_reset_pin_number(self->clock_pin); - never_reset_pin_number(self->data_pins[0]); - never_reset_pin_number(self->data_pins[1]); - never_reset_pin_number(self->data_pins[2]); - never_reset_pin_number(self->data_pins[3]); -} diff --git a/ports/broadcom/common-hal/sdioio/SDCard.h b/ports/broadcom/common-hal/sdioio/SDCard.h deleted file mode 100644 index e63f8db99f291..0000000000000 --- a/ports/broadcom/common-hal/sdioio/SDCard.h +++ /dev/null @@ -1,24 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft -// -// SPDX-License-Identifier: MIT - -#pragma once - -#include "lib/sdmmc/include/sdmmc_types.h" - -typedef struct { - mp_obj_base_t base; - sdmmc_host_t host_info; - sdmmc_card_t card_info; - uint32_t frequency; - uint32_t capacity; - uint8_t num_data; - bool state_programming; - bool has_lock; - bool init; - uint8_t command_pin; - uint8_t clock_pin; - uint8_t data_pins[4]; -} sdioio_sdcard_obj_t; diff --git a/ports/broadcom/common-hal/sdioio/__init__.c b/ports/broadcom/common-hal/sdioio/__init__.c deleted file mode 100644 index 72d32ef2b2c5d..0000000000000 --- a/ports/broadcom/common-hal/sdioio/__init__.c +++ /dev/null @@ -1,5 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC -// -// SPDX-License-Identifier: MIT diff --git a/ports/broadcom/common-hal/sdioio/__init__.h b/ports/broadcom/common-hal/sdioio/__init__.h deleted file mode 100644 index c9069db9fd7d5..0000000000000 --- a/ports/broadcom/common-hal/sdioio/__init__.h +++ /dev/null @@ -1,7 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC -// -// SPDX-License-Identifier: MIT - -#pragma once diff --git a/ports/broadcom/common-hal/videocore/Framebuffer.c b/ports/broadcom/common-hal/videocore/Framebuffer.c deleted file mode 100644 index 26672d95f4d39..0000000000000 --- a/ports/broadcom/common-hal/videocore/Framebuffer.c +++ /dev/null @@ -1,80 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC -// -// SPDX-License-Identifier: MIT - - -#include "bindings/videocore/Framebuffer.h" - -#include "py/gc.h" -#include "py/runtime.h" - -#include "peripherals/broadcom/caches.h" -#include "peripherals/broadcom/vcmailbox.h" - -void common_hal_videocore_framebuffer_construct(videocore_framebuffer_obj_t *self, - mp_uint_t width, mp_uint_t height) { - // These will be modified on success to indicate actual values. - uint32_t virtual_width = width; - uint32_t virtual_height = height; - uint32_t physical_width = width; - // TODO: Make the FB twice as tall if double buffering. - uint32_t physical_height = height; - uint32_t pitch = 0; - uint32_t bits_per_pixel = 0; - self->framebuffer = vcmailbox_get_framebuffer(&virtual_width, - &virtual_height, - &physical_width, - &physical_height, - &pitch, - &bits_per_pixel); - if (self->framebuffer == NULL) { - if (gc_alloc_possible()) { - mp_raise_ValueError(MP_ERROR_TEXT("no fb")); - } else { - mp_printf(&mp_plat_print, "no fb\n"); - } - self->width = 0; - self->height = 0; - return; - } - self->width = virtual_width; - self->height = virtual_height; - self->pitch = pitch; -} - -void common_hal_videocore_framebuffer_deinit(videocore_framebuffer_obj_t *self) { - if (vcmailbox_release_framebuffer()) { - self->framebuffer = NULL; - } - self->base.type = &mp_type_NoneType; -} - -bool common_hal_videocore_framebuffer_deinited(videocore_framebuffer_obj_t *self) { - return self->framebuffer == NULL; -} - -void common_hal_videocore_framebuffer_refresh(videocore_framebuffer_obj_t *self) { - data_clean(self->framebuffer, sizeof(uint32_t) * self->width * self->height); -} - -int common_hal_videocore_framebuffer_get_width(videocore_framebuffer_obj_t *self) { - return self->width; -} - -int common_hal_videocore_framebuffer_get_height(videocore_framebuffer_obj_t *self) { - return self->height; -} - -mp_int_t common_hal_videocore_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { - videocore_framebuffer_obj_t *self = (videocore_framebuffer_obj_t *)self_in; - bufinfo->buf = self->framebuffer; - bufinfo->typecode = 'L'; - bufinfo->len = self->pitch * self->height * sizeof(uint32_t); - return 0; -} - -int common_hal_videocore_framebuffer_get_row_stride(videocore_framebuffer_obj_t *self) { - return self->pitch; -} diff --git a/ports/broadcom/common-hal/videocore/Framebuffer.h b/ports/broadcom/common-hal/videocore/Framebuffer.h deleted file mode 100644 index 939204efbcd7c..0000000000000 --- a/ports/broadcom/common-hal/videocore/Framebuffer.h +++ /dev/null @@ -1,18 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries -// -// SPDX-License-Identifier: MIT - -#pragma once - -#include "py/obj.h" - -typedef struct { - mp_obj_base_t base; - uint32_t *framebuffer; - mp_uint_t width; - mp_uint_t height; - uint32_t pitch; - bool doublebuffer; -} videocore_framebuffer_obj_t; diff --git a/ports/broadcom/config.txt b/ports/broadcom/config.txt deleted file mode 100644 index 1c12196b980a8..0000000000000 --- a/ports/broadcom/config.txt +++ /dev/null @@ -1,10 +0,0 @@ - -# dtparam=audio=on -# dtoverlay=dwc2 -# core_freq_min=500 -gpio=22-27=np -enable_jtag_gpio=1 -# hdmi_group=1 -# hdmi_mode=16 -gpu_mem=16 -kernel_address=0x100000 diff --git a/ports/broadcom/firmware b/ports/broadcom/firmware deleted file mode 160000 index bf96d0eda5952..0000000000000 --- a/ports/broadcom/firmware +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bf96d0eda5952595d717fedb797aeb168483e9fa diff --git a/ports/broadcom/mpconfigport.h b/ports/broadcom/mpconfigport.h deleted file mode 100644 index b9990be75ec06..0000000000000 --- a/ports/broadcom/mpconfigport.h +++ /dev/null @@ -1,37 +0,0 @@ -// 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 - -#pragma once - -// Definitions that control circuitpy_mpconfig.h: - -//////////////////////////////////////////////////////////////////////////////////////////////////// - - -#define CIRCUITPY_MCU_FAMILY broadcom -#define MICROPY_PY_SYS_PLATFORM "BROADCOM" -#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1) -#define MICROPY_PY_FUNCTION_ATTRS (1) -#if BCM_VERSION == 2837 || BCM_VERSION == 2711 -#define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_A) -#elif BCM_VERSION == 2835 -#define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_C) -#endif -#define CIRCUITPY_DEFAULT_STACK_SIZE (0x10000) -#define CIRCUITPY_DISPLAY_AREA_BUFFER_SIZE (1920) -#define CIRCUITPY_PROCESSOR_COUNT (4) - -#define MICROPY_FATFS_EXFAT (1) -#define MICROPY_FATFS_MKFS_FAT32 (1) - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -// This also includes mpconfigboard.h. -#include "py/circuitpy_mpconfig.h" - -// Definitions that can be overridden by mpconfigboard.h: - -//////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/ports/broadcom/mpconfigport.mk b/ports/broadcom/mpconfigport.mk deleted file mode 100644 index 543e174683617..0000000000000 --- a/ports/broadcom/mpconfigport.mk +++ /dev/null @@ -1,27 +0,0 @@ -# All broadcom ports have longints. -LONGINT_IMPL = MPZ - -CIRCUITPY_FULL_BUILD = 1 - -# Modules in FULL_BUILD that we don't support. -CIRCUITPY_ANALOGIO = 0 -CIRCUITPY_AUDIOBUSIO = 0 -CIRCUITPY_AUDIOIO = 0 -CIRCUITPY_COUNTIO = 0 -CIRCUITPY_FREQUENCYIO = 0 -CIRCUITPY_I2CTARGET = 0 -CIRCUITPY_NVM = 0 -CIRCUITPY_PARALLELDISPLAYBUS = 0 -CIRCUITPY_PULSEIO = 0 -CIRCUITPY_PWMIO = 0 -CIRCUITPY_ROTARYIO = 0 - -CIRCUITPY_SDIOIO = 1 -CIRCUITPY_VIDEOCORE = 1 - -INTERNAL_FLASH_FILESYSTEM = 1 - -USB_NUM_ENDPOINT_PAIRS = 8 -USB_HIGHSPEED = 1 - -CIRCUITPY_BUILD_EXTENSIONS ?= disk.img.zip,kernel8.img diff --git a/ports/broadcom/mphalport.c b/ports/broadcom/mphalport.c deleted file mode 100644 index 32718511f05e2..0000000000000 --- a/ports/broadcom/mphalport.c +++ /dev/null @@ -1,63 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC -// -// SPDX-License-Identifier: MIT - -#include - -#include -#include "py/mpconfig.h" -#include "py/obj.h" -#include "shared-bindings/microcontroller/__init__.h" -#include "mphalport.h" - -#include "peripherals/broadcom/defines.h" - -void mp_hal_delay_us(mp_uint_t delay) { - uint32_t end = SYSTMR->CLO + delay; - // Wait if end is before current time because it must have wrapped. - while (end < SYSTMR->CLO) { - } - while (SYSTMR->CLO < end) { - } -} - -void mp_hal_disable_all_interrupts(void) { - common_hal_mcu_disable_interrupts(); -} - -void mp_hal_enable_all_interrupts(void) { - common_hal_mcu_enable_interrupts(); -} - -mp_uint_t cpu_get_regs_and_sp(mp_uint_t *regs) { - size_t sp = 0; - #if defined(__ARM_ARCH) && (__ARM_ARCH >= 8) - __asm__ ("mov %[out], sp" : [out] "=r" (sp)); - __asm__ ("mov %[out], x19" : [out] "=r" (regs[0])); - __asm__ ("mov %[out], x20" : [out] "=r" (regs[1])); - __asm__ ("mov %[out], x21" : [out] "=r" (regs[2])); - __asm__ ("mov %[out], x22" : [out] "=r" (regs[3])); - __asm__ ("mov %[out], x23" : [out] "=r" (regs[4])); - __asm__ ("mov %[out], x24" : [out] "=r" (regs[5])); - __asm__ ("mov %[out], x25" : [out] "=r" (regs[6])); - __asm__ ("mov %[out], x26" : [out] "=r" (regs[7])); - __asm__ ("mov %[out], x27" : [out] "=r" (regs[8])); - __asm__ ("mov %[out], x28" : [out] "=r" (regs[9])); - #else - __asm__ ("mov %[out], sp" : [out] "=r" (sp)); - __asm__ ("mov %[out], r4" : [out] "=r" (regs[0])); - __asm__ ("mov %[out], r5" : [out] "=r" (regs[1])); - __asm__ ("mov %[out], r6" : [out] "=r" (regs[2])); - __asm__ ("mov %[out], r7" : [out] "=r" (regs[3])); - __asm__ ("mov %[out], r8" : [out] "=r" (regs[4])); - __asm__ ("mov %[out], r9" : [out] "=r" (regs[5])); - __asm__ ("mov %[out], r10" : [out] "=r" (regs[6])); - __asm__ ("mov %[out], r11" : [out] "=r" (regs[7])); - __asm__ ("mov %[out], r12" : [out] "=r" (regs[8])); - __asm__ ("mov %[out], r13" : [out] "=r" (regs[9])); - #endif - - return sp; -} diff --git a/ports/broadcom/mphalport.h b/ports/broadcom/mphalport.h deleted file mode 100644 index 6a7cdb99db592..0000000000000 --- a/ports/broadcom/mphalport.h +++ /dev/null @@ -1,28 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft -// -// SPDX-License-Identifier: MIT - -#pragma once - -#include -#include "py/obj.h" - - -#include "supervisor/shared/tick.h" - -void mp_hal_delay_ms(mp_uint_t ms); -void mp_hal_delay_us(mp_uint_t us); - -#define mp_hal_ticks_ms() ((mp_uint_t)supervisor_ticks_ms32()) - -void mp_hal_set_interrupt_char(int c); -int mp_hal_stdin_rx_chr(void); -void mp_hal_stdout_tx_strn(const char *str, size_t len); - -#ifdef MICROPY_HW_USBHOST -#include "usbkbd.h" - -void usbkbd_setup(); -#endif diff --git a/ports/broadcom/peripherals b/ports/broadcom/peripherals deleted file mode 160000 index ec1043800fc98..0000000000000 --- a/ports/broadcom/peripherals +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ec1043800fc987f7067fc07615193439843695d6 diff --git a/ports/broadcom/qstrdefsport.h b/ports/broadcom/qstrdefsport.h deleted file mode 100644 index 79d7f33276ef4..0000000000000 --- a/ports/broadcom/qstrdefsport.h +++ /dev/null @@ -1,16 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2014 Damien P. George -// -// SPDX-License-Identifier: MIT - -// Do not use #pragma once in this file; it will cause a warning during qstr generation. - -// qstrs specific to this port, only needed if they aren't auto-generated - -// Prevent uncrustify from modifying these lines. -// *FORMAT-OFF* - -// Entries for sys.path -Q(/sd) -Q(/sd/lib) diff --git a/ports/broadcom/supervisor/internal_flash.c b/ports/broadcom/supervisor/internal_flash.c deleted file mode 100644 index 2e75154ea3593..0000000000000 --- a/ports/broadcom/supervisor/internal_flash.c +++ /dev/null @@ -1,160 +0,0 @@ -// 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/flash.h" -#include "supervisor/internal_flash.h" - -#include - -#include "shared-bindings/digitalio/DigitalInOut.h" -#include "shared-bindings/sdioio/SDCard.h" - -static sdioio_sdcard_obj_t sd; - -static uint32_t first_lba = 0; -static uint32_t sector_count = 0; - -static bool inited = false; - -void supervisor_flash_init(void) { - if (inited) { - return; - } - inited = true; - - #if BCM_VERSION != 2711 - const mcu_pin_obj_t *data_pins[4] = { - &pin_GPIO50, - &pin_GPIO51, - &pin_GPIO52, - &pin_GPIO53, - }; - common_hal_sdioio_sdcard_construct(&sd, - &pin_GPIO48, &pin_GPIO49, - 4, data_pins, 8000000); - #else - common_hal_sdioio_sdcard_construct(&sd, - NULL, NULL, - 0, NULL, 8000000); - #endif - common_hal_sdioio_sdcard_never_reset(&sd); - - uint32_t buffer[512 / sizeof(uint32_t)]; - mp_buffer_info_t bufinfo; - bufinfo.len = 512; - bufinfo.buf = buffer; - common_hal_sdioio_sdcard_readblocks(&sd, 0, &bufinfo); - size_t partition_count = 0; - size_t first_free_sector = 0; - for (size_t i = 0; i < 4; i++) { - uint32_t part_first_lba = 0; - uint32_t part_sector_count = 0; - for (size_t j = 0; j < 16; j++) { - size_t offset = 446 + i * 16 + j; - uint8_t value = ((uint8_t *)buffer)[offset]; - // Little endian - if (j >= 8 && j < 12) { - part_first_lba |= value << (8 * (j - 8)); - } else if (j >= 12) { - part_sector_count |= value << (8 * (j - 12)); - } - } - if (part_sector_count > 0) { - partition_count += 1; - first_free_sector = part_first_lba + part_sector_count; - } - // If the second partition exists, then use it (possibly after reformatting it.) - if (i == 1 && part_sector_count > 0 && part_first_lba > 0) { - sector_count = part_sector_count; - first_lba = part_first_lba; - } else if (i > 1 && part_sector_count > 0) { - sector_count = 0; - } - } - - // Special case where most of the card is unused and the first and only - // partition is likely the CP boot partition. (It is 255MB starting at 1MB) - size_t sectors_per_mb = 2048; - if (partition_count == 1 && first_free_sector == 256 * sectors_per_mb) { - size_t total_sectors = common_hal_sdioio_sdcard_get_count(&sd); - // Align to a MB - total_sectors = total_sectors - (total_sectors % sectors_per_mb); - // Don't use the last MB because the imager erases it. GPT tables put a - // backup there sometimes. - total_sectors -= sectors_per_mb; - size_t new_sector_count = total_sectors - first_free_sector; - - // Modify the MBR - size_t offset = 446 + 1 * 16; - uint8_t *part = ((uint8_t *)buffer) + offset; - part[0] = 0; // not boot - part[1] = 0xff; // Old unused CHS sizing - part[2] = 0xff; - part[3] = 0xff; - uint8_t type = 0x0C; // FAT32 with LBA - if (new_sector_count >= 0x4000000) { - type = 0x07; // Exfat when 32GB+ - } - part[4] = type; - part[5] = 0xff; // Old unused CHS sizing - part[6] = 0xff; - part[7] = 0xff; - part[8] = first_free_sector & 0xff; - part[9] = (first_free_sector >> 8) & 0xff; - part[10] = (first_free_sector >> 16) & 0xff; - part[11] = (first_free_sector >> 24) & 0xff; - part[12] = new_sector_count & 0xff; - part[13] = (new_sector_count >> 8) & 0xff; - part[14] = (new_sector_count >> 16) & 0xff; - part[15] = (new_sector_count >> 24) & 0xff; - - // Write back the modified MBR with the new partition. CircuitPython can - // detect a previously formatted FAT filesystem later if only the MBR and - // BOOT partition was updated. - if (common_hal_sdioio_sdcard_writeblocks(&sd, 0, &bufinfo) == 0) { - sector_count = new_sector_count; - first_lba = first_free_sector; - } - } -} - -uint32_t supervisor_flash_get_block_size(void) { - return 512; -} - -uint32_t supervisor_flash_get_block_count(void) { - return sector_count; -} - -void port_internal_flash_flush(void) { -} - -mp_uint_t supervisor_flash_read_blocks(uint8_t *dest, uint32_t block, uint32_t num_blocks) { - mp_buffer_info_t bufinfo; - bufinfo.len = 512; - for (size_t i = 0; i < num_blocks; i++) { - bufinfo.buf = dest + 512 * i; - if (common_hal_sdioio_sdcard_readblocks(&sd, first_lba + block + i, &bufinfo) != 0) { - return 1; // error - } - } - return 0; // success -} - -mp_uint_t supervisor_flash_write_blocks(const uint8_t *src, uint32_t block, uint32_t num_blocks) { - mp_buffer_info_t bufinfo; - bufinfo.len = 512; - for (size_t i = 0; i < num_blocks; i++) { - bufinfo.buf = (uint8_t *)src + 512 * i; - if (common_hal_sdioio_sdcard_writeblocks(&sd, first_lba + block + i, &bufinfo) != 0) { - return 1; // error - } - } - return 0; // success -} - -void supervisor_flash_release_cache(void) { -} diff --git a/ports/broadcom/supervisor/internal_flash.h b/ports/broadcom/supervisor/internal_flash.h deleted file mode 100644 index 94b1f0bc973fd..0000000000000 --- a/ports/broadcom/supervisor/internal_flash.h +++ /dev/null @@ -1,10 +0,0 @@ -// 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 -#pragma once - -#include - -#include "mpconfigport.h" diff --git a/ports/broadcom/supervisor/port.c b/ports/broadcom/supervisor/port.c deleted file mode 100644 index 33b20b7c8647a..0000000000000 --- a/ports/broadcom/supervisor/port.c +++ /dev/null @@ -1,178 +0,0 @@ -// 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 -#include - -#include "supervisor/board.h" -#include "supervisor/port.h" - -#include "genhdr/mpversion.h" - -#include "common-hal/rtc/RTC.h" -#include "common-hal/busio/I2C.h" -#include "common-hal/busio/SPI.h" -#include "common-hal/busio/UART.h" - -#include "peripherals/broadcom/caches.h" -#include "peripherals/broadcom/cpu.h" -#include "peripherals/broadcom/defines.h" -#include "peripherals/broadcom/interrupts.h" -#include "peripherals/broadcom/mmu.h" - -#include "shared-bindings/microcontroller/__init__.h" - -#include "supervisor/shared/safe_mode.h" -#include "supervisor/shared/stack.h" -#include "supervisor/shared/tick.h" - -#include "peripherals/broadcom/vcmailbox.h" - -// #include "tusb.h" - -extern volatile bool mp_msc_enabled; - -static uint32_t board_revision; - -safe_mode_t port_init(void) { - board_revision = vcmailbox_get_board_revision(); - setup_mmu_flat_map(); - - init_caches(); - - // Set brown out. - - // Reset everything into a known state before board_init. - reset_port(); - - // Initialize RTC - // common_hal_rtc_init(); - - // For the tick. - // hardware_alarm_claim(0); - // hardware_alarm_set_callback(0, _tick_callback); - - // Check brownout. - - if (board_requests_safe_mode()) { - return SAFE_MODE_USER; - } - - return SAFE_MODE_NONE; -} - -void reset_port(void) { - #if CIRCUITPY_BUSIO - reset_i2c(); - reset_spi(); - reset_uart(); - #endif - - #if CIRCUITPY_PWMIO - pwmout_reset(); - #endif - - #if CIRCUITPY_RTC - rtc_reset(); - #endif - - #if CIRCUITPY_AUDIOPWMIO - audiopwmout_reset(); - #endif - #if CIRCUITPY_AUDIOCORE - audio_dma_reset(); - #endif - - reset_all_pins(); -} - -void reset_to_bootloader(void) { - // reset_usb_boot(0, 0); - while (true) { - } -} - -void reset_cpu(void) { - // Don't actually reset because we can't store the safe mode info. - // PM->WDOG = 1 << PM_WDOG_TIME_Pos | PM_WDOG_PASSWD_PASSWD << PM_WDOG_PASSWD_Pos; - // PM->RSTC = PM_RSTC_WRCFG_FULL_RESET << PM_RSTC_WRCFG_Pos | PM_RSTC_PASSWD_PASSWD << PM_RSTC_PASSWD_Pos; - while (true) { - } -} - -// From the linker script -extern uint32_t __bss_end; -extern uint32_t _ld_ram_end; -uint32_t *port_stack_get_limit(void) { - return (uint32_t *)0x4; -} - -uint32_t *port_stack_get_top(void) { - return (uint32_t *)0x100000; -} - -uint32_t *port_heap_get_bottom(void) { - return &__bss_end; -} - -uint32_t *port_heap_get_top(void) { - // 32M heap - return (uint32_t *)(((size_t)&__bss_end) + 32 * 1024 * 1024); -} - -void port_set_saved_word(uint32_t value) { - // NOTE: This doesn't survive pressing the reset button (aka toggling RUN). - __bss_end = value; - data_clean_and_invalidate(&__bss_end, sizeof(uint32_t)); -} - -uint32_t port_get_saved_word(void) { - return __bss_end; -} - -uint64_t port_get_raw_ticks(uint8_t *subticks) { - COMPLETE_MEMORY_READS; - uint64_t hi = SYSTMR->CHI; - uint64_t lo = SYSTMR->CLO; - if (hi != SYSTMR->CHI) { - hi = SYSTMR->CHI; - lo = SYSTMR->CLO; - } - COMPLETE_MEMORY_READS; - uint64_t microseconds = hi << 32 | lo; - return 1024 * (microseconds / 1000000) + (microseconds % 1000000) / 977; -} - -void TIMER_1_IRQHandler(void) { - SYSTMR->C1 += 977; - SYSTMR->CS_b.M1 = 1; - supervisor_tick(); -} - -// Enable 1/1024 second tick. -void port_enable_tick(void) { - COMPLETE_MEMORY_READS; - SYSTMR->CS_b.M1 = 1; - SYSTMR->C1 = SYSTMR->CLO + 977; - BP_EnableIRQ(TIMER_1_IRQn); -} - -// Disable 1/1024 second tick. -void port_disable_tick(void) { - BP_DisableIRQ(TIMER_1_IRQn); -} - -void port_interrupt_after_ticks(uint32_t ticks) { -} - -void port_idle_until_interrupt(void) { - common_hal_mcu_disable_interrupts(); -// if (!tud_task_event_ready()) { -// // asm volatile ("dsb 0xF":::"memory"); -// // __wfi(); -// } - common_hal_mcu_enable_interrupts(); -} diff --git a/ports/broadcom/supervisor/usb.c b/ports/broadcom/supervisor/usb.c deleted file mode 100644 index 166ed4e3e2ed8..0000000000000 --- a/ports/broadcom/supervisor/usb.c +++ /dev/null @@ -1,28 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries -// -// SPDX-License-Identifier: MIT - -#include "lib/tinyusb/src/device/usbd.h" -#include "py/runtime.h" -#include "supervisor/background_callback.h" -#include "supervisor/usb.h" - -#include "peripherals/broadcom/interrupts.h" -#include "peripherals/broadcom/vcmailbox.h" - -uint32_t SystemCoreClock = 700 * 1000 * 1000; - -void USB_IRQHandler(void) { - usb_irq_handler(0); -} - -void init_usb_hardware(void) { - vcmailbox_set_power_state(VCMAILBOX_DEVICE_USB_HCD, true); - - BP_SetPriority(USB_IRQn, 0x00); - BP_ClearPendingIRQ(USB_IRQn); - BP_EnableIRQ(USB_IRQn); - BP_EnableIRQs(); -} From 45e3e599a82124c9a4529ed7d83ad8ad682d34ae Mon Sep 17 00:00:00 2001 From: Maxime Mauduit Date: Fri, 2 Aug 2024 10:03:47 +0200 Subject: [PATCH 06/10] mass storage mode --- supervisor/shared/filesystem.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/supervisor/shared/filesystem.c b/supervisor/shared/filesystem.c index 994d4c29ad0ea..e6ca5da09b532 100644 --- a/supervisor/shared/filesystem.c +++ b/supervisor/shared/filesystem.c @@ -134,7 +134,9 @@ bool filesystem_init(bool create_allowed, bool force_create) { make_empty_file(&vfs_fat->fatfs, "/settings.toml"); #endif // make a sample code.py file - MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/boot.py", "import board\nimport storage\n\n# Attribution de l'ecriture : True = Mass Storage, False = REPL\nstorage.remount(\"/\", False)\n"); + MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/code.py", "print(\"Hello World!\")\n"); + + //MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/boot.py", "import board\nimport storage\n\n# Attribution de l'ecriture : True = Mass Storage, False = REPL\nstorage.remount("/", False)\n"); // create empty lib directory res = f_mkdir(&vfs_fat->fatfs, "/lib"); From 66fab03f6bc92e94116bc2f54ae72e7ba9f7dd4a Mon Sep 17 00:00:00 2001 From: Maxime Mauduit Date: Fri, 2 Aug 2024 11:04:20 +0200 Subject: [PATCH 07/10] update how to build --- HOW-TO-BUILD.md | 52 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/HOW-TO-BUILD.md b/HOW-TO-BUILD.md index 9886898eb2b3f..e4d3c8c219698 100644 --- a/HOW-TO-BUILD.md +++ b/HOW-TO-BUILD.md @@ -1,5 +1,10 @@ # Build CircuitPython for Eliobot +Eliobot need 2 different builds of CircuitPython, one for that flash with repl ON and one for that flash with repl OFF. + +Repl on for flashing from the web interface and repl off for flashing from the mass storage with Eliobot-Programmer. + + 1. Read the [CircuitPython BUILDING.md](BUILDING.md) guide and follow the instructions to build CircuitPython. 2. before the "make BOARD" step of the build process, go to "ports/espressif/esp-idf/" and run : @@ -45,6 +50,42 @@ git tag -a 9.1.2 git push origin 9.1.2 ``` +If you want to keep using the same tag name, you need to delete the tag before creating a new one : + +```bash +git tag -d +git push origin :refs/tags/ + +git tag -a +git push origin +``` + +example : + +```bash +git tag -d 9.1.2 +git push origin :refs/tags/9.1.2 + +git tag -a 9.1.2 +git push origin 9.1.2 +``` + +It will push the last commit you made to the repository with the tag name you specified. + + +# How to flash with repl ON + +go to supervisor/filesystem.c and change the line 137 that create the code.py file to : + +```c + //MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/code.py", "print(\"Hello World!\")\n"); + + MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/boot.py", "import board\nimport storage\n\n# Attribution de l'ecriture : True = Mass Storage, False = REPL\nstorage.remount(\"/\", False)\n"); +``` + +It will create a boot.py file that will remount the filesystem in REPL mode when the board is powered on. +Don't forget to commitand tag those changes before building the firmware to make a clean build. + # elio_eliobot specific files ## board.c @@ -114,14 +155,3 @@ In this file, the following changes have been made: - CONFIG_LWIP_LOCAL_HOSTNAME: This option sets the local hostname for the device. In this file we use a custom partition table because it left us some space for more frozen modules. - - -# How to flash with repl ON - -go to supervisor/filesystem.c and change the line 137 that create the code.py file to : - -```c - MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/boot.py", "import board\nimport storage\n\n# Attribution de l'ecriture : True = Mass Storage, False = REPL\nstorage.remount(\"/\", False)\n"); -``` - -it will create a boot.py file that will remount the filesystem in REPL mode when the board is powered on. \ No newline at end of file From 89dc3b8fb879bab72793f9a191f38737f541a936 Mon Sep 17 00:00:00 2001 From: Romain Date: Sat, 20 Dec 2025 23:03:30 +0100 Subject: [PATCH 08/10] [ADD] Eliobot S3 build --- .gitmodules | 4 +- Adafruit_CircuitPython_IRRemote | 1 - HOW-TO-BUILD.md | 14 +- frozen/Adafruit_CircuitPython_PCF8563 | 1 + frozen/Adafruit_CircuitPython_Wiznet5k | 1 + frozen/CircuitPython_AXP2101 | 1 + frozen/CircuitPython_BMA423 | 1 + ports/espressif/boards/elio_eliobot/board.c | 9 -- .../espressif/boards/elio_eliobot_s2/board.c | 41 +++++ .../mpconfigboard.h | 0 .../mpconfigboard.mk | 0 .../{elio_eliobot => elio_eliobot_s2}/pins.c | 0 .../sdkconfig | 0 .../espressif/boards/elio_eliobot_s3/board.c | 41 +++++ .../boards/elio_eliobot_s3/mpconfigboard.h | 25 +++ .../boards/elio_eliobot_s3/mpconfigboard.mk | 30 ++++ ports/espressif/boards/elio_eliobot_s3/pins.c | 148 ++++++++++++++++++ .../boards/elio_eliobot_s3/sdkconfig | 23 +++ ports/espressif/microros-lib | 1 + supervisor/shared/filesystem.c | 2 - 20 files changed, 323 insertions(+), 20 deletions(-) delete mode 160000 Adafruit_CircuitPython_IRRemote create mode 160000 frozen/Adafruit_CircuitPython_PCF8563 create mode 160000 frozen/Adafruit_CircuitPython_Wiznet5k create mode 160000 frozen/CircuitPython_AXP2101 create mode 160000 frozen/CircuitPython_BMA423 delete mode 100644 ports/espressif/boards/elio_eliobot/board.c create mode 100644 ports/espressif/boards/elio_eliobot_s2/board.c rename ports/espressif/boards/{elio_eliobot => elio_eliobot_s2}/mpconfigboard.h (100%) rename ports/espressif/boards/{elio_eliobot => elio_eliobot_s2}/mpconfigboard.mk (100%) rename ports/espressif/boards/{elio_eliobot => elio_eliobot_s2}/pins.c (100%) rename ports/espressif/boards/{elio_eliobot => elio_eliobot_s2}/sdkconfig (100%) create mode 100644 ports/espressif/boards/elio_eliobot_s3/board.c create mode 100644 ports/espressif/boards/elio_eliobot_s3/mpconfigboard.h create mode 100644 ports/espressif/boards/elio_eliobot_s3/mpconfigboard.mk create mode 100644 ports/espressif/boards/elio_eliobot_s3/pins.c create mode 100644 ports/espressif/boards/elio_eliobot_s3/sdkconfig create mode 160000 ports/espressif/microros-lib diff --git a/.gitmodules b/.gitmodules index 140cd0b20d4d4..8c5da4dd381b7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -395,6 +395,4 @@ [submodule "frozen/Adafruit_CircuitPython_LED_Animation"] path = frozen/Adafruit_CircuitPython_LED_Animation url = https://github.com/adafruit/Adafruit_CircuitPython_LED_Animation -[submodule "Adafruit_CircuitPython_IRRemote"] - path = Adafruit_CircuitPython_IRRemote - url = https://github.com/adafruit/Adafruit_CircuitPython_IRRemote + \ No newline at end of file diff --git a/Adafruit_CircuitPython_IRRemote b/Adafruit_CircuitPython_IRRemote deleted file mode 160000 index c4daaa7521a49..0000000000000 --- a/Adafruit_CircuitPython_IRRemote +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c4daaa7521a491f7045cf10007764e95e4e2c265 diff --git a/HOW-TO-BUILD.md b/HOW-TO-BUILD.md index e4d3c8c219698..bf7ca23a5b72f 100644 --- a/HOW-TO-BUILD.md +++ b/HOW-TO-BUILD.md @@ -7,16 +7,20 @@ Repl on for flashing from the web interface and repl off for flashing from the m 1. Read the [CircuitPython BUILDING.md](BUILDING.md) guide and follow the instructions to build CircuitPython. -2. before the "make BOARD" step of the build process, go to "ports/espressif/esp-idf/" and run : +2. before the "make BOARD" step of the build process, go to "ports/espressif/" and run : ```bash -./install.sh +cd ports/espressif +``` + +```bash +./esp-idf/install.sh ``` after the installation, run : ```bash -. ./export.sh +. ./esp-idf/export.sh ``` (this step is needed every time you open a new terminal session) @@ -24,7 +28,7 @@ after the installation, run : 3. go back to "ports/espressif/" and run : ```bash -make BOARD=elio_eliobot +make BOARD=elio_eliobot_s3 ``` if the build fails, you may need to run : @@ -78,7 +82,7 @@ It will push the last commit you made to the repository with the tag name you sp go to supervisor/filesystem.c and change the line 137 that create the code.py file to : ```c - //MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/code.py", "print(\"Hello World!\")\n"); + MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/main.py", "print(\"Hello World!\")\n"); MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/boot.py", "import board\nimport storage\n\n# Attribution de l'ecriture : True = Mass Storage, False = REPL\nstorage.remount(\"/\", False)\n"); ``` diff --git a/frozen/Adafruit_CircuitPython_PCF8563 b/frozen/Adafruit_CircuitPython_PCF8563 new file mode 160000 index 0000000000000..3f40c877acbbd --- /dev/null +++ b/frozen/Adafruit_CircuitPython_PCF8563 @@ -0,0 +1 @@ +Subproject commit 3f40c877acbbda0ef82336c18f3620ce1b9013f5 diff --git a/frozen/Adafruit_CircuitPython_Wiznet5k b/frozen/Adafruit_CircuitPython_Wiznet5k new file mode 160000 index 0000000000000..ea7b97c5b1faa --- /dev/null +++ b/frozen/Adafruit_CircuitPython_Wiznet5k @@ -0,0 +1 @@ +Subproject commit ea7b97c5b1faa2db4b54d7f6d9a61b545b49f383 diff --git a/frozen/CircuitPython_AXP2101 b/frozen/CircuitPython_AXP2101 new file mode 160000 index 0000000000000..f89fc3d6c4773 --- /dev/null +++ b/frozen/CircuitPython_AXP2101 @@ -0,0 +1 @@ +Subproject commit f89fc3d6c47735279a6fd862b1a6aee2b44f4dcc diff --git a/frozen/CircuitPython_BMA423 b/frozen/CircuitPython_BMA423 new file mode 160000 index 0000000000000..d6446c4daf13f --- /dev/null +++ b/frozen/CircuitPython_BMA423 @@ -0,0 +1 @@ +Subproject commit d6446c4daf13f19c6baafda8d24411c8d775f162 diff --git a/ports/espressif/boards/elio_eliobot/board.c b/ports/espressif/boards/elio_eliobot/board.c deleted file mode 100644 index a3a9eec047145..0000000000000 --- a/ports/espressif/boards/elio_eliobot/board.c +++ /dev/null @@ -1,9 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries -// -// SPDX-License-Identifier: MIT - -#include "supervisor/board.h" - -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/elio_eliobot_s2/board.c b/ports/espressif/boards/elio_eliobot_s2/board.c new file mode 100644 index 0000000000000..b4f47e9a99329 --- /dev/null +++ b/ports/espressif/boards/elio_eliobot_s2/board.c @@ -0,0 +1,41 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/microcontroller/Pin.h" + +#include "lib/oofatfs/ff.h" +#include "extmod/vfs_fat.h" +#include "py/mpstate.h" +#include "supervisor/filesystem.h" + +void board_init(void) { + mp_import_stat_t stat_b = mp_import_stat("boot.py"); + if (stat_b != MP_IMPORT_STAT_FILE) { + fs_user_mount_t *fs_mount = filesystem_circuitpy(); + FATFS *fatfs = &fs_mount->fatfs; + FIL fs; + UINT char_written = 0; + const byte buffer[] = "import board\nimport storage\n\n# Write options : True = Mass Storage, False = REPL\nstorage.remount(\"/\", False)\n"; + // Create or modify existing boot.py file + f_open(fatfs, &fs, "/boot.py", FA_WRITE | FA_CREATE_ALWAYS); + f_write(&fs, buffer, sizeof(buffer) - 1, &char_written); + f_close(&fs); + // Delete code.py, use main.py + mp_import_stat_t stat_c = mp_import_stat("code.py"); + if (stat_c == MP_IMPORT_STAT_FILE) { + f_unlink(fatfs, "/code.py"); + } + // Create main.py file + const byte buffer2[] = "print(\"Hello World!\")\n"; + f_open(fatfs, &fs, "/main.py", FA_WRITE | FA_CREATE_ALWAYS); + f_write(&fs, buffer2, sizeof(buffer2) - 1, &char_written); + f_close(&fs); + } +} + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/elio_eliobot/mpconfigboard.h b/ports/espressif/boards/elio_eliobot_s2/mpconfigboard.h similarity index 100% rename from ports/espressif/boards/elio_eliobot/mpconfigboard.h rename to ports/espressif/boards/elio_eliobot_s2/mpconfigboard.h diff --git a/ports/espressif/boards/elio_eliobot/mpconfigboard.mk b/ports/espressif/boards/elio_eliobot_s2/mpconfigboard.mk similarity index 100% rename from ports/espressif/boards/elio_eliobot/mpconfigboard.mk rename to ports/espressif/boards/elio_eliobot_s2/mpconfigboard.mk diff --git a/ports/espressif/boards/elio_eliobot/pins.c b/ports/espressif/boards/elio_eliobot_s2/pins.c similarity index 100% rename from ports/espressif/boards/elio_eliobot/pins.c rename to ports/espressif/boards/elio_eliobot_s2/pins.c diff --git a/ports/espressif/boards/elio_eliobot/sdkconfig b/ports/espressif/boards/elio_eliobot_s2/sdkconfig similarity index 100% rename from ports/espressif/boards/elio_eliobot/sdkconfig rename to ports/espressif/boards/elio_eliobot_s2/sdkconfig diff --git a/ports/espressif/boards/elio_eliobot_s3/board.c b/ports/espressif/boards/elio_eliobot_s3/board.c new file mode 100644 index 0000000000000..09b7cd0bb9b64 --- /dev/null +++ b/ports/espressif/boards/elio_eliobot_s3/board.c @@ -0,0 +1,41 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2025 Romain Boutrois +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/microcontroller/Pin.h" + +#include "lib/oofatfs/ff.h" +#include "extmod/vfs_fat.h" +#include "py/mpstate.h" +#include "supervisor/filesystem.h" + +void board_init(void) { + mp_import_stat_t stat_b = mp_import_stat("boot.py"); + if (stat_b != MP_IMPORT_STAT_FILE) { + fs_user_mount_t *fs_mount = filesystem_circuitpy(); + FATFS *fatfs = &fs_mount->fatfs; + FIL fs; + UINT char_written = 0; + const byte buffer[] = "import board\nimport storage\n\n# Write options : True = Mass Storage, False = REPL\nstorage.remount(\"/\", False)\n"; + // Create or modify existing boot.py file + f_open(fatfs, &fs, "/boot.py", FA_WRITE | FA_CREATE_ALWAYS); + f_write(&fs, buffer, sizeof(buffer) - 1, &char_written); + f_close(&fs); + // Delete code.py, use main.py + mp_import_stat_t stat_c = mp_import_stat("code.py"); + if (stat_c == MP_IMPORT_STAT_FILE) { + f_unlink(fatfs, "/code.py"); + } + // Create main.py file + const byte buffer2[] = "print(\"Hello World!\")\n"; + f_open(fatfs, &fs, "/main.py", FA_WRITE | FA_CREATE_ALWAYS); + f_write(&fs, buffer2, sizeof(buffer2) - 1, &char_written); + f_close(&fs); + } +} + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/elio_eliobot_s3/mpconfigboard.h b/ports/espressif/boards/elio_eliobot_s3/mpconfigboard.h new file mode 100644 index 0000000000000..d72eaa9f73637 --- /dev/null +++ b/ports/espressif/boards/elio_eliobot_s3/mpconfigboard.h @@ -0,0 +1,25 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "Eliobot" +#define MICROPY_HW_MCU_NAME "ESP32S3" +#define CIRCUITPY_DRIVE_LABEL "ELIOBOT" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO1) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO9) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO30) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO32) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO31) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO44) +#define DEFAULT_UART_BUS_TX (&pin_GPIO43) diff --git a/ports/espressif/boards/elio_eliobot_s3/mpconfigboard.mk b/ports/espressif/boards/elio_eliobot_s3/mpconfigboard.mk new file mode 100644 index 0000000000000..7c2985e7de527 --- /dev/null +++ b/ports/espressif/boards/elio_eliobot_s3/mpconfigboard.mk @@ -0,0 +1,30 @@ +USB_VID = 0x303a +USB_PID = 0x81B4 +USB_PRODUCT = "Eliobot" +USB_MANUFACTURER = "ELIO" + +IDF_TARGET = esp32s3 + +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m +CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY_ESP_PSRAM_SIZE = 2MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY_ESPCAMERA = 0 +CIRCUITPY_BITMAPFILTER = 0 +CIRCUITPY_CODEOP = 0 +CIRCUITPY_PARALLELDISPLAYBUS = 0 + + +CIRCUITPY_BITBANG_NEOPIXEL = 1 + +CIRCUITPY_STAGE = 1 + + +# Include these Python libraries in firmware. +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HTTPServer +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IRRemote \ No newline at end of file diff --git a/ports/espressif/boards/elio_eliobot_s3/pins.c b/ports/espressif/boards/elio_eliobot_s3/pins.c new file mode 100644 index 0000000000000..f203ad745f688 --- /dev/null +++ b/ports/espressif/boards/elio_eliobot_s3/pins.c @@ -0,0 +1,148 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO0) }, + + // GPIO1 : NEOPIXEL + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + + // GPIO3 : BATTERY SENSE + { MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_VBAT), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_VBAT_SENSE), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_GPIO3) }, + + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO4) }, + + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO5) }, + + + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO6) }, + + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO7) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO8) }, + + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO9) }, + + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO14) }, + + // GPIO15 : XTAL_32K_P + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + + // GPIO16 : XTAL_32K_P + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_GPIO17) }, + + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_DAC2), MP_ROM_PTR(&pin_GPIO18) }, + + // GPIO19 : USB_D- + // GPIO20 : USB_D+ + + // 5V present sense pin + { MP_ROM_QSTR(MP_QSTR_VBUS), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_VBUS_SENSE), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_IO26), MP_ROM_PTR(&pin_GPIO26) }, + + { MP_ROM_QSTR(MP_QSTR_IO27), MP_ROM_PTR(&pin_GPIO27) }, + + { MP_ROM_QSTR(MP_QSTR_IO28), MP_ROM_PTR(&pin_GPIO28) }, + + { MP_ROM_QSTR(MP_QSTR_IO29), MP_ROM_PTR(&pin_GPIO29) }, + + { MP_ROM_QSTR(MP_QSTR_IO30), MP_ROM_PTR(&pin_GPIO30) }, + + { MP_ROM_QSTR(MP_QSTR_IO31), MP_ROM_PTR(&pin_GPIO31) }, + + { MP_ROM_QSTR(MP_QSTR_IO32), MP_ROM_PTR(&pin_GPIO32) }, + + { MP_ROM_QSTR(MP_QSTR_IO33), MP_ROM_PTR(&pin_GPIO33) }, + { MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO33) }, + + { MP_ROM_QSTR(MP_QSTR_IO34), MP_ROM_PTR(&pin_GPIO34) }, + + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_SDO), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO35) }, + + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_SDI), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO36) }, + + { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO37) }, + + { MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO38) }, + + { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) }, + + { MP_ROM_QSTR(MP_QSTR_IO40), MP_ROM_PTR(&pin_GPIO40) }, + + { MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) }, + + { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + + { MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) }, + + { MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) }, + + { MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) }, + + { MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) }, + + + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/elio_eliobot_s3/sdkconfig b/ports/espressif/boards/elio_eliobot_s3/sdkconfig new file mode 100644 index 0000000000000..582ebc494799d --- /dev/null +++ b/ports/espressif/boards/elio_eliobot_s3/sdkconfig @@ -0,0 +1,23 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="ELIOBOT" + +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y + +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" + +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="esp-idf-config/partitions-4MB-no-ota.csv" +CONFIG_PARTITION_TABLE_FILENAME="esp-idf-config/partitions-4MB-no-ota.csv" + +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration diff --git a/ports/espressif/microros-lib b/ports/espressif/microros-lib new file mode 160000 index 0000000000000..4b2a696dec7f0 --- /dev/null +++ b/ports/espressif/microros-lib @@ -0,0 +1 @@ +Subproject commit 4b2a696dec7f0f865e014ea4b83f2332df7e9560 diff --git a/supervisor/shared/filesystem.c b/supervisor/shared/filesystem.c index e6ca5da09b532..e5edb148e4145 100644 --- a/supervisor/shared/filesystem.c +++ b/supervisor/shared/filesystem.c @@ -136,8 +136,6 @@ bool filesystem_init(bool create_allowed, bool force_create) { // make a sample code.py file MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/code.py", "print(\"Hello World!\")\n"); - //MAKE_FILE_WITH_OPTIONAL_CONTENTS(&vfs_fat->fatfs, "/boot.py", "import board\nimport storage\n\n# Attribution de l'ecriture : True = Mass Storage, False = REPL\nstorage.remount("/", False)\n"); - // create empty lib directory res = f_mkdir(&vfs_fat->fatfs, "/lib"); if (res != FR_OK) { From 458b066dde68e62e95010e00626f673ac1c560b4 Mon Sep 17 00:00:00 2001 From: Romain Date: Mon, 22 Dec 2025 23:09:42 +0100 Subject: [PATCH 09/10] Add git tag command --- HOW-TO-BUILD.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HOW-TO-BUILD.md b/HOW-TO-BUILD.md index bf7ca23a5b72f..bc356c0628e8c 100644 --- a/HOW-TO-BUILD.md +++ b/HOW-TO-BUILD.md @@ -71,7 +71,7 @@ git tag -d 9.1.2 git push origin :refs/tags/9.1.2 git tag -a 9.1.2 -git push origin 9.1.2 +git push origin 9.1.2 -m "Circuitpython 9.1.2" ``` It will push the last commit you made to the repository with the tag name you specified. From f7576dbc91b58793c5a970ff65386be398f94072 Mon Sep 17 00:00:00 2001 From: Romain Date: Mon, 22 Dec 2025 23:12:00 +0100 Subject: [PATCH 10/10] Corrected git tag command --- HOW-TO-BUILD.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HOW-TO-BUILD.md b/HOW-TO-BUILD.md index bc356c0628e8c..ed658ef13f0fb 100644 --- a/HOW-TO-BUILD.md +++ b/HOW-TO-BUILD.md @@ -70,8 +70,8 @@ example : git tag -d 9.1.2 git push origin :refs/tags/9.1.2 -git tag -a 9.1.2 -git push origin 9.1.2 -m "Circuitpython 9.1.2" +git tag -a 9.1.2 -m "Circuitpython 9.1.2" +git push origin 9.1.2 ``` It will push the last commit you made to the repository with the tag name you specified.