From 6714237027fb7e91116c3661828d51b4a279799c Mon Sep 17 00:00:00 2001 From: Exentio Date: Sun, 19 Dec 2021 21:29:23 +0100 Subject: [PATCH 1/4] Added nRF52840 Feather Express support, MF68 shield --- .../adafruit_feather_nrf52840/CMakeLists.txt | 8 + .../arm/adafruit_feather_nrf52840/Kconfig | 10 + .../adafruit_feather_nrf52840/Kconfig.board | 8 + .../Kconfig.defconfig | 30 +++ .../adafruit_feather_nrf52840.dts | 171 ++++++++++++++++++ .../adafruit_feather_nrf52840.yaml | 22 +++ .../adafruit_feather_nrf52840.zmk.yml | 10 + .../adafruit_feather_nrf52840_defconfig | 30 +++ .../arm/adafruit_feather_nrf52840/board.cmake | 5 + .../feather_connector.dtsi | 41 +++++ app/boards/shields/mf68/Kconfig.defconfig | 9 + app/boards/shields/mf68/Kconfig.shield | 5 + app/boards/shields/mf68/README.md | 46 +++++ app/boards/shields/mf68/mf68.conf | 2 + app/boards/shields/mf68/mf68.keymap | 53 ++++++ app/boards/shields/mf68/mf68.overlay | 88 +++++++++ app/boards/shields/mf68/mf68.png | Bin 0 -> 80305 bytes app/boards/shields/mf68/mf68.zmk.yml | 7 + 18 files changed, 545 insertions(+) create mode 100644 app/boards/arm/adafruit_feather_nrf52840/CMakeLists.txt create mode 100644 app/boards/arm/adafruit_feather_nrf52840/Kconfig create mode 100644 app/boards/arm/adafruit_feather_nrf52840/Kconfig.board create mode 100644 app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig create mode 100644 app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts create mode 100644 app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.yaml create mode 100644 app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.zmk.yml create mode 100644 app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840_defconfig create mode 100644 app/boards/arm/adafruit_feather_nrf52840/board.cmake create mode 100644 app/boards/arm/adafruit_feather_nrf52840/feather_connector.dtsi create mode 100644 app/boards/shields/mf68/Kconfig.defconfig create mode 100644 app/boards/shields/mf68/Kconfig.shield create mode 100644 app/boards/shields/mf68/README.md create mode 100644 app/boards/shields/mf68/mf68.conf create mode 100644 app/boards/shields/mf68/mf68.keymap create mode 100644 app/boards/shields/mf68/mf68.overlay create mode 100644 app/boards/shields/mf68/mf68.png create mode 100644 app/boards/shields/mf68/mf68.zmk.yml diff --git a/app/boards/arm/adafruit_feather_nrf52840/CMakeLists.txt b/app/boards/arm/adafruit_feather_nrf52840/CMakeLists.txt new file mode 100644 index 00000000..00952c30 --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/CMakeLists.txt @@ -0,0 +1,8 @@ +set_property(GLOBAL APPEND PROPERTY extra_post_build_commands + COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/../tools/uf2/utils/uf2conv.py + -c + -b 0x26000 + -f 0xADA52840 + -o ${PROJECT_BINARY_DIR}/${CONFIG_KERNEL_BIN_NAME}.uf2 + ${PROJECT_BINARY_DIR}/${CONFIG_KERNEL_BIN_NAME}.bin +) diff --git a/app/boards/arm/adafruit_feather_nrf52840/Kconfig b/app/boards/arm/adafruit_feather_nrf52840/Kconfig new file mode 100644 index 00000000..3328e345 --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/Kconfig @@ -0,0 +1,10 @@ +# Adafruit Feather nRF52840 Express board configuration + +# Copyright (c) 2020 Tobias Svehagen +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_ENABLE_DCDC + bool "Enable DCDC mode" + select SOC_DCDC_NRF52X + default y + depends on BOARD_ADAFRUIT_FEATHER_NRF52840 diff --git a/app/boards/arm/adafruit_feather_nrf52840/Kconfig.board b/app/boards/arm/adafruit_feather_nrf52840/Kconfig.board new file mode 100644 index 00000000..4e37d053 --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/Kconfig.board @@ -0,0 +1,8 @@ +# Adafruit Feather nRF52840 Express board configuration + +# Copyright (c) 2020 Tobias Svehagen +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_ADAFRUIT_FEATHER_NRF52840 + bool "Adafruit Feather nRF52840 Express" + depends on SOC_NRF52840_QIAA diff --git a/app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig b/app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig new file mode 100644 index 00000000..da5898e0 --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig @@ -0,0 +1,30 @@ +# Adafruit Feather nRF52840 Express board configuration + +# Copyright (c) 2021 Exentio +# SPDX-License-Identifier: MIT + +if BOARD_ADAFRUIT_FEATHER_NRF52840 + +config BOARD + default "adafruit_feather_nrf52840" + +if USB + +config USB_NRFX + default y + +config USB_DEVICE_STACK + default y + +endif # USB + +config BT_CTLR + default BT + +config ZMK_BLE + default y + +config ZMK_USB + default y + +endif # BOARD_ADAFRUIT_FEATHER_NRF52840 diff --git a/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts new file mode 100644 index 00000000..a7a69171 --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2021 Exentio + * + * SPDX-License-Identifier: MIT + */ + +/dts-v1/; +#include +#include "feather_connector.dtsi" + +/ { + model = "Adafruit Feather nRF52840 Express"; + compatible = "adafruit,feather-nrf52840"; + + chosen { + zephyr,code-partition = &code_partition; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; + + leds { + compatible = "gpio-leds"; + led0: led_0 { + gpios = <&gpio1 15 0>; + label = "D3 LED"; + }; + led1: led_1 { + gpios = <&gpio1 10 0>; + label = "CONN LED"; + }; + }; + + vbatt { + compatible = "zmk,battery-voltage-divider"; + label = "BATTERY"; + io-channels = <&adc 6>; + // copy-pasted values because idk how to calculate them + output-ohms = <2000000>; + full-ohms = <(2000000 + 806000)>; + }; + + buttons { + compatible = "gpio-keys"; + button0: button_0 { + gpios = <&gpio1 2 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "User switch"; + }; + }; + + /* These aliases are provided for compatibility with samples */ + aliases { + led0 = &led0; + led1 = &led1; + sw0 = &button0; + }; +}; + +&adc { + status = "okay"; +}; + +&gpiote { + status = "okay"; +}; + +&gpio0 { + status = "okay"; +}; + +&gpio1 { + status = "okay"; +}; + +/* Free TX/RX pins from UART +&uart0 { + compatible = "nordic,nrf-uart"; + current-speed = <115200>; + status = "okay"; + tx-pin = <25>; + rx-pin = <24>; +}; +*/ + +/* Free SCL/SDA pins from I2C +&i2c0 { + compatible = "nordic,nrf-twi"; + status = "okay"; + sda-pin = <12>; + scl-pin = <11>; +}; +*/ + +/* Free SCK, MO, and MI pins from SPI +&spi1 { + compatible = "nordic,nrf-spi"; + status = "okay"; + sck-pin = <14>; + mosi-pin = <13>; + miso-pin = <15>; +}; +*/ + +/* You also probably don't need the QSPI flash +&qspi { + status = "okay"; + sck-pin = <19>; + io-pins = <17>, <22>, <23>, <21>; + csn-pins = <20>; + gd25q16: gd25q16@0 { + // NOTE: Quad mode not supported as driver does not handle + // QE bit setting in SR2. Ref. GD25Q16C, Rev 3.0, p. 12. + compatible = "nordic,qspi-nor"; + reg = <0>; + writeoc = "pp2o"; + readoc = "read2io"; + sck-frequency = <16000000>; + label = "GD25Q16"; + jedec-id = [c8 40 15]; + size = <16777216>; + has-dpd; + t-enter-dpd = <20000>; + t-exit-dpd = <20000>; + }; +}; +*/ + +&flash0 { + /* + * Basically the same as the Nice!Nano, the original .dts from Zephyr + * doesn't support UF2. + * For more information about the memory map, see: + * https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/hathach-memory-map + */ + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + sd_partition: partition@0 { + label = "softdevice"; + reg = <0x00000000 0x00026000>; + }; + code_partition: partition@26000 { + label = "code_partition"; + reg = <0x00026000 0x000c6000>; + }; + + /* + * The flash starting at 0x000ec000 and ending at + * 0x000f3fff is reserved for use by the application. + */ + + /* + * Storage partition will be used by FCB/LittleFS/NVS + * if enabled. + */ + storage_partition: partition@ec000 { + label = "storage"; + reg = <0x000ec000 0x00008000>; + }; + + boot_partition: partition@f4000 { + label = "adafruit_boot"; + reg = <0x000f4000 0x0000c000>; + }; + }; +}; + +&usbd { + status = "okay"; +}; diff --git a/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.yaml b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.yaml new file mode 100644 index 00000000..c637807e --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.yaml @@ -0,0 +1,22 @@ +identifier: adafruit_feather_nrf52840 +name: Adafruit Feather nRF52840 Express +type: mcu +arch: arm +ram: 256 +flash: 1024 +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - adc + - pwm + - usb_device + - usb_cdc + - ble + - ieee802154 + - watchdog + - counter + - feather_serial + - feather_i2c + - feather_spi diff --git a/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.zmk.yml b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.zmk.yml new file mode 100644 index 00000000..5994857c --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.zmk.yml @@ -0,0 +1,10 @@ +file_format: "1" +id: adafruit_feather_nrf52840 +name: Adafruit Feather nRF52840 Express +type: board +arch: arm +outputs: + - usb + - ble +url: https://www.adafruit.com/product/4062 +exposes: [feather] diff --git a/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840_defconfig b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840_defconfig new file mode 100644 index 00000000..edf23441 --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840_defconfig @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: MIT + +CONFIG_SOC_SERIES_NRF52X=y +CONFIG_SOC_NRF52840_QIAA=y +CONFIG_BOARD_ADAFRUIT_FEATHER_NRF52840=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y + +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y + +# enable uart driver +#CONFIG_SERIAL=y + +# enable console +CONFIG_CONSOLE=y +#CONFIG_UART_CONSOLE=y + +# additional board options +CONFIG_GPIO_AS_PINRESET=y diff --git a/app/boards/arm/adafruit_feather_nrf52840/board.cmake b/app/boards/arm/adafruit_feather_nrf52840/board.cmake new file mode 100644 index 00000000..fa847d50 --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/board.cmake @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: MIT + +board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") +include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) diff --git a/app/boards/arm/adafruit_feather_nrf52840/feather_connector.dtsi b/app/boards/arm/adafruit_feather_nrf52840/feather_connector.dtsi new file mode 100644 index 00000000..96d92f62 --- /dev/null +++ b/app/boards/arm/adafruit_feather_nrf52840/feather_connector.dtsi @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2020 Richard Osterloh + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + feather_header: connector { + compatible = "adafruit-feather-header"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <0 0 &gpio0 4 0>, /* A0 */ + <1 0 &gpio0 5 0>, /* A1 */ + <2 0 &gpio0 30 0>, /* A2 */ + <3 0 &gpio0 28 0>, /* A3 */ + <4 0 &gpio0 2 0>, /* A4 */ + <5 0 &gpio0 3 0>, /* A5 */ + <6 0 &gpio0 14 0>, /* SCK */ + <7 0 &gpio0 13 0>, /* MOSI */ + <8 0 &gpio0 15 0>, /* MISO */ + <9 0 &gpio0 24 0>, /* RXD */ + <10 0 &gpio0 25 0>, /* TXD */ + <11 0 &gpio0 10 0>, /* D2 (NFC2) */ + <12 0 &gpio0 12 0>, /* SDA */ + <13 0 &gpio0 11 0>, /* SCL */ + <14 0 &gpio1 8 0>, /* D5 */ + <15 0 &gpio0 7 0>, /* D6 */ + <16 0 &gpio0 26 0>, /* D9 */ + <17 0 &gpio0 27 0>, /* D10 */ + <18 0 &gpio0 6 0>, /* D11 */ + <19 0 &gpio0 8 0>, /* D12 */ + <20 0 &gpio1 9 0>; /* D13 */ + }; +}; + +/* Enable UART, I2C, and/or SPI +feather_serial: &uart0 {}; +feather_i2c: &i2c0 {}; +feather_spi: &spi1 {}; +*/ diff --git a/app/boards/shields/mf68/Kconfig.defconfig b/app/boards/shields/mf68/Kconfig.defconfig new file mode 100644 index 00000000..23102097 --- /dev/null +++ b/app/boards/shields/mf68/Kconfig.defconfig @@ -0,0 +1,9 @@ +# Copyright (c) 2021 Exentio +# SPDX-License-Identifier: MIT + +if SHIELD_MF68 + +config ZMK_KEYBOARD_NAME + default "MF68" + +endif diff --git a/app/boards/shields/mf68/Kconfig.shield b/app/boards/shields/mf68/Kconfig.shield new file mode 100644 index 00000000..b3229055 --- /dev/null +++ b/app/boards/shields/mf68/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2021 Exentio +# SPDX-License-Identifier: MIT + +config SHIELD_MF68 + def_bool $(shields_list_contains,mf68) diff --git a/app/boards/shields/mf68/README.md b/app/boards/shields/mf68/README.md new file mode 100644 index 00000000..a3390f82 --- /dev/null +++ b/app/boards/shields/mf68/README.md @@ -0,0 +1,46 @@ +# [MF68](https://www.40percent.club/2016/11/mf68-revised-pcb.html) + +Replacement MagicForce 68 PCB designed by [di0ib](https://github.com/di0ib). +Hardware repo: https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/mf68 + +This shield is made to be easily used with an Adafruit Feather nRF52840 Express, and the default pin order is optimized for that board. For use with a Pro Micro-compatible controller, comment lines 21-41 and uncomment lines 44-64 in `mf68.overlay`. + +## Features + +- Designed for Pro Micro boards +- PWM backlight control (with optional FDS6630A, not configured) +- Mini USB port for DIY case + +## Default layout +![](mf68.png) + +## Use with an Adafruit Feather nRF52840 Express + +### Pinout + +| Pro Micro Left | Feather Left | Feather Right | Pro Micro Right | +|----------------|--------------|---------------|-----------------| +| D3 | A2 | | RAW | +| D2 | A3 | GND* | GND | +| GND | | RST* | RESET | +| GND | | | VCC | +| D1 | A4 | D5 | F4 | +| D0 | A5 | D6 | F5 | +| D4 | SCK | D9 | F6 | +| C6 | MO | D10 | F7 | +| D7 | MI | D11 | B1 | +| E6 | RX | D12 | B3 | +| B4 | TX | D13 | B2 | +| B5 | | A0 | B6 | + +### But why not a Pro Micro-compatible microcontroller? +Availability and sometimes cost. Sometimes it's hard to find them or the developers straight up stop producing them, sad but common in the mechanical keyboards community. On the other hand, the Feather nRF52840 Express is more widely available and I doubt it's gonna be discontinued anytime soon. + +I was unable to use the D2 pin, and using the SDA pin caused issues. +In the board definitions, UART is disabled since the RX and TX pins are used for the matrix, same for SPI and SCK/MO/MI pins. +SCL and SDA pins are available for I2C but disabled by default, uncomment lines 84-91 in `app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts` to enable. +The QSPI flash is disabled too, if needed uncomment lines 103-125 in the same file. + +The space inside the MagicForce68 case is very, very limited, and physical modifications to the case, like the removal of inner support, are necessary; I also had to desolder the JST connector and remove the black holder from the SWD connector from the Feather, basically making it flat. For the same reason, forget about putting a battery inside: best case scenario it just doesn't fit, worst case scenario it gets punctured by the solder joints (which is as bad as it sounds). I'm gonna try with a 18650 battery on the outside. + +If adding backlight to your board with this controller, remember that Adafruit says that it's not safe to pull 500mA from the regulator when connected to 5V (read: USB). \ No newline at end of file diff --git a/app/boards/shields/mf68/mf68.conf b/app/boards/shields/mf68/mf68.conf new file mode 100644 index 00000000..03de7e2a --- /dev/null +++ b/app/boards/shields/mf68/mf68.conf @@ -0,0 +1,2 @@ +# Turn on logging, and set ZMK logging to debug output +#CONFIG_ZMK_USB_LOGGING=y diff --git a/app/boards/shields/mf68/mf68.keymap b/app/boards/shields/mf68/mf68.keymap new file mode 100644 index 00000000..70eca23c --- /dev/null +++ b/app/boards/shields/mf68/mf68.keymap @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2021 Exentio + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include +#include + +/ { + keymap0: keymap { + compatible = "zmk,keymap"; + +// ,--------------------------------------------------------------------------------------------------------. +// |GRESC| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | |INSERT| PGUP | +// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | |DELETE| PGDN | +// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | | +// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | | UP | | +// | CTRL | WIN | ALT | SPACE | ALT | FN | CTRL | | LEFT | DOWN |RIGHT | +// `--------------------------------------------------------------------------------------------------------' + + default_layer { + bindings = < + &gresc &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS &kp EQUAL &kp BSPC &kp INS &kp PG_UP + &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH &kp DEL &kp PG_DN + &kp CLCK &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT &kp RET + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &kp UP + &kp LCTRL &kp LGUI &kp LALT &kp SPACE &kp RALT &mo 1 &kp RCTRL &kp LEFT &kp DOWN &kp RIGHT + >; + }; + +// ,--------------------------------------------------------------------------------------------------------. +// |GRAVE| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |BOOTLOADER| | PLAY | HOME | +// | TAB | USB | BLE | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | RESET | | PRTSC| END | +// | CAPS | BT1 | BT2 | BT3 | BT4 | --- | --- | --- | --- | --- | --- | --- | ENTER | | +// | SHIFT |EXTPW|BTCLR| --- | --- | --- | --- | --- | --- | --- | --- | SHIFT | | UP | | +// | CTRL | WIN | ALT | SPACE | ALT | FN | CTRL | | LEFT | DOWN |RIGHT | +// `--------------------------------------------------------------------------------------------------------' + + fn_layer { + bindings = < + &kp GRAVE &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &bootloader &kp K_PP &kp HOME + &trans &out OUT_USB &out OUT_BLE &none &none &none &none &none &none &none &none &none &none &reset &kp PSCRN &kp END + &trans &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &none &none &none &none &none &none &none &trans + &trans &ext_power EP_TOG &bt BT_CLR &none &none &none &none &none &none &none &none &trans &trans + &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans + >; + }; + }; +}; diff --git a/app/boards/shields/mf68/mf68.overlay b/app/boards/shields/mf68/mf68.overlay new file mode 100644 index 00000000..dbfb056a --- /dev/null +++ b/app/boards/shields/mf68/mf68.overlay @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2021 Exentio + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + + // Adafruit Feather nRF52840 Express + row-gpios + = <&gpio0 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* A0 */ + , <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D13 */ + , <&gpio0 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D12 */ + , <&gpio0 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D11 */ + , <&gpio0 27 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D10 */ + , <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D9 */ + , <&gpio0 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D6 */ + , <&gpio1 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D5 */ + ; + col-gpios + = <&gpio0 30 GPIO_ACTIVE_HIGH> /* A2 */ + , <&gpio0 28 GPIO_ACTIVE_HIGH> /* A3 */ + , <&gpio0 2 GPIO_ACTIVE_HIGH> /* A4 */ + , <&gpio0 3 GPIO_ACTIVE_HIGH> /* A5 */ + , <&gpio0 14 GPIO_ACTIVE_HIGH> /* SCK */ + , <&gpio0 13 GPIO_ACTIVE_HIGH> /* MOSI */ + , <&gpio0 15 GPIO_ACTIVE_HIGH> /* MISO */ + , <&gpio0 24 GPIO_ACTIVE_HIGH> /* RXD */ + , <&gpio0 25 GPIO_ACTIVE_HIGH> /* TXD */ + ; + + /* Pro Micro + row-gpios + = <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + col-gpios + = <&pro_micro 1 GPIO_ACTIVE_HIGH> + , <&pro_micro 0 GPIO_ACTIVE_HIGH> + , <&pro_micro 2 GPIO_ACTIVE_HIGH> + , <&pro_micro 3 GPIO_ACTIVE_HIGH> + , <&pro_micro 4 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + ; + */ + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <9>; + rows = <8>; + +// | MX1 | MX2 | MX3 | MX4 | MX5 | MX6 | MX7 | MX8 | MX9 | MX10 | MX11 | MX12 | MX13 | MX14 | MX15 | MX16 | +// | MX17 | MX18 | MX19 | MX20 | MX21 | MX22 | MX23 | MX24 | MX25 | MX26 | MX27 | MX28 | MX29 | MX30 | MX31 | MX32 | +// | MX33 | MX34 | MX35 | MX36 | MX37 | MX38 | MX39 | MX40 | MX41 | MX42 | MX43 | MX44 | MX45 | +// | MX46 | MX47 | MX48 | MX49 | MX50 | MX51 | MX52 | MX53 | MX54 | MX55 | MX56 | MX57 | MX58 | +// | MX59 | MX60 | MX61 | MX62 | MX63 | MX64 | MX65 | MX66 | MX67 | MX68 | + + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) +RC(1,7) RC(1,8) RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) +RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,7) RC(4,8) +RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) RC(5,5) RC(5,6) RC(5,7) RC(5,8) RC(6,0) RC(6,1) RC(6,2) RC(6,3) +RC(6,4) RC(6,5) RC(6,6) RC(6,7) RC(6,8) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) + >; + }; +}; + diff --git a/app/boards/shields/mf68/mf68.png b/app/boards/shields/mf68/mf68.png new file mode 100644 index 0000000000000000000000000000000000000000..7797f463f307fc27d403418c10891178ff4d28ab GIT binary patch literal 80305 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
$dD(JwDjHQ` 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%0A$uARp{O-lOEhbRkJI*5o|1@XPw% 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%0DyO*tYCue%ND(2)96E5@gQi@X$Gsj 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 wphq2l*zF@%ZsCy<($aIEz$TKDJe%YMyDGoec>@ Date: Sun, 19 Dec 2021 21:36:21 +0100 Subject: [PATCH 2/4] Changed license copyright names --- app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig | 2 +- .../arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts | 2 +- app/boards/shields/mf68/Kconfig.defconfig | 2 +- app/boards/shields/mf68/Kconfig.shield | 2 +- app/boards/shields/mf68/mf68.keymap | 2 +- app/boards/shields/mf68/mf68.overlay | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig b/app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig index da5898e0..ebf2d216 100644 --- a/app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig +++ b/app/boards/arm/adafruit_feather_nrf52840/Kconfig.defconfig @@ -1,6 +1,6 @@ # Adafruit Feather nRF52840 Express board configuration -# Copyright (c) 2021 Exentio +# Copyright (c) 2021 The ZMK Contributors # SPDX-License-Identifier: MIT if BOARD_ADAFRUIT_FEATHER_NRF52840 diff --git a/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts index a7a69171..280d4d7a 100644 --- a/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts +++ b/app/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Exentio + * Copyright (c) 2021 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/mf68/Kconfig.defconfig b/app/boards/shields/mf68/Kconfig.defconfig index 23102097..e545d9c6 100644 --- a/app/boards/shields/mf68/Kconfig.defconfig +++ b/app/boards/shields/mf68/Kconfig.defconfig @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Exentio +# Copyright (c) 2021 The ZMK Contributors # SPDX-License-Identifier: MIT if SHIELD_MF68 diff --git a/app/boards/shields/mf68/Kconfig.shield b/app/boards/shields/mf68/Kconfig.shield index b3229055..ff5656c1 100644 --- a/app/boards/shields/mf68/Kconfig.shield +++ b/app/boards/shields/mf68/Kconfig.shield @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Exentio +# Copyright (c) 2021 The ZMK Contributors # SPDX-License-Identifier: MIT config SHIELD_MF68 diff --git a/app/boards/shields/mf68/mf68.keymap b/app/boards/shields/mf68/mf68.keymap index 70eca23c..02f4ccec 100644 --- a/app/boards/shields/mf68/mf68.keymap +++ b/app/boards/shields/mf68/mf68.keymap @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Exentio + * Copyright (c) 2021 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/mf68/mf68.overlay b/app/boards/shields/mf68/mf68.overlay index dbfb056a..714f2969 100644 --- a/app/boards/shields/mf68/mf68.overlay +++ b/app/boards/shields/mf68/mf68.overlay @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Exentio + * Copyright (c) 2021 The ZMK Contributors * * SPDX-License-Identifier: MIT */ From 37c0533875e75b016f32ec618975f655324a6e9f Mon Sep 17 00:00:00 2001 From: Exentio Date: Sun, 19 Dec 2021 22:32:38 +0100 Subject: [PATCH 3/4] mf68 builds for Pro Micro by default --- app/boards/shields/mf68/Kconfig.defconfig | 7 ++ app/boards/shields/mf68/Kconfig.shield | 3 + app/boards/shields/mf68/README.md | 4 +- app/boards/shields/mf68/mf68.dtsi | 41 ++++++++ app/boards/shields/mf68/mf68.overlay | 105 +++++-------------- app/boards/shields/mf68/mf68_feather.overlay | 31 ++++++ 6 files changed, 108 insertions(+), 83 deletions(-) create mode 100644 app/boards/shields/mf68/mf68.dtsi create mode 100644 app/boards/shields/mf68/mf68_feather.overlay diff --git a/app/boards/shields/mf68/Kconfig.defconfig b/app/boards/shields/mf68/Kconfig.defconfig index e545d9c6..e9a8ef1c 100644 --- a/app/boards/shields/mf68/Kconfig.defconfig +++ b/app/boards/shields/mf68/Kconfig.defconfig @@ -7,3 +7,10 @@ config ZMK_KEYBOARD_NAME default "MF68" endif + +if SHIELD_MF68_FEATHER + +config ZMK_KEYBOARD_NAME + default "MF68" + +endif diff --git a/app/boards/shields/mf68/Kconfig.shield b/app/boards/shields/mf68/Kconfig.shield index ff5656c1..c3cade28 100644 --- a/app/boards/shields/mf68/Kconfig.shield +++ b/app/boards/shields/mf68/Kconfig.shield @@ -3,3 +3,6 @@ config SHIELD_MF68 def_bool $(shields_list_contains,mf68) + +config SHIELD_MF68_FEATHER + def_bool $(shields_list_contains,mf68_feather) diff --git a/app/boards/shields/mf68/README.md b/app/boards/shields/mf68/README.md index a3390f82..41b7f5ad 100644 --- a/app/boards/shields/mf68/README.md +++ b/app/boards/shields/mf68/README.md @@ -3,8 +3,6 @@ Replacement MagicForce 68 PCB designed by [di0ib](https://github.com/di0ib). Hardware repo: https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/mf68 -This shield is made to be easily used with an Adafruit Feather nRF52840 Express, and the default pin order is optimized for that board. For use with a Pro Micro-compatible controller, comment lines 21-41 and uncomment lines 44-64 in `mf68.overlay`. - ## Features - Designed for Pro Micro boards @@ -16,6 +14,8 @@ This shield is made to be easily used with an Adafruit Feather nRF52840 Express, ## Use with an Adafruit Feather nRF52840 Express +Build with `west build -p -d build/feather -b adafruit_feather_nrf52840 -- -DSHIELD=mf68_feather`. + ### Pinout | Pro Micro Left | Feather Left | Feather Right | Pro Micro Right | diff --git a/app/boards/shields/mf68/mf68.dtsi b/app/boards/shields/mf68/mf68.dtsi new file mode 100644 index 00000000..f43e7622 --- /dev/null +++ b/app/boards/shields/mf68/mf68.dtsi @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2021 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <9>; + rows = <8>; + +// | MX1 | MX2 | MX3 | MX4 | MX5 | MX6 | MX7 | MX8 | MX9 | MX10 | MX11 | MX12 | MX13 | MX14 | MX15 | MX16 | +// | MX17 | MX18 | MX19 | MX20 | MX21 | MX22 | MX23 | MX24 | MX25 | MX26 | MX27 | MX28 | MX29 | MX30 | MX31 | MX32 | +// | MX33 | MX34 | MX35 | MX36 | MX37 | MX38 | MX39 | MX40 | MX41 | MX42 | MX43 | MX44 | MX45 | +// | MX46 | MX47 | MX48 | MX49 | MX50 | MX51 | MX52 | MX53 | MX54 | MX55 | MX56 | MX57 | MX58 | +// | MX59 | MX60 | MX61 | MX62 | MX63 | MX64 | MX65 | MX66 | MX67 | MX68 | + + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) +RC(1,7) RC(1,8) RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) +RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,7) RC(4,8) +RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) RC(5,5) RC(5,6) RC(5,7) RC(5,8) RC(6,0) RC(6,1) RC(6,2) RC(6,3) +RC(6,4) RC(6,5) RC(6,6) RC(6,7) RC(6,8) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) + >; + }; +}; + diff --git a/app/boards/shields/mf68/mf68.overlay b/app/boards/shields/mf68/mf68.overlay index 714f2969..14bf55c5 100644 --- a/app/boards/shields/mf68/mf68.overlay +++ b/app/boards/shields/mf68/mf68.overlay @@ -4,85 +4,28 @@ * SPDX-License-Identifier: MIT */ -#include - -/ { - chosen { - zmk,kscan = &kscan0; - zmk,matrix_transform = &default_transform; - }; - - kscan0: kscan { - compatible = "zmk,kscan-gpio-matrix"; - label = "KSCAN"; - diode-direction = "col2row"; - - // Adafruit Feather nRF52840 Express - row-gpios - = <&gpio0 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* A0 */ - , <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D13 */ - , <&gpio0 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D12 */ - , <&gpio0 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D11 */ - , <&gpio0 27 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D10 */ - , <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D9 */ - , <&gpio0 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D6 */ - , <&gpio1 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D5 */ - ; - col-gpios - = <&gpio0 30 GPIO_ACTIVE_HIGH> /* A2 */ - , <&gpio0 28 GPIO_ACTIVE_HIGH> /* A3 */ - , <&gpio0 2 GPIO_ACTIVE_HIGH> /* A4 */ - , <&gpio0 3 GPIO_ACTIVE_HIGH> /* A5 */ - , <&gpio0 14 GPIO_ACTIVE_HIGH> /* SCK */ - , <&gpio0 13 GPIO_ACTIVE_HIGH> /* MOSI */ - , <&gpio0 15 GPIO_ACTIVE_HIGH> /* MISO */ - , <&gpio0 24 GPIO_ACTIVE_HIGH> /* RXD */ - , <&gpio0 25 GPIO_ACTIVE_HIGH> /* TXD */ - ; - - /* Pro Micro - row-gpios - = <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - ; - col-gpios - = <&pro_micro 1 GPIO_ACTIVE_HIGH> - , <&pro_micro 0 GPIO_ACTIVE_HIGH> - , <&pro_micro 2 GPIO_ACTIVE_HIGH> - , <&pro_micro 3 GPIO_ACTIVE_HIGH> - , <&pro_micro 4 GPIO_ACTIVE_HIGH> - , <&pro_micro 5 GPIO_ACTIVE_HIGH> - , <&pro_micro 6 GPIO_ACTIVE_HIGH> - , <&pro_micro 7 GPIO_ACTIVE_HIGH> - , <&pro_micro 8 GPIO_ACTIVE_HIGH> - ; - */ - }; - - default_transform: keymap_transform_0 { - compatible = "zmk,matrix-transform"; - columns = <9>; - rows = <8>; - -// | MX1 | MX2 | MX3 | MX4 | MX5 | MX6 | MX7 | MX8 | MX9 | MX10 | MX11 | MX12 | MX13 | MX14 | MX15 | MX16 | -// | MX17 | MX18 | MX19 | MX20 | MX21 | MX22 | MX23 | MX24 | MX25 | MX26 | MX27 | MX28 | MX29 | MX30 | MX31 | MX32 | -// | MX33 | MX34 | MX35 | MX36 | MX37 | MX38 | MX39 | MX40 | MX41 | MX42 | MX43 | MX44 | MX45 | -// | MX46 | MX47 | MX48 | MX49 | MX50 | MX51 | MX52 | MX53 | MX54 | MX55 | MX56 | MX57 | MX58 | -// | MX59 | MX60 | MX61 | MX62 | MX63 | MX64 | MX65 | MX66 | MX67 | MX68 | - - map = < -RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) -RC(1,7) RC(1,8) RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) -RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,7) RC(4,8) -RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) RC(5,5) RC(5,6) RC(5,7) RC(5,8) RC(6,0) RC(6,1) RC(6,2) RC(6,3) -RC(6,4) RC(6,5) RC(6,6) RC(6,7) RC(6,8) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) - >; - }; -}; +#include "mf68.dtsi" +&kscan0 { + row-gpios + = <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + col-gpios + = <&pro_micro 1 GPIO_ACTIVE_HIGH> + , <&pro_micro 0 GPIO_ACTIVE_HIGH> + , <&pro_micro 2 GPIO_ACTIVE_HIGH> + , <&pro_micro 3 GPIO_ACTIVE_HIGH> + , <&pro_micro 4 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + ; +}; \ No newline at end of file diff --git a/app/boards/shields/mf68/mf68_feather.overlay b/app/boards/shields/mf68/mf68_feather.overlay new file mode 100644 index 00000000..de4d386e --- /dev/null +++ b/app/boards/shields/mf68/mf68_feather.overlay @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2021 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include "mf68.dtsi" + +&kscan0 { + row-gpios + = <&gpio0 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* A0 */ + , <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D13 */ + , <&gpio0 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D12 */ + , <&gpio0 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D11 */ + , <&gpio0 27 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D10 */ + , <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D9 */ + , <&gpio0 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D6 */ + , <&gpio1 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> /* D5 */ + ; + col-gpios + = <&gpio0 30 GPIO_ACTIVE_HIGH> /* A2 */ + , <&gpio0 28 GPIO_ACTIVE_HIGH> /* A3 */ + , <&gpio0 2 GPIO_ACTIVE_HIGH> /* A4 */ + , <&gpio0 3 GPIO_ACTIVE_HIGH> /* A5 */ + , <&gpio0 14 GPIO_ACTIVE_HIGH> /* SCK */ + , <&gpio0 13 GPIO_ACTIVE_HIGH> /* MOSI */ + , <&gpio0 15 GPIO_ACTIVE_HIGH> /* MISO */ + , <&gpio0 24 GPIO_ACTIVE_HIGH> /* RXD */ + , <&gpio0 25 GPIO_ACTIVE_HIGH> /* TXD */ + ; +}; \ No newline at end of file From 17c84191ffb9629b4fddede83831a3e7fa47551e Mon Sep 17 00:00:00 2001 From: Exentio Date: Sun, 19 Dec 2021 22:45:06 +0100 Subject: [PATCH 4/4] Readme updates and EOF newlines --- app/boards/shields/mf68/README.md | 2 +- app/boards/shields/mf68/mf68.overlay | 2 +- app/boards/shields/mf68/mf68_feather.overlay | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/boards/shields/mf68/README.md b/app/boards/shields/mf68/README.md index 41b7f5ad..914f4a30 100644 --- a/app/boards/shields/mf68/README.md +++ b/app/boards/shields/mf68/README.md @@ -7,7 +7,7 @@ Hardware repo: https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/mf68 - Designed for Pro Micro boards - PWM backlight control (with optional FDS6630A, not configured) -- Mini USB port for DIY case +- Mini USB footprint for DIY case, pads for the original MagicForce 68 daughter board ## Default layout ![](mf68.png) diff --git a/app/boards/shields/mf68/mf68.overlay b/app/boards/shields/mf68/mf68.overlay index 14bf55c5..cc1f104c 100644 --- a/app/boards/shields/mf68/mf68.overlay +++ b/app/boards/shields/mf68/mf68.overlay @@ -28,4 +28,4 @@ , <&pro_micro 7 GPIO_ACTIVE_HIGH> , <&pro_micro 8 GPIO_ACTIVE_HIGH> ; -}; \ No newline at end of file +}; diff --git a/app/boards/shields/mf68/mf68_feather.overlay b/app/boards/shields/mf68/mf68_feather.overlay index de4d386e..1f335c18 100644 --- a/app/boards/shields/mf68/mf68_feather.overlay +++ b/app/boards/shields/mf68/mf68_feather.overlay @@ -28,4 +28,4 @@ , <&gpio0 24 GPIO_ACTIVE_HIGH> /* RXD */ , <&gpio0 25 GPIO_ACTIVE_HIGH> /* TXD */ ; -}; \ No newline at end of file +};