summaryrefslogtreecommitdiff
path: root/firmware/drivers/button.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/button.c')
-rw-r--r--firmware/drivers/button.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index 7c5858a1e3..dcf77ff661 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -256,7 +256,8 @@ static void button_tick(void)
256 lastbtn = btn & ~(BUTTON_REL | BUTTON_REPEAT); 256 lastbtn = btn & ~(BUTTON_REL | BUTTON_REPEAT);
257} 257}
258 258
259void button_boost(bool state) 259#ifdef HAVE_ADJUSTABLE_CPU_FREQ
260static void button_boost(bool state)
260{ 261{
261 static bool boosted = false; 262 static bool boosted = false;
262 263
@@ -271,17 +272,20 @@ void button_boost(bool state)
271 boosted = false; 272 boosted = false;
272 } 273 }
273} 274}
275#endif /* HAVE_ADJUSTABLE_CPU_FREQ */
274 276
275long button_get(bool block) 277long button_get(bool block)
276{ 278{
277 struct event ev; 279 struct event ev;
278 int pending_count = queue_count(&button_queue); 280 int pending_count = queue_count(&button_queue);
279 281
282#ifdef HAVE_ADJUSTABLE_CPU_FREQ
280 /* Control the CPU boost trying to keep queue empty. */ 283 /* Control the CPU boost trying to keep queue empty. */
281 if (pending_count == 0) 284 if (pending_count == 0)
282 button_boost(false); 285 button_boost(false);
283 else if (pending_count > 2) 286 else if (pending_count > 2)
284 button_boost(true); 287 button_boost(true);
288#endif
285 289
286 if ( block || pending_count ) 290 if ( block || pending_count )
287 { 291 {
@@ -296,11 +300,13 @@ long button_get_w_tmo(int ticks)
296{ 300{
297 struct event ev; 301 struct event ev;
298 302
303#ifdef HAVE_ADJUSTABLE_CPU_FREQ
299 /* Be sure to keep boosted state. */ 304 /* Be sure to keep boosted state. */
300 if (!queue_empty(&button_queue)) 305 if (!queue_empty(&button_queue))
301 return button_get(true); 306 return button_get(true);
302 307
303 button_boost(false); 308 button_boost(false);
309#endif
304 310
305 queue_wait_w_tmo(&button_queue, &ev, ticks); 311 queue_wait_w_tmo(&button_queue, &ev, ticks);
306 return (ev.id != SYS_TIMEOUT)? ev.id: BUTTON_NONE; 312 return (ev.id != SYS_TIMEOUT)? ev.id: BUTTON_NONE;