]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-gic-omap4.cpp
update
[l4.git] / kernel / fiasco / src / kern / arm / bsp / omap3 / pic-arm-gic-omap4.cpp
1 INTERFACE [arm && pic_gic && omap4]:
2
3 #include "gic.h"
4
5 EXTENSION class Pic
6 {
7 public:
8   enum
9   {
10     Multi_irq_pending = 0,
11     No_irq_pending = 1023,
12   };
13 };
14
15 //-------------------------------------------------------------------
16 IMPLEMENTATION [arm && pic_gic && omap4]:
17
18 #include "config.h"
19 #include "initcalls.h"
20 #include "irq_chip.h"
21 #include "irq_chip_generic.h"
22 #include "kmem.h"
23
24 Gic Gic_pin::_gic[1];
25
26 class Irq_chip_omap4 : public Irq_chip_gen
27 {
28 };
29
30 PUBLIC
31 void
32 Irq_chip_omap4::setup(Irq_base *irq, unsigned irqnum)
33 {
34   irq->pin()->replace<Gic_pin>(0, irqnum);
35 }
36
37 IMPLEMENT FIASCO_INIT
38 void
39 Pic::init()
40 {
41   static Irq_chip_omap4 _ia;
42   Irq_chip::hw_chip = &_ia;
43
44   Gic_pin::_gic[0].init(Kmem::Gic_cpu_map_base, Kmem::Gic_dist_map_base);
45 }
46
47 IMPLEMENT inline
48 Pic::Status Pic::disable_all_save()
49 { return 0; }
50
51 IMPLEMENT inline
52 void Pic::restore_all(Status)
53 {}
54
55 PUBLIC static inline
56 Unsigned32 Pic::pending()
57 {
58   return Gic_pin::_gic[0].pending();
59 }
60
61 PUBLIC static inline
62 Mword Pic::is_pending(Mword &irqs, Mword irq)
63 { return irqs == irq; }
64
65 //-------------------------------------------------------------------
66 IMPLEMENTATION [arm && mp && pic_gic && omap4]:
67
68 PUBLIC static
69 void Pic::init_ap()
70 {
71   Gic_pin::_gic[0].init_ap();
72 }