mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 05:05:20 -05:00
Fix boosting on as3525v2
the arm926-ejs doesn't have synchronous/asynchronous/fastbus modes, so just change CGU_PROC directly Note: we could use a lower unboosted frequency now git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25417 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
49935f2fa8
commit
a28a9210d0
3 changed files with 19 additions and 3 deletions
|
|
@ -120,6 +120,7 @@
|
|||
/* FCLK */
|
||||
#define AS3525_FCLK_SEL AS3525_CLK_PLLA
|
||||
#define AS3525_FCLK_POSTDIV (CLK_DIV((AS3525_PLLA_FREQ*(8-AS3525_FCLK_PREDIV)/8), AS3525_FCLK_FREQ) - 1) /*div=1/(n+1)*/
|
||||
#define AS3525_FCLK_POSTDIV_UNBOOSTED (CLK_DIV((AS3525_PLLA_FREQ*(8-AS3525_FCLK_PREDIV)/8), CPUFREQ_NORMAL) - 1) /*div=1/(n+1) : needed for as3525v2 */
|
||||
|
||||
/* MCLK */
|
||||
#define AS3525_MCLK_SEL AS3525_CLK_PLLA
|
||||
|
|
|
|||
|
|
@ -123,9 +123,11 @@ static int calc_freq(int clk)
|
|||
return 0;
|
||||
#endif
|
||||
case CLK_PROC:
|
||||
#if CONFIG_CPU == AS3525 /* not in arm926-ejs */
|
||||
if (!(read_cp15()>>30)) /* fastbus */
|
||||
return calc_freq(CLK_PCLK);
|
||||
else /* Synch or Asynch bus*/
|
||||
#endif /* CONFIG_CPU == AS3525 */
|
||||
return calc_freq(CLK_FCLK);
|
||||
case CLK_FCLK:
|
||||
switch(CGU_PROC & 3) {
|
||||
|
|
@ -256,11 +258,11 @@ bool __dbg_hw_info(void)
|
|||
lcd_puts(0, line++, " SET ACTUAL");
|
||||
#if CONFIG_CPU == AS3525
|
||||
lcd_putsf(0, line++, "922T:%s %3dMHz",
|
||||
#else
|
||||
lcd_putsf(0, line++, "926ejs:%s %3dMHz",
|
||||
#endif
|
||||
(!(read_cp15()>>30)) ? "FAST " :
|
||||
(read_cp15()>>31) ? "ASYNC" : "SYNC ",
|
||||
#else
|
||||
lcd_putsf(0, line++, "926ejs: %3dMHz",
|
||||
#endif
|
||||
calc_freq(CLK_PROC)/1000000);
|
||||
lcd_putsf(0, line++, "PLLA:%3dMHz %3dMHz", AS3525_PLLA_FREQ/1000000,
|
||||
calc_freq(CLK_PLLA)/1000000);
|
||||
|
|
|
|||
|
|
@ -257,6 +257,7 @@ void system_init(void)
|
|||
CGU_PROC = 0; /* fclk 24 MHz */
|
||||
CGU_PERI &= ~0x7f; /* pclk 24 MHz */
|
||||
|
||||
/* bits 31:30 should be set to 0 in arm926-ejs */
|
||||
asm volatile(
|
||||
"mrc p15, 0, r0, c1, c0 \n" /* control register */
|
||||
"bic r0, r0, #3<<30 \n" /* clears bus bits : sets fastbus */
|
||||
|
|
@ -351,6 +352,7 @@ void set_cpu_frequency(long frequency)
|
|||
while(adc_read(ADC_CVDD) < 470); /* 470 * .0025 = 1.175V */
|
||||
#endif /* HAVE_ADJUSTABLE_CPU_VOLTAGE */
|
||||
|
||||
#if CONFIG_CPU == AS3525 /* only in arm922tdmi */
|
||||
asm volatile(
|
||||
"mrc p15, 0, r0, c1, c0 \n"
|
||||
|
||||
|
|
@ -363,16 +365,27 @@ void set_cpu_frequency(long frequency)
|
|||
|
||||
"mcr p15, 0, r0, c1, c0 \n"
|
||||
: : : "r0" );
|
||||
#else
|
||||
CGU_PROC = ((AS3525_FCLK_POSTDIV << 4) |
|
||||
(AS3525_FCLK_PREDIV << 2) |
|
||||
AS3525_FCLK_SEL);
|
||||
#endif /* CONFIG_CPU == AS3525 */
|
||||
|
||||
cpu_frequency = CPUFREQ_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
#if CONFIG_CPU == AS3525 /* only in arm922tdmi */
|
||||
asm volatile(
|
||||
"mrc p15, 0, r0, c1, c0 \n"
|
||||
"bic r0, r0, #3<<30 \n" /* fastbus clocking */
|
||||
"mcr p15, 0, r0, c1, c0 \n"
|
||||
: : : "r0" );
|
||||
#else
|
||||
CGU_PROC = ((AS3525_FCLK_POSTDIV_UNBOOSTED << 4) |
|
||||
(AS3525_FCLK_PREDIV << 2) |
|
||||
AS3525_FCLK_SEL);
|
||||
#endif /* CONFIG_CPU == AS3525 */
|
||||
|
||||
#ifdef HAVE_ADJUSTABLE_CPU_VOLTAGE
|
||||
/* Decreasing frequency so reduce voltage after change */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue