diff options
author | Paul Mundt <lethal@linux-sh.org> | 2012-05-18 10:20:09 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2012-05-18 10:20:09 -0400 |
commit | 051f923d922d105f4d32e64cba1ed6f5a749d530 (patch) | |
tree | 7b7792362fe6c823b438bb8161cbefb5535801d5 /arch/sh/cchips/hd6446x | |
parent | d0e05bb3d611c7c3d37cadd8c1016ee2e22beefa (diff) |
sh: hd64461: Migrate off of deprecated dynamic IRQ API.
Switches from create_irq_nr() to irq_alloc_descs().
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/cchips/hd6446x')
-rw-r--r-- | arch/sh/cchips/hd6446x/hd64461.c | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/arch/sh/cchips/hd6446x/hd64461.c b/arch/sh/cchips/hd6446x/hd64461.c index eb4ea4d44d59..e9735616bdc8 100644 --- a/arch/sh/cchips/hd6446x/hd64461.c +++ b/arch/sh/cchips/hd6446x/hd64461.c | |||
@@ -73,10 +73,7 @@ static void hd64461_irq_demux(unsigned int irq, struct irq_desc *desc) | |||
73 | 73 | ||
74 | int __init setup_hd64461(void) | 74 | int __init setup_hd64461(void) |
75 | { | 75 | { |
76 | int i, nid = cpu_to_node(boot_cpu_data); | 76 | int irq_base, i; |
77 | |||
78 | if (!MACH_HD64461) | ||
79 | return 0; | ||
80 | 77 | ||
81 | printk(KERN_INFO | 78 | printk(KERN_INFO |
82 | "HD64461 configured at 0x%x on irq %d(mapped into %d to %d)\n", | 79 | "HD64461 configured at 0x%x on irq %d(mapped into %d to %d)\n", |
@@ -89,28 +86,16 @@ int __init setup_hd64461(void) | |||
89 | #endif | 86 | #endif |
90 | __raw_writew(0xffff, HD64461_NIMR); | 87 | __raw_writew(0xffff, HD64461_NIMR); |
91 | 88 | ||
92 | /* IRQ 80 -> 95 belongs to HD64461 */ | 89 | irq_base = irq_alloc_descs(HD64461_IRQBASE, HD64461_IRQBASE, 16, -1); |
93 | for (i = HD64461_IRQBASE; i < HD64461_IRQBASE + 16; i++) { | 90 | if (IS_ERR_VALUE(irq_base)) { |
94 | unsigned int irq; | 91 | pr_err("%s: failed hooking irqs for HD64461\n", __func__); |
95 | 92 | return irq_base; | |
96 | irq = create_irq_nr(i, nid); | ||
97 | if (unlikely(irq == 0)) { | ||
98 | pr_err("%s: failed hooking irq %d for HD64461\n", | ||
99 | __func__, i); | ||
100 | return -EBUSY; | ||
101 | } | ||
102 | |||
103 | if (unlikely(irq != i)) { | ||
104 | pr_err("%s: got irq %d but wanted %d, bailing.\n", | ||
105 | __func__, irq, i); | ||
106 | destroy_irq(irq); | ||
107 | return -EINVAL; | ||
108 | } | ||
109 | |||
110 | irq_set_chip_and_handler(i, &hd64461_irq_chip, | ||
111 | handle_level_irq); | ||
112 | } | 93 | } |
113 | 94 | ||
95 | for (i = 0; i < 16; i++) | ||
96 | irq_set_chip_and_handler(irq_base + i, &hd64461_irq_chip, | ||
97 | handle_level_irq); | ||
98 | |||
114 | irq_set_chained_handler(CONFIG_HD64461_IRQ, hd64461_irq_demux); | 99 | irq_set_chained_handler(CONFIG_HD64461_IRQ, hd64461_irq_demux); |
115 | irq_set_irq_type(CONFIG_HD64461_IRQ, IRQ_TYPE_LEVEL_LOW); | 100 | irq_set_irq_type(CONFIG_HD64461_IRQ, IRQ_TYPE_LEVEL_LOW); |
116 | 101 | ||