summaryrefslogtreecommitdiff
path: root/firmware/system.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/system.c')
-rw-r--r--firmware/system.c113
1 files changed, 3 insertions, 110 deletions
diff --git a/firmware/system.c b/firmware/system.c
index c597fc5995..4dbc41b515 100644
--- a/firmware/system.c
+++ b/firmware/system.c
@@ -376,7 +376,7 @@ void system_init(void)
376/* IRQ12 SIO INT */ 376/* IRQ12 SIO INT */
377/* IRQ13 IIS0 INT */ 377/* IRQ13 IIS0 INT */
378/* IRQ14 IIS1 INT */ 378/* IRQ14 IIS1 INT */
379/* IRQ15 ­ */ 379/* IRQ15 */
380 380
381 extra_init(); 381 extra_init();
382} 382}
@@ -667,115 +667,8 @@ int system_memory_guard(int newmode)
667 return oldmode; 667 return oldmode;
668} 668}
669 669
670#ifndef TARGET_TREE 670/* void set_cpu_frequency(long frequency) is in
671#if MEM < 32 671 target tree for all 3 coldfire targets */
672#define MAX_REFRESH_TIMER 59
673#define NORMAL_REFRESH_TIMER 21
674#define DEFAULT_REFRESH_TIMER 4
675#else
676#define MAX_REFRESH_TIMER 29
677#define NORMAL_REFRESH_TIMER 10
678#define DEFAULT_REFRESH_TIMER 1
679#endif
680
681#ifdef IRIVER_H300_SERIES
682#define RECALC_DELAYS(f) \
683 pcf50606_i2c_recalc_delay(f)
684#else
685#define RECALC_DELAYS(f)
686#endif
687
688#ifdef HAVE_SERIAL
689#define BAUD_RATE 57600
690#define BAUDRATE_DIV_DEFAULT (CPUFREQ_DEFAULT/(BAUD_RATE*32*2))
691#define BAUDRATE_DIV_NORMAL (CPUFREQ_NORMAL/(BAUD_RATE*32*2))
692#define BAUDRATE_DIV_MAX (CPUFREQ_MAX/(BAUD_RATE*32*2))
693#endif
694
695void set_cpu_frequency (long) __attribute__ ((section (".icode")));
696void set_cpu_frequency(long frequency)
697{
698 switch(frequency)
699 {
700 case CPUFREQ_MAX:
701 DCR = (0x8200 | DEFAULT_REFRESH_TIMER);
702 /* Refresh timer for bypass frequency */
703 PLLCR &= ~1; /* Bypass mode */
704 timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
705 RECALC_DELAYS(CPUFREQ_MAX);
706 PLLCR = 0x11c56005;
707 CSCR0 = 0x00001180; /* Flash: 4 wait states */
708 CSCR1 = 0x00000980; /* LCD: 2 wait states */
709#if CONFIG_USBOTG == USBOTG_ISP1362
710 CSCR3 = 0x00002180; /* USBOTG: 8 wait states */
711#endif
712 while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
713 This may take up to 10ms! */
714 timers_adjust_prescale(CPUFREQ_MAX_MULT, true);
715 DCR = (0x8200 | MAX_REFRESH_TIMER); /* Refresh timer */
716 cpu_frequency = CPUFREQ_MAX;
717 IDECONFIG1 = 0x10100000 | (1 << 13) | (2 << 10);
718 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */
719 IDECONFIG2 = 0x40000 | (2 << 8); /* TA enable + CS2wait */
720
721#ifdef HAVE_SERIAL
722 UBG10 = BAUDRATE_DIV_MAX >> 8;
723 UBG20 = BAUDRATE_DIV_MAX & 0xff;
724#endif
725 break;
726
727 case CPUFREQ_NORMAL:
728 DCR = (DCR & ~0x01ff) | DEFAULT_REFRESH_TIMER;
729 /* Refresh timer for bypass frequency */
730 PLLCR &= ~1; /* Bypass mode */
731 timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
732 RECALC_DELAYS(CPUFREQ_NORMAL);
733 PLLCR = 0x13c5e005;
734 CSCR0 = 0x00000580; /* Flash: 1 wait state */
735 CSCR1 = 0x00000180; /* LCD: 0 wait states */
736#if CONFIG_USBOTG == USBOTG_ISP1362
737 CSCR3 = 0x00000580; /* USBOTG: 1 wait state */
738#endif
739 while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
740 This may take up to 10ms! */
741 timers_adjust_prescale(CPUFREQ_NORMAL_MULT, true);
742 DCR = (0x8000 | NORMAL_REFRESH_TIMER); /* Refresh timer */
743 cpu_frequency = CPUFREQ_NORMAL;
744 IDECONFIG1 = 0x10100000 | (0 << 13) | (1 << 10);
745 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */
746 IDECONFIG2 = 0x40000 | (0 << 8); /* TA enable + CS2wait */
747
748#ifdef HAVE_SERIAL
749 UBG10 = BAUDRATE_DIV_NORMAL >> 8;
750 UBG20 = BAUDRATE_DIV_NORMAL & 0xff;
751#endif
752 break;
753 default:
754 DCR = (DCR & ~0x01ff) | DEFAULT_REFRESH_TIMER;
755 /* Refresh timer for bypass frequency */
756 PLLCR &= ~1; /* Bypass mode */
757 timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, true);
758 RECALC_DELAYS(CPUFREQ_DEFAULT);
759 PLLCR = 0x10c00200; /* Power down PLL, but keep CLSEL and CRSEL */
760 CSCR0 = 0x00000180; /* Flash: 0 wait states */
761 CSCR1 = 0x00000180; /* LCD: 0 wait states */
762#if CONFIG_USBOTG == USBOTG_ISP1362
763 CSCR3 = 0x00000180; /* USBOTG: 0 wait states */
764#endif
765 DCR = (0x8000 | DEFAULT_REFRESH_TIMER); /* Refresh timer */
766 cpu_frequency = CPUFREQ_DEFAULT;
767 IDECONFIG1 = 0x10100000 | (0 << 13) | (1 << 10);
768 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */
769 IDECONFIG2 = 0x40000 | (0 << 8); /* TA enable + CS2wait */
770
771#ifdef HAVE_SERIAL
772 UBG10 = BAUDRATE_DIV_DEFAULT >> 8;
773 UBG20 = BAUDRATE_DIV_DEFAULT & 0xff;
774#endif
775 break;
776 }
777}
778#endif
779 672
780#elif CONFIG_CPU == SH7034 673#elif CONFIG_CPU == SH7034
781#include "led.h" 674#include "led.h"