summaryrefslogtreecommitdiffstats
path: root/firmware/target
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/mips/ingenic_jz47xx/system-jz4740.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
index c0a9bf19aa..978675825c 100644
--- a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
+++ b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
@@ -541,10 +541,11 @@ void system_reboot(void)
void system_exception_wait(void)
{
/* check for power button without including any .h file */
- while (1)
+ while(1)
{
- if( ~REG_GPIO_PXPIN(3) & (1 << 29) )
- break;
+ if( (~REG_GPIO_PXPIN(3)) & (1 << 29) )
+ return;
+ asm volatile("nop");
}
}
@@ -574,3 +575,19 @@ int system_memory_guard(int newmode)
(void)newmode;
return 0;
}
+
+#ifdef HAVE_ADJUSTABLE_CPU_FREQ
+void set_cpu_frequency(long frequency)
+{
+ unsigned long cfcr = REG_CPM_CPCCR;
+ cfcr &= ~CPM_CPCCR_CDIV_MASK;
+
+ if(frequency == CPUFREQ_NORMAL)
+ cfcr |= (0 << CPM_CPCCR_CDIV_BIT);
+ else
+ cfcr |= (2 << CPM_CPCCR_CDIV_BIT);
+
+ REG_CPM_CPCCR = cfcr;
+ cpu_frequency = frequency;
+}
+#endif