Ingenic Jz4740: add basic frequency switching

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21625 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Maurus Cuelenaere 2009-07-03 21:34:40 +00:00
parent 9ecaa5562d
commit eabeb928dd
3 changed files with 25 additions and 6 deletions

View file

@ -187,9 +187,7 @@
#define FIRMWARE_OFFSET_FILE_DATA 8 #define FIRMWARE_OFFSET_FILE_DATA 8
/* Define this if you have adjustable CPU frequency */ /* Define this if you have adjustable CPU frequency */
/* #define HAVE_ADJUSTABLE_CPU_FREQ */ #define HAVE_ADJUSTABLE_CPU_FREQ
#define CPUFREQ_NORMAL 336000000 /* CPU clock: 336 MHz */
#define CPUFREQ_MAX 336000000 /* CPU clock: 336 MHz */
#ifdef ONDA_VX747P #ifdef ONDA_VX747P
#define BOOTFILE_EXT "vx747p" #define BOOTFILE_EXT "vx747p"

View file

@ -5212,4 +5212,8 @@ struct Ration2m
/* Timer frequency */ /* Timer frequency */
#define TIMER_FREQ (CFG_EXTAL) /* For full precision! */ #define TIMER_FREQ (CFG_EXTAL) /* For full precision! */
#define CPUFREQ_NORMAL 112000000 /* CPU clock: 112 MHz */
#define CPUFREQ_DEFAULT 112000000 /* CPU clock: 112 MHz */
#define CPUFREQ_MAX 336000000 /* CPU clock: 336 MHz */
#endif /* __JZ4740_H__ */ #endif /* __JZ4740_H__ */

View file

@ -541,10 +541,11 @@ void system_reboot(void)
void system_exception_wait(void) void system_exception_wait(void)
{ {
/* check for power button without including any .h file */ /* check for power button without including any .h file */
while (1) while(1)
{ {
if( ~REG_GPIO_PXPIN(3) & (1 << 29) ) if( (~REG_GPIO_PXPIN(3)) & (1 << 29) )
break; return;
asm volatile("nop");
} }
} }
@ -574,3 +575,19 @@ int system_memory_guard(int newmode)
(void)newmode; (void)newmode;
return 0; 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