1 #include <linux/types.h>
2 #include <linux/kernel.h>
3 #include <linux/jiffies.h>
4 #include <linux/kernel_stat.h>
5 #include <linux/timer.h>
7 #include <asm/system.h>
11 #include <asm/machdep.h>
12 #include <asm/apollohw.h>
13 #include <asm/errno.h>
15 static irq_handler_t dn_irqs
[16];
17 irqreturn_t
dn_process_int(int irq
, struct pt_regs
*fp
)
19 irqreturn_t res
= IRQ_NONE
;
21 if(dn_irqs
[irq
-160].handler
) {
22 res
= dn_irqs
[irq
-160].handler(irq
,dn_irqs
[irq
-160].dev_id
,fp
);
24 printk("spurious irq %d occurred\n",irq
);
27 *(volatile unsigned char *)(pica
)=0x20;
28 *(volatile unsigned char *)(picb
)=0x20;
33 void dn_init_IRQ(void) {
38 dn_irqs
[i
].handler
=NULL
;
39 dn_irqs
[i
].flags
=IRQ_FLG_STD
;
40 dn_irqs
[i
].dev_id
=NULL
;
41 dn_irqs
[i
].devname
=NULL
;
46 int dn_request_irq(unsigned int irq
, irqreturn_t (*handler
)(int, void *, struct pt_regs
*), unsigned long flags
, const char *devname
, void *dev_id
) {
48 if((irq
<0) || (irq
>15)) {
49 printk("Trying to request invalid IRQ\n");
53 if(!dn_irqs
[irq
].handler
) {
54 dn_irqs
[irq
].handler
=handler
;
55 dn_irqs
[irq
].flags
=IRQ_FLG_STD
;
56 dn_irqs
[irq
].dev_id
=dev_id
;
57 dn_irqs
[irq
].devname
=devname
;
59 *(volatile unsigned char *)(pica
+1)&=~(1<<irq
);
61 *(volatile unsigned char *)(picb
+1)&=~(1<<(irq
-8));
66 printk("Trying to request already assigned irq %d\n",irq
);
72 void dn_free_irq(unsigned int irq
, void *dev_id
) {
74 if((irq
<0) || (irq
>15)) {
75 printk("Trying to free invalid IRQ\n");
80 *(volatile unsigned char *)(pica
+1)|=(1<<irq
);
82 *(volatile unsigned char *)(picb
+1)|=(1<<(irq
-8));
84 dn_irqs
[irq
].handler
=NULL
;
85 dn_irqs
[irq
].flags
=IRQ_FLG_STD
;
86 dn_irqs
[irq
].dev_id
=NULL
;
87 dn_irqs
[irq
].devname
=NULL
;
93 void dn_enable_irq(unsigned int irq
) {
95 printk("dn enable irq\n");
99 void dn_disable_irq(unsigned int irq
) {
101 printk("dn disable irq\n");
105 int show_dn_interrupts(struct seq_file
*p
, void *v
) {
107 printk("dn get irq list\n");
113 struct fb_info
*dn_dummy_fb_init(long *mem_start
) {
121 void dn_dummy_video_setup(char *options
,int *ints
) {
123 printk("no video yet\n");