diff options
Diffstat (limited to 'tmk_core/common/chibios')
-rw-r--r-- | tmk_core/common/chibios/bootloader.c | 8 | ||||
-rw-r--r-- | tmk_core/common/chibios/eeprom.c | 44 | ||||
-rw-r--r-- | tmk_core/common/chibios/suspend.c | 18 |
3 files changed, 69 insertions, 1 deletions
diff --git a/tmk_core/common/chibios/bootloader.c b/tmk_core/common/chibios/bootloader.c index 2dd3ade34..f9895237b 100644 --- a/tmk_core/common/chibios/bootloader.c +++ b/tmk_core/common/chibios/bootloader.c | |||
@@ -13,11 +13,19 @@ extern uint32_t __ram0_end__; | |||
13 | #define MAGIC_ADDR (unsigned long*)(SYMVAL(__ram0_end__) - 4) | 13 | #define MAGIC_ADDR (unsigned long*)(SYMVAL(__ram0_end__) - 4) |
14 | 14 | ||
15 | 15 | ||
16 | /** \brief Jump to the bootloader | ||
17 | * | ||
18 | * FIXME: needs doc | ||
19 | */ | ||
16 | void bootloader_jump(void) { | 20 | void bootloader_jump(void) { |
17 | *MAGIC_ADDR = BOOTLOADER_MAGIC; // set magic flag => reset handler will jump into boot loader | 21 | *MAGIC_ADDR = BOOTLOADER_MAGIC; // set magic flag => reset handler will jump into boot loader |
18 | NVIC_SystemReset(); | 22 | NVIC_SystemReset(); |
19 | } | 23 | } |
20 | 24 | ||
25 | /** \brief Enter bootloader mode if requested | ||
26 | * | ||
27 | * FIXME: needs doc | ||
28 | */ | ||
21 | void enter_bootloader_mode_if_requested(void) { | 29 | void enter_bootloader_mode_if_requested(void) { |
22 | unsigned long* check = MAGIC_ADDR; | 30 | unsigned long* check = MAGIC_ADDR; |
23 | if(*check == BOOTLOADER_MAGIC) { | 31 | if(*check == BOOTLOADER_MAGIC) { |
diff --git a/tmk_core/common/chibios/eeprom.c b/tmk_core/common/chibios/eeprom.c index 5ff8ee86f..9061b790c 100644 --- a/tmk_core/common/chibios/eeprom.c +++ b/tmk_core/common/chibios/eeprom.c | |||
@@ -79,6 +79,10 @@ | |||
79 | #define EEESIZE 0x39 | 79 | #define EEESIZE 0x39 |
80 | #endif | 80 | #endif |
81 | 81 | ||
82 | /** \brief eeprom initialization | ||
83 | * | ||
84 | * FIXME: needs doc | ||
85 | */ | ||
82 | void eeprom_initialize(void) | 86 | void eeprom_initialize(void) |
83 | { | 87 | { |
84 | uint32_t count=0; | 88 | uint32_t count=0; |
@@ -111,6 +115,10 @@ void eeprom_initialize(void) | |||
111 | 115 | ||
112 | #define FlexRAM ((uint8_t *)0x14000000) | 116 | #define FlexRAM ((uint8_t *)0x14000000) |
113 | 117 | ||
118 | /** \brief eeprom read byte | ||
119 | * | ||
120 | * FIXME: needs doc | ||
121 | */ | ||
114 | uint8_t eeprom_read_byte(const uint8_t *addr) | 122 | uint8_t eeprom_read_byte(const uint8_t *addr) |
115 | { | 123 | { |
116 | uint32_t offset = (uint32_t)addr; | 124 | uint32_t offset = (uint32_t)addr; |
@@ -119,6 +127,10 @@ uint8_t eeprom_read_byte(const uint8_t *addr) | |||
119 | return FlexRAM[offset]; | 127 | return FlexRAM[offset]; |
120 | } | 128 | } |
121 | 129 | ||
130 | /** \brief eeprom read word | ||
131 | * | ||
132 | * FIXME: needs doc | ||
133 | */ | ||
122 | uint16_t eeprom_read_word(const uint16_t *addr) | 134 | uint16_t eeprom_read_word(const uint16_t *addr) |
123 | { | 135 | { |
124 | uint32_t offset = (uint32_t)addr; | 136 | uint32_t offset = (uint32_t)addr; |
@@ -127,6 +139,10 @@ uint16_t eeprom_read_word(const uint16_t *addr) | |||
127 | return *(uint16_t *)(&FlexRAM[offset]); | 139 | return *(uint16_t *)(&FlexRAM[offset]); |
128 | } | 140 | } |
129 | 141 | ||
142 | /** \brief eeprom read dword | ||
143 | * | ||
144 | * FIXME: needs doc | ||
145 | */ | ||
130 | uint32_t eeprom_read_dword(const uint32_t *addr) | 146 | uint32_t eeprom_read_dword(const uint32_t *addr) |
131 | { | 147 | { |
132 | uint32_t offset = (uint32_t)addr; | 148 | uint32_t offset = (uint32_t)addr; |
@@ -135,6 +151,10 @@ uint32_t eeprom_read_dword(const uint32_t *addr) | |||
135 | return *(uint32_t *)(&FlexRAM[offset]); | 151 | return *(uint32_t *)(&FlexRAM[offset]); |
136 | } | 152 | } |
137 | 153 | ||
154 | /** \brief eeprom read block | ||
155 | * | ||
156 | * FIXME: needs doc | ||
157 | */ | ||
138 | void eeprom_read_block(void *buf, const void *addr, uint32_t len) | 158 | void eeprom_read_block(void *buf, const void *addr, uint32_t len) |
139 | { | 159 | { |
140 | uint32_t offset = (uint32_t)addr; | 160 | uint32_t offset = (uint32_t)addr; |
@@ -148,11 +168,19 @@ void eeprom_read_block(void *buf, const void *addr, uint32_t len) | |||
148 | } | 168 | } |
149 | } | 169 | } |
150 | 170 | ||
171 | /** \brief eeprom is ready | ||
172 | * | ||
173 | * FIXME: needs doc | ||
174 | */ | ||
151 | int eeprom_is_ready(void) | 175 | int eeprom_is_ready(void) |
152 | { | 176 | { |
153 | return (FTFL->FCNFG & FTFL_FCNFG_EEERDY) ? 1 : 0; | 177 | return (FTFL->FCNFG & FTFL_FCNFG_EEERDY) ? 1 : 0; |
154 | } | 178 | } |
155 | 179 | ||
180 | /** \brief flexram wait | ||
181 | * | ||
182 | * FIXME: needs doc | ||
183 | */ | ||
156 | static void flexram_wait(void) | 184 | static void flexram_wait(void) |
157 | { | 185 | { |
158 | while (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) { | 186 | while (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) { |
@@ -160,6 +188,10 @@ static void flexram_wait(void) | |||
160 | } | 188 | } |
161 | } | 189 | } |
162 | 190 | ||
191 | /** \brief eeprom_write_byte | ||
192 | * | ||
193 | * FIXME: needs doc | ||
194 | */ | ||
163 | void eeprom_write_byte(uint8_t *addr, uint8_t value) | 195 | void eeprom_write_byte(uint8_t *addr, uint8_t value) |
164 | { | 196 | { |
165 | uint32_t offset = (uint32_t)addr; | 197 | uint32_t offset = (uint32_t)addr; |
@@ -172,6 +204,10 @@ void eeprom_write_byte(uint8_t *addr, uint8_t value) | |||
172 | } | 204 | } |
173 | } | 205 | } |
174 | 206 | ||
207 | /** \brief eeprom write word | ||
208 | * | ||
209 | * FIXME: needs doc | ||
210 | */ | ||
175 | void eeprom_write_word(uint16_t *addr, uint16_t value) | 211 | void eeprom_write_word(uint16_t *addr, uint16_t value) |
176 | { | 212 | { |
177 | uint32_t offset = (uint32_t)addr; | 213 | uint32_t offset = (uint32_t)addr; |
@@ -199,6 +235,10 @@ void eeprom_write_word(uint16_t *addr, uint16_t value) | |||
199 | #endif | 235 | #endif |
200 | } | 236 | } |
201 | 237 | ||
238 | /** \brief eeprom write dword | ||
239 | * | ||
240 | * FIXME: needs doc | ||
241 | */ | ||
202 | void eeprom_write_dword(uint32_t *addr, uint32_t value) | 242 | void eeprom_write_dword(uint32_t *addr, uint32_t value) |
203 | { | 243 | { |
204 | uint32_t offset = (uint32_t)addr; | 244 | uint32_t offset = (uint32_t)addr; |
@@ -242,6 +282,10 @@ void eeprom_write_dword(uint32_t *addr, uint32_t value) | |||
242 | #endif | 282 | #endif |
243 | } | 283 | } |
244 | 284 | ||
285 | /** \brief eeprom write block | ||
286 | * | ||
287 | * FIXME: needs doc | ||
288 | */ | ||
245 | void eeprom_write_block(const void *buf, void *addr, uint32_t len) | 289 | void eeprom_write_block(const void *buf, void *addr, uint32_t len) |
246 | { | 290 | { |
247 | uint32_t offset = (uint32_t)addr; | 291 | uint32_t offset = (uint32_t)addr; |
diff --git a/tmk_core/common/chibios/suspend.c b/tmk_core/common/chibios/suspend.c index 7c3c75387..32ef773e2 100644 --- a/tmk_core/common/chibios/suspend.c +++ b/tmk_core/common/chibios/suspend.c | |||
@@ -12,11 +12,19 @@ | |||
12 | #include "suspend.h" | 12 | #include "suspend.h" |
13 | #include "wait.h" | 13 | #include "wait.h" |
14 | 14 | ||
15 | /** \brief suspend idle | ||
16 | * | ||
17 | * FIXME: needs doc | ||
18 | */ | ||
15 | void suspend_idle(uint8_t time) { | 19 | void suspend_idle(uint8_t time) { |
16 | // TODO: this is not used anywhere - what units is 'time' in? | 20 | // TODO: this is not used anywhere - what units is 'time' in? |
17 | wait_ms(time); | 21 | wait_ms(time); |
18 | } | 22 | } |
19 | 23 | ||
24 | /** \brief suspend power down | ||
25 | * | ||
26 | * FIXME: needs doc | ||
27 | */ | ||
20 | void suspend_power_down(void) { | 28 | void suspend_power_down(void) { |
21 | // TODO: figure out what to power down and how | 29 | // TODO: figure out what to power down and how |
22 | // shouldn't power down TPM/FTM if we want a breathing LED | 30 | // shouldn't power down TPM/FTM if we want a breathing LED |
@@ -28,6 +36,10 @@ void suspend_power_down(void) { | |||
28 | wait_ms(17); | 36 | wait_ms(17); |
29 | } | 37 | } |
30 | 38 | ||
39 | /** \brief suspend wakeup condition | ||
40 | * | ||
41 | * FIXME: needs doc | ||
42 | */ | ||
31 | __attribute__ ((weak)) void matrix_power_up(void) {} | 43 | __attribute__ ((weak)) void matrix_power_up(void) {} |
32 | __attribute__ ((weak)) void matrix_power_down(void) {} | 44 | __attribute__ ((weak)) void matrix_power_down(void) {} |
33 | bool suspend_wakeup_condition(void) | 45 | bool suspend_wakeup_condition(void) |
@@ -41,7 +53,11 @@ bool suspend_wakeup_condition(void) | |||
41 | return false; | 53 | return false; |
42 | } | 54 | } |
43 | 55 | ||
44 | // run immediately after wakeup | 56 | /** \brief suspend wakeup condition |
57 | * | ||
58 | * run immediately after wakeup | ||
59 | * FIXME: needs doc | ||
60 | */ | ||
45 | void suspend_wakeup_init(void) | 61 | void suspend_wakeup_init(void) |
46 | { | 62 | { |
47 | // clear keyboard state | 63 | // clear keyboard state |