aboutsummaryrefslogtreecommitdiff
path: root/quantum/backlight
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2020-03-07 12:09:49 +0000
committerGitHub <noreply@github.com>2020-03-07 12:09:49 +0000
commit3a303bd2aec57fd2d4d0f6d3e5583d746367d6e1 (patch)
tree8ab57281f90be800b6e3556e2705ffbcabf1494c /quantum/backlight
parentd7ba0ad684a18c07952963427ca89a8e8e7e1903 (diff)
downloadqmk_firmware-3a303bd2aec57fd2d4d0f6d3e5583d746367d6e1.tar.gz
qmk_firmware-3a303bd2aec57fd2d4d0f6d3e5583d746367d6e1.zip
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
Diffstat (limited to 'quantum/backlight')
-rw-r--r--quantum/backlight/backlight.c49
-rw-r--r--quantum/backlight/backlight.h8
-rw-r--r--quantum/backlight/backlight_arm.c4
-rw-r--r--quantum/backlight/backlight_avr.c5
-rw-r--r--quantum/backlight/backlight_driver_common.c49
-rw-r--r--quantum/backlight/backlight_driver_common.h7
-rw-r--r--quantum/backlight/backlight_software.c (renamed from quantum/backlight/backlight_soft.c)5
7 files changed, 64 insertions, 63 deletions
diff --git a/quantum/backlight/backlight.c b/quantum/backlight/backlight.c
index 4a0eac64c..34dd8cbdb 100644
--- a/quantum/backlight/backlight.c
+++ b/quantum/backlight/backlight.c
@@ -20,6 +20,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20#include "eeconfig.h" 20#include "eeconfig.h"
21#include "debug.h" 21#include "debug.h"
22 22
23#if defined(STM32F0XX) || defined(STM32F0xx)
24# pragma message("Backlight support for STMF072 has had limited testing, YMMV. If unsure, set 'BACKLIGHT_ENABLE = no' in your rules.mk")
25#endif
26
23backlight_config_t backlight_config; 27backlight_config_t backlight_config;
24 28
25#ifdef BACKLIGHT_BREATHING 29#ifdef BACKLIGHT_BREATHING
@@ -27,51 +31,6 @@ backlight_config_t backlight_config;
27static uint8_t breathing_period = BREATHING_PERIOD; 31static uint8_t breathing_period = BREATHING_PERIOD;
28#endif 32#endif
29 33
30#ifndef BACKLIGHT_CUSTOM_DRIVER
31# if defined(BACKLIGHT_PINS)
32static const pin_t backlight_pins[] = BACKLIGHT_PINS;
33# ifndef BACKLIGHT_LED_COUNT
34# define BACKLIGHT_LED_COUNT (sizeof(backlight_pins) / sizeof(pin_t))
35# endif
36
37# define FOR_EACH_LED(x) \
38 for (uint8_t i = 0; i < BACKLIGHT_LED_COUNT; i++) { \
39 pin_t backlight_pin = backlight_pins[i]; \
40 { x } \
41 }
42# else
43// we support only one backlight pin
44static const pin_t backlight_pin = BACKLIGHT_PIN;
45# define FOR_EACH_LED(x) x
46# endif
47
48static inline void backlight_on(pin_t backlight_pin) {
49# if BACKLIGHT_ON_STATE == 0
50 writePinLow(backlight_pin);
51# else
52 writePinHigh(backlight_pin);
53# endif
54}
55
56static inline void backlight_off(pin_t backlight_pin) {
57# if BACKLIGHT_ON_STATE == 0
58 writePinHigh(backlight_pin);
59# else
60 writePinLow(backlight_pin);
61# endif
62}
63
64void backlight_pins_init(void) {
65 // Setup backlight pin as output and output to off state.
66 FOR_EACH_LED(setPinOutput(backlight_pin); backlight_off(backlight_pin);)
67}
68
69void backlight_pins_on(void) { FOR_EACH_LED(backlight_on(backlight_pin);) }
70
71void backlight_pins_off(void) { FOR_EACH_LED(backlight_off(backlight_pin);) }
72
73#endif
74
75/** \brief Backlight initialization 34/** \brief Backlight initialization
76 * 35 *
77 * FIXME: needs doc 36 * FIXME: needs doc
diff --git a/quantum/backlight/backlight.h b/quantum/backlight/backlight.h
index 07a4880e9..3e506737d 100644
--- a/quantum/backlight/backlight.h
+++ b/quantum/backlight/backlight.h
@@ -44,10 +44,6 @@ typedef union {
44 }; 44 };
45} backlight_config_t; 45} backlight_config_t;
46 46
47void backlight_pins_init(void);
48void backlight_pins_on(void);
49void backlight_pins_off(void);
50
51void backlight_init(void); 47void backlight_init(void);
52void backlight_toggle(void); 48void backlight_toggle(void);
53void backlight_enable(void); 49void backlight_enable(void);
@@ -79,11 +75,11 @@ void breathing_period_default(void);
79void breathing_period_inc(void); 75void breathing_period_inc(void);
80void breathing_period_dec(void); 76void breathing_period_dec(void);
81 77
78void breathing_toggle(void);
79
82// implementation specific 80// implementation specific
83void breathing_enable(void); 81void breathing_enable(void);
84void breathing_disable(void); 82void breathing_disable(void);
85void breathing_toggle(void);
86bool is_breathing(void); 83bool is_breathing(void);
87void breathing_pulse(void); 84void breathing_pulse(void);
88void breathing_task(void);
89#endif 85#endif
diff --git a/quantum/backlight/backlight_arm.c b/quantum/backlight/backlight_arm.c
index a6d38a1a0..723544adb 100644
--- a/quantum/backlight/backlight_arm.c
+++ b/quantum/backlight/backlight_arm.c
@@ -6,10 +6,6 @@
6// TODO: remove short term bodge when refactoring BACKLIGHT_CUSTOM_DRIVER out 6// TODO: remove short term bodge when refactoring BACKLIGHT_CUSTOM_DRIVER out
7#ifdef BACKLIGHT_PIN 7#ifdef BACKLIGHT_PIN
8 8
9# if defined(STM32F0XX) || defined(STM32F0xx)
10# pragma message("Backlight support for STMF072 has had limited testing, YMMV. If unsure, set 'BACKLIGHT_ENABLE = no' in your rules.mk")
11# endif
12
13// GPIOV2 && GPIOV3 9// GPIOV2 && GPIOV3
14# ifndef BACKLIGHT_PAL_MODE 10# ifndef BACKLIGHT_PAL_MODE
15# define BACKLIGHT_PAL_MODE 2 11# define BACKLIGHT_PAL_MODE 2
diff --git a/quantum/backlight/backlight_avr.c b/quantum/backlight/backlight_avr.c
index 40291d382..ce13f1118 100644
--- a/quantum/backlight/backlight_avr.c
+++ b/quantum/backlight/backlight_avr.c
@@ -1,11 +1,8 @@
1#include "quantum.h" 1#include "quantum.h"
2#include "backlight.h" 2#include "backlight.h"
3#include "backlight_driver_common.h"
3#include "debug.h" 4#include "debug.h"
4 5
5#if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
6# error "Backlight pin/pins not defined. Please configure."
7#endif
8
9// This logic is a bit complex, we support 3 setups: 6// This logic is a bit complex, we support 3 setups:
10// 7//
11// 1. Hardware PWM when backlight is wired to a PWM pin. 8// 1. Hardware PWM when backlight is wired to a PWM pin.
diff --git a/quantum/backlight/backlight_driver_common.c b/quantum/backlight/backlight_driver_common.c
new file mode 100644
index 000000000..270a43c67
--- /dev/null
+++ b/quantum/backlight/backlight_driver_common.c
@@ -0,0 +1,49 @@
1#include "quantum.h"
2#include "backlight.h"
3#include "backlight_driver_common.h"
4
5#if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
6# error "Backlight pin/pins not defined. Please configure."
7#endif
8
9#if defined(BACKLIGHT_PINS)
10static const pin_t backlight_pins[] = BACKLIGHT_PINS;
11# ifndef BACKLIGHT_LED_COUNT
12# define BACKLIGHT_LED_COUNT (sizeof(backlight_pins) / sizeof(pin_t))
13# endif
14
15# define FOR_EACH_LED(x) \
16 for (uint8_t i = 0; i < BACKLIGHT_LED_COUNT; i++) { \
17 pin_t backlight_pin = backlight_pins[i]; \
18 { x } \
19 }
20#else
21// we support only one backlight pin
22static const pin_t backlight_pin = BACKLIGHT_PIN;
23# define FOR_EACH_LED(x) x
24#endif
25
26static inline void backlight_on(pin_t backlight_pin) {
27#if BACKLIGHT_ON_STATE == 0
28 writePinLow(backlight_pin);
29#else
30 writePinHigh(backlight_pin);
31#endif
32}
33
34static inline void backlight_off(pin_t backlight_pin) {
35#if BACKLIGHT_ON_STATE == 0
36 writePinHigh(backlight_pin);
37#else
38 writePinLow(backlight_pin);
39#endif
40}
41
42void backlight_pins_init(void) {
43 // Setup backlight pin as output and output to off state.
44 FOR_EACH_LED(setPinOutput(backlight_pin); backlight_off(backlight_pin);)
45}
46
47void backlight_pins_on(void) { FOR_EACH_LED(backlight_on(backlight_pin);) }
48
49void backlight_pins_off(void) { FOR_EACH_LED(backlight_off(backlight_pin);) }
diff --git a/quantum/backlight/backlight_driver_common.h b/quantum/backlight/backlight_driver_common.h
new file mode 100644
index 000000000..36e8a5fa6
--- /dev/null
+++ b/quantum/backlight/backlight_driver_common.h
@@ -0,0 +1,7 @@
1#pragma once
2
3void backlight_pins_init(void);
4void backlight_pins_on(void);
5void backlight_pins_off(void);
6
7void breathing_task(void);
diff --git a/quantum/backlight/backlight_soft.c b/quantum/backlight/backlight_software.c
index 8552384a4..709304f55 100644
--- a/quantum/backlight/backlight_soft.c
+++ b/quantum/backlight/backlight_software.c
@@ -1,9 +1,6 @@
1#include "quantum.h" 1#include "quantum.h"
2#include "backlight.h" 2#include "backlight.h"
3 3#include "backlight_driver_common.h"
4#if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
5# error "Backlight pin/pins not defined. Please configure."
6#endif
7 4
8#ifdef BACKLIGHT_BREATHING 5#ifdef BACKLIGHT_BREATHING
9# error "Backlight breathing is not available for software PWM. Please disable." 6# error "Backlight breathing is not available for software PWM. Please disable."