3a303bd2aec57fd2d4d0f6d3e5583d746367d6e1

Author
Joel Challis <git@zvecr.com>
Committer
GitHub <noreply@github.com>
Date

Message

Backlight - Carve out a better location for private driver functionality (#8329)

* rename backlight_soft to match rules.mk

* rename backlight_soft to match rules.mk - update common_features

* Carve out a better location for private driver backlight functionality

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."