]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/arm/bsp/imx/reset-arm-imx.cpp
update
[l4.git] / kernel / fiasco / src / kern / arm / bsp / imx / reset-arm-imx.cpp
1 IMPLEMENTATION [arm && imx21]:
2
3 #include "io.h"
4 #include "kmem.h"
5
6 void __attribute__ ((noreturn))
7 pc_reset(void)
8 {
9   enum {
10     WCR  = Kmem::Watchdog_map_base + 0,
11     WCR_SRS = 1 << 4, // Software Reset Signal
12
13     PLL_PCCR1        = Kmem::Pll_map_base + 0x24,
14     PLL_PCCR1_WDT_EN = 1 << 24,
15   };
16
17   // WDT CLock Enable
18   Io::write<Unsigned32>(Io::read<Unsigned32>(PLL_PCCR1) | PLL_PCCR1_WDT_EN, PLL_PCCR1);
19
20   // Assert Software reset signal by making the bit zero
21   Io::write<Unsigned16>(Io::read<Unsigned16>(WCR) & ~WCR_SRS, WCR);
22
23   for (;;)
24     ;
25 }
26
27 // ------------------------------------------------------------------------
28 IMPLEMENTATION [arm && (imx35 || imx51)]:
29
30 #include "io.h"
31 #include "kmem.h"
32
33 void __attribute__ ((noreturn))
34 pc_reset(void)
35 {
36   enum {
37     WCR  = Kmem::Watchdog_map_base + 0,
38     WCR_SRS = 1 << 4, // Software Reset Signal
39   };
40
41   // Assert Software reset signal by making the bit zero
42   Io::write<Unsigned16>(Io::read<Unsigned16>(WCR) & ~WCR_SRS, WCR);
43
44   for (;;)
45     ;
46 }