Commit 6cff46f4 authored by Michael Ellerman's avatar Michael Ellerman Committed by Benjamin Herrenschmidt

powerpc: Remove get_irq_desc()

get_irq_desc() is a powerpc-specific version of irq_to_desc(). That
is reason enough to remove it, but it also doesn't know about sparse
irq_desc support which irq_to_desc() does (when we enable it).
Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Acked-by: default avatarGrant Likely <grant.likely@secretlab.ca>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 59e3f837
...@@ -17,8 +17,6 @@ ...@@ -17,8 +17,6 @@
#include <asm/atomic.h> #include <asm/atomic.h>
#define get_irq_desc(irq) (&irq_desc[(irq)])
/* Define a way to iterate across irqs. */ /* Define a way to iterate across irqs. */
#define for_each_irq(i) \ #define for_each_irq(i) \
for ((i) = 0; (i) < NR_IRQS; ++(i)) for ((i) = 0; (i) < NR_IRQS; ++(i))
......
...@@ -373,7 +373,7 @@ void default_machine_crash_shutdown(struct pt_regs *regs) ...@@ -373,7 +373,7 @@ void default_machine_crash_shutdown(struct pt_regs *regs)
hard_irq_disable(); hard_irq_disable();
for_each_irq(i) { for_each_irq(i) {
struct irq_desc *desc = irq_desc + i; struct irq_desc *desc = irq_to_desc(i);
if (desc->status & IRQ_INPROGRESS) if (desc->status & IRQ_INPROGRESS)
desc->chip->eoi(i); desc->chip->eoi(i);
......
...@@ -190,7 +190,7 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -190,7 +190,7 @@ int show_interrupts(struct seq_file *p, void *v)
} }
if (i < NR_IRQS) { if (i < NR_IRQS) {
desc = get_irq_desc(i); desc = irq_to_desc(i);
spin_lock_irqsave(&desc->lock, flags); spin_lock_irqsave(&desc->lock, flags);
action = desc->action; action = desc->action;
if (!action || !action->handler) if (!action || !action->handler)
...@@ -230,23 +230,25 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -230,23 +230,25 @@ int show_interrupts(struct seq_file *p, void *v)
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
void fixup_irqs(cpumask_t map) void fixup_irqs(cpumask_t map)
{ {
struct irq_desc *desc;
unsigned int irq; unsigned int irq;
static int warned; static int warned;
for_each_irq(irq) { for_each_irq(irq) {
cpumask_t mask; cpumask_t mask;
if (irq_desc[irq].status & IRQ_PER_CPU) desc = irq_to_desc(irq);
if (desc && desc->status & IRQ_PER_CPU)
continue; continue;
cpumask_and(&mask, irq_desc[irq].affinity, &map); cpumask_and(&mask, desc->affinity, &map);
if (any_online_cpu(mask) == NR_CPUS) { if (any_online_cpu(mask) == NR_CPUS) {
printk("Breaking affinity for irq %i\n", irq); printk("Breaking affinity for irq %i\n", irq);
mask = map; mask = map;
} }
if (irq_desc[irq].chip->set_affinity) if (desc->chip->set_affinity)
irq_desc[irq].chip->set_affinity(irq, &mask); desc->chip->set_affinity(irq, &mask);
else if (irq_desc[irq].action && !(warned++)) else if (desc->action && !(warned++))
printk("Cannot set affinity for irq %i\n", irq); printk("Cannot set affinity for irq %i\n", irq);
} }
...@@ -273,7 +275,7 @@ static inline void handle_one_irq(unsigned int irq) ...@@ -273,7 +275,7 @@ static inline void handle_one_irq(unsigned int irq)
return; return;
} }
desc = irq_desc + irq; desc = irq_to_desc(irq);
saved_sp_limit = current->thread.ksp_limit; saved_sp_limit = current->thread.ksp_limit;
irqtp->task = curtp->task; irqtp->task = curtp->task;
...@@ -535,7 +537,7 @@ struct irq_host *irq_alloc_host(struct device_node *of_node, ...@@ -535,7 +537,7 @@ struct irq_host *irq_alloc_host(struct device_node *of_node,
smp_wmb(); smp_wmb();
/* Clear norequest flags */ /* Clear norequest flags */
get_irq_desc(i)->status &= ~IRQ_NOREQUEST; irq_to_desc(i)->status &= ~IRQ_NOREQUEST;
/* Legacy flags are left to default at this point, /* Legacy flags are left to default at this point,
* one can then use irq_create_mapping() to * one can then use irq_create_mapping() to
...@@ -602,7 +604,7 @@ static int irq_setup_virq(struct irq_host *host, unsigned int virq, ...@@ -602,7 +604,7 @@ static int irq_setup_virq(struct irq_host *host, unsigned int virq,
irq_hw_number_t hwirq) irq_hw_number_t hwirq)
{ {
/* Clear IRQ_NOREQUEST flag */ /* Clear IRQ_NOREQUEST flag */
get_irq_desc(virq)->status &= ~IRQ_NOREQUEST; irq_to_desc(virq)->status &= ~IRQ_NOREQUEST;
/* map it */ /* map it */
smp_wmb(); smp_wmb();
...@@ -732,7 +734,7 @@ unsigned int irq_create_of_mapping(struct device_node *controller, ...@@ -732,7 +734,7 @@ unsigned int irq_create_of_mapping(struct device_node *controller,
/* Set type if specified and different than the current one */ /* Set type if specified and different than the current one */
if (type != IRQ_TYPE_NONE && if (type != IRQ_TYPE_NONE &&
type != (get_irq_desc(virq)->status & IRQF_TRIGGER_MASK)) type != (irq_to_desc(virq)->status & IRQF_TRIGGER_MASK))
set_irq_type(virq, type); set_irq_type(virq, type);
return virq; return virq;
} }
...@@ -804,7 +806,7 @@ void irq_dispose_mapping(unsigned int virq) ...@@ -804,7 +806,7 @@ void irq_dispose_mapping(unsigned int virq)
irq_map[virq].hwirq = host->inval_irq; irq_map[virq].hwirq = host->inval_irq;
/* Set some flags */ /* Set some flags */
get_irq_desc(virq)->status |= IRQ_NOREQUEST; irq_to_desc(virq)->status |= IRQ_NOREQUEST;
/* Free it */ /* Free it */
irq_free_virt(virq, 1); irq_free_virt(virq, 1);
...@@ -1001,7 +1003,7 @@ void irq_early_init(void) ...@@ -1001,7 +1003,7 @@ void irq_early_init(void)
unsigned int i; unsigned int i;
for (i = 0; i < NR_IRQS; i++) for (i = 0; i < NR_IRQS; i++)
get_irq_desc(i)->status |= IRQ_NOREQUEST; irq_to_desc(i)->status |= IRQ_NOREQUEST;
} }
/* We need to create the radix trees late */ /* We need to create the radix trees late */
...@@ -1064,7 +1066,7 @@ static int virq_debug_show(struct seq_file *m, void *private) ...@@ -1064,7 +1066,7 @@ static int virq_debug_show(struct seq_file *m, void *private)
"chip name", "host name"); "chip name", "host name");
for (i = 1; i < NR_IRQS; i++) { for (i = 1; i < NR_IRQS; i++) {
desc = get_irq_desc(i); desc = irq_to_desc(i);
spin_lock_irqsave(&desc->lock, flags); spin_lock_irqsave(&desc->lock, flags);
if (desc->action && desc->action->handler) { if (desc->action && desc->action->handler) {
......
...@@ -132,7 +132,7 @@ static int ...@@ -132,7 +132,7 @@ static int
cpld_pic_host_map(struct irq_host *h, unsigned int virq, cpld_pic_host_map(struct irq_host *h, unsigned int virq,
irq_hw_number_t hw) irq_hw_number_t hw)
{ {
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_and_handler(virq, &cpld_pic, handle_level_irq); set_irq_chip_and_handler(virq, &cpld_pic, handle_level_irq);
return 0; return 0;
} }
......
...@@ -114,7 +114,7 @@ void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc) ...@@ -114,7 +114,7 @@ void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
static int media5200_irq_map(struct irq_host *h, unsigned int virq, static int media5200_irq_map(struct irq_host *h, unsigned int virq,
irq_hw_number_t hw) irq_hw_number_t hw)
{ {
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
pr_debug("%s: h=%p, virq=%i, hwirq=%i\n", __func__, h, virq, (int)hw); pr_debug("%s: h=%p, virq=%i, hwirq=%i\n", __func__, h, virq, (int)hw);
set_irq_chip_data(virq, &media5200_irq); set_irq_chip_data(virq, &media5200_irq);
......
...@@ -107,7 +107,7 @@ static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc) ...@@ -107,7 +107,7 @@ static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
static int pci_pic_host_map(struct irq_host *h, unsigned int virq, static int pci_pic_host_map(struct irq_host *h, unsigned int virq,
irq_hw_number_t hw) irq_hw_number_t hw)
{ {
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_data(virq, h->host_data); set_irq_chip_data(virq, h->host_data);
set_irq_chip_and_handler(virq, &pq2ads_pci_ic, handle_level_irq); set_irq_chip_and_handler(virq, &pq2ads_pci_ic, handle_level_irq);
return 0; return 0;
......
...@@ -245,7 +245,7 @@ static int socrates_fpga_pic_host_map(struct irq_host *h, unsigned int virq, ...@@ -245,7 +245,7 @@ static int socrates_fpga_pic_host_map(struct irq_host *h, unsigned int virq,
irq_hw_number_t hwirq) irq_hw_number_t hwirq)
{ {
/* All interrupts are LEVEL sensitive */ /* All interrupts are LEVEL sensitive */
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_and_handler(virq, &socrates_fpga_pic_chip, set_irq_chip_and_handler(virq, &socrates_fpga_pic_chip,
handle_fasteoi_irq); handle_fasteoi_irq);
......
...@@ -163,7 +163,7 @@ static int gef_pic_host_map(struct irq_host *h, unsigned int virq, ...@@ -163,7 +163,7 @@ static int gef_pic_host_map(struct irq_host *h, unsigned int virq,
irq_hw_number_t hwirq) irq_hw_number_t hwirq)
{ {
/* All interrupts are LEVEL sensitive */ /* All interrupts are LEVEL sensitive */
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_and_handler(virq, &gef_pic_chip, handle_level_irq); set_irq_chip_and_handler(virq, &gef_pic_chip, handle_level_irq);
return 0; return 0;
......
...@@ -136,7 +136,7 @@ static void beatic_pic_host_unmap(struct irq_host *h, unsigned int virq) ...@@ -136,7 +136,7 @@ static void beatic_pic_host_unmap(struct irq_host *h, unsigned int virq)
static int beatic_pic_host_map(struct irq_host *h, unsigned int virq, static int beatic_pic_host_map(struct irq_host *h, unsigned int virq,
irq_hw_number_t hw) irq_hw_number_t hw)
{ {
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
int64_t err; int64_t err;
err = beat_construct_and_connect_irq_plug(virq, hw); err = beat_construct_and_connect_irq_plug(virq, hw);
......
...@@ -102,7 +102,7 @@ static void spider_ack_irq(unsigned int virq) ...@@ -102,7 +102,7 @@ static void spider_ack_irq(unsigned int virq)
/* Reset edge detection logic if necessary /* Reset edge detection logic if necessary
*/ */
if (get_irq_desc(virq)->status & IRQ_LEVEL) if (irq_to_desc(virq)->status & IRQ_LEVEL)
return; return;
/* Only interrupts 47 to 50 can be set to edge */ /* Only interrupts 47 to 50 can be set to edge */
...@@ -119,7 +119,7 @@ static int spider_set_irq_type(unsigned int virq, unsigned int type) ...@@ -119,7 +119,7 @@ static int spider_set_irq_type(unsigned int virq, unsigned int type)
struct spider_pic *pic = spider_virq_to_pic(virq); struct spider_pic *pic = spider_virq_to_pic(virq);
unsigned int hw = irq_map[virq].hwirq; unsigned int hw = irq_map[virq].hwirq;
void __iomem *cfg = spider_get_irq_config(pic, hw); void __iomem *cfg = spider_get_irq_config(pic, hw);
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
u32 old_mask; u32 old_mask;
u32 ic; u32 ic;
......
...@@ -214,7 +214,7 @@ void __init iSeries_activate_IRQs() ...@@ -214,7 +214,7 @@ void __init iSeries_activate_IRQs()
unsigned long flags; unsigned long flags;
for_each_irq (irq) { for_each_irq (irq) {
struct irq_desc *desc = get_irq_desc(irq); struct irq_desc *desc = irq_to_desc(irq);
if (desc && desc->chip && desc->chip->startup) { if (desc && desc->chip && desc->chip->startup) {
spin_lock_irqsave(&desc->lock, flags); spin_lock_irqsave(&desc->lock, flags);
......
...@@ -152,12 +152,12 @@ static unsigned int pmac_startup_irq(unsigned int virq) ...@@ -152,12 +152,12 @@ static unsigned int pmac_startup_irq(unsigned int virq)
unsigned long bit = 1UL << (src & 0x1f); unsigned long bit = 1UL << (src & 0x1f);
int i = src >> 5; int i = src >> 5;
spin_lock_irqsave(&pmac_pic_lock, flags); spin_lock_irqsave(&pmac_pic_lock, flags);
if ((irq_desc[virq].status & IRQ_LEVEL) == 0) if ((irq_to_desc(virq)->status & IRQ_LEVEL) == 0)
out_le32(&pmac_irq_hw[i]->ack, bit); out_le32(&pmac_irq_hw[i]->ack, bit);
__set_bit(src, ppc_cached_irq_mask); __set_bit(src, ppc_cached_irq_mask);
__pmac_set_irq_mask(src, 0); __pmac_set_irq_mask(src, 0);
spin_unlock_irqrestore(&pmac_pic_lock, flags); spin_unlock_irqrestore(&pmac_pic_lock, flags);
return 0; return 0;
} }
...@@ -285,7 +285,7 @@ static int pmac_pic_host_match(struct irq_host *h, struct device_node *node) ...@@ -285,7 +285,7 @@ static int pmac_pic_host_match(struct irq_host *h, struct device_node *node)
static int pmac_pic_host_map(struct irq_host *h, unsigned int virq, static int pmac_pic_host_map(struct irq_host *h, unsigned int virq,
irq_hw_number_t hw) irq_hw_number_t hw)
{ {
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
int level; int level;
if (hw >= max_irqs) if (hw >= max_irqs)
......
...@@ -156,7 +156,7 @@ static int get_irq_server(unsigned int virq, unsigned int strict_check) ...@@ -156,7 +156,7 @@ static int get_irq_server(unsigned int virq, unsigned int strict_check)
cpumask_t cpumask; cpumask_t cpumask;
cpumask_t tmp = CPU_MASK_NONE; cpumask_t tmp = CPU_MASK_NONE;
cpumask_copy(&cpumask, irq_desc[virq].affinity); cpumask_copy(&cpumask, irq_to_desc(virq)->affinity);
if (!distribute_irqs) if (!distribute_irqs)
return default_server; return default_server;
...@@ -419,7 +419,7 @@ static int xics_host_map(struct irq_host *h, unsigned int virq, ...@@ -419,7 +419,7 @@ static int xics_host_map(struct irq_host *h, unsigned int virq,
/* Insert the interrupt mapping into the radix tree for fast lookup */ /* Insert the interrupt mapping into the radix tree for fast lookup */
irq_radix_revmap_insert(xics_host, virq, hw); irq_radix_revmap_insert(xics_host, virq, hw);
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_and_handler(virq, xics_irq_chip, handle_fasteoi_irq); set_irq_chip_and_handler(virq, xics_irq_chip, handle_fasteoi_irq);
return 0; return 0;
} }
...@@ -843,7 +843,7 @@ void xics_migrate_irqs_away(void) ...@@ -843,7 +843,7 @@ void xics_migrate_irqs_away(void)
/* We need to get IPIs still. */ /* We need to get IPIs still. */
if (irq == XICS_IPI || irq == XICS_IRQ_SPURIOUS) if (irq == XICS_IPI || irq == XICS_IRQ_SPURIOUS)
continue; continue;
desc = get_irq_desc(virq); desc = irq_to_desc(virq);
/* We only need to migrate enabled IRQS */ /* We only need to migrate enabled IRQS */
if (desc == NULL || desc->chip == NULL if (desc == NULL || desc->chip == NULL
...@@ -872,7 +872,7 @@ void xics_migrate_irqs_away(void) ...@@ -872,7 +872,7 @@ void xics_migrate_irqs_away(void)
virq, cpu); virq, cpu);
/* Reset affinity to all cpus */ /* Reset affinity to all cpus */
cpumask_setall(irq_desc[virq].affinity); cpumask_setall(irq_to_desc(virq)->affinity);
desc->chip->set_affinity(virq, cpu_all_mask); desc->chip->set_affinity(virq, cpu_all_mask);
unlock: unlock:
spin_unlock_irqrestore(&desc->lock, flags); spin_unlock_irqrestore(&desc->lock, flags);
......
...@@ -102,7 +102,7 @@ static int cpm_pic_host_map(struct irq_host *h, unsigned int virq, ...@@ -102,7 +102,7 @@ static int cpm_pic_host_map(struct irq_host *h, unsigned int virq,
{ {
pr_debug("cpm_pic_host_map(%d, 0x%lx)\n", virq, hw); pr_debug("cpm_pic_host_map(%d, 0x%lx)\n", virq, hw);
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_and_handler(virq, &cpm_pic, handle_fasteoi_irq); set_irq_chip_and_handler(virq, &cpm_pic, handle_fasteoi_irq);
return 0; return 0;
} }
......
...@@ -115,11 +115,13 @@ static void cpm2_ack(unsigned int virq) ...@@ -115,11 +115,13 @@ static void cpm2_ack(unsigned int virq)
static void cpm2_end_irq(unsigned int virq) static void cpm2_end_irq(unsigned int virq)
{ {
struct irq_desc *desc;
int bit, word; int bit, word;
unsigned int irq_nr = virq_to_hw(virq); unsigned int irq_nr = virq_to_hw(virq);
if (!(irq_desc[irq_nr].status & (IRQ_DISABLED|IRQ_INPROGRESS)) desc = irq_to_desc(irq_nr);
&& irq_desc[irq_nr].action) { if (!(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS))
&& desc->action) {
bit = irq_to_siubit[irq_nr]; bit = irq_to_siubit[irq_nr];
word = irq_to_siureg[irq_nr]; word = irq_to_siureg[irq_nr];
...@@ -138,7 +140,7 @@ static void cpm2_end_irq(unsigned int virq) ...@@ -138,7 +140,7 @@ static void cpm2_end_irq(unsigned int virq)
static int cpm2_set_irq_type(unsigned int virq, unsigned int flow_type) static int cpm2_set_irq_type(unsigned int virq, unsigned int flow_type)
{ {
unsigned int src = virq_to_hw(virq); unsigned int src = virq_to_hw(virq);
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
unsigned int vold, vnew, edibit; unsigned int vold, vnew, edibit;
if (flow_type == IRQ_TYPE_NONE) if (flow_type == IRQ_TYPE_NONE)
...@@ -210,7 +212,7 @@ static int cpm2_pic_host_map(struct irq_host *h, unsigned int virq, ...@@ -210,7 +212,7 @@ static int cpm2_pic_host_map(struct irq_host *h, unsigned int virq,
{ {
pr_debug("cpm2_pic_host_map(%d, 0x%lx)\n", virq, hw); pr_debug("cpm2_pic_host_map(%d, 0x%lx)\n", virq, hw);
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_and_handler(virq, &cpm2_pic, handle_level_irq); set_irq_chip_and_handler(virq, &cpm2_pic, handle_level_irq);
return 0; return 0;
} }
......
...@@ -55,7 +55,7 @@ static int fsl_msi_host_map(struct irq_host *h, unsigned int virq, ...@@ -55,7 +55,7 @@ static int fsl_msi_host_map(struct irq_host *h, unsigned int virq,
{ {
struct irq_chip *chip = &fsl_msi_chip; struct irq_chip *chip = &fsl_msi_chip;
get_irq_desc(virq)->status |= IRQ_TYPE_EDGE_FALLING; irq_to_desc(virq)->status |= IRQ_TYPE_EDGE_FALLING;
set_irq_chip_and_handler(virq, chip, handle_edge_irq); set_irq_chip_and_handler(virq, chip, handle_edge_irq);
......
...@@ -175,12 +175,12 @@ static int i8259_host_map(struct irq_host *h, unsigned int virq, ...@@ -175,12 +175,12 @@ static int i8259_host_map(struct irq_host *h, unsigned int virq,
/* We block the internal cascade */ /* We block the internal cascade */
if (hw == 2) if (hw == 2)
get_irq_desc(virq)->status |= IRQ_NOREQUEST; irq_to_desc(virq)->status |= IRQ_NOREQUEST;
/* We use the level handler only for now, we might want to /* We use the level handler only for now, we might want to
* be more cautious here but that works for now * be more cautious here but that works for now
*/ */
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_and_handler(virq, &i8259_pic, handle_level_irq); set_irq_chip_and_handler(virq, &i8259_pic, handle_level_irq);
return 0; return 0;
} }
......
...@@ -605,7 +605,7 @@ static int ipic_set_irq_type(unsigned int virq, unsigned int flow_type) ...@@ -605,7 +605,7 @@ static int ipic_set_irq_type(unsigned int virq, unsigned int flow_type)
{ {
struct ipic *ipic = ipic_from_irq(virq); struct ipic *ipic = ipic_from_irq(virq);
unsigned int src = ipic_irq_to_hw(virq); unsigned int src = ipic_irq_to_hw(virq);
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
unsigned int vold, vnew, edibit; unsigned int vold, vnew, edibit;
if (flow_type == IRQ_TYPE_NONE) if (flow_type == IRQ_TYPE_NONE)
......
...@@ -72,7 +72,7 @@ static void mpc8xx_end_irq(unsigned int virq) ...@@ -72,7 +72,7 @@ static void mpc8xx_end_irq(unsigned int virq)
static int mpc8xx_set_irq_type(unsigned int virq, unsigned int flow_type) static int mpc8xx_set_irq_type(unsigned int virq, unsigned int flow_type)
{ {
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL); desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL);
desc->status |= flow_type & IRQ_TYPE_SENSE_MASK; desc->status |= flow_type & IRQ_TYPE_SENSE_MASK;
......
...@@ -572,7 +572,7 @@ static int irq_choose_cpu(unsigned int virt_irq) ...@@ -572,7 +572,7 @@ static int irq_choose_cpu(unsigned int virt_irq)
cpumask_t mask; cpumask_t mask;
int cpuid; int cpuid;
cpumask_copy(&mask, irq_desc[virt_irq].affinity); cpumask_copy(&mask, irq_to_desc(virt_irq)->affinity);
if (cpus_equal(mask, CPU_MASK_ALL)) { if (cpus_equal(mask, CPU_MASK_ALL)) {
static int irq_rover; static int irq_rover;
static DEFINE_SPINLOCK(irq_rover_lock); static DEFINE_SPINLOCK(irq_rover_lock);
...@@ -621,7 +621,7 @@ static struct mpic *mpic_find(unsigned int irq) ...@@ -621,7 +621,7 @@ static struct mpic *mpic_find(unsigned int irq)
if (irq < NUM_ISA_INTERRUPTS) if (irq < NUM_ISA_INTERRUPTS)
return NULL; return NULL;
return irq_desc[irq].chip_data; return irq_to_desc(irq)->chip_data;
} }
/* Determine if the linux irq is an IPI */ /* Determine if the linux irq is an IPI */
...@@ -648,14 +648,14 @@ static inline u32 mpic_physmask(u32 cpumask) ...@@ -648,14 +648,14 @@ static inline u32 mpic_physmask(u32 cpumask)
/* Get the mpic structure from the IPI number */ /* Get the mpic structure from the IPI number */
static inline struct mpic * mpic_from_ipi(unsigned int ipi) static inline struct mpic * mpic_from_ipi(unsigned int ipi)
{ {
return irq_desc[ipi].chip_data; return irq_to_desc(ipi)->chip_data;
} }
#endif #endif
/* Get the mpic structure from the irq number */ /* Get the mpic structure from the irq number */
static inline struct mpic * mpic_from_irq(unsigned int irq) static inline struct mpic * mpic_from_irq(unsigned int irq)
{ {
return irq_desc[irq].chip_data; return irq_to_desc(irq)->chip_data;
} }
/* Send an EOI */ /* Send an EOI */
...@@ -735,7 +735,7 @@ static void mpic_unmask_ht_irq(unsigned int irq) ...@@ -735,7 +735,7 @@ static void mpic_unmask_ht_irq(unsigned int irq)
mpic_unmask_irq(irq); mpic_unmask_irq(irq);
if (irq_desc[irq].status & IRQ_LEVEL) if (irq_to_desc(irq)->status & IRQ_LEVEL)
mpic_ht_end_irq(mpic, src); mpic_ht_end_irq(mpic, src);
} }
...@@ -745,7 +745,7 @@ static unsigned int mpic_startup_ht_irq(unsigned int irq) ...@@ -745,7 +745,7 @@ static unsigned int mpic_startup_ht_irq(unsigned int irq)
unsigned int src = mpic_irq_to_hw(irq); unsigned int src = mpic_irq_to_hw(irq);
mpic_unmask_irq(irq); mpic_unmask_irq(irq);
mpic_startup_ht_interrupt(mpic, src, irq_desc[irq].status); mpic_startup_ht_interrupt(mpic, src, irq_to_desc(irq)->status);
return 0; return 0;
} }
...@@ -755,7 +755,7 @@ static void mpic_shutdown_ht_irq(unsigned int irq) ...@@ -755,7 +755,7 @@ static void mpic_shutdown_ht_irq(unsigned int irq)
struct mpic *mpic = mpic_from_irq(irq); struct mpic *mpic = mpic_from_irq(irq);
unsigned int src = mpic_irq_to_hw(irq); unsigned int src = mpic_irq_to_hw(irq);
mpic_shutdown_ht_interrupt(mpic, src, irq_desc[irq].status); mpic_shutdown_ht_interrupt(mpic, src, irq_to_desc(irq)->status);
mpic_mask_irq(irq); mpic_mask_irq(irq);
} }
...@@ -772,7 +772,7 @@ static void mpic_end_ht_irq(unsigned int irq) ...@@ -772,7 +772,7 @@ static void mpic_end_ht_irq(unsigned int irq)
* latched another edge interrupt coming in anyway * latched another edge interrupt coming in anyway
*/ */
if (irq_desc[irq].status & IRQ_LEVEL) if (irq_to_desc(irq)->status & IRQ_LEVEL)
mpic_ht_end_irq(mpic, src); mpic_ht_end_irq(mpic, src);
mpic_eoi(mpic); mpic_eoi(mpic);
} }
...@@ -856,7 +856,7 @@ int mpic_set_irq_type(unsigned int virq, unsigned int flow_type) ...@@ -856,7 +856,7 @@ int mpic_set_irq_type(unsigned int virq, unsigned int flow_type)
{ {
struct mpic *mpic = mpic_from_irq(virq); struct mpic *mpic = mpic_from_irq(virq);
unsigned int src = mpic_irq_to_hw(virq); unsigned int src = mpic_irq_to_hw(virq);
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
unsigned int vecpri, vold, vnew; unsigned int vecpri, vold, vnew;
DBG("mpic: set_irq_type(mpic:@%p,virq:%d,src:0x%x,type:0x%x)\n", DBG("mpic: set_irq_type(mpic:@%p,virq:%d,src:0x%x,type:0x%x)\n",
......
...@@ -213,7 +213,7 @@ static int mv64x60_host_map(struct irq_host *h, unsigned int virq, ...@@ -213,7 +213,7 @@ static int mv64x60_host_map(struct irq_host *h, unsigned int virq,
{ {
int level1; int level1;
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
level1 = (hwirq & MV64x60_LEVEL1_MASK) >> MV64x60_LEVEL1_OFFSET; level1 = (hwirq & MV64x60_LEVEL1_MASK) >> MV64x60_LEVEL1_OFFSET;
BUG_ON(level1 > MV64x60_LEVEL1_GPP); BUG_ON(level1 > MV64x60_LEVEL1_GPP);
......
...@@ -189,7 +189,7 @@ static inline void qe_ic_write(volatile __be32 __iomem * base, unsigned int reg ...@@ -189,7 +189,7 @@ static inline void qe_ic_write(volatile __be32 __iomem * base, unsigned int reg
static inline struct qe_ic *qe_ic_from_irq(unsigned int virq) static inline struct qe_ic *qe_ic_from_irq(unsigned int virq)
{ {
return irq_desc[virq].chip_data; return irq_to_desc(virq)->chip_data;
} }
#define virq_to_hw(virq) ((unsigned int)irq_map[virq].hwirq) #define virq_to_hw(virq) ((unsigned int)irq_map[virq].hwirq)
...@@ -263,7 +263,7 @@ static int qe_ic_host_map(struct irq_host *h, unsigned int virq, ...@@ -263,7 +263,7 @@ static int qe_ic_host_map(struct irq_host *h, unsigned int virq,
chip = &qe_ic->hc_irq; chip = &qe_ic->hc_irq;
set_irq_chip_data(virq, qe_ic); set_irq_chip_data(virq, qe_ic);
get_irq_desc(virq)->status |= IRQ_LEVEL; irq_to_desc(virq)->status |= IRQ_LEVEL;
set_irq_chip_and_handler(virq, chip, handle_level_irq); set_irq_chip_and_handler(virq, chip, handle_level_irq);
......
...@@ -398,7 +398,7 @@ static int pci_irq_host_map(struct irq_host *h, unsigned int virq, ...@@ -398,7 +398,7 @@ static int pci_irq_host_map(struct irq_host *h, unsigned int virq,
DBG("%s(%d, 0x%lx)\n", __func__, virq, hw); DBG("%s(%d, 0x%lx)\n", __func__, virq, hw);
if ((virq >= 1) && (virq <= 4)){ if ((virq >= 1) && (virq <= 4)){
irq = virq + IRQ_PCI_INTAD_BASE - 1; irq = virq + IRQ_PCI_INTAD_BASE - 1;
get_irq_desc(irq)->status |= IRQ_LEVEL; irq_to_desc(irq)->status |= IRQ_LEVEL;
set_irq_chip(irq, &tsi108_pci_irq); set_irq_chip(irq, &tsi108_pci_irq);
} }
return 0; return 0;
......
...@@ -57,7 +57,7 @@ struct uic { ...@@ -57,7 +57,7 @@ struct uic {
static void uic_unmask_irq(unsigned int virq) static void uic_unmask_irq(unsigned int virq)
{ {
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
struct uic *uic = get_irq_chip_data(virq); struct uic *uic = get_irq_chip_data(virq);
unsigned int src = uic_irq_to_hw(virq); unsigned int src = uic_irq_to_hw(virq);
unsigned long flags; unsigned long flags;
...@@ -101,7 +101,7 @@ static void uic_ack_irq(unsigned int virq) ...@@ -101,7 +101,7 @@ static void uic_ack_irq(unsigned int virq)
static void uic_mask_ack_irq(unsigned int virq) static void uic_mask_ack_irq(unsigned int virq)
{ {
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
struct uic *uic = get_irq_chip_data(virq); struct uic *uic = get_irq_chip_data(virq);
unsigned int src = uic_irq_to_hw(virq); unsigned int src = uic_irq_to_hw(virq);
unsigned long flags; unsigned long flags;
...@@ -129,7 +129,7 @@ static int uic_set_irq_type(unsigned int virq, unsigned int flow_type) ...@@ -129,7 +129,7 @@ static int uic_set_irq_type(unsigned int virq, unsigned int flow_type)
{ {
struct uic *uic = get_irq_chip_data(virq); struct uic *uic = get_irq_chip_data(virq);
unsigned int src = uic_irq_to_hw(virq); unsigned int src = uic_irq_to_hw(virq);
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
unsigned long flags; unsigned long flags;
int trigger, polarity; int trigger, polarity;
u32 tr, pr, mask; u32 tr, pr, mask;
......
...@@ -79,7 +79,7 @@ static void xilinx_intc_mask(unsigned int virq) ...@@ -79,7 +79,7 @@ static void xilinx_intc_mask(unsigned int virq)
static int xilinx_intc_set_type(unsigned int virq, unsigned int flow_type) static int xilinx_intc_set_type(unsigned int virq, unsigned int flow_type)
{ {
struct irq_desc *desc = get_irq_desc(virq); struct irq_desc *desc = irq_to_desc(virq);
desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL); desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL);
desc->status |= flow_type & IRQ_TYPE_SENSE_MASK; desc->status |= flow_type & IRQ_TYPE_SENSE_MASK;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment