summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/keymaps/keymap-clip.c8
-rw-r--r--apps/plugins/SOURCES1
-rw-r--r--firmware/export/config-clip.h3
-rw-r--r--firmware/target/coldfire/iriver/system-iriver.c156
-rw-r--r--firmware/target/coldfire/system-target.h8
5 files changed, 94 insertions, 82 deletions
diff --git a/apps/keymaps/keymap-clip.c b/apps/keymaps/keymap-clip.c
index 2dcc7e342a..5a4c990fe7 100644
--- a/apps/keymaps/keymap-clip.c
+++ b/apps/keymaps/keymap-clip.c
@@ -109,11 +109,17 @@ static const struct button_mapping button_context_list[] = {
109 { ACTION_LISTTREE_PGUP, BUTTON_HOME|BUTTON_LEFT, BUTTON_HOME }, 109 { ACTION_LISTTREE_PGUP, BUTTON_HOME|BUTTON_LEFT, BUTTON_HOME },
110 { ACTION_LISTTREE_PGDOWN, BUTTON_HOME|BUTTON_RIGHT, BUTTON_HOME }, 110 { ACTION_LISTTREE_PGDOWN, BUTTON_HOME|BUTTON_RIGHT, BUTTON_HOME },
111 111
112#ifdef HAVE_VOLUME_IN_LIST
113 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
114 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
115
116 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
117 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
118#endif
112 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 119 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
113}; /* button_context_list */ 120}; /* button_context_list */
114 121
115static const struct button_mapping button_context_tree[] = { 122static const struct button_mapping button_context_tree[] = {
116 { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
117 { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, 123 { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
118 124
119 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), 125 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index 7d48be60c1..8f461f37e2 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -151,3 +151,4 @@ superdom.c
151#endif /* m:robe 500 */ 151#endif /* m:robe 500 */
152 152
153md5sum.c 153md5sum.c
154test_boost.c
diff --git a/firmware/export/config-clip.h b/firmware/export/config-clip.h
index 0a6164fbb6..63b4fd8617 100644
--- a/firmware/export/config-clip.h
+++ b/firmware/export/config-clip.h
@@ -75,6 +75,9 @@
75 75
76#define CONFIG_KEYPAD SANSA_CLIP_PAD 76#define CONFIG_KEYPAD SANSA_CLIP_PAD
77 77
78/* define this if the target has volume keys which can be used in the lists */
79#define HAVE_VOLUME_IN_LIST
80
78/* Define this if you do software codec */ 81/* Define this if you do software codec */
79#define CONFIG_CODEC SWCODEC 82#define CONFIG_CODEC SWCODEC
80/* There is no hardware tone control */ 83/* There is no hardware tone control */
diff --git a/firmware/target/coldfire/iriver/system-iriver.c b/firmware/target/coldfire/iriver/system-iriver.c
index 1916eec0cd..aa24f6ecc9 100644
--- a/firmware/target/coldfire/iriver/system-iriver.c
+++ b/firmware/target/coldfire/iriver/system-iriver.c
@@ -50,22 +50,15 @@
50 */ 50 */
51 51
52#if MEM < 32 52#if MEM < 32
53#define MAX_REFRESH_TIMER 59 53#define MAX_REFRESH_TIMER 54
54#define NORMAL_REFRESH_TIMER 21 54#define NORMAL_REFRESH_TIMER 10
55#define DEFAULT_REFRESH_TIMER 4 55#define DEFAULT_REFRESH_TIMER 4
56#else 56#else
57#define MAX_REFRESH_TIMER 29 57#define MAX_REFRESH_TIMER 26
58#define NORMAL_REFRESH_TIMER 10 58#define NORMAL_REFRESH_TIMER 4
59#define DEFAULT_REFRESH_TIMER 1 59#define DEFAULT_REFRESH_TIMER 1
60#endif 60#endif
61 61
62#ifdef IRIVER_H300_SERIES
63#define RECALC_DELAYS(f) \
64 pcf50606_i2c_recalc_delay(f)
65#else
66#define RECALC_DELAYS(f)
67#endif
68
69#ifdef HAVE_SERIAL 62#ifdef HAVE_SERIAL
70#define BAUD_RATE 57600 63#define BAUD_RATE 57600
71#define BAUDRATE_DIV_DEFAULT (CPUFREQ_DEFAULT/(BAUD_RATE*32*2)) 64#define BAUDRATE_DIV_DEFAULT (CPUFREQ_DEFAULT/(BAUD_RATE*32*2))
@@ -73,6 +66,21 @@
73#define BAUDRATE_DIV_MAX (CPUFREQ_MAX/(BAUD_RATE*32*2)) 66#define BAUDRATE_DIV_MAX (CPUFREQ_MAX/(BAUD_RATE*32*2))
74#endif 67#endif
75 68
69static bool pll_initialized = false;
70
71static void init_pll(void)
72{
73 /* Refresh timer for bypass frequency */
74 PLLCR &= ~1; /* Bypass mode */
75 PLLCR = 0x0189e025 | (PLLCR & 0x70400000); /* set 112 MHz */
76
77 /* Wait until the PLL has locked. This may take up to 10ms! */
78 while(!(PLLCR & 0x80000000)) {};
79
80 pll_initialized = true;
81}
82
83
76#ifdef HAVE_ADJUSTABLE_CPU_FREQ 84#ifdef HAVE_ADJUSTABLE_CPU_FREQ
77void set_cpu_frequency (long) __attribute__ ((section (".icode"))); 85void set_cpu_frequency (long) __attribute__ ((section (".icode")));
78void set_cpu_frequency(long frequency) 86void set_cpu_frequency(long frequency)
@@ -81,84 +89,78 @@ void cf_set_cpu_frequency (long) __attribute__ ((section (".icode")));
81void cf_set_cpu_frequency(long frequency) 89void cf_set_cpu_frequency(long frequency)
82#endif 90#endif
83{ 91{
92 if (!pll_initialized)
93 init_pll();
94
84 switch(frequency) 95 switch(frequency)
85 { 96 {
86 case CPUFREQ_MAX: 97 case CPUFREQ_MAX:
87 DCR = (0x8200 | DEFAULT_REFRESH_TIMER); 98 CSCR0 = 0x00001180; /* Flash: 4 wait states */
88 /* Refresh timer for bypass frequency */ 99 CSCR1 = 0x00001580; /* LCD: 5 wait states */
89 PLLCR &= ~1; /* Bypass mode */
90 timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
91 RECALC_DELAYS(CPUFREQ_MAX);
92 PLLCR = 0x018ae025 | (PLLCR & 0x70400000);
93 CSCR0 = 0x00001180; /* Flash: 4 wait states */
94 CSCR1 = 0x00001580; /* LCD: 5 wait states */
95#if CONFIG_USBOTG == USBOTG_ISP1362 100#if CONFIG_USBOTG == USBOTG_ISP1362
96 CSCR3 = 0x00002180; /* USBOTG: 8 wait states */ 101 CSCR3 = 0x00002180; /* USBOTG: 8 wait states */
97#endif 102#endif
98 while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked. 103#if CONFIG_RTC == RTC_PCF50606
99 This may take up to 10ms! */ 104 pcf50606_i2c_recalc_delay(CPUFREQ_MAX);
100 timers_adjust_prescale(CPUFREQ_MAX_MULT, true);
101 DCR = (0x8200 | MAX_REFRESH_TIMER); /* Refresh timer */
102 cpu_frequency = CPUFREQ_MAX;
103 IDECONFIG1 = 0x10100000 | (1 << 13) | (3 << 10);
104 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */
105 IDECONFIG2 = 0x40000 | (1 << 8); /* TA enable + CS2wait */
106
107#ifdef HAVE_SERIAL
108 UBG10 = BAUDRATE_DIV_MAX >> 8;
109 UBG20 = BAUDRATE_DIV_MAX & 0xff;
110#endif 105#endif
111 break; 106 timers_adjust_prescale(CPUFREQ_MAX_MULT, true);
112 107 DCR = (0x8200 | MAX_REFRESH_TIMER); /* Refresh timer */
113 case CPUFREQ_NORMAL: 108 IDECONFIG1 = 0x10100000 | (1 << 13) | (3 << 10);
114 DCR = (DCR & ~0x01ff) | DEFAULT_REFRESH_TIMER; 109 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */
115 /* Refresh timer for bypass frequency */ 110 IDECONFIG2 = 0x40000 | (1 << 8); /* TA enable 2 + CS2wait */
116 PLLCR &= ~1; /* Bypass mode */ 111
117 timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false); 112 PLLCR = (PLLCR & ~0x07000000) | (1 << 24); /* set CPUDIV */
118 RECALC_DELAYS(CPUFREQ_NORMAL); 113 DCR = (0x8200 | MAX_REFRESH_TIMER); /* DRAM refresh timer */
119 PLLCR = 0x0589e021 | (PLLCR & 0x70400000); 114 cpu_frequency = CPUFREQ_MAX;
120 CSCR0 = 0x00000580; /* Flash: 1 wait state */ 115 break;
121 CSCR1 = 0x00000180; /* LCD: 0 wait states */ 116
117 case CPUFREQ_NORMAL:
118 PLLCR = (PLLCR & ~0x07000000) | (5 << 24); /* set CPUDIV */
119 DCR = (0x8000 | NORMAL_REFRESH_TIMER); /* DRAM refresh timer */
120 cpu_frequency = CPUFREQ_MAX;
121
122 CSCR0 = 0x00000580; /* Flash: 1 wait state */
123 CSCR1 = 0x00000180; /* LCD: 0 wait states */
122#if CONFIG_USBOTG == USBOTG_ISP1362 124#if CONFIG_USBOTG == USBOTG_ISP1362
123 CSCR3 = 0x00000580; /* USBOTG: 1 wait state */ 125 CSCR3 = 0x00000580; /* USBOTG: 1 wait state */
124#endif 126#endif
125 while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked. 127#if CONFIG_RTC == RTC_PCF50606
126 This may take up to 10ms! */ 128 pcf50606_i2c_recalc_delay(CPUFREQ_NORMAL);
127 timers_adjust_prescale(CPUFREQ_NORMAL_MULT, true); 129#endif
128 DCR = (0x8000 | NORMAL_REFRESH_TIMER); /* Refresh timer */ 130 timers_adjust_prescale(CPUFREQ_NORMAL_MULT, true);
129 cpu_frequency = CPUFREQ_NORMAL;
130 IDECONFIG1 = 0x10100000 | (1 << 13) | (1 << 10);
131 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */
132 IDECONFIG2 = 0x40000 | (0 << 8); /* TA enable + CS2wait */
133 131
134#ifdef HAVE_SERIAL 132 IDECONFIG1 = 0x10100000 | (1 << 13) | (1 << 10);
135 UBG10 = BAUDRATE_DIV_NORMAL >> 8; 133 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */
136 UBG20 = BAUDRATE_DIV_NORMAL & 0xff; 134 IDECONFIG2 = 0x40000; /* TA enable 2 */
135 break;
136
137 default:
138 DCR = (DCR & ~0x01ff) | DEFAULT_REFRESH_TIMER;
139 /* Refresh timer for bypass frequency */
140 PLLCR &= ~1; /* Bypass mode */
141 timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, true);
142#if CONFIG_RTC == RTC_PCF50606
143 pcf50606_i2c_recalc_delay(CPUFREQ_DEFAULT_MULT);
137#endif 144#endif
138 break; 145 /* Power down PLL, but keep CRSEL and CLSEL */
139 default: 146 PLLCR = 0x00800200 | (PLLCR & 0x70400000);
140 DCR = (DCR & ~0x01ff) | DEFAULT_REFRESH_TIMER; 147 CSCR0 = 0x00000180; /* Flash: 0 wait states */
141 /* Refresh timer for bypass frequency */ 148 CSCR1 = 0x00000180; /* LCD: 0 wait states */
142 PLLCR &= ~1; /* Bypass mode */
143 timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, true);
144 RECALC_DELAYS(CPUFREQ_DEFAULT);
145 /* Power down PLL, but keep CRSEL and CLSEL */
146 PLLCR = 0x00800200 | (PLLCR & 0x70400000);
147 CSCR0 = 0x00000180; /* Flash: 0 wait states */
148 CSCR1 = 0x00000180; /* LCD: 0 wait states */
149#if CONFIG_USBOTG == USBOTG_ISP1362 149#if CONFIG_USBOTG == USBOTG_ISP1362
150 CSCR3 = 0x00000180; /* USBOTG: 0 wait states */ 150 CSCR3 = 0x00000180; /* USBOTG: 0 wait states */
151#endif 151#endif
152 DCR = (0x8000 | DEFAULT_REFRESH_TIMER); /* Refresh timer */ 152 DCR = (0x8000 | DEFAULT_REFRESH_TIMER); /* Refresh timer */
153 cpu_frequency = CPUFREQ_DEFAULT; 153 cpu_frequency = CPUFREQ_DEFAULT;
154 IDECONFIG1 = 0x10100000 | (1 << 13) | (1 << 10); 154 IDECONFIG1 = 0x10100000 | (1 << 13) | (1 << 10);
155 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */ 155 /* SRE active on write (H300 USBOTG) | BUFEN2 enable | CS2Post | CS2Pre */
156 IDECONFIG2 = 0x40000 | (0 << 8); /* TA enable + CS2wait */ 156 IDECONFIG2 = 0x40000; /* TA enable 2 */
157
158 pll_initialized = false;
159 break;
160 }
157 161
158#ifdef HAVE_SERIAL 162#ifdef HAVE_SERIAL
159 UBG10 = BAUDRATE_DIV_DEFAULT >> 8; 163 UBG10 = BAUDRATE_DIV_NORMAL >> 8;
160 UBG20 = BAUDRATE_DIV_DEFAULT & 0xff; 164 UBG20 = BAUDRATE_DIV_NORMAL & 0xff;
161#endif 165#endif
162 break;
163 }
164} 166}
diff --git a/firmware/target/coldfire/system-target.h b/firmware/target/coldfire/system-target.h
index 84ec6ed4b0..892cbe89cf 100644
--- a/firmware/target/coldfire/system-target.h
+++ b/firmware/target/coldfire/system-target.h
@@ -215,11 +215,11 @@ extern void cf_set_cpu_frequency(long frequency);
215/* 11.2896 MHz */ 215/* 11.2896 MHz */
216#define CPUFREQ_DEFAULT_MULT 1 216#define CPUFREQ_DEFAULT_MULT 1
217#define CPUFREQ_DEFAULT (CPUFREQ_DEFAULT_MULT * CPU_FREQ) 217#define CPUFREQ_DEFAULT (CPUFREQ_DEFAULT_MULT * CPU_FREQ)
218/* 45.1584 MHz */ 218/* 22.5792 MHz */
219#define CPUFREQ_NORMAL_MULT 4 219#define CPUFREQ_NORMAL_MULT 2
220#define CPUFREQ_NORMAL (CPUFREQ_NORMAL_MULT * CPU_FREQ) 220#define CPUFREQ_NORMAL (CPUFREQ_NORMAL_MULT * CPU_FREQ)
221/* 124.1856 MHz */ 221/* 112.896 MHz */
222#define CPUFREQ_MAX_MULT 11 222#define CPUFREQ_MAX_MULT 10
223#define CPUFREQ_MAX (CPUFREQ_MAX_MULT * CPU_FREQ) 223#define CPUFREQ_MAX (CPUFREQ_MAX_MULT * CPU_FREQ)
224 224
225#endif /* SYSTEM_TARGET_H */ 225#endif /* SYSTEM_TARGET_H */