summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2021-10-01 19:11:34 -0700
committerGitHub <noreply@github.com>2021-10-01 19:11:34 -0700
commit5b644af4155d2eae0005ed11f604f7b14dfa7456 (patch)
tree69e7508a487d6ef7fef1cfd979315da58e3a64c6
parent481104053e9d6191cb93e0aeaf6ec938f9acdcb2 (diff)
downloadqmk_firmware-5b644af4155d2eae0005ed11f604f7b14dfa7456.tar.gz
qmk_firmware-5b644af4155d2eae0005ed11f604f7b14dfa7456.zip
[Keyboard] Enable Proton C defaults for SplitKB Kyria (#14490)
Co-authored-by: Ryan <fauxpark@gmail.com>
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/rules.mk8
-rw-r--r--keyboards/splitkb/kyria/readme.md22
-rw-r--r--keyboards/splitkb/kyria/rev1/config.h27
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/chconf.h22
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/halconf.h22
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h29
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/proton_c.c17
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/proton_c.h19
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/rules.mk5
-rw-r--r--keyboards/splitkb/kyria/rev1/rev1.h3
10 files changed, 162 insertions, 12 deletions
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
index b51cc1b626..f2ae5a1919 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
+++ b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
@@ -12,11 +12,11 @@ COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
UNICODE_ENABLE = no # Unicode
KEY_LOCK_ENABLE = no
+CTPC = yes
-
-BOOTLOADER = hid
-BOOTLOADER_SIZE = 512
-PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
+# BOOTLOADER = hid
+# BOOTLOADER_SIZE = 512
+# PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
# TAP_DANCE_ENABLE = yes
WPM_ENABLE = yes
diff --git a/keyboards/splitkb/kyria/readme.md b/keyboards/splitkb/kyria/readme.md
index 5ce652589c..7ecf3946f7 100644
--- a/keyboards/splitkb/kyria/readme.md
+++ b/keyboards/splitkb/kyria/readme.md
@@ -10,7 +10,8 @@ Hardware Availability: [splitkb.com](https://splitkb.com) and partners.
Make example for this keyboard (after setting up your build environment):
- make splitkb/kyria:default
+ make splitkb/kyria/rev1:default
+ make splitkb/kyria/rev1/proton_c:default
Example of flashing this keyboard:
@@ -19,3 +20,22 @@ Example of flashing this keyboard:
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
A build guide for the Kyria can be found at [docs.splitkb.com](https://docs.splitkb.com/hc/en-us/articles/360010552059-Kyria-Build-Guide-Introduction).
+
+## Proton C Conversion Guide
+
+If you're one of the lucky people to have Proton Cs to use with their Kyria, there are a couple of caveats to getting this working.
+
+1. You need to have 2x Proton Cs, as you cannot mix and match with Pro Micros or Elite C's. They both need to be Proton Cs.
+2. You'll need to do some modding to enable proper support with the Proton C.
+
+By design, the Kyria uses every available pin on the Pro Micro footprint. This includes using D3 (RX) for RGB. This poses a challenge with using the Proton C, since it needs both the TX and RX pins. The Proton C needs both pins, especially if you plan on using Full Duplex Serial.
+
+To fix this, you need to break off the last header position on the right-hand side on the footprint. This is the `TX0/D3` pad. Leave this pad without a header connected to.
+
+From the A9 pin on the Proton C, you want to run a wire from it to the `SDA + Extra Data` pad near the TRRS jack on the PCB. This will allow for proper, full duplex communication over the TRRS cable.
+
+To get RGB working properly, as well, you want to run a wire from the `A3` pin on the Proton C, next to the GND and DFU pin, right under the USB port. Run this to the `TX0/D3` pad (the one you left without a header pin on the PCB).
+
+Once you've done that, you can solder in the Proton C. and flash it.
+
+![Proton C](https://i.imgur.com/nICqWLo.jpg)
diff --git a/keyboards/splitkb/kyria/rev1/config.h b/keyboards/splitkb/kyria/rev1/config.h
index a330dfc10f..e19e8dfa9c 100644
--- a/keyboards/splitkb/kyria/rev1/config.h
+++ b/keyboards/splitkb/kyria/rev1/config.h
@@ -57,18 +57,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/
-#define SOFT_SERIAL_PIN D2
-#define RGB_DI_PIN D3
+#if defined(CONVERT_TO_PROTON_C)
+# define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+# define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
+# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
+# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+# define SERIAL_USART_TX_PIN D3
+# define SERIAL_USART_RX_PIN D2
+
+# define RGB_DI_PIN PAL_LINE(GPIOA, 3)
+# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
+# define WS2812_PWM_CHANNEL 4 // default: 2
+# define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
+# define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+# define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
+#else
+# define RGB_DI_PIN D3
+# define SOFT_SERIAL_PIN D2
+#endif
+
#define RGBLED_SPLIT \
{ 10, 10 }
#define RGBLED_NUM 20
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
#ifdef OLED_ENABLE
# define OLED_DISPLAY_128X64
# define SPLIT_OLED_ENABLE
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/chconf.h b/keyboards/splitkb/kyria/rev1/proton_c/chconf.h
new file mode 100644
index 0000000000..7ca1d3d243
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/chconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_RESOLUTION 16
+#define CH_CFG_ST_FREQUENCY 10000
+
+#include_next "chconf.h"
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/halconf.h b/keyboards/splitkb/kyria/rev1/proton_c/halconf.h
new file mode 100644
index 0000000000..99f2e11b9a
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h b/keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h
new file mode 100644
index 0000000000..58348af390
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h
@@ -0,0 +1,29 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM2
+#define STM32_PWM_USE_TIM2 TRUE
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 FALSE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+#undef STM32_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 3
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/proton_c.c b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.c
new file mode 100644
index 0000000000..628fabb2e5
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.c
@@ -0,0 +1,17 @@
+/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "proton_c.h"
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/proton_c.h b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.h
new file mode 100644
index 0000000000..718f5636ff
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "rev1.h"
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/rules.mk b/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
new file mode 100644
index 0000000000..9e0942398f
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
@@ -0,0 +1,5 @@
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+AUDIO_ENABLE = no
+LTO_ENABLE = no
+CONVERT_TO_PROTON_C = yes
diff --git a/keyboards/splitkb/kyria/rev1/rev1.h b/keyboards/splitkb/kyria/rev1/rev1.h
index bf9864fe36..8a5fbeb21d 100644
--- a/keyboards/splitkb/kyria/rev1/rev1.h
+++ b/keyboards/splitkb/kyria/rev1/rev1.h
@@ -16,6 +16,9 @@
#pragma once
#include "kyria.h"
+#ifdef KEYBOARD_splitkb_kyria_rev1_proton_c
+# include "proton_c.h"
+#endif
/* This a shortcut to help you visually see your layout.
*