aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi ISHII <2170248+mtei@users.noreply.github.com>2018-12-15 04:00:10 +0900
committerDrashna Jaelre <drashna@live.com>2018-12-14 11:00:10 -0800
commit155e9310ff685f557287749bef2e02510538a6d9 (patch)
treed33aea0d785f1be128e7f8831f0bb1c240cc2d88
parent9739d6ba0ad3da93f42cc28a78a6722d39ad3d72 (diff)
downloadqmk_firmware-155e9310ff685f557287749bef2e02510538a6d9.tar.gz
qmk_firmware-155e9310ff685f557287749bef2e02510538a6d9.zip
Make quantum/split_common/serial.[ch] configurable (#4419)
* add temporary compile test shell script * add 'CONFIG_H += serial_backward_compatibility.h' into common_features.mk:SPLIT_KEYBOARD block * add quantum/split_common/serial_backward_compatibility.h SERIAL_PIN_PORT and other PIN define move to serial_backward_compatibility.h SERIAL_BACKLIT_START move to split_util.h * quantum/split_common/serial.c change to helix-serial.c style serial configuration * add temporary file quantum/split_common/split-keyboards-list.txt * add '#define SOFT_SERIAL_PIN D0' to keyboards/6lit/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/divergetm2/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/ergotravel/rev1/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/foobar/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/handwired/dactyl_manuform/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/handwired/qc60/config.h * add '//#define SOFT_SERIAL_PIN D0' to keyboards/handwired/xealous/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/iris/rev*/config.h * add '//#define SOFT_SERIAL_PIN D0' to keyboards/lets_split_eh/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/levinson/rev*/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/miniaxe/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/nyquist/rev?/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/quefrency/rev1/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/qwertyydox/config.h,keyboards/qwertyydox/rev1/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/redox/rev1/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/rorschach/rev1/config.h * remove '#define SOFT_SERIAL_PIN D0' from quantum/split_common/serial_backward_compatibility.h * remove temporary file quantum/split_common/split-keyboards-list.txt * remove temporary compile test shell script * Revert "remove temporary compile test shell script" This reverts commit 15b0021b4092127b8d8a21f572642ad3702b46d4. * update quantum/split_common/compile_split_test.sh for new keyboard test * add '#define SOFT_SERIAL_PIN D0' to keyboards/diverge3/config.h * add '#define SOFT_SERIAL_PIN D0' to keyboards/40percentclub/25/config.h * remove temporary compile test shell script * update docs/config_options.md, quantum/template/avr/config.h * fix quantum/template/avr/config.h * fix typo docs/config_options.md
-rw-r--r--common_features.mk5
-rw-r--r--docs/config_options.md3
-rw-r--r--keyboards/40percentclub/25/config.h2
-rw-r--r--keyboards/40percentclub/6lit/config.h3
-rw-r--r--keyboards/40percentclub/foobar/config.h3
-rw-r--r--keyboards/diverge3/config.h3
-rw-r--r--keyboards/divergetm2/config.h3
-rw-r--r--keyboards/ergotravel/rev1/config.h3
-rw-r--r--keyboards/handwired/dactyl_manuform/config.h3
-rw-r--r--keyboards/handwired/qc60/config.h3
-rw-r--r--keyboards/handwired/xealous/config.h5
-rw-r--r--keyboards/iris/rev1/config.h3
-rw-r--r--keyboards/iris/rev1_led/config.h3
-rw-r--r--keyboards/iris/rev2/config.h3
-rw-r--r--keyboards/iris/rev3/config.h3
-rw-r--r--keyboards/lets_split_eh/config.h3
-rw-r--r--keyboards/levinson/rev1/config.h3
-rw-r--r--keyboards/levinson/rev2/config.h3
-rw-r--r--keyboards/miniaxe/config.h3
-rw-r--r--keyboards/nyquist/rev1/config.h3
-rw-r--r--keyboards/nyquist/rev2/config.h3
-rw-r--r--keyboards/nyquist/rev3/config.h3
-rw-r--r--keyboards/quefrency/rev1/config.h3
-rw-r--r--keyboards/qwertyydox/config.h3
-rw-r--r--keyboards/qwertyydox/rev1/config.h3
-rw-r--r--keyboards/redox/rev1/config.h3
-rw-r--r--keyboards/rorschach/rev1/config.h3
-rw-r--r--quantum/split_common/serial.c53
-rw-r--r--quantum/split_common/serial.h23
-rw-r--r--quantum/split_common/serial_backward_compatibility.h11
-rw-r--r--quantum/split_common/split_util.h3
-rw-r--r--quantum/template/avr/config.h5
32 files changed, 165 insertions, 14 deletions
diff --git a/common_features.mk b/common_features.mk
index bd88e04d6..97febe2e7 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -263,6 +263,11 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes)
263endif 263endif
264 264
265ifeq ($(strip $(SPLIT_KEYBOARD)), yes) 265ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
266 SERIAL_BACKWARD_COMPAT := $(wildcard $(QUANTUM_DIR)/split_common/serial_backward_compatibility.h)
267 ifneq ($(SERIAL_BACKWARD_COMPAT),)
268 CONFIG_H += $(SERIAL_BACKWARD_COMPAT)
269 # $(info CONFIG_H=$(CONFIG_H))
270 endif
266 OPT_DEFS += -DSPLIT_KEYBOARD 271 OPT_DEFS += -DSPLIT_KEYBOARD
267 QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \ 272 QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
268 $(QUANTUM_DIR)/split_common/split_util.c \ 273 $(QUANTUM_DIR)/split_common/split_util.c \
diff --git a/docs/config_options.md b/docs/config_options.md
index 69fecc8b4..bea4acb01 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -198,6 +198,9 @@ Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in yo
198* `#define USE_I2C` 198* `#define USE_I2C`
199 * For using I2C instead of Serial (defaults to serial) 199 * For using I2C instead of Serial (defaults to serial)
200 200
201* `#define SOFT_SERIAL_PIN D0`
202 * When using serial, define this. `D0` or `D1`,`D2`,`D3`,`E6`.
203
201# The `rules.mk` File 204# The `rules.mk` File
202 205
203This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features. 206This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
diff --git a/keyboards/40percentclub/25/config.h b/keyboards/40percentclub/25/config.h
index 23b768e15..7fe59fcca 100644
--- a/keyboards/40percentclub/25/config.h
+++ b/keyboards/40percentclub/25/config.h
@@ -27,6 +27,8 @@
27#define DESCRIPTION A split 50 key keyboard 27#define DESCRIPTION A split 50 key keyboard
28 28
29#define USE_SERIAL 29#define USE_SERIAL
30/* serial.c configuration for split keyboard */
31#define SOFT_SERIAL_PIN D0
30 32
31/* Select hand configuration */ 33/* Select hand configuration */
32#define MASTER_LEFT 34#define MASTER_LEFT
diff --git a/keyboards/40percentclub/6lit/config.h b/keyboards/40percentclub/6lit/config.h
index 8397818a6..940518f36 100644
--- a/keyboards/40percentclub/6lit/config.h
+++ b/keyboards/40percentclub/6lit/config.h
@@ -28,6 +28,9 @@
28 28
29#define USE_SERIAL 29#define USE_SERIAL
30 30
31/* serial.c configuration for split keyboard */
32#define SOFT_SERIAL_PIN D0
33
31/* Select hand configuration */ 34/* Select hand configuration */
32#define MASTER_LEFT 35#define MASTER_LEFT
33//#define MASTER_RIGHT 36//#define MASTER_RIGHT
diff --git a/keyboards/40percentclub/foobar/config.h b/keyboards/40percentclub/foobar/config.h
index 89219c460..88075c456 100644
--- a/keyboards/40percentclub/foobar/config.h
+++ b/keyboards/40percentclub/foobar/config.h
@@ -28,6 +28,9 @@
28 28
29#define USE_SERIAL 29#define USE_SERIAL
30 30
31/* serial.c configuration for split keyboard */
32#define SOFT_SERIAL_PIN D0
33
31/* Select hand configuration */ 34/* Select hand configuration */
32#define MASTER_LEFT 35#define MASTER_LEFT
33//#define MASTER_RIGHT 36//#define MASTER_RIGHT
diff --git a/keyboards/diverge3/config.h b/keyboards/diverge3/config.h
index 262be7b75..464dc835f 100644
--- a/keyboards/diverge3/config.h
+++ b/keyboards/diverge3/config.h
@@ -57,6 +57,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
57/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 57/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
58#define DEBOUNCING_DELAY 5 58#define DEBOUNCING_DELAY 5
59 59
60/* serial.c configuration for split keyboard */
61#define SOFT_SERIAL_PIN D0
62
60/* define if matrix has ghost (lacks anti-ghosting diodes) */ 63/* define if matrix has ghost (lacks anti-ghosting diodes) */
61//#define MATRIX_HAS_GHOST 64//#define MATRIX_HAS_GHOST
62 65
diff --git a/keyboards/divergetm2/config.h b/keyboards/divergetm2/config.h
index 8bc9d2c80..cbeeff9aa 100644
--- a/keyboards/divergetm2/config.h
+++ b/keyboards/divergetm2/config.h
@@ -59,6 +59,9 @@
59/* Locking resynchronize hack */ 59/* Locking resynchronize hack */
60#define LOCKING_RESYNC_ENABLE 60#define LOCKING_RESYNC_ENABLE
61 61
62/* serial.c configuration for split keyboard */
63#define SOFT_SERIAL_PIN D0
64
62/* 65/*
63 * Magic Key Options 66 * Magic Key Options
64 * 67 *
diff --git a/keyboards/ergotravel/rev1/config.h b/keyboards/ergotravel/rev1/config.h
index 3af1147a7..e6d557361 100644
--- a/keyboards/ergotravel/rev1/config.h
+++ b/keyboards/ergotravel/rev1/config.h
@@ -56,6 +56,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
56 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ 56 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
57) 57)
58 58
59/* serial.c configuration for split keyboard */
60#define SOFT_SERIAL_PIN D0
61
59#define BACKLIGHT_PIN B5 62#define BACKLIGHT_PIN B5
60#define BACKLIGHT_LEVELS 5 63#define BACKLIGHT_LEVELS 5
61 64
diff --git a/keyboards/handwired/dactyl_manuform/config.h b/keyboards/handwired/dactyl_manuform/config.h
index 320ce3c48..0e6f3f98e 100644
--- a/keyboards/handwired/dactyl_manuform/config.h
+++ b/keyboards/handwired/dactyl_manuform/config.h
@@ -38,6 +38,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
38/* Set 0 if debouncing isn't needed */ 38/* Set 0 if debouncing isn't needed */
39#define DEBOUNCING_DELAY 5 39#define DEBOUNCING_DELAY 5
40 40
41/* serial.c configuration for split keyboard */
42#define SOFT_SERIAL_PIN D0
43
41/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 44/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
42#define LOCKING_SUPPORT_ENABLE 45#define LOCKING_SUPPORT_ENABLE
43/* Locking resynchronize hack */ 46/* Locking resynchronize hack */
diff --git a/keyboards/handwired/qc60/config.h b/keyboards/handwired/qc60/config.h
index 3b6f84390..00d095ddf 100644
--- a/keyboards/handwired/qc60/config.h
+++ b/keyboards/handwired/qc60/config.h
@@ -18,6 +18,9 @@
18/* Set 0 if debouncing isn't needed */ 18/* Set 0 if debouncing isn't needed */
19#define DEBOUNCING_DELAY 5 19#define DEBOUNCING_DELAY 5
20 20
21/* serial.c configuration for split keyboard */
22#define SOFT_SERIAL_PIN D0
23
21/* key combination for command */ 24/* key combination for command */
22#define IS_COMMAND() ( \ 25#define IS_COMMAND() ( \
23 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ 26 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
diff --git a/keyboards/handwired/xealous/config.h b/keyboards/handwired/xealous/config.h
index 415a0dcf5..7bce502c1 100644
--- a/keyboards/handwired/xealous/config.h
+++ b/keyboards/handwired/xealous/config.h
@@ -21,10 +21,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
21 21
22/* Use I2C or Serial, not both */ 22/* Use I2C or Serial, not both */
23 23
24// #define USE_SERIAL
25#define USE_I2C 24#define USE_I2C
26#define SCL_CLOCK 400000UL 25#define SCL_CLOCK 400000UL
27 26
27// #define USE_SERIAL
28/* serial.c configuration for split keyboard */
29// #define SOFT_SERIAL_PIN D0
30
28/* Select hand configuration */ 31/* Select hand configuration */
29 32
30#define MASTER_LEFT 33#define MASTER_LEFT
diff --git a/keyboards/iris/rev1/config.h b/keyboards/iris/rev1/config.h
index 7f76df54b..3b31ca0d7 100644
--- a/keyboards/iris/rev1/config.h
+++ b/keyboards/iris/rev1/config.h
@@ -48,6 +48,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
48/* Set 0 if debouncing isn't needed */ 48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCING_DELAY 5 49#define DEBOUNCING_DELAY 5
50 50
51/* serial.c configuration for split keyboard */
52#define SOFT_SERIAL_PIN D0
53
51/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 54/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
52#define LOCKING_SUPPORT_ENABLE 55#define LOCKING_SUPPORT_ENABLE
53/* Locking resynchronize hack */ 56/* Locking resynchronize hack */
diff --git a/keyboards/iris/rev1_led/config.h b/keyboards/iris/rev1_led/config.h
index b58b11836..e9739c003 100644
--- a/keyboards/iris/rev1_led/config.h
+++ b/keyboards/iris/rev1_led/config.h
@@ -48,6 +48,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
48/* Set 0 if debouncing isn't needed */ 48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCING_DELAY 5 49#define DEBOUNCING_DELAY 5
50 50
51/* serial.c configuration for split keyboard */
52#define SOFT_SERIAL_PIN D0
53
51/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 54/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
52#define LOCKING_SUPPORT_ENABLE 55#define LOCKING_SUPPORT_ENABLE
53/* Locking resynchronize hack */ 56/* Locking resynchronize hack */
diff --git a/keyboards/iris/rev2/config.h b/keyboards/iris/rev2/config.h
index 266c29b9c..d43d4b1c6 100644
--- a/keyboards/iris/rev2/config.h
+++ b/keyboards/iris/rev2/config.h
@@ -48,6 +48,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
48/* Set 0 if debouncing isn't needed */ 48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCING_DELAY 5 49#define DEBOUNCING_DELAY 5
50 50
51/* serial.c configuration for split keyboard */
52#define SOFT_SERIAL_PIN D0
53
51/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 54/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
52#define LOCKING_SUPPORT_ENABLE 55#define LOCKING_SUPPORT_ENABLE
53/* Locking resynchronize hack */ 56/* Locking resynchronize hack */
diff --git a/keyboards/iris/rev3/config.h b/keyboards/iris/rev3/config.h
index 1032231d8..5642512f3 100644
--- a/keyboards/iris/rev3/config.h
+++ b/keyboards/iris/rev3/config.h
@@ -48,6 +48,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
48/* Set 0 if debouncing isn't needed */ 48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCING_DELAY 5 49#define DEBOUNCING_DELAY 5
50 50
51/* serial.c configuration for split keyboard */
52#define SOFT_SERIAL_PIN D0
53
51/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 54/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
52#define LOCKING_SUPPORT_ENABLE 55#define LOCKING_SUPPORT_ENABLE
53/* Locking resynchronize hack */ 56/* Locking resynchronize hack */
diff --git a/keyboards/lets_split_eh/config.h b/keyboards/lets_split_eh/config.h
index b8fe95ea2..abfee0eac 100644
--- a/keyboards/lets_split_eh/config.h
+++ b/keyboards/lets_split_eh/config.h
@@ -36,6 +36,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
36/* Set 0 if debouncing isn't needed */ 36/* Set 0 if debouncing isn't needed */
37#define DEBOUNCING_DELAY 5 37#define DEBOUNCING_DELAY 5
38 38
39/* serial.c configuration for split keyboard */
40//#define SOFT_SERIAL_PIN D0
41
39/* key combination for command */ 42/* key combination for command */
40#define IS_COMMAND() ( \ 43#define IS_COMMAND() ( \
41 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ 44 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
diff --git a/keyboards/levinson/rev1/config.h b/keyboards/levinson/rev1/config.h
index 8161b4e32..07ba1e221 100644
--- a/keyboards/levinson/rev1/config.h
+++ b/keyboards/levinson/rev1/config.h
@@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
41/* Set 0 if debouncing isn't needed */ 41/* Set 0 if debouncing isn't needed */
42#define DEBOUNCING_DELAY 5 42#define DEBOUNCING_DELAY 5
43 43
44/* serial.c configuration for split keyboard */
45#define SOFT_SERIAL_PIN D0
46
44/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 47/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
45#define LOCKING_SUPPORT_ENABLE 48#define LOCKING_SUPPORT_ENABLE
46/* Locking resynchronize hack */ 49/* Locking resynchronize hack */
diff --git a/keyboards/levinson/rev2/config.h b/keyboards/levinson/rev2/config.h
index 03b98b45c..a731c7195 100644
--- a/keyboards/levinson/rev2/config.h
+++ b/keyboards/levinson/rev2/config.h
@@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
41/* Set 0 if debouncing isn't needed */ 41/* Set 0 if debouncing isn't needed */
42#define DEBOUNCING_DELAY 5 42#define DEBOUNCING_DELAY 5
43 43
44/* serial.c configuration for split keyboard */
45#define SOFT_SERIAL_PIN D0
46
44/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 47/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
45#define LOCKING_SUPPORT_ENABLE 48#define LOCKING_SUPPORT_ENABLE
46/* Locking resynchronize hack */ 49/* Locking resynchronize hack */
diff --git a/keyboards/miniaxe/config.h b/keyboards/miniaxe/config.h
index 13608feab..2b732ca16 100644
--- a/keyboards/miniaxe/config.h
+++ b/keyboards/miniaxe/config.h
@@ -237,6 +237,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
237 237
238/* Serial settings */ 238/* Serial settings */
239#define USE_SERIAL 239#define USE_SERIAL
240/* serial.c configuration for split keyboard */
241#define SOFT_SERIAL_PIN D0
242
240//#define EE_HANDS 243//#define EE_HANDS
241#define I2C_MASTER_LEFT 244#define I2C_MASTER_LEFT
242//#define I2C_MASTER_RIGHT 245//#define I2C_MASTER_RIGHT
diff --git a/keyboards/nyquist/rev1/config.h b/keyboards/nyquist/rev1/config.h
index 35fbaffb9..892054b73 100644
--- a/keyboards/nyquist/rev1/config.h
+++ b/keyboards/nyquist/rev1/config.h
@@ -46,6 +46,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
46/* Set 0 if debouncing isn't needed */ 46/* Set 0 if debouncing isn't needed */
47#define DEBOUNCING_DELAY 5 47#define DEBOUNCING_DELAY 5
48 48
49/* serial.c configuration for split keyboard */
50#define SOFT_SERIAL_PIN D0
51
49/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 52/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
50#define LOCKING_SUPPORT_ENABLE 53#define LOCKING_SUPPORT_ENABLE
51/* Locking resynchronize hack */ 54/* Locking resynchronize hack */
diff --git a/keyboards/nyquist/rev2/config.h b/keyboards/nyquist/rev2/config.h
index 7dc743b27..21aea0aad 100644
--- a/keyboards/nyquist/rev2/config.h
+++ b/keyboards/nyquist/rev2/config.h
@@ -43,6 +43,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
43/* Set 0 if debouncing isn't needed */ 43/* Set 0 if debouncing isn't needed */
44#define DEBOUNCING_DELAY 5 44#define DEBOUNCING_DELAY 5
45 45
46/* serial.c configuration for split keyboard */
47#define SOFT_SERIAL_PIN D0
48
46/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 49/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
47#define LOCKING_SUPPORT_ENABLE 50#define LOCKING_SUPPORT_ENABLE
48/* Locking resynchronize hack */ 51/* Locking resynchronize hack */
diff --git a/keyboards/nyquist/rev3/config.h b/keyboards/nyquist/rev3/config.h
index 6c51bc9a8..8054ba79c 100644
--- a/keyboards/nyquist/rev3/config.h
+++ b/keyboards/nyquist/rev3/config.h
@@ -43,6 +43,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
43/* Set 0 if debouncing isn't needed */ 43/* Set 0 if debouncing isn't needed */
44#define DEBOUNCING_DELAY 5 44#define DEBOUNCING_DELAY 5
45 45
46/* serial.c configuration for split keyboard */
47#define SOFT_SERIAL_PIN D0
48
46/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 49/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
47#define LOCKING_SUPPORT_ENABLE 50#define LOCKING_SUPPORT_ENABLE
48/* Locking resynchronize hack */ 51/* Locking resynchronize hack */
diff --git a/keyboards/quefrency/rev1/config.h b/keyboards/quefrency/rev1/config.h
index 1074590ff..88d704486 100644
--- a/keyboards/quefrency/rev1/config.h
+++ b/keyboards/quefrency/rev1/config.h
@@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
41/* Set 0 if debouncing isn't needed */ 41/* Set 0 if debouncing isn't needed */
42#define DEBOUNCING_DELAY 5 42#define DEBOUNCING_DELAY 5
43 43
44/* serial.c configuration for split keyboard */
45#define SOFT_SERIAL_PIN D0
46
44/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 47/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
45#define LOCKING_SUPPORT_ENABLE 48#define LOCKING_SUPPORT_ENABLE
46/* Locking resynchronize hack */ 49/* Locking resynchronize hack */
diff --git a/keyboards/qwertyydox/config.h b/keyboards/qwertyydox/config.h
index b22ca534e..a68565223 100644
--- a/keyboards/qwertyydox/config.h
+++ b/keyboards/qwertyydox/config.h
@@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
49/* Set 0 if debouncing isn't needed */ 49/* Set 0 if debouncing isn't needed */
50#define DEBOUNCING_DELAY 5 50#define DEBOUNCING_DELAY 5
51 51
52/* serial.c configuration for split keyboard */
53#define SOFT_SERIAL_PIN D0
54
52/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 55/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
53#define LOCKING_SUPPORT_ENABLE 56#define LOCKING_SUPPORT_ENABLE
54/* Locking resynchronize hack */ 57/* Locking resynchronize hack */
diff --git a/keyboards/qwertyydox/rev1/config.h b/keyboards/qwertyydox/rev1/config.h
index 3d4c9b0d0..a2557592d 100644
--- a/keyboards/qwertyydox/rev1/config.h
+++ b/keyboards/qwertyydox/rev1/config.h
@@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
49/* Set 0 if debouncing isn't needed */ 49/* Set 0 if debouncing isn't needed */
50#define DEBOUNCING_DELAY 5 50#define DEBOUNCING_DELAY 5
51 51
52/* serial.c configuration for split keyboard */
53#define SOFT_SERIAL_PIN D0
54
52/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 55/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
53#define LOCKING_SUPPORT_ENABLE 56#define LOCKING_SUPPORT_ENABLE
54/* Locking resynchronize hack */ 57/* Locking resynchronize hack */
diff --git a/keyboards/redox/rev1/config.h b/keyboards/redox/rev1/config.h
index f4ccbd2fd..654a84de7 100644
--- a/keyboards/redox/rev1/config.h
+++ b/keyboards/redox/rev1/config.h
@@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
49/* Set 0 if debouncing isn't needed */ 49/* Set 0 if debouncing isn't needed */
50#define DEBOUNCING_DELAY 5 50#define DEBOUNCING_DELAY 5
51 51
52/* serial.c configuration for split keyboard */
53#define SOFT_SERIAL_PIN D0
54
52/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 55/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
53#define LOCKING_SUPPORT_ENABLE 56#define LOCKING_SUPPORT_ENABLE
54/* Locking resynchronize hack */ 57/* Locking resynchronize hack */
diff --git a/keyboards/rorschach/rev1/config.h b/keyboards/rorschach/rev1/config.h
index 1c9ef8276..1ea6dde98 100644
--- a/keyboards/rorschach/rev1/config.h
+++ b/keyboards/rorschach/rev1/config.h
@@ -42,6 +42,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
42/* Set 0 if debouncing isn't needed */ 42/* Set 0 if debouncing isn't needed */
43#define DEBOUNCING_DELAY 5 43#define DEBOUNCING_DELAY 5
44 44
45/* serial.c configuration for split keyboard */
46#define SOFT_SERIAL_PIN D0
47
45/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 48/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
46#define LOCKING_SUPPORT_ENABLE 49#define LOCKING_SUPPORT_ENABLE
47/* Locking resynchronize hack */ 50/* Locking resynchronize hack */
diff --git a/quantum/split_common/serial.c b/quantum/split_common/serial.c
index 74bcbb6bf..f34f824d7 100644
--- a/quantum/split_common/serial.c
+++ b/quantum/split_common/serial.c
@@ -14,6 +14,59 @@
14 14
15#ifndef USE_I2C 15#ifndef USE_I2C
16 16
17#ifndef SOFT_SERIAL_PIN
18 #error quantum/split_common/serial.c need SOFT_SERIAL_PIN define
19#endif
20
21#ifdef __AVR_ATmega32U4__
22 // if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial.
23 #ifdef USE_I2C
24 #if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1
25 #error Using ATmega32U4 I2C, so can not use PD0, PD1
26 #endif
27 #endif
28
29 #if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3
30 #define SERIAL_PIN_DDR DDRD
31 #define SERIAL_PIN_PORT PORTD
32 #define SERIAL_PIN_INPUT PIND
33 #if SOFT_SERIAL_PIN == D0
34 #define SERIAL_PIN_MASK _BV(PD0)
35 #define EIMSK_BIT _BV(INT0)
36 #define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
37 #define SERIAL_PIN_INTERRUPT INT0_vect
38 #elif SOFT_SERIAL_PIN == D1
39 #define SERIAL_PIN_MASK _BV(PD1)
40 #define EIMSK_BIT _BV(INT1)
41 #define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
42 #define SERIAL_PIN_INTERRUPT INT1_vect
43 #elif SOFT_SERIAL_PIN == D2
44 #define SERIAL_PIN_MASK _BV(PD2)
45 #define EIMSK_BIT _BV(INT2)
46 #define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
47 #define SERIAL_PIN_INTERRUPT INT2_vect
48 #elif SOFT_SERIAL_PIN == D3
49 #define SERIAL_PIN_MASK _BV(PD3)
50 #define EIMSK_BIT _BV(INT3)
51 #define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
52 #define SERIAL_PIN_INTERRUPT INT3_vect
53 #endif
54 #elif SOFT_SERIAL_PIN == E6
55 #define SERIAL_PIN_DDR DDRE
56 #define SERIAL_PIN_PORT PORTE
57 #define SERIAL_PIN_INPUT PINE
58 #define SERIAL_PIN_MASK _BV(PE6)
59 #define EIMSK_BIT _BV(INT6)
60 #define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
61 #define SERIAL_PIN_INTERRUPT INT6_vect
62 #else
63 #error invalid SOFT_SERIAL_PIN value
64 #endif
65
66#else
67 #error serial.c now support ATmega32U4 only
68#endif
69
17// Serial pulse period in microseconds. Its probably a bad idea to lower this 70// Serial pulse period in microseconds. Its probably a bad idea to lower this
18// value. 71// value.
19#define SERIAL_DELAY 24 72#define SERIAL_DELAY 24
diff --git a/quantum/split_common/serial.h b/quantum/split_common/serial.h
index e566eb8a0..0b99f352d 100644
--- a/quantum/split_common/serial.h
+++ b/quantum/split_common/serial.h
@@ -1,21 +1,18 @@
1#ifndef MY_SERIAL_H 1#ifndef MY_SERIAL_H
2#define MY_SERIAL_H 2#define MY_SERIAL_H
3 3
4#include "config.h"
5#include <stdbool.h> 4#include <stdbool.h>
6 5
7/* TODO: some defines for interrupt setup */ 6// /////////////////////////////////////////////////////////////////
8#define SERIAL_PIN_DDR DDRD 7// Need Soft Serial defines in config.h
9#define SERIAL_PIN_PORT PORTD 8// /////////////////////////////////////////////////////////////////
10#define SERIAL_PIN_INPUT PIND 9// ex.
11#define SERIAL_PIN_MASK _BV(PD0) 10// /* Configuration of lower interface with the lower layer(hardware) of serial.c */
12#define SERIAL_PIN_INTERRUPT INT0_vect 11// #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6
13 12//
14#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 13// /* Configuration of upper interface with the upper layer of serial.c */
15#define SERIAL_MASTER_BUFFER_LENGTH 1 14// #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
16 15// #define SERIAL_MASTER_BUFFER_LENGTH 1
17// Address location defines
18#define SERIAL_BACKLIT_START 0x00
19 16
20// Buffers for master - slave communication 17// Buffers for master - slave communication
21extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH]; 18extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
diff --git a/quantum/split_common/serial_backward_compatibility.h b/quantum/split_common/serial_backward_compatibility.h
new file mode 100644
index 000000000..216b6c41f
--- /dev/null
+++ b/quantum/split_common/serial_backward_compatibility.h
@@ -0,0 +1,11 @@
1/* serial.h backward compatibility */
2
3// #ifndef SOFT_SERIAL_PIN
4// #define SOFT_SERIAL_PIN D0
5// #endif
6
7#ifndef SERIAL_SLAVE_BUFFER_LENGTH
8 #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
9 #define SERIAL_MASTER_BUFFER_LENGTH 1
10#endif
11
diff --git a/quantum/split_common/split_util.h b/quantum/split_common/split_util.h
index d6cf3e72a..45e8db0f2 100644
--- a/quantum/split_common/split_util.h
+++ b/quantum/split_common/split_util.h
@@ -7,6 +7,9 @@
7#include <stdlib.h> 7#include <stdlib.h>
8#include "eeconfig.h" 8#include "eeconfig.h"
9 9
10// backlight level store index in serial_master_buffer[] for slave to read
11#define SERIAL_BACKLIT_START 0x00
12
10#define SLAVE_I2C_ADDRESS 0x32 13#define SLAVE_I2C_ADDRESS 0x32
11 14
12extern volatile bool isLeftHand; 15extern volatile bool isLeftHand;
diff --git a/quantum/template/avr/config.h b/quantum/template/avr/config.h
index 463ddff2d..eed50e5c0 100644
--- a/quantum/template/avr/config.h
+++ b/quantum/template/avr/config.h
@@ -48,6 +48,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
48/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ 48/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
49#define DIODE_DIRECTION COL2ROW 49#define DIODE_DIRECTION COL2ROW
50 50
51/*
52 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
53 */
54#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
55
51// #define BACKLIGHT_PIN B7 56// #define BACKLIGHT_PIN B7
52// #define BACKLIGHT_BREATHING 57// #define BACKLIGHT_BREATHING
53// #define BACKLIGHT_LEVELS 3 58// #define BACKLIGHT_LEVELS 3