diff options
Diffstat (limited to 'firmware/system.c')
-rw-r--r-- | firmware/system.c | 113 |
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 | |||
695 | void set_cpu_frequency (long) __attribute__ ((section (".icode"))); | ||
696 | void 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" |