summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-04-06 09:33:41 -0700
committerRandall Spangler <rspangler@chromium.org>2012-04-09 10:33:35 -0700
commite9328ac4f63351b4282916034270aa86b7e74922 (patch)
treed0fde5840594c33709927a5a4d1fabfe0f858c26 /test
parent1a9a415cf68c6e8e3b31972c072c81ed886290ab (diff)
downloadchrome-ec-e9328ac4f63351b4282916034270aa86b7e74922.tar.gz
Support dynamically changing the system clock
Add nopll command to turn off the PLL, reducing the system clock to 16Mhz. Signed-off-by: Randall Spangler <rspangler@chromium.org> BUG=chrome-os-partner:8798 TEST=manual boot system press power button to boot x86 temps // should print all temperatures timerinfo timerinfo timerinfo // convince yourself this is counting up at about 1MHz nopll // this drops the system clock to 16MHz temps // should still print all temperatures timerinfo timerinfo timerinfo // should still be counting up at about 1MHz Change-Id: Ie29ceb17af348148bffadf63d60c1b731f4c3f6d
Diffstat (limited to 'test')
-rw-r--r--test/powerdemo.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/test/powerdemo.c b/test/powerdemo.c
index aabe4c8825..496459f9f7 100644
--- a/test/powerdemo.c
+++ b/test/powerdemo.c
@@ -6,16 +6,14 @@
/* Power state machine demo module for Chrome EC */
#include "board.h"
+#include "clock.h"
#include "powerdemo.h"
#include "task.h"
#include "timer.h"
#include "uart.h"
#include "registers.h"
-
#define US_PER_SECOND 1000000
-/* Divider to get microsecond for the clock */
-#define CLOCKSOURCE_DIVIDER (CPU_CLOCK/US_PER_SECOND)
static volatile enum {
POWER_STATE_IDLE = 0, /* Idle */
@@ -77,7 +75,7 @@ int power_demo_init(void)
/* 32-bit timer mode */
LM4_TIMER_CFG(7) = 4;
/* Set the prescaler to increment every microsecond */
- LM4_TIMER_TAPR(7) = CLOCKSOURCE_DIVIDER;
+ LM4_TIMER_TAPR(7) = clock_get_freq() / US_PER_SECOND;
/* One-shot, counting down */
LM4_TIMER_TAMR(7) = 0x01;
/* Set overflow interrupt */