aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/common')
-rw-r--r--tmk_core/common/avr/suspend.c33
-rw-r--r--tmk_core/common/chibios/suspend.c33
-rw-r--r--tmk_core/common/suspend.h5
3 files changed, 71 insertions, 0 deletions
diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c
index 3aa3d1247..dfa1af273 100644
--- a/tmk_core/common/avr/suspend.c
+++ b/tmk_core/common/avr/suspend.c
@@ -72,6 +72,21 @@ void suspend_idle(uint8_t time)
72 */ 72 */
73static uint8_t wdt_timeout = 0; 73static uint8_t wdt_timeout = 0;
74 74
75/** \brief Run keyboard level Power down
76 *
77 * FIXME: needs doc
78 */
79__attribute__ ((weak))
80void suspend_power_down_user (void) { }
81/** \brief Run keyboard level Power down
82 *
83 * FIXME: needs doc
84 */
85__attribute__ ((weak))
86void suspend_power_down_kb(void) {
87 suspend_power_down_user();
88}
89
75/** \brief Power down 90/** \brief Power down
76 * 91 *
77 * FIXME: needs doc 92 * FIXME: needs doc
@@ -103,6 +118,8 @@ static void power_down(uint8_t wdto)
103#endif 118#endif
104 rgblight_disable_noeeprom(); 119 rgblight_disable_noeeprom();
105#endif 120#endif
121 suspend_power_down_kb();
122
106 // TODO: more power saving 123 // TODO: more power saving
107 // See PicoPower application note 124 // See PicoPower application note
108 // - I/O port input with pullup 125 // - I/O port input with pullup
@@ -144,6 +161,21 @@ bool suspend_wakeup_condition(void)
144 return false; 161 return false;
145} 162}
146 163
164/** \brief run user level code immediately after wakeup
165 *
166 * FIXME: needs doc
167 */
168__attribute__ ((weak))
169void suspend_wakeup_init_user(void) { }
170
171/** \brief run keyboard level code immediately after wakeup
172 *
173 * FIXME: needs doc
174 */
175__attribute__ ((weak))
176void suspend_wakeup_init_kb(void) {
177 suspend_wakeup_init_user();
178}
147/** \brief run immediately after wakeup 179/** \brief run immediately after wakeup
148 * 180 *
149 * FIXME: needs doc 181 * FIXME: needs doc
@@ -162,6 +194,7 @@ void suspend_wakeup_init(void)
162 rgblight_timer_enable(); 194 rgblight_timer_enable();
163#endif 195#endif
164#endif 196#endif
197 suspend_wakeup_init_kb();
165} 198}
166 199
167#ifndef NO_SUSPEND_POWER_DOWN 200#ifndef NO_SUSPEND_POWER_DOWN
diff --git a/tmk_core/common/chibios/suspend.c b/tmk_core/common/chibios/suspend.c
index 32ef773e2..4a119ccef 100644
--- a/tmk_core/common/chibios/suspend.c
+++ b/tmk_core/common/chibios/suspend.c
@@ -21,6 +21,21 @@ void suspend_idle(uint8_t time) {
21 wait_ms(time); 21 wait_ms(time);
22} 22}
23 23
24/** \brief Run keyboard level Power down
25 *
26 * FIXME: needs doc
27 */
28__attribute__ ((weak))
29void suspend_power_down_user (void) { }
30/** \brief Run keyboard level Power down
31 *
32 * FIXME: needs doc
33 */
34__attribute__ ((weak))
35void suspend_power_down_kb(void) {
36 suspend_power_down_user();
37}
38
24/** \brief suspend power down 39/** \brief suspend power down
25 * 40 *
26 * FIXME: needs doc 41 * FIXME: needs doc
@@ -30,6 +45,7 @@ void suspend_power_down(void) {
30 // shouldn't power down TPM/FTM if we want a breathing LED 45 // shouldn't power down TPM/FTM if we want a breathing LED
31 // also shouldn't power down USB 46 // also shouldn't power down USB
32 47
48 suspend_power_down_kb();
33 // on AVR, this enables the watchdog for 15ms (max), and goes to 49 // on AVR, this enables the watchdog for 15ms (max), and goes to
34 // SLEEP_MODE_PWR_DOWN 50 // SLEEP_MODE_PWR_DOWN
35 51
@@ -53,6 +69,22 @@ bool suspend_wakeup_condition(void)
53 return false; 69 return false;
54} 70}
55 71
72/** \brief run user level code immediately after wakeup
73 *
74 * FIXME: needs doc
75 */
76__attribute__ ((weak))
77void suspend_wakeup_init_user(void) { }
78
79/** \brief run keyboard level code immediately after wakeup
80 *
81 * FIXME: needs doc
82 */
83__attribute__ ((weak))
84void suspend_wakeup_init_kb(void) {
85 suspend_power_down_user();
86}
87
56/** \brief suspend wakeup condition 88/** \brief suspend wakeup condition
57 * 89 *
58 * run immediately after wakeup 90 * run immediately after wakeup
@@ -79,4 +111,5 @@ void suspend_wakeup_init(void)
79#ifdef BACKLIGHT_ENABLE 111#ifdef BACKLIGHT_ENABLE
80 backlight_init(); 112 backlight_init();
81#endif /* BACKLIGHT_ENABLE */ 113#endif /* BACKLIGHT_ENABLE */
114 suspend_wakeup_init_kb();
82} 115}
diff --git a/tmk_core/common/suspend.h b/tmk_core/common/suspend.h
index 80617a824..c3e444708 100644
--- a/tmk_core/common/suspend.h
+++ b/tmk_core/common/suspend.h
@@ -10,4 +10,9 @@ void suspend_power_down(void);
10bool suspend_wakeup_condition(void); 10bool suspend_wakeup_condition(void);
11void suspend_wakeup_init(void); 11void suspend_wakeup_init(void);
12 12
13void suspend_wakeup_init_user(void);
14void suspend_wakeup_init_kb(void);
15void suspend_power_down_user (void);
16void suspend_power_down_kb(void);
17
13#endif 18#endif