1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#include <common.h>
31#include <watchdog.h>
32#include <command.h>
33#include <asm/processor.h>
34#include <asm/io.h>
35#ifdef CONFIG_POST
36#include <post.h>
37#endif
38
39int interrupt_init_cpu(unsigned int *decrementer_count)
40{
41 ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR;
42
43#ifdef CONFIG_POST
44
45
46
47
48
49 ulong post_word = post_word_load();
50#endif
51
52 out_be32(&pic->gcr, MPC85xx_PICGCR_RST);
53 while (in_be32(&pic->gcr) & MPC85xx_PICGCR_RST)
54 ;
55 out_be32(&pic->gcr, MPC85xx_PICGCR_M);
56 in_be32(&pic->gcr);
57
58 *decrementer_count = get_tbclk() / CONFIG_SYS_HZ;
59
60
61 mtspr(SPRN_TCR, TCR_PIE);
62
63#ifdef CONFIG_INTERRUPTS
64 pic->iivpr1 = 0x810001;
65 debug("iivpr1@%x = %x\n", (uint)&pic->iivpr1, pic->iivpr1);
66
67 pic->iivpr2 = 0x810002;
68 debug("iivpr2@%x = %x\n", (uint)&pic->iivpr2, pic->iivpr2);
69
70 pic->iivpr3 = 0x810003;
71 debug("iivpr3@%x = %x\n", (uint)&pic->iivpr3, pic->iivpr3);
72
73#ifdef CONFIG_PCI1
74 pic->iivpr8 = 0x810008;
75 debug("iivpr8@%x = %x\n", (uint)&pic->iivpr8, pic->iivpr8);
76#endif
77#if defined(CONFIG_PCI2) || defined(CONFIG_PCIE2)
78 pic->iivpr9 = 0x810009;
79 debug("iivpr9@%x = %x\n", (uint)&pic->iivpr9, pic->iivpr9);
80#endif
81#ifdef CONFIG_PCIE1
82 pic->iivpr10 = 0x81000a;
83 debug("iivpr10@%x = %x\n", (uint)&pic->iivpr10, pic->iivpr10);
84#endif
85#ifdef CONFIG_PCIE3
86 pic->iivpr11 = 0x81000b;
87 debug("iivpr11@%x = %x\n", (uint)&pic->iivpr11, pic->iivpr11);
88#endif
89
90 pic->ctpr=0;
91#endif
92
93#ifdef CONFIG_POST
94 post_word_store(post_word);
95#endif
96
97 return (0);
98}
99
100
101
102void
103irq_install_handler(int vec, interrupt_handler_t *handler, void *arg)
104{
105 return;
106}
107
108void
109irq_free_handler(int vec)
110{
111 return;
112}
113
114void timer_interrupt_cpu(struct pt_regs *regs)
115{
116
117 mtspr(SPRN_TSR, TSR_PIS);
118}
119
120#if defined(CONFIG_CMD_IRQ)
121
122int do_irqinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
123{
124 return 0;
125}
126#endif
127