From 896d9aa98cfec0f2b1010be7e0db289b8b809311 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 12 Feb 2023 23:02:05 +0000 Subject: Add rp2040_ce and add elite-pi and helios as alias (#19830) * add rp2040_ce and add elite-pi and helios as alias (#19628) * fix git mishap * Update platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h Co-authored-by: Joel Challis --------- Co-authored-by: Joel Challis * Tidy docs --------- Co-authored-by: Conor Burns --- data/mappings/defaults.hjson | 5 +++ data/schemas/keyboard.jsonschema | 2 +- docs/feature_converters.md | 27 ++++++++++++--- docs/platformdev_rp2040.md | 15 +++++++++ docs/squeezing_avr.md | 1 + .../converters/elite_c_to_elite_pi/_pin_defs.h | 39 ---------------------- .../converters/elite_c_to_elite_pi/converter.mk | 9 ----- .../elite_c_to_elite_pi/pre_converter.mk | 2 ++ .../converters/elite_c_to_helios/pre_converter.mk | 2 ++ .../converters/elite_c_to_rp2040_ce/_pin_defs.h | 39 ++++++++++++++++++++++ .../converters/elite_c_to_rp2040_ce/converter.mk | 10 ++++++ .../converters/promicro_to_elite_pi/_pin_defs.h | 36 -------------------- .../converters/promicro_to_elite_pi/converter.mk | 9 ----- .../promicro_to_elite_pi/pre_converter.mk | 2 ++ .../converters/promicro_to_helios/pre_converter.mk | 2 ++ .../converters/promicro_to_rp2040_ce/_pin_defs.h | 36 ++++++++++++++++++++ .../converters/promicro_to_rp2040_ce/converter.mk | 10 ++++++ 17 files changed, 148 insertions(+), 98 deletions(-) delete mode 100644 platforms/chibios/converters/elite_c_to_elite_pi/_pin_defs.h delete mode 100644 platforms/chibios/converters/elite_c_to_elite_pi/converter.mk create mode 100644 platforms/chibios/converters/elite_c_to_elite_pi/pre_converter.mk create mode 100644 platforms/chibios/converters/elite_c_to_helios/pre_converter.mk create mode 100644 platforms/chibios/converters/elite_c_to_rp2040_ce/_pin_defs.h create mode 100644 platforms/chibios/converters/elite_c_to_rp2040_ce/converter.mk delete mode 100644 platforms/chibios/converters/promicro_to_elite_pi/_pin_defs.h delete mode 100644 platforms/chibios/converters/promicro_to_elite_pi/converter.mk create mode 100644 platforms/chibios/converters/promicro_to_elite_pi/pre_converter.mk create mode 100644 platforms/chibios/converters/promicro_to_helios/pre_converter.mk create mode 100644 platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h create mode 100644 platforms/chibios/converters/promicro_to_rp2040_ce/converter.mk diff --git a/data/mappings/defaults.hjson b/data/mappings/defaults.hjson index 8efe73dcde..93da6161d6 100644 --- a/data/mappings/defaults.hjson +++ b/data/mappings/defaults.hjson @@ -69,6 +69,11 @@ "processor": "STM32F411", "bootloader": "stm32-dfu", "board": "BONSAI_C4" + }, + "helios": { + "processor": "RP2040", + "bootloader": "rp2040", + "board": "QMK_PM2040" } } } diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 1f89bfeaa7..95387ba367 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -34,7 +34,7 @@ }, "development_board": { "type": "string", - "enum": ["promicro", "elite_c", "elite_pi", "proton_c", "kb2040", "promicro_rp2040", "blok", "michi", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4"] + "enum": ["promicro", "elite_c", "elite_pi", "proton_c", "kb2040", "promicro_rp2040", "blok", "michi", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4", "helios"] }, "pin_compatible": { "type": "string", diff --git a/docs/feature_converters.md b/docs/feature_converters.md index df42acac59..9baac14e97 100644 --- a/docs/feature_converters.md +++ b/docs/feature_converters.md @@ -18,9 +18,14 @@ Currently the following converters are available: | `promicro` | `stemcell` | | `promicro` | `bonsai_c4` | | `promicro` | `elite_pi` | +| `promicro` | `rp2040_ce` | +| `promicro` | `elite_pi` | +| `promicro` | `helios` | | `promicro` | `michi` | | `elite_c` | `stemcell` | +| `elite_c` | `rp2040_ce` | | `elite_c` | `elite_pi` | +| `elite_c` | `helios` | See below for more in depth information on each converter. @@ -82,6 +87,7 @@ If a board currently supported in QMK uses a [Pro Micro](https://www.sparkfun.co | [STeMCell](https://github.com/megamind4089/STeMCell) | `stemcell` | | [customMK Bonsai C4](https://shop.custommk.com/products/bonsai-c4-microcontroller-board) | `bonsai_c4` | | [Elite-Pi](https://keeb.io/products/elite-pi-usb-c-pro-micro-replacement-rp2040) | `elite_pi` | +| [0xCB Helios](https://keeb.supply/products/0xcb-helios) | `helios` | | [Michi](https://github.com/ci-bus/michi-promicro-rp2040) | `michi` | Converter summary: @@ -95,7 +101,9 @@ Converter summary: | `bit_c_pro` | `-e CONVERT_TO=bit_c_pro` | `CONVERT_TO=bit_c_pro` | `#ifdef CONVERT_TO_BIT_C_PRO` | | `stemcell` | `-e CONVERT_TO=stemcell` | `CONVERT_TO=stemcell` | `#ifdef CONVERT_TO_STEMCELL` | | `bonsai_c4` | `-e CONVERT_TO=bonsai_c4` | `CONVERT_TO=bonsai_c4` | `#ifdef CONVERT_TO_BONSAI_C4` | +| `rp2040_ce` | `-e CONVERT_TO=rp2040_ce` | `CONVERT_TO=rp2040_ce` | `#ifdef CONVERT_TO_RP2040_CE` | | `elite_pi` | `-e CONVERT_TO=elite_pi` | `CONVERT_TO=elite_pi` | `#ifdef CONVERT_TO_ELITE_PI` | +| `helios` | `-e CONVERT_TO=helios` | `CONVERT_TO=helios` | `#ifdef CONVERT_TO_HELIOS` | | `michi` | `-e CONVERT_TO=michi` | `CONVERT_TO=michi` | `#ifdef CONVERT_TO_MICHI` | ### Proton C :id=proton_c @@ -127,7 +135,7 @@ The following defaults are based on what has been implemented for [RP2040](platf | USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) | | [Split keyboards](feature_split_keyboard.md) | Partial via `PIO` vendor driver - heavily dependent on enabled features | -### SparkFun Pro Micro - RP2040, Blok, Bit-C PRO, Elite-Pi and Michi :id=promicro_rp2040 +### SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi :id=promicro_rp2040 Currently identical to [Adafruit KB2040](#kb2040). @@ -156,10 +164,18 @@ The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro ```c #undef B0 -// If Vbus detection is unused, we can send RXLED to the Vbus detect pin instead +// If VBUS detection is unused, we can send RXLED to the Vbus detect pin instead #define B0 PAL_LINE(GPIOA, 9) ``` +### RP2040 Community Edition - Elite-Pi and Helios :id=rp2040_ce + +Feature set currently identical to [Adafruit KB2040](#kb2040). + +Enables VBUS detection by default for superior split keyboard support. + +For more information, refer to the [RP2040 Community Edition](platformdev_rp2040.md#rp2040_ce) docs. + ## Elite-C If a board currently supported in QMK uses an [Elite-C](https://keeb.io/products/elite-c-low-profile-version-usb-c-pro-micro-replacement-atmega32u4), the supported alternative controllers are: @@ -168,18 +184,21 @@ If a board currently supported in QMK uses an [Elite-C](https://keeb.io/products |----------------------------------------------------------------------------------|-------------------| | [STeMCell](https://github.com/megamind4089/STeMCell) | `stemcell` | | [Elite-Pi](https://keeb.io/products/elite-pi-usb-c-pro-micro-replacement-rp2040) | `elite_pi` | +| [0xCB Helios](https://keeb.supply/products/0xcb-helios) | `helios` | Converter summary: | Target | Argument | `rules.mk` | Condition | |-------------------|---------------------------------|------------------------------|-------------------------------------| | `stemcell` | `-e CONVERT_TO=stemcell` | `CONVERT_TO=stemcell` | `#ifdef CONVERT_TO_STEMCELL` | +| `rp2040_ce` | `-e CONVERT_TO=rp2040_ce` | `CONVERT_TO=rp2040_ce` | `#ifdef CONVERT_TO_RP2040_CE` | | `elite_pi` | `-e CONVERT_TO=elite_pi` | `CONVERT_TO=elite_pi` | `#ifdef CONVERT_TO_ELITE_PI` | +| `helios` | `-e CONVERT_TO=helios` | `CONVERT_TO=helios` | `#ifdef CONVERT_TO_HELIOS` | ### STeMCell :id=stemcell_elite Currently identical to [STeMCell](#stemcell) with support for the additional bottom row of pins. -### Elite-Pi :id=elite_pi +### RP2040 Community Edition :id=rp2040_ce_elite -Currently identical to [Adafruit KB2040](#kb2040), with support for the additional bottom row of pins. +Currently identical to [RP2040 Community Edition](#rp2040_ce), with support for the additional bottom row of pins. diff --git a/docs/platformdev_rp2040.md b/docs/platformdev_rp2040.md index b5b32c7b08..890dadb6f0 100644 --- a/docs/platformdev_rp2040.md +++ b/docs/platformdev_rp2040.md @@ -124,3 +124,18 @@ As the RP2040 does not have any internal flash memory it depends on an external | W25X10CL | `#define RP2040_FLASH_W25X10CL` | | IS25LP080 | `#define RP2040_FLASH_IS25LP080` | | Generic 03H flash | `#define RP2040_FLASH_GENERIC_03H` | + +## RP2040 Community Edition :id=rp2040_ce + +The "RP2040 Community Edition" standard is a pinout that was defined by a committee of designers on the BastardKB Discord server. + +These boards are designed to be a drop-in replacement for keyboards wanting an upgrade from ATmega32u4 based pro micros (eg. Elite-C). + +| Pinout Compatible Controllers | +| -------------------------------------------------------------------------------- | +| [0xB2 Splinky](https://github.com/plut0nium/0xB2/) | +| [Elite-Pi](https://keeb.io/products/elite-pi-usb-c-pro-micro-replacement-rp2040) | +| [Sea-Picro EXT](https://github.com/joshajohnson/sea-picro) | +| [0xCB Helios](https://keeb.supply/products/0xcb-helios) | +| [Frood](https://github.com/piit79/Frood) | +| [Liatris](https://splitkb.com/products/liatris) | diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md index 60cda69c18..62db7f2471 100644 --- a/docs/squeezing_avr.md +++ b/docs/squeezing_avr.md @@ -193,6 +193,7 @@ That said, there are a number of Pro Micro replacements with ARM controllers: * [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288) * [Blok](https://boardsource.xyz/store/628b95b494dfa308a6581622) * [Elite-Pi](https://keeb.io/products/elite-pi-usb-c-pro-micro-replacement-rp2040) +* [0xCB Helios](https://keeb.supply/products/0xcb-helios) ([Open Source](https://github.com/0xCB-dev/0xCB-Helios), DIY/PCBA/Shop) * [Michi](https://github.com/ci-bus/michi-promicro-rp2040) There are other, non-Pro Micro compatible boards out there. The most popular being: diff --git a/platforms/chibios/converters/elite_c_to_elite_pi/_pin_defs.h b/platforms/chibios/converters/elite_c_to_elite_pi/_pin_defs.h deleted file mode 100644 index 98dd37e279..0000000000 --- a/platforms/chibios/converters/elite_c_to_elite_pi/_pin_defs.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2022 QMK -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -// Left side (front) -#define D3 0U -#define D2 1U -// GND -// GND -#define D1 2U -#define D0 3U -#define D4 4U -#define C6 5U -#define D7 6U -#define E6 7U -#define B4 8U -#define B5 9U - -// Right side (front) -// RAW -// GND -// RESET -// VCC -#define F4 29U -#define F5 28U -#define F6 27U -#define F7 26U -#define B1 22U -#define B3 20U -#define B2 23U -#define B6 21U - -// Bottom row -#define B7 12U -#define D5 13U -#define C7 14U -#define F1 15U -#define F0 16U diff --git a/platforms/chibios/converters/elite_c_to_elite_pi/converter.mk b/platforms/chibios/converters/elite_c_to_elite_pi/converter.mk deleted file mode 100644 index 590a004189..0000000000 --- a/platforms/chibios/converters/elite_c_to_elite_pi/converter.mk +++ /dev/null @@ -1,9 +0,0 @@ -# Elite-Pi MCU settings for converting AVR projects -MCU := RP2040 -BOARD := QMK_PM2040 -BOOTLOADER := rp2040 - -# These are defaults based on what has been implemented for RP2040 boards -SERIAL_DRIVER ?= vendor -WS2812_DRIVER ?= vendor -BACKLIGHT_DRIVER ?= software diff --git a/platforms/chibios/converters/elite_c_to_elite_pi/pre_converter.mk b/platforms/chibios/converters/elite_c_to_elite_pi/pre_converter.mk new file mode 100644 index 0000000000..b38823fa5f --- /dev/null +++ b/platforms/chibios/converters/elite_c_to_elite_pi/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/elite_c_to_rp2040_ce +ACTIVE_CONVERTER:=rp2040_ce diff --git a/platforms/chibios/converters/elite_c_to_helios/pre_converter.mk b/platforms/chibios/converters/elite_c_to_helios/pre_converter.mk new file mode 100644 index 0000000000..b38823fa5f --- /dev/null +++ b/platforms/chibios/converters/elite_c_to_helios/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/elite_c_to_rp2040_ce +ACTIVE_CONVERTER:=rp2040_ce diff --git a/platforms/chibios/converters/elite_c_to_rp2040_ce/_pin_defs.h b/platforms/chibios/converters/elite_c_to_rp2040_ce/_pin_defs.h new file mode 100644 index 0000000000..b5fd88fc36 --- /dev/null +++ b/platforms/chibios/converters/elite_c_to_rp2040_ce/_pin_defs.h @@ -0,0 +1,39 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Left side (front) +#define D3 0U +#define D2 1U +// GND +// GND +#define D1 2U +#define D0 3U +#define D4 4U +#define C6 5U +#define D7 6U +#define E6 7U +#define B4 8U +#define B5 9U + +// Right side (front) +// RAW +// GND +// RESET +// VCC +#define F4 29U +#define F5 28U +#define F6 27U +#define F7 26U +#define B1 22U +#define B3 20U +#define B2 23U +#define B6 21U + +// Bottom row +#define B7 12U +#define D5 13U +#define C7 14U +#define F1 15U +#define F0 16U diff --git a/platforms/chibios/converters/elite_c_to_rp2040_ce/converter.mk b/platforms/chibios/converters/elite_c_to_rp2040_ce/converter.mk new file mode 100644 index 0000000000..bfca20cd99 --- /dev/null +++ b/platforms/chibios/converters/elite_c_to_rp2040_ce/converter.mk @@ -0,0 +1,10 @@ +# rp2040_ce MCU settings for converting AVR projects +MCU := RP2040 +BOARD := QMK_PM2040 +BOOTLOADER := rp2040 + +# These are defaults based on what has been implemented for RP2040 boards +SERIAL_DRIVER ?= vendor +WS2812_DRIVER ?= vendor +BACKLIGHT_DRIVER ?= software +OPT_DEFS += -DUSB_VBUS_PIN=19U diff --git a/platforms/chibios/converters/promicro_to_elite_pi/_pin_defs.h b/platforms/chibios/converters/promicro_to_elite_pi/_pin_defs.h deleted file mode 100644 index 1372bef79e..0000000000 --- a/platforms/chibios/converters/promicro_to_elite_pi/_pin_defs.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2022 QMK -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -// Left side (front) -#define D3 0U -#define D2 1U -// GND -// GND -#define D1 2U -#define D0 3U -#define D4 4U -#define C6 5U -#define D7 6U -#define E6 7U -#define B4 8U -#define B5 9U - -// Right side (front) -// RAW -// GND -// RESET -// VCC -#define F4 29U -#define F5 28U -#define F6 27U -#define F7 26U -#define B1 22U -#define B3 20U -#define B2 23U -#define B6 21U - -// LEDs -#define D5 12U -#define B0 13U diff --git a/platforms/chibios/converters/promicro_to_elite_pi/converter.mk b/platforms/chibios/converters/promicro_to_elite_pi/converter.mk deleted file mode 100644 index 590a004189..0000000000 --- a/platforms/chibios/converters/promicro_to_elite_pi/converter.mk +++ /dev/null @@ -1,9 +0,0 @@ -# Elite-Pi MCU settings for converting AVR projects -MCU := RP2040 -BOARD := QMK_PM2040 -BOOTLOADER := rp2040 - -# These are defaults based on what has been implemented for RP2040 boards -SERIAL_DRIVER ?= vendor -WS2812_DRIVER ?= vendor -BACKLIGHT_DRIVER ?= software diff --git a/platforms/chibios/converters/promicro_to_elite_pi/pre_converter.mk b/platforms/chibios/converters/promicro_to_elite_pi/pre_converter.mk new file mode 100644 index 0000000000..7b3130a5e9 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_elite_pi/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/promicro_to_rp2040_ce +ACTIVE_CONVERTER:=rp2040_ce diff --git a/platforms/chibios/converters/promicro_to_helios/pre_converter.mk b/platforms/chibios/converters/promicro_to_helios/pre_converter.mk new file mode 100644 index 0000000000..7b3130a5e9 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_helios/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/promicro_to_rp2040_ce +ACTIVE_CONVERTER:=rp2040_ce diff --git a/platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h b/platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h new file mode 100644 index 0000000000..0109f884d4 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h @@ -0,0 +1,36 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Left side (front) +#define D3 0U +#define D2 1U +// GND +// GND +#define D1 2U +#define D0 3U +#define D4 4U +#define C6 5U +#define D7 6U +#define E6 7U +#define B4 8U +#define B5 9U + +// Right side (front) +// RAW +// GND +// RESET +// VCC +#define F4 29U +#define F5 28U +#define F6 27U +#define F7 26U +#define B1 22U +#define B3 20U +#define B2 23U +#define B6 21U + +// LEDs +#define D5 12U +#define B0 13U diff --git a/platforms/chibios/converters/promicro_to_rp2040_ce/converter.mk b/platforms/chibios/converters/promicro_to_rp2040_ce/converter.mk new file mode 100644 index 0000000000..bfca20cd99 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_rp2040_ce/converter.mk @@ -0,0 +1,10 @@ +# rp2040_ce MCU settings for converting AVR projects +MCU := RP2040 +BOARD := QMK_PM2040 +BOOTLOADER := rp2040 + +# These are defaults based on what has been implemented for RP2040 boards +SERIAL_DRIVER ?= vendor +WS2812_DRIVER ?= vendor +BACKLIGHT_DRIVER ?= software +OPT_DEFS += -DUSB_VBUS_PIN=19U -- cgit v1.2.3