summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2014-02-10 22:28:46 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2014-02-10 23:14:26 +0100
commit935c0ad14a6f7840c12c3c7fd706e8166cd73f6a (patch)
tree80c764ee7e8759d8c7dabf8e95d636fc49769a4c
parent34fb6906dd645688870ff137a3d94cb58abca120 (diff)
downloadrockbox-935c0ad14a6f7840c12c3c7fd706e8166cd73f6a.tar.gz
rockbox-935c0ad14a6f7840c12c3c7fd706e8166cd73f6a.zip
imx233: stop the watchdog before loading main firmware
Change-Id: I0a13444d6788a09b0fc04ed1a5115cb2e5fe6f57
-rw-r--r--bootloader/imx233.c2
-rw-r--r--firmware/target/arm/imx233/system-imx233.c7
-rw-r--r--firmware/target/arm/imx233/system-target.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/bootloader/imx233.c b/bootloader/imx233.c
index d115389985..6dc503bb16 100644
--- a/bootloader/imx233.c
+++ b/bootloader/imx233.c
@@ -209,6 +209,8 @@ void main(uint32_t arg, uint32_t addr)
209 209
210 kernel_entry = (void*) loadbuffer; 210 kernel_entry = (void*) loadbuffer;
211 printf("Executing"); 211 printf("Executing");
212 /* stop what was initialized to start from clean state */
213 system_prepare_fw_start();
212 disable_interrupt(IRQ_FIQ_STATUS); 214 disable_interrupt(IRQ_FIQ_STATUS);
213 commit_discard_idcache(); 215 commit_discard_idcache();
214 kernel_entry(); 216 kernel_entry();
diff --git a/firmware/target/arm/imx233/system-imx233.c b/firmware/target/arm/imx233/system-imx233.c
index 5298f7cff9..d5ed7fc774 100644
--- a/firmware/target/arm/imx233/system-imx233.c
+++ b/firmware/target/arm/imx233/system-imx233.c
@@ -197,6 +197,13 @@ void system_init(void)
197#endif 197#endif
198} 198}
199 199
200void system_prepare_fw_start(void)
201{
202 /* keep alive to get enough time, stop watchdog */
203 imx233_keep_alive();
204 imx233_rtc_enable_watchdog(false);
205}
206
200bool imx233_us_elapsed(uint32_t ref, unsigned us_delay) 207bool imx233_us_elapsed(uint32_t ref, unsigned us_delay)
201{ 208{
202 uint32_t cur = HW_DIGCTL_MICROSECONDS; 209 uint32_t cur = HW_DIGCTL_MICROSECONDS;
diff --git a/firmware/target/arm/imx233/system-target.h b/firmware/target/arm/imx233/system-target.h
index 6272cf7a85..e77b5dc1b8 100644
--- a/firmware/target/arm/imx233/system-target.h
+++ b/firmware/target/arm/imx233/system-target.h
@@ -47,6 +47,7 @@
47#define CPUFREQ_MAX IMX233_CPUFREQ_454_MHz 47#define CPUFREQ_MAX IMX233_CPUFREQ_454_MHz
48#define CPUFREQ_SLEEP IMX233_CPUFREQ_64_MHz 48#define CPUFREQ_SLEEP IMX233_CPUFREQ_64_MHz
49 49
50void system_prepare_fw_start(void);
50void udelay(unsigned us); 51void udelay(unsigned us);
51bool imx233_us_elapsed(uint32_t ref, unsigned us_delay); 52bool imx233_us_elapsed(uint32_t ref, unsigned us_delay);
52void imx233_reset_block(volatile uint32_t *block_reg); 53void imx233_reset_block(volatile uint32_t *block_reg);