aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile26
-rw-r--r--keyboards/infinity_ergodox/Makefile1
-rw-r--r--keyboards/infinity_ergodox/infinity_ergodox.c10
-rw-r--r--tmk_core/common.mk9
-rw-r--r--tmk_core/common/keyboard.c11
-rw-r--r--tmk_core/protocol/chibios/main.c30
6 files changed, 81 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index c285dabad..7c00ce2cc 100644
--- a/Makefile
+++ b/Makefile
@@ -59,6 +59,12 @@ ifndef KEYBOARD
59 KEYBOARD=planck 59 KEYBOARD=planck
60endif 60endif
61 61
62MASTER ?= left
63ifdef master
64 MASTER = $(master)
65endif
66
67
62# converts things to keyboards/subproject 68# converts things to keyboards/subproject
63ifneq (,$(findstring /,$(KEYBOARD))) 69ifneq (,$(findstring /,$(KEYBOARD)))
64 TEMP:=$(KEYBOARD) 70 TEMP:=$(KEYBOARD)
@@ -198,10 +204,28 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
198endif 204endif
199 205
200ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) 206ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
201 OPT_DEFS += -DTAP_DANCE_ENABLE 207 OPT_DEFS += -DTAP_DANCE_ENABLE
202 SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c 208 SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
203endif 209endif
204 210
211ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
212 SERIAL_DIR = $(QUANTUM_DIR)/serial_link
213 SERIAL_PATH = $(QUANTUM_PATH)/serial_link
214 SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c)
215 SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
216 SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
217 OPT_DEFS += -DSERIAL_LINK_ENABLE
218 VAPTH += $(SERIAL_PATH)
219endif
220
221ifeq ($(MASTER),right)
222 OPT_DEFS += -DMASTER_IS_ON_RIGHT
223else
224 ifneq ($(MASTER),left)
225$(error MASTER does not have a valid value(left/right))
226 endif
227endif
228
205# Optimize size but this may cause error "relocation truncated to fit" 229# Optimize size but this may cause error "relocation truncated to fit"
206#EXTRALDFLAGS = -Wl,--relax 230#EXTRALDFLAGS = -Wl,--relax
207 231
diff --git a/keyboards/infinity_ergodox/Makefile b/keyboards/infinity_ergodox/Makefile
index fb21aae5e..efa32e037 100644
--- a/keyboards/infinity_ergodox/Makefile
+++ b/keyboards/infinity_ergodox/Makefile
@@ -66,6 +66,7 @@ COMMAND_ENABLE ?= yes # Commands for debug and configuration
66SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend 66SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
67NKRO_ENABLE ?= yes # USB Nkey Rollover 67NKRO_ENABLE ?= yes # USB Nkey Rollover
68CUSTOM_MATRIX ?= yes # Custom matrix file 68CUSTOM_MATRIX ?= yes # Custom matrix file
69SERIAL_LINK_ENABLE = yes
69 70
70ifndef QUANTUM_DIR 71ifndef QUANTUM_DIR
71 include ../../Makefile 72 include ../../Makefile
diff --git a/keyboards/infinity_ergodox/infinity_ergodox.c b/keyboards/infinity_ergodox/infinity_ergodox.c
index 34aded1a7..85054775e 100644
--- a/keyboards/infinity_ergodox/infinity_ergodox.c
+++ b/keyboards/infinity_ergodox/infinity_ergodox.c
@@ -1 +1,11 @@
1#include "infinity_ergodox.h" 1#include "infinity_ergodox.h"
2#include "ch.h"
3#include "hal.h"
4#include "serial_link/system/serial_link.h"
5
6void init_serial_link_hal(void) {
7 PORTA->PCR[1] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(2);
8 PORTA->PCR[2] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(2);
9 PORTE->PCR[0] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(3);
10 PORTE->PCR[1] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(3);
11}
diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index d71fba9bc..5bae0d762 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -97,6 +97,15 @@ ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes)
97 endif 97 endif
98endif 98endif
99 99
100ifeq ($(MASTER),right)
101 OPT_DEFS += -DMASTER_IS_ON_RIGHT
102else
103 ifneq ($(MASTER),left)
104$(error MASTER does not have a valid value(left/right))
105 endif
106endif
107
108
100# Version string 109# Version string
101OPT_DEFS += -DVERSION=$(shell (git describe --always --dirty || echo 'unknown') 2> /dev/null) 110OPT_DEFS += -DVERSION=$(shell (git describe --always --dirty || echo 'unknown') 2> /dev/null)
102 111
diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c
index 81df8eb73..3a1262a9f 100644
--- a/tmk_core/common/keyboard.c
+++ b/tmk_core/common/keyboard.c
@@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
49#ifdef RGBLIGHT_ENABLE 49#ifdef RGBLIGHT_ENABLE
50# include "rgblight.h" 50# include "rgblight.h"
51#endif 51#endif
52#ifdef SERIAL_LINK_ENABLE
53# include "serial_link/system/serial_link.h"
54#endif
52 55
53#ifdef MATRIX_HAS_GHOST 56#ifdef MATRIX_HAS_GHOST
54static bool has_ghost_in_row(uint8_t row) 57static bool has_ghost_in_row(uint8_t row)
@@ -167,11 +170,15 @@ MATRIX_LOOP_END:
167#endif 170#endif
168 171
169#ifdef SERIAL_MOUSE_ENABLE 172#ifdef SERIAL_MOUSE_ENABLE
170 serial_mouse_task(); 173 serial_mouse_task();
171#endif 174#endif
172 175
173#ifdef ADB_MOUSE_ENABLE 176#ifdef ADB_MOUSE_ENABLE
174 adb_mouse_task(); 177 adb_mouse_task();
178#endif
179
180#ifdef SERIAL_LINK_ENABLE
181 serial_link_update();
175#endif 182#endif
176 183
177 // update LED 184 // update LED
diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c
index 54bb6a8f5..aeb11752f 100644
--- a/tmk_core/protocol/chibios/main.c
+++ b/tmk_core/protocol/chibios/main.c
@@ -35,6 +35,9 @@
35#ifdef SLEEP_LED_ENABLE 35#ifdef SLEEP_LED_ENABLE
36#include "sleep_led.h" 36#include "sleep_led.h"
37#endif 37#endif
38#ifdef SERIAL_LINK_ENABLE
39#include "serial_link/system/serial_link.h"
40#endif
38#include "suspend.h" 41#include "suspend.h"
39 42
40 43
@@ -98,9 +101,27 @@ int main(void) {
98 /* init printf */ 101 /* init printf */
99 init_printf(NULL,sendchar_pf); 102 init_printf(NULL,sendchar_pf);
100 103
101 /* Wait until the USB is active */ 104#ifdef SERIAL_LINK_ENABLE
102 while(USB_DRIVER.state != USB_ACTIVE) 105 init_serial_link();
106#endif
107
108 host_driver_t* driver = NULL;
109
110 /* Wait until the USB or serial link is active */
111 while (true) {
112 if(USB_DRIVER.state == USB_ACTIVE) {
113 driver = &chibios_driver;
114 break;
115 }
116#ifdef SERIAL_LINK_ENABLE
117 if(is_serial_link_connected()) {
118 driver = get_serial_link_driver();
119 break;
120 }
121 serial_link_update();
122#endif
103 chThdSleepMilliseconds(50); 123 chThdSleepMilliseconds(50);
124 }
104 125
105 /* Do need to wait here! 126 /* Do need to wait here!
106 * Otherwise the next print might start a transfer on console EP 127 * Otherwise the next print might start a transfer on console EP
@@ -113,7 +134,7 @@ int main(void) {
113 134
114 /* init TMK modules */ 135 /* init TMK modules */
115 keyboard_init(); 136 keyboard_init();
116 host_set_driver(&chibios_driver); 137 host_set_driver(driver);
117 138
118#ifdef SLEEP_LED_ENABLE 139#ifdef SLEEP_LED_ENABLE
119 sleep_led_init(); 140 sleep_led_init();
@@ -128,6 +149,9 @@ int main(void) {
128 print("[s]"); 149 print("[s]");
129 while(USB_DRIVER.state == USB_SUSPENDED) { 150 while(USB_DRIVER.state == USB_SUSPENDED) {
130 /* Do this in the suspended state */ 151 /* Do this in the suspended state */
152#ifdef SERIAL_LINK_ENABLE
153 serial_link_update();
154#endif
131 suspend_power_down(); // on AVR this deep sleeps for 15ms 155 suspend_power_down(); // on AVR this deep sleeps for 15ms
132 /* Remote wakeup */ 156 /* Remote wakeup */
133 if((USB_DRIVER.status & 2) && suspend_wakeup_condition()) { 157 if((USB_DRIVER.status & 2) && suspend_wakeup_condition()) {