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 this if you have adjustable CPU frequency */
/* #define HAVE_ADJUSTABLE_CPU_FREQ */
#define CPUFREQ_NORMAL 336000000 /* CPU clock: 336 MHz */
#define CPUFREQ_MAX 336000000 /* CPU clock: 336 MHz */
#define HAVE_ADJUSTABLE_CPU_FREQ
#ifdef ONDA_VX747P
#define BOOTFILE_EXT "vx747p"

View file

@ -5212,4 +5212,8 @@ struct Ration2m
/* Timer frequency */
#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__ */

View file

@ -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