diff options
| -rw-r--r-- | arch/avr32/mach-at32ap/intc.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/arch/avr32/mach-at32ap/intc.c b/arch/avr32/mach-at32ap/intc.c index 097cf4e84052..644a3fb8c164 100644 --- a/arch/avr32/mach-at32ap/intc.c +++ b/arch/avr32/mach-at32ap/intc.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (C) 2006 Atmel Corporation | 2 | * Copyright (C) 2006, 2008 Atmel Corporation |
| 3 | * | 3 | * |
| 4 | * This program is free software; you can redistribute it and/or modify | 4 | * This program is free software; you can redistribute it and/or modify |
| 5 | * it under the terms of the GNU General Public License version 2 as | 5 | * it under the terms of the GNU General Public License version 2 as |
| @@ -12,14 +12,16 @@ | |||
| 12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
| 13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
| 14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
| 15 | #include <linux/sysdev.h> | ||
| 15 | 16 | ||
| 16 | #include <asm/io.h> | 17 | #include <asm/io.h> |
| 17 | 18 | ||
| 18 | #include "intc.h" | 19 | #include "intc.h" |
| 19 | 20 | ||
| 20 | struct intc { | 21 | struct intc { |
| 21 | void __iomem *regs; | 22 | void __iomem *regs; |
| 22 | struct irq_chip chip; | 23 | struct irq_chip chip; |
| 24 | struct sys_device sysdev; | ||
| 23 | }; | 25 | }; |
| 24 | 26 | ||
| 25 | extern struct platform_device at32_intc0_device; | 27 | extern struct platform_device at32_intc0_device; |
| @@ -136,6 +138,26 @@ fail: | |||
| 136 | panic("Interrupt controller initialization failed!\n"); | 138 | panic("Interrupt controller initialization failed!\n"); |
| 137 | } | 139 | } |
| 138 | 140 | ||
| 141 | static struct sysdev_class intc_class = { | ||
| 142 | .name = "intc", | ||
| 143 | }; | ||
| 144 | |||
| 145 | static int __init intc_init_sysdev(void) | ||
| 146 | { | ||
| 147 | int ret; | ||
| 148 | |||
| 149 | ret = sysdev_class_register(&intc_class); | ||
| 150 | if (ret) | ||
| 151 | return ret; | ||
| 152 | |||
| 153 | intc0.sysdev.id = 0; | ||
| 154 | intc0.sysdev.cls = &intc_class; | ||
| 155 | ret = sysdev_register(&intc0.sysdev); | ||
| 156 | |||
| 157 | return ret; | ||
| 158 | } | ||
| 159 | device_initcall(intc_init_sysdev); | ||
| 160 | |||
| 139 | unsigned long intc_get_pending(unsigned int group) | 161 | unsigned long intc_get_pending(unsigned int group) |
| 140 | { | 162 | { |
| 141 | return intc_readl(&intc0, INTREQ0 + 4 * group); | 163 | return intc_readl(&intc0, INTREQ0 + 4 * group); |
