| Thomas Gleixner | 3795de2 | 2010-09-22 17:09:43 +0200 | [diff] [blame] | 1 | /* | 
|  | 2 | * Copyright (C) 1992, 1998-2006 Linus Torvalds, Ingo Molnar | 
|  | 3 | * Copyright (C) 2005-2006, Thomas Gleixner, Russell King | 
|  | 4 | * | 
|  | 5 | * This file contains the dummy interrupt chip implementation | 
|  | 6 | */ | 
|  | 7 | #include <linux/interrupt.h> | 
|  | 8 | #include <linux/irq.h> | 
|  | 9 |  | 
|  | 10 | #include "internals.h" | 
|  | 11 |  | 
|  | 12 | /* | 
|  | 13 | * What should we do if we get a hw irq event on an illegal vector? | 
|  | 14 | * Each architecture has to answer this themself. | 
|  | 15 | */ | 
|  | 16 | static void ack_bad(struct irq_data *data) | 
|  | 17 | { | 
|  | 18 | struct irq_desc *desc = irq_data_to_desc(data); | 
|  | 19 |  | 
|  | 20 | print_irq_desc(data->irq, desc); | 
|  | 21 | ack_bad_irq(data->irq); | 
|  | 22 | } | 
|  | 23 |  | 
|  | 24 | /* | 
|  | 25 | * NOP functions | 
|  | 26 | */ | 
|  | 27 | static void noop(struct irq_data *data) { } | 
|  | 28 |  | 
|  | 29 | static unsigned int noop_ret(struct irq_data *data) | 
|  | 30 | { | 
|  | 31 | return 0; | 
|  | 32 | } | 
|  | 33 |  | 
| Thomas Gleixner | c0a19eb | 2010-10-12 21:58:27 +0200 | [diff] [blame] | 34 | #ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED | 
| Thomas Gleixner | 3795de2 | 2010-09-22 17:09:43 +0200 | [diff] [blame] | 35 | static void compat_noop(unsigned int irq) { } | 
|  | 36 | #define END_INIT .end = compat_noop | 
|  | 37 | #else | 
|  | 38 | #define END_INIT | 
|  | 39 | #endif | 
|  | 40 |  | 
|  | 41 | /* | 
|  | 42 | * Generic no controller implementation | 
|  | 43 | */ | 
|  | 44 | struct irq_chip no_irq_chip = { | 
|  | 45 | .name		= "none", | 
|  | 46 | .irq_startup	= noop_ret, | 
|  | 47 | .irq_shutdown	= noop, | 
|  | 48 | .irq_enable	= noop, | 
|  | 49 | .irq_disable	= noop, | 
|  | 50 | .irq_ack	= ack_bad, | 
|  | 51 | END_INIT | 
|  | 52 | }; | 
|  | 53 |  | 
|  | 54 | /* | 
|  | 55 | * Generic dummy implementation which can be used for | 
|  | 56 | * real dumb interrupt sources | 
|  | 57 | */ | 
|  | 58 | struct irq_chip dummy_irq_chip = { | 
|  | 59 | .name		= "dummy", | 
|  | 60 | .irq_startup	= noop_ret, | 
|  | 61 | .irq_shutdown	= noop, | 
|  | 62 | .irq_enable	= noop, | 
|  | 63 | .irq_disable	= noop, | 
|  | 64 | .irq_ack	= noop, | 
|  | 65 | .irq_mask	= noop, | 
|  | 66 | .irq_unmask	= noop, | 
|  | 67 | END_INIT | 
|  | 68 | }; |