Diff
1diff --git a/common_features.mk b/common_features.mk
2index 36cae7865721d39eec2489025a25d5d46f0660ff..fe65974e7a79ce83f64e4b08e9edf2d0d02fc4bc 100644
3--- a/common_features.mk
4+++ b/common_features.mk
5@@ -297,24 +297,27 @@ VALID_BACKLIGHT_TYPES := pwm software custom
6 BACKLIGHT_ENABLE ?= no
7 BACKLIGHT_DRIVER ?= pwm
8 ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
9- SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
10 ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
11 $(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
12 endif
13
14 COMMON_VPATH += $(QUANTUM_DIR)/backlight
15 SRC += $(QUANTUM_DIR)/backlight/backlight.c
16+ SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
17 OPT_DEFS += -DBACKLIGHT_ENABLE
18
19 ifeq ($(strip $(BACKLIGHT_DRIVER)), custom)
20 OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
21- else ifeq ($(strip $(BACKLIGHT_DRIVER)), software)
22- SRC += $(QUANTUM_DIR)/backlight/backlight_soft.c
23 else
24- ifeq ($(PLATFORM),AVR)
25- SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c
26+ SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c
27+ ifeq ($(strip $(BACKLIGHT_DRIVER)), pwm)
28+ ifeq ($(PLATFORM),AVR)
29+ SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c
30+ else
31+ SRC += $(QUANTUM_DIR)/backlight/backlight_arm.c
32+ endif
33 else
34- SRC += $(QUANTUM_DIR)/backlight/backlight_arm.c
35+ SRC += $(QUANTUM_DIR)/backlight/backlight_$(strip $(BACKLIGHT_DRIVER)).c
36 endif
37 endif
38 endif
39diff --git a/quantum/backlight/backlight.c b/quantum/backlight/backlight.c
40index 4a0eac64c66477c9386db84ceeeee50982b92666..34dd8cbdb5a76e3ef6681f9f8ae1adef65e5574c 100644
41--- a/quantum/backlight/backlight.c
42+++ b/quantum/backlight/backlight.c
43@@ -20,6 +20,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
44 #include "eeconfig.h"
45 #include "debug.h"
46
47+#if defined(STM32F0XX) || defined(STM32F0xx)
48+# pragma message("Backlight support for STMF072 has had limited testing, YMMV. If unsure, set 'BACKLIGHT_ENABLE = no' in your rules.mk")
49+#endif
50+
51 backlight_config_t backlight_config;
52
53 #ifdef BACKLIGHT_BREATHING
54@@ -27,51 +31,6 @@ backlight_config_t backlight_config;
55 static uint8_t breathing_period = BREATHING_PERIOD;
56 #endif
57
58-#ifndef BACKLIGHT_CUSTOM_DRIVER
59-# if defined(BACKLIGHT_PINS)
60-static const pin_t backlight_pins[] = BACKLIGHT_PINS;
61-# ifndef BACKLIGHT_LED_COUNT
62-# define BACKLIGHT_LED_COUNT (sizeof(backlight_pins) / sizeof(pin_t))
63-# endif
64-
65-# define FOR_EACH_LED(x) \
66- for (uint8_t i = 0; i < BACKLIGHT_LED_COUNT; i++) { \
67- pin_t backlight_pin = backlight_pins[i]; \
68- { x } \
69- }
70-# else
71-// we support only one backlight pin
72-static const pin_t backlight_pin = BACKLIGHT_PIN;
73-# define FOR_EACH_LED(x) x
74-# endif
75-
76-static inline void backlight_on(pin_t backlight_pin) {
77-# if BACKLIGHT_ON_STATE == 0
78- writePinLow(backlight_pin);
79-# else
80- writePinHigh(backlight_pin);
81-# endif
82-}
83-
84-static inline void backlight_off(pin_t backlight_pin) {
85-# if BACKLIGHT_ON_STATE == 0
86- writePinHigh(backlight_pin);
87-# else
88- writePinLow(backlight_pin);
89-# endif
90-}
91-
92-void backlight_pins_init(void) {
93- // Setup backlight pin as output and output to off state.
94- FOR_EACH_LED(setPinOutput(backlight_pin); backlight_off(backlight_pin);)
95-}
96-
97-void backlight_pins_on(void) { FOR_EACH_LED(backlight_on(backlight_pin);) }
98-
99-void backlight_pins_off(void) { FOR_EACH_LED(backlight_off(backlight_pin);) }
100-
101-#endif
102-
103 /** \brief Backlight initialization
104 *
105 * FIXME: needs doc
106diff --git a/quantum/backlight/backlight.h b/quantum/backlight/backlight.h
107index 07a4880e9f4a9089c65ab2f288281928902dc223..3e506737d44b9e7824f7dcbcdfd8c7ab56538aa3 100644
108--- a/quantum/backlight/backlight.h
109+++ b/quantum/backlight/backlight.h
110@@ -44,10 +44,6 @@ typedef union {
111 };
112 } backlight_config_t;
113
114-void backlight_pins_init(void);
115-void backlight_pins_on(void);
116-void backlight_pins_off(void);
117-
118 void backlight_init(void);
119 void backlight_toggle(void);
120 void backlight_enable(void);
121@@ -79,11 +75,11 @@ void breathing_period_default(void);
122 void breathing_period_inc(void);
123 void breathing_period_dec(void);
124
125+void breathing_toggle(void);
126+
127 // implementation specific
128 void breathing_enable(void);
129 void breathing_disable(void);
130-void breathing_toggle(void);
131 bool is_breathing(void);
132 void breathing_pulse(void);
133-void breathing_task(void);
134 #endif
135diff --git a/quantum/backlight/backlight_arm.c b/quantum/backlight/backlight_arm.c
136index a6d38a1a02e8b321f74f812d6a76f502617bfa60..723544adb93497bd6ff2a813bd6c553da81b68b3 100644
137--- a/quantum/backlight/backlight_arm.c
138+++ b/quantum/backlight/backlight_arm.c
139@@ -6,10 +6,6 @@
140 // TODO: remove short term bodge when refactoring BACKLIGHT_CUSTOM_DRIVER out
141 #ifdef BACKLIGHT_PIN
142
143-# if defined(STM32F0XX) || defined(STM32F0xx)
144-# pragma message("Backlight support for STMF072 has had limited testing, YMMV. If unsure, set 'BACKLIGHT_ENABLE = no' in your rules.mk")
145-# endif
146-
147 // GPIOV2 && GPIOV3
148 # ifndef BACKLIGHT_PAL_MODE
149 # define BACKLIGHT_PAL_MODE 2
150diff --git a/quantum/backlight/backlight_avr.c b/quantum/backlight/backlight_avr.c
151index 40291d3821ee17e9742097817b30211a62d7c3b2..ce13f111846246f557e84141a513483e37957ec4 100644
152--- a/quantum/backlight/backlight_avr.c
153+++ b/quantum/backlight/backlight_avr.c
154@@ -1,11 +1,8 @@
155 #include "quantum.h"
156 #include "backlight.h"
157+#include "backlight_driver_common.h"
158 #include "debug.h"
159
160-#if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
161-# error "Backlight pin/pins not defined. Please configure."
162-#endif
163-
164 // This logic is a bit complex, we support 3 setups:
165 //
166 // 1. Hardware PWM when backlight is wired to a PWM pin.
167diff --git a/quantum/backlight/backlight_driver_common.c b/quantum/backlight/backlight_driver_common.c
168new file mode 100644
169index 0000000000000000000000000000000000000000..270a43c67e63548fd8f0bfa697ba56c5d18beed5
170--- /dev/null
171+++ b/quantum/backlight/backlight_driver_common.c
172@@ -0,0 +1,49 @@
173+#include "quantum.h"
174+#include "backlight.h"
175+#include "backlight_driver_common.h"
176+
177+#if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
178+# error "Backlight pin/pins not defined. Please configure."
179+#endif
180+
181+#if defined(BACKLIGHT_PINS)
182+static const pin_t backlight_pins[] = BACKLIGHT_PINS;
183+# ifndef BACKLIGHT_LED_COUNT
184+# define BACKLIGHT_LED_COUNT (sizeof(backlight_pins) / sizeof(pin_t))
185+# endif
186+
187+# define FOR_EACH_LED(x) \
188+ for (uint8_t i = 0; i < BACKLIGHT_LED_COUNT; i++) { \
189+ pin_t backlight_pin = backlight_pins[i]; \
190+ { x } \
191+ }
192+#else
193+// we support only one backlight pin
194+static const pin_t backlight_pin = BACKLIGHT_PIN;
195+# define FOR_EACH_LED(x) x
196+#endif
197+
198+static inline void backlight_on(pin_t backlight_pin) {
199+#if BACKLIGHT_ON_STATE == 0
200+ writePinLow(backlight_pin);
201+#else
202+ writePinHigh(backlight_pin);
203+#endif
204+}
205+
206+static inline void backlight_off(pin_t backlight_pin) {
207+#if BACKLIGHT_ON_STATE == 0
208+ writePinHigh(backlight_pin);
209+#else
210+ writePinLow(backlight_pin);
211+#endif
212+}
213+
214+void backlight_pins_init(void) {
215+ // Setup backlight pin as output and output to off state.
216+ FOR_EACH_LED(setPinOutput(backlight_pin); backlight_off(backlight_pin);)
217+}
218+
219+void backlight_pins_on(void) { FOR_EACH_LED(backlight_on(backlight_pin);) }
220+
221+void backlight_pins_off(void) { FOR_EACH_LED(backlight_off(backlight_pin);) }
222diff --git a/quantum/backlight/backlight_driver_common.h b/quantum/backlight/backlight_driver_common.h
223new file mode 100644
224index 0000000000000000000000000000000000000000..36e8a5fa6bb72483b252eebb9ec56e4ee2809d08
225--- /dev/null
226+++ b/quantum/backlight/backlight_driver_common.h
227@@ -0,0 +1,7 @@
228+#pragma once
229+
230+void backlight_pins_init(void);
231+void backlight_pins_on(void);
232+void backlight_pins_off(void);
233+
234+void breathing_task(void);
235diff --git a/quantum/backlight/backlight_soft.c b/quantum/backlight/backlight_software.c
236rename from quantum/backlight/backlight_soft.c
237rename to quantum/backlight/backlight_software.c
238index 8552384a428463fe097deff215d1684f0fcf54bb..709304f559292e25acfadb6e1090f8693ad8cae2 100644
239--- a/quantum/backlight/backlight_soft.c
240+++ b/quantum/backlight/backlight_software.c
241@@ -1,9 +1,6 @@
242 #include "quantum.h"
243 #include "backlight.h"
244-
245-#if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
246-# error "Backlight pin/pins not defined. Please configure."
247-#endif
248+#include "backlight_driver_common.h"
249
250 #ifdef BACKLIGHT_BREATHING
251 # error "Backlight breathing is not available for software PWM. Please disable."