提交 c86defc8 编写于 作者: L Linus Torvalds

Merge branch 'irq-final-for-linus-v2' of...

Merge branch 'irq-final-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'irq-final-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (111 commits)
  gpio: ab8500: Mark broken
  genirq: Remove move_*irq leftovers
  genirq: Remove compat code
  drivers: Final irq namespace conversion
  mn10300: Use generic show_interrupts()
  mn10300: Cleanup irq_desc access
  mn10300: Convert genirq namespace
  frv: Use generic show_interrupts()
  frv: Convert genirq namespace
  frv: Select GENERIC_HARDIRQS_NO_DEPRECATED
  frv: Convert cpu irq_chip to new functions
  frv: Convert mb93493 irq_chip to new functions
  frv: Convert mb93093 irq_chip to new function
  frv: Convert mb93091 irq_chip to new functions
  frv: Fix typo from __do_IRQ overhaul
  frv: Remove stale irq_chip.end
  m68k: Convert irq function namespace
  xen: Use new irq_move functions
  xen: Cleanup genirq namespace
  unicore32: Use generic show_interrupts()
  ...
...@@ -11,6 +11,7 @@ config ALPHA ...@@ -11,6 +11,7 @@ config ALPHA
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE
select AUTO_IRQ_AFFINITY if SMP select AUTO_IRQ_AFFINITY if SMP
select GENERIC_IRQ_SHOW
select GENERIC_HARDIRQS_NO_DEPRECATED select GENERIC_HARDIRQS_NO_DEPRECATED
help help
The Alpha is a 64-bit general-purpose processor designed and The Alpha is a 64-bit general-purpose processor designed and
......
...@@ -67,68 +67,21 @@ int irq_select_affinity(unsigned int irq) ...@@ -67,68 +67,21 @@ int irq_select_affinity(unsigned int irq)
} }
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
int int arch_show_interrupts(struct seq_file *p, int prec)
show_interrupts(struct seq_file *p, void *v)
{ {
int j; int j;
int irq = *(loff_t *) v;
struct irqaction * action;
struct irq_desc *desc;
unsigned long flags;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
if (irq == 0) { seq_puts(p, "IPI: ");
seq_puts(p, " "); for_each_online_cpu(j)
for_each_online_cpu(j) seq_printf(p, "%10lu ", cpu_data[j].ipi_count);
seq_printf(p, "CPU%d ", j); seq_putc(p, '\n');
seq_putc(p, '\n');
}
#endif
if (irq < ACTUAL_NR_IRQS) {
desc = irq_to_desc(irq);
if (!desc)
return 0;
raw_spin_lock_irqsave(&desc->lock, flags);
action = desc->action;
if (!action)
goto unlock;
seq_printf(p, "%3d: ", irq);
#ifndef CONFIG_SMP
seq_printf(p, "%10u ", kstat_irqs(irq));
#else
for_each_online_cpu(j)
seq_printf(p, "%10u ", kstat_irqs_cpu(irq, j));
#endif #endif
seq_printf(p, " %14s", get_irq_desc_chip(desc)->name); seq_puts(p, "PMI: ");
seq_printf(p, " %c%s", for_each_online_cpu(j)
(action->flags & IRQF_DISABLED)?'+':' ', seq_printf(p, "%10lu ", per_cpu(irq_pmi_count, j));
action->name); seq_puts(p, " Performance Monitoring\n");
seq_printf(p, "ERR: %10lu\n", irq_err_count);
for (action=action->next; action; action = action->next) {
seq_printf(p, ", %c%s",
(action->flags & IRQF_DISABLED)?'+':' ',
action->name);
}
seq_putc(p, '\n');
unlock:
raw_spin_unlock_irqrestore(&desc->lock, flags);
} else if (irq == ACTUAL_NR_IRQS) {
#ifdef CONFIG_SMP
seq_puts(p, "IPI: ");
for_each_online_cpu(j)
seq_printf(p, "%10lu ", cpu_data[j].ipi_count);
seq_putc(p, '\n');
#endif
seq_puts(p, "PMI: ");
for_each_online_cpu(j)
seq_printf(p, "%10lu ", per_cpu(irq_pmi_count, j));
seq_puts(p, " Performance Monitoring\n");
seq_printf(p, "ERR: %10lu\n", irq_err_count);
}
return 0; return 0;
} }
......
...@@ -228,7 +228,7 @@ struct irqaction timer_irqaction = { ...@@ -228,7 +228,7 @@ struct irqaction timer_irqaction = {
void __init void __init
init_rtc_irq(void) init_rtc_irq(void)
{ {
set_irq_chip_and_handler_name(RTC_IRQ, &no_irq_chip, irq_set_chip_and_handler_name(RTC_IRQ, &no_irq_chip,
handle_simple_irq, "RTC"); handle_simple_irq, "RTC");
setup_irq(RTC_IRQ, &timer_irqaction); setup_irq(RTC_IRQ, &timer_irqaction);
} }
......
...@@ -92,7 +92,7 @@ init_i8259a_irqs(void) ...@@ -92,7 +92,7 @@ init_i8259a_irqs(void)
outb(0xff, 0xA1); /* mask all of 8259A-2 */ outb(0xff, 0xA1); /* mask all of 8259A-2 */
for (i = 0; i < 16; i++) { for (i = 0; i < 16; i++) {
set_irq_chip_and_handler(i, &i8259a_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &i8259a_irq_type, handle_level_irq);
} }
setup_irq(2, &cascade); setup_irq(2, &cascade);
......
...@@ -102,7 +102,7 @@ init_pyxis_irqs(unsigned long ignore_mask) ...@@ -102,7 +102,7 @@ init_pyxis_irqs(unsigned long ignore_mask)
for (i = 16; i < 48; ++i) { for (i = 16; i < 48; ++i) {
if ((ignore_mask >> i) & 1) if ((ignore_mask >> i) & 1)
continue; continue;
set_irq_chip_and_handler(i, &pyxis_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &pyxis_irq_type, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
......
...@@ -51,7 +51,7 @@ init_srm_irqs(long max, unsigned long ignore_mask) ...@@ -51,7 +51,7 @@ init_srm_irqs(long max, unsigned long ignore_mask)
for (i = 16; i < max; ++i) { for (i = 16; i < max; ++i) {
if (i < 64 && ((ignore_mask >> i) & 1)) if (i < 64 && ((ignore_mask >> i) & 1))
continue; continue;
set_irq_chip_and_handler(i, &srm_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &srm_irq_type, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
} }
......
...@@ -125,7 +125,7 @@ alcor_init_irq(void) ...@@ -125,7 +125,7 @@ alcor_init_irq(void)
on while IRQ probing. */ on while IRQ probing. */
if (i >= 16+20 && i <= 16+30) if (i >= 16+20 && i <= 16+30)
continue; continue;
set_irq_chip_and_handler(i, &alcor_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &alcor_irq_type, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
i8259a_irq_type.irq_ack = alcor_isa_mask_and_ack_irq; i8259a_irq_type.irq_ack = alcor_isa_mask_and_ack_irq;
......
...@@ -105,8 +105,8 @@ common_init_irq(void (*srm_dev_int)(unsigned long v)) ...@@ -105,8 +105,8 @@ common_init_irq(void (*srm_dev_int)(unsigned long v))
outb(0xff, 0x806); outb(0xff, 0x806);
for (i = 16; i < 35; ++i) { for (i = 16; i < 35; ++i) {
set_irq_chip_and_handler(i, &cabriolet_irq_type, irq_set_chip_and_handler(i, &cabriolet_irq_type,
handle_level_irq); handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
} }
......
...@@ -270,7 +270,7 @@ init_tsunami_irqs(struct irq_chip * ops, int imin, int imax) ...@@ -270,7 +270,7 @@ init_tsunami_irqs(struct irq_chip * ops, int imin, int imax)
{ {
long i; long i;
for (i = imin; i <= imax; ++i) { for (i = imin; i <= imax; ++i) {
set_irq_chip_and_handler(i, ops, handle_level_irq); irq_set_chip_and_handler(i, ops, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
} }
......
...@@ -118,7 +118,7 @@ eb64p_init_irq(void) ...@@ -118,7 +118,7 @@ eb64p_init_irq(void)
init_i8259a_irqs(); init_i8259a_irqs();
for (i = 16; i < 32; ++i) { for (i = 16; i < 32; ++i) {
set_irq_chip_and_handler(i, &eb64p_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &eb64p_irq_type, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
......
...@@ -138,7 +138,7 @@ eiger_init_irq(void) ...@@ -138,7 +138,7 @@ eiger_init_irq(void)
init_i8259a_irqs(); init_i8259a_irqs();
for (i = 16; i < 128; ++i) { for (i = 16; i < 128; ++i) {
set_irq_chip_and_handler(i, &eiger_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &eiger_irq_type, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
} }
......
...@@ -171,11 +171,11 @@ jensen_init_irq(void) ...@@ -171,11 +171,11 @@ jensen_init_irq(void)
{ {
init_i8259a_irqs(); init_i8259a_irqs();
set_irq_chip_and_handler(1, &jensen_local_irq_type, handle_level_irq); irq_set_chip_and_handler(1, &jensen_local_irq_type, handle_level_irq);
set_irq_chip_and_handler(4, &jensen_local_irq_type, handle_level_irq); irq_set_chip_and_handler(4, &jensen_local_irq_type, handle_level_irq);
set_irq_chip_and_handler(3, &jensen_local_irq_type, handle_level_irq); irq_set_chip_and_handler(3, &jensen_local_irq_type, handle_level_irq);
set_irq_chip_and_handler(7, &jensen_local_irq_type, handle_level_irq); irq_set_chip_and_handler(7, &jensen_local_irq_type, handle_level_irq);
set_irq_chip_and_handler(9, &jensen_local_irq_type, handle_level_irq); irq_set_chip_and_handler(9, &jensen_local_irq_type, handle_level_irq);
common_init_isa_dma(); common_init_isa_dma();
} }
......
...@@ -276,7 +276,7 @@ init_io7_irqs(struct io7 *io7, ...@@ -276,7 +276,7 @@ init_io7_irqs(struct io7 *io7,
/* Set up the lsi irqs. */ /* Set up the lsi irqs. */
for (i = 0; i < 128; ++i) { for (i = 0; i < 128; ++i) {
set_irq_chip_and_handler(base + i, lsi_ops, handle_level_irq); irq_set_chip_and_handler(base + i, lsi_ops, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
...@@ -290,7 +290,7 @@ init_io7_irqs(struct io7 *io7, ...@@ -290,7 +290,7 @@ init_io7_irqs(struct io7 *io7,
/* Set up the msi irqs. */ /* Set up the msi irqs. */
for (i = 128; i < (128 + 512); ++i) { for (i = 128; i < (128 + 512); ++i) {
set_irq_chip_and_handler(base + i, msi_ops, handle_level_irq); irq_set_chip_and_handler(base + i, msi_ops, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
...@@ -308,8 +308,8 @@ marvel_init_irq(void) ...@@ -308,8 +308,8 @@ marvel_init_irq(void)
/* Reserve the legacy irqs. */ /* Reserve the legacy irqs. */
for (i = 0; i < 16; ++i) { for (i = 0; i < 16; ++i) {
set_irq_chip_and_handler(i, &marvel_legacy_irq_type, irq_set_chip_and_handler(i, &marvel_legacy_irq_type,
handle_level_irq); handle_level_irq);
} }
/* Init the io7 irqs. */ /* Init the io7 irqs. */
......
...@@ -98,7 +98,8 @@ mikasa_init_irq(void) ...@@ -98,7 +98,8 @@ mikasa_init_irq(void)
mikasa_update_irq_hw(0); mikasa_update_irq_hw(0);
for (i = 16; i < 32; ++i) { for (i = 16; i < 32; ++i) {
set_irq_chip_and_handler(i, &mikasa_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &mikasa_irq_type,
handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
......
...@@ -127,7 +127,8 @@ noritake_init_irq(void) ...@@ -127,7 +127,8 @@ noritake_init_irq(void)
outw(0, 0x54c); outw(0, 0x54c);
for (i = 16; i < 48; ++i) { for (i = 16; i < 48; ++i) {
set_irq_chip_and_handler(i, &noritake_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &noritake_irq_type,
handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
......
...@@ -180,7 +180,8 @@ rawhide_init_irq(void) ...@@ -180,7 +180,8 @@ rawhide_init_irq(void)
} }
for (i = 16; i < 128; ++i) { for (i = 16; i < 128; ++i) {
set_irq_chip_and_handler(i, &rawhide_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &rawhide_irq_type,
handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
......
...@@ -99,7 +99,7 @@ rx164_init_irq(void) ...@@ -99,7 +99,7 @@ rx164_init_irq(void)
rx164_update_irq_hw(0); rx164_update_irq_hw(0);
for (i = 16; i < 40; ++i) { for (i = 16; i < 40; ++i) {
set_irq_chip_and_handler(i, &rx164_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &rx164_irq_type, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
......
...@@ -518,8 +518,8 @@ sable_lynx_init_irq(int nr_of_irqs) ...@@ -518,8 +518,8 @@ sable_lynx_init_irq(int nr_of_irqs)
long i; long i;
for (i = 0; i < nr_of_irqs; ++i) { for (i = 0; i < nr_of_irqs; ++i) {
set_irq_chip_and_handler(i, &sable_lynx_irq_type, irq_set_chip_and_handler(i, &sable_lynx_irq_type,
handle_level_irq); handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
......
...@@ -138,7 +138,8 @@ takara_init_irq(void) ...@@ -138,7 +138,8 @@ takara_init_irq(void)
takara_update_irq_hw(i, -1); takara_update_irq_hw(i, -1);
for (i = 16; i < 128; ++i) { for (i = 16; i < 128; ++i) {
set_irq_chip_and_handler(i, &takara_irq_type, handle_level_irq); irq_set_chip_and_handler(i, &takara_irq_type,
handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
......
...@@ -179,7 +179,7 @@ init_titan_irqs(struct irq_chip * ops, int imin, int imax) ...@@ -179,7 +179,7 @@ init_titan_irqs(struct irq_chip * ops, int imin, int imax)
{ {
long i; long i;
for (i = imin; i <= imax; ++i) { for (i = imin; i <= imax; ++i) {
set_irq_chip_and_handler(i, ops, handle_level_irq); irq_set_chip_and_handler(i, ops, handle_level_irq);
irq_set_status_flags(i, IRQ_LEVEL); irq_set_status_flags(i, IRQ_LEVEL);
} }
} }
......
...@@ -183,17 +183,17 @@ wildfire_init_irq_per_pca(int qbbno, int pcano) ...@@ -183,17 +183,17 @@ wildfire_init_irq_per_pca(int qbbno, int pcano)
for (i = 0; i < 16; ++i) { for (i = 0; i < 16; ++i) {
if (i == 2) if (i == 2)
continue; continue;
set_irq_chip_and_handler(i+irq_bias, &wildfire_irq_type, irq_set_chip_and_handler(i + irq_bias, &wildfire_irq_type,
handle_level_irq); handle_level_irq);
irq_set_status_flags(i + irq_bias, IRQ_LEVEL); irq_set_status_flags(i + irq_bias, IRQ_LEVEL);
} }
set_irq_chip_and_handler(36+irq_bias, &wildfire_irq_type, irq_set_chip_and_handler(36 + irq_bias, &wildfire_irq_type,
handle_level_irq); handle_level_irq);
irq_set_status_flags(36 + irq_bias, IRQ_LEVEL); irq_set_status_flags(36 + irq_bias, IRQ_LEVEL);
for (i = 40; i < 64; ++i) { for (i = 40; i < 64; ++i) {
set_irq_chip_and_handler(i+irq_bias, &wildfire_irq_type, irq_set_chip_and_handler(i + irq_bias, &wildfire_irq_type,
handle_level_irq); handle_level_irq);
irq_set_status_flags(i + irq_bias, IRQ_LEVEL); irq_set_status_flags(i + irq_bias, IRQ_LEVEL);
} }
......
...@@ -28,6 +28,7 @@ config ARM ...@@ -28,6 +28,7 @@ config ARM
select HAVE_C_RECORDMCOUNT select HAVE_C_RECORDMCOUNT
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_SPARSE_IRQ select HAVE_SPARSE_IRQ
select GENERIC_IRQ_SHOW
help help
The ARM series is a line of low-power-consumption RISC chip designs The ARM series is a line of low-power-consumption RISC chip designs
licensed by ARM Ltd and targeted at embedded applications and licensed by ARM Ltd and targeted at embedded applications and
......
...@@ -213,8 +213,8 @@ static int gic_set_wake(struct irq_data *d, unsigned int on) ...@@ -213,8 +213,8 @@ static int gic_set_wake(struct irq_data *d, unsigned int on)
static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
{ {
struct gic_chip_data *chip_data = get_irq_data(irq); struct gic_chip_data *chip_data = irq_get_handler_data(irq);
struct irq_chip *chip = get_irq_chip(irq); struct irq_chip *chip = irq_get_chip(irq);
unsigned int cascade_irq, gic_irq; unsigned int cascade_irq, gic_irq;
unsigned long status; unsigned long status;
...@@ -257,9 +257,9 @@ void __init gic_cascade_irq(unsigned int gic_nr, unsigned int irq) ...@@ -257,9 +257,9 @@ void __init gic_cascade_irq(unsigned int gic_nr, unsigned int irq)
{ {
if (gic_nr >= MAX_GIC_NR) if (gic_nr >= MAX_GIC_NR)
BUG(); BUG();
if (set_irq_data(irq, &gic_data[gic_nr]) != 0) if (irq_set_handler_data(irq, &gic_data[gic_nr]) != 0)
BUG(); BUG();
set_irq_chained_handler(irq, gic_handle_cascade_irq); irq_set_chained_handler(irq, gic_handle_cascade_irq);
} }
static void __init gic_dist_init(struct gic_chip_data *gic, static void __init gic_dist_init(struct gic_chip_data *gic,
...@@ -319,9 +319,8 @@ static void __init gic_dist_init(struct gic_chip_data *gic, ...@@ -319,9 +319,8 @@ static void __init gic_dist_init(struct gic_chip_data *gic,
* Setup the Linux IRQ subsystem. * Setup the Linux IRQ subsystem.
*/ */
for (i = irq_start; i < irq_limit; i++) { for (i = irq_start; i < irq_limit; i++) {
set_irq_chip(i, &gic_chip); irq_set_chip_and_handler(i, &gic_chip, handle_level_irq);
set_irq_chip_data(i, gic); irq_set_chip_data(i, gic);
set_irq_handler(i, handle_level_irq);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
} }
...@@ -382,7 +381,7 @@ void __cpuinit gic_enable_ppi(unsigned int irq) ...@@ -382,7 +381,7 @@ void __cpuinit gic_enable_ppi(unsigned int irq)
unsigned long flags; unsigned long flags;
local_irq_save(flags); local_irq_save(flags);
irq_to_desc(irq)->status |= IRQ_NOPROBE; irq_set_status_flags(irq, IRQ_NOPROBE);
gic_unmask_irq(irq_get_irq_data(irq)); gic_unmask_irq(irq_get_irq_data(irq));
local_irq_restore(flags); local_irq_restore(flags);
} }
......
...@@ -88,8 +88,8 @@ void it8152_init_irq(void) ...@@ -88,8 +88,8 @@ void it8152_init_irq(void)
__raw_writel((0), IT8152_INTC_LDCNIRR); __raw_writel((0), IT8152_INTC_LDCNIRR);
for (irq = IT8152_IRQ(0); irq <= IT8152_LAST_IRQ; irq++) { for (irq = IT8152_IRQ(0); irq <= IT8152_LAST_IRQ; irq++) {
set_irq_chip(irq, &it8152_irq_chip); irq_set_chip_and_handler(irq, &it8152_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
} }
......
...@@ -140,7 +140,7 @@ static struct locomo_dev_info locomo_devices[] = { ...@@ -140,7 +140,7 @@ static struct locomo_dev_info locomo_devices[] = {
static void locomo_handler(unsigned int irq, struct irq_desc *desc) static void locomo_handler(unsigned int irq, struct irq_desc *desc)
{ {
struct locomo *lchip = get_irq_chip_data(irq); struct locomo *lchip = irq_get_chip_data(irq);
int req, i; int req, i;
/* Acknowledge the parent IRQ */ /* Acknowledge the parent IRQ */
...@@ -197,15 +197,14 @@ static void locomo_setup_irq(struct locomo *lchip) ...@@ -197,15 +197,14 @@ static void locomo_setup_irq(struct locomo *lchip)
/* /*
* Install handler for IRQ_LOCOMO_HW. * Install handler for IRQ_LOCOMO_HW.
*/ */
set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING); irq_set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING);
set_irq_chip_data(lchip->irq, lchip); irq_set_chip_data(lchip->irq, lchip);
set_irq_chained_handler(lchip->irq, locomo_handler); irq_set_chained_handler(lchip->irq, locomo_handler);
/* Install handlers for IRQ_LOCOMO_* */ /* Install handlers for IRQ_LOCOMO_* */
for ( ; irq <= lchip->irq_base + 3; irq++) { for ( ; irq <= lchip->irq_base + 3; irq++) {
set_irq_chip(irq, &locomo_chip); irq_set_chip_and_handler(irq, &locomo_chip, handle_level_irq);
set_irq_chip_data(irq, lchip); irq_set_chip_data(irq, lchip);
set_irq_handler(irq, handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
} }
...@@ -476,8 +475,8 @@ static void __locomo_remove(struct locomo *lchip) ...@@ -476,8 +475,8 @@ static void __locomo_remove(struct locomo *lchip)
device_for_each_child(lchip->dev, NULL, locomo_remove_child); device_for_each_child(lchip->dev, NULL, locomo_remove_child);
if (lchip->irq != NO_IRQ) { if (lchip->irq != NO_IRQ) {
set_irq_chained_handler(lchip->irq, NULL); irq_set_chained_handler(lchip->irq, NULL);
set_irq_data(lchip->irq, NULL); irq_set_handler_data(lchip->irq, NULL);
} }
iounmap(lchip->base); iounmap(lchip->base);
......
...@@ -202,7 +202,7 @@ static void ...@@ -202,7 +202,7 @@ static void
sa1111_irq_handler(unsigned int irq, struct irq_desc *desc) sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
{ {
unsigned int stat0, stat1, i; unsigned int stat0, stat1, i;
struct sa1111 *sachip = get_irq_data(irq); struct sa1111 *sachip = irq_get_handler_data(irq);
void __iomem *mapbase = sachip->base + SA1111_INTC; void __iomem *mapbase = sachip->base + SA1111_INTC;
stat0 = sa1111_readl(mapbase + SA1111_INTSTATCLR0); stat0 = sa1111_readl(mapbase + SA1111_INTSTATCLR0);
...@@ -472,25 +472,25 @@ static void sa1111_setup_irq(struct sa1111 *sachip) ...@@ -472,25 +472,25 @@ static void sa1111_setup_irq(struct sa1111 *sachip)
sa1111_writel(~0, irqbase + SA1111_INTSTATCLR1); sa1111_writel(~0, irqbase + SA1111_INTSTATCLR1);
for (irq = IRQ_GPAIN0; irq <= SSPROR; irq++) { for (irq = IRQ_GPAIN0; irq <= SSPROR; irq++) {
set_irq_chip(irq, &sa1111_low_chip); irq_set_chip_and_handler(irq, &sa1111_low_chip,
set_irq_chip_data(irq, sachip); handle_edge_irq);
set_irq_handler(irq, handle_edge_irq); irq_set_chip_data(irq, sachip);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
for (irq = AUDXMTDMADONEA; irq <= IRQ_S1_BVD1_STSCHG; irq++) { for (irq = AUDXMTDMADONEA; irq <= IRQ_S1_BVD1_STSCHG; irq++) {
set_irq_chip(irq, &sa1111_high_chip); irq_set_chip_and_handler(irq, &sa1111_high_chip,
set_irq_chip_data(irq, sachip); handle_edge_irq);
set_irq_handler(irq, handle_edge_irq); irq_set_chip_data(irq, sachip);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
/* /*
* Register SA1111 interrupt * Register SA1111 interrupt
*/ */
set_irq_type(sachip->irq, IRQ_TYPE_EDGE_RISING); irq_set_irq_type(sachip->irq, IRQ_TYPE_EDGE_RISING);
set_irq_data(sachip->irq, sachip); irq_set_handler_data(sachip->irq, sachip);
set_irq_chained_handler(sachip->irq, sa1111_irq_handler); irq_set_chained_handler(sachip->irq, sa1111_irq_handler);
} }
/* /*
...@@ -815,8 +815,8 @@ static void __sa1111_remove(struct sa1111 *sachip) ...@@ -815,8 +815,8 @@ static void __sa1111_remove(struct sa1111 *sachip)
clk_disable(sachip->clk); clk_disable(sachip->clk);
if (sachip->irq != NO_IRQ) { if (sachip->irq != NO_IRQ) {
set_irq_chained_handler(sachip->irq, NULL); irq_set_chained_handler(sachip->irq, NULL);
set_irq_data(sachip->irq, NULL); irq_set_handler_data(sachip->irq, NULL);
release_mem_region(sachip->phys + SA1111_INTC, 512); release_mem_region(sachip->phys + SA1111_INTC, 512);
} }
......
...@@ -305,9 +305,9 @@ static void __init vic_set_irq_sources(void __iomem *base, ...@@ -305,9 +305,9 @@ static void __init vic_set_irq_sources(void __iomem *base,
if (vic_sources & (1 << i)) { if (vic_sources & (1 << i)) {
unsigned int irq = irq_start + i; unsigned int irq = irq_start + i;
set_irq_chip(irq, &vic_chip); irq_set_chip_and_handler(irq, &vic_chip,
set_irq_chip_data(irq, base); handle_level_irq);
set_irq_handler(irq, handle_level_irq); irq_set_chip_data(irq, base);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
} }
......
...@@ -10,14 +10,6 @@ static inline void ack_bad_irq(int irq) ...@@ -10,14 +10,6 @@ static inline void ack_bad_irq(int irq)
irq_err_count++; irq_err_count++;
} }
/*
* Obsolete inline function for calling irq descriptor handlers.
*/
static inline void desc_handle_irq(unsigned int irq, struct irq_desc *desc)
{
desc->handle_irq(irq, desc);
}
void set_irq_flags(unsigned int irq, unsigned int flags); void set_irq_flags(unsigned int irq, unsigned int flags);
#define IRQF_VALID (1 << 0) #define IRQF_VALID (1 << 0)
......
...@@ -158,31 +158,6 @@ static void __devinit pci_fixup_dec21285(struct pci_dev *dev) ...@@ -158,31 +158,6 @@ static void __devinit pci_fixup_dec21285(struct pci_dev *dev)
} }
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, pci_fixup_dec21285); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, pci_fixup_dec21285);
/*
* Same as above. The PrPMC800 carrier board for the PrPMC1100
* card maps the host-bridge @ 00:01:00 for some reason and it
* ends up getting scanned. Note that we only want to do this
* fixup when we find the IXP4xx on a PrPMC system, which is why
* we check the machine type. We could be running on a board
* with an IXP4xx target device and we don't want to kill the
* resources in that case.
*/
static void __devinit pci_fixup_prpmc1100(struct pci_dev *dev)
{
int i;
if (machine_is_prpmc1100()) {
dev->class &= 0xff;
dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
for (i = 0; i < PCI_NUM_RESOURCES; i++) {
dev->resource[i].start = 0;
dev->resource[i].end = 0;
dev->resource[i].flags = 0;
}
}
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IXP4XX, pci_fixup_prpmc1100);
/* /*
* PCI IDE controllers use non-standard I/O port decoding, respect it. * PCI IDE controllers use non-standard I/O port decoding, respect it.
*/ */
......
...@@ -1043,8 +1043,8 @@ ecard_probe(int slot, card_type_t type) ...@@ -1043,8 +1043,8 @@ ecard_probe(int slot, card_type_t type)
*/ */
if (slot < 8) { if (slot < 8) {
ec->irq = 32 + slot; ec->irq = 32 + slot;
set_irq_chip(ec->irq, &ecard_chip); irq_set_chip_and_handler(ec->irq, &ecard_chip,
set_irq_handler(ec->irq, handle_level_irq); handle_level_irq);
set_irq_flags(ec->irq, IRQF_VALID); set_irq_flags(ec->irq, IRQF_VALID);
} }
...@@ -1103,7 +1103,7 @@ static int __init ecard_init(void) ...@@ -1103,7 +1103,7 @@ static int __init ecard_init(void)
irqhw = ecard_probeirqhw(); irqhw = ecard_probeirqhw();
set_irq_chained_handler(IRQ_EXPANSIONCARD, irq_set_chained_handler(IRQ_EXPANSIONCARD,
irqhw ? ecard_irqexp_handler : ecard_irq_handler); irqhw ? ecard_irqexp_handler : ecard_irq_handler);
ecard_proc_init(); ecard_proc_init();
......
...@@ -51,63 +51,18 @@ ...@@ -51,63 +51,18 @@
unsigned long irq_err_count; unsigned long irq_err_count;
int show_interrupts(struct seq_file *p, void *v) int arch_show_interrupts(struct seq_file *p, int prec)
{ {
int i = *(loff_t *) v, cpu;
struct irq_desc *desc;
struct irqaction * action;
unsigned long flags;
int prec, n;
for (prec = 3, n = 1000; prec < 10 && n <= nr_irqs; prec++)
n *= 10;
#ifdef CONFIG_SMP
if (prec < 4)
prec = 4;
#endif
if (i == 0) {
char cpuname[12];
seq_printf(p, "%*s ", prec, "");
for_each_present_cpu(cpu) {
sprintf(cpuname, "CPU%d", cpu);
seq_printf(p, " %10s", cpuname);
}
seq_putc(p, '\n');
}
if (i < nr_irqs) {
desc = irq_to_desc(i);
raw_spin_lock_irqsave(&desc->lock, flags);
action = desc->action;
if (!action)
goto unlock;
seq_printf(p, "%*d: ", prec, i);
for_each_present_cpu(cpu)
seq_printf(p, "%10u ", kstat_irqs_cpu(i, cpu));
seq_printf(p, " %10s", desc->irq_data.chip->name ? : "-");
seq_printf(p, " %s", action->name);
for (action = action->next; action; action = action->next)
seq_printf(p, ", %s", action->name);
seq_putc(p, '\n');
unlock:
raw_spin_unlock_irqrestore(&desc->lock, flags);
} else if (i == nr_irqs) {
#ifdef CONFIG_FIQ #ifdef CONFIG_FIQ
show_fiq_list(p, prec); show_fiq_list(p, prec);
#endif #endif
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
show_ipi_list(p, prec); show_ipi_list(p, prec);
#endif #endif
#ifdef CONFIG_LOCAL_TIMERS #ifdef CONFIG_LOCAL_TIMERS
show_local_irqs(p, prec); show_local_irqs(p, prec);
#endif #endif
seq_printf(p, "%*s: %10lu\n", prec, "Err", irq_err_count); seq_printf(p, "%*s: %10lu\n", prec, "Err", irq_err_count);
}
return 0; return 0;
} }
...@@ -144,24 +99,21 @@ asm_do_IRQ(unsigned int irq, struct pt_regs *regs) ...@@ -144,24 +99,21 @@ asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
void set_irq_flags(unsigned int irq, unsigned int iflags) void set_irq_flags(unsigned int irq, unsigned int iflags)
{ {
struct irq_desc *desc; unsigned long clr = 0, set = IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN;
unsigned long flags;
if (irq >= nr_irqs) { if (irq >= nr_irqs) {
printk(KERN_ERR "Trying to set irq flags for IRQ%d\n", irq); printk(KERN_ERR "Trying to set irq flags for IRQ%d\n", irq);
return; return;
} }
desc = irq_to_desc(irq);
raw_spin_lock_irqsave(&desc->lock, flags);
desc->status |= IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN;
if (iflags & IRQF_VALID) if (iflags & IRQF_VALID)
desc->status &= ~IRQ_NOREQUEST; clr |= IRQ_NOREQUEST;
if (iflags & IRQF_PROBE) if (iflags & IRQF_PROBE)
desc->status &= ~IRQ_NOPROBE; clr |= IRQ_NOPROBE;
if (!(iflags & IRQF_NOAUTOEN)) if (!(iflags & IRQF_NOAUTOEN))
desc->status &= ~IRQ_NOAUTOEN; clr |= IRQ_NOAUTOEN;
raw_spin_unlock_irqrestore(&desc->lock, flags); /* Order is clear bits in "clr" then set bits in "set" */
irq_modify_status(irq, clr, set & ~clr);
} }
void __init init_IRQ(void) void __init init_IRQ(void)
......
...@@ -72,7 +72,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) ...@@ -72,7 +72,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data)
return; return;
if (cpu_is_at91cap9_revB()) if (cpu_is_at91cap9_revB())
set_irq_type(AT91CAP9_ID_UHP, IRQ_TYPE_LEVEL_HIGH); irq_set_irq_type(AT91CAP9_ID_UHP, IRQ_TYPE_LEVEL_HIGH);
/* Enable VBus control for UHP ports */ /* Enable VBus control for UHP ports */
for (i = 0; i < data->ports; i++) { for (i = 0; i < data->ports; i++) {
...@@ -157,7 +157,7 @@ static struct platform_device at91_usba_udc_device = { ...@@ -157,7 +157,7 @@ static struct platform_device at91_usba_udc_device = {
void __init at91_add_device_usba(struct usba_platform_data *data) void __init at91_add_device_usba(struct usba_platform_data *data)
{ {
if (cpu_is_at91cap9_revB()) { if (cpu_is_at91cap9_revB()) {
set_irq_type(AT91CAP9_ID_UDPHS, IRQ_TYPE_LEVEL_HIGH); irq_set_irq_type(AT91CAP9_ID_UDPHS, IRQ_TYPE_LEVEL_HIGH);
at91_sys_write(AT91_MATRIX_UDPHS, AT91_MATRIX_SELECT_UDPHS | at91_sys_write(AT91_MATRIX_UDPHS, AT91_MATRIX_SELECT_UDPHS |
AT91_MATRIX_UDPHS_BYPASS_LOCK); AT91_MATRIX_UDPHS_BYPASS_LOCK);
} }
...@@ -861,7 +861,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) ...@@ -861,7 +861,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
return; return;
if (cpu_is_at91cap9_revB()) if (cpu_is_at91cap9_revB())
set_irq_type(AT91CAP9_ID_LCDC, IRQ_TYPE_LEVEL_HIGH); irq_set_irq_type(AT91CAP9_ID_LCDC, IRQ_TYPE_LEVEL_HIGH);
at91_set_A_periph(AT91_PIN_PC1, 0); /* LCDHSYNC */ at91_set_A_periph(AT91_PIN_PC1, 0); /* LCDHSYNC */
at91_set_A_periph(AT91_PIN_PC2, 0); /* LCDDOTCK */ at91_set_A_periph(AT91_PIN_PC2, 0); /* LCDDOTCK */
......
...@@ -287,7 +287,7 @@ static int gpio_irq_set_wake(struct irq_data *d, unsigned state) ...@@ -287,7 +287,7 @@ static int gpio_irq_set_wake(struct irq_data *d, unsigned state)
else else
wakeups[bank] &= ~mask; wakeups[bank] &= ~mask;
set_irq_wake(gpio_chip[bank].bank->id, state); irq_set_irq_wake(gpio_chip[bank].bank->id, state);
return 0; return 0;
} }
...@@ -375,6 +375,7 @@ static int gpio_irq_type(struct irq_data *d, unsigned type) ...@@ -375,6 +375,7 @@ static int gpio_irq_type(struct irq_data *d, unsigned type)
static struct irq_chip gpio_irqchip = { static struct irq_chip gpio_irqchip = {
.name = "GPIO", .name = "GPIO",
.irq_disable = gpio_irq_mask,
.irq_mask = gpio_irq_mask, .irq_mask = gpio_irq_mask,
.irq_unmask = gpio_irq_unmask, .irq_unmask = gpio_irq_unmask,
.irq_set_type = gpio_irq_type, .irq_set_type = gpio_irq_type,
...@@ -384,16 +385,14 @@ static struct irq_chip gpio_irqchip = { ...@@ -384,16 +385,14 @@ static struct irq_chip gpio_irqchip = {
static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
{ {
unsigned pin; unsigned pin;
struct irq_desc *gpio; struct irq_data *idata = irq_desc_get_irq_data(desc);
struct at91_gpio_chip *at91_gpio; struct irq_chip *chip = irq_data_get_irq_chip(idata);
void __iomem *pio; struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(idata);
void __iomem *pio = at91_gpio->regbase;
u32 isr; u32 isr;
at91_gpio = get_irq_chip_data(irq);
pio = at91_gpio->regbase;
/* temporarily mask (level sensitive) parent IRQ */ /* temporarily mask (level sensitive) parent IRQ */
desc->irq_data.chip->irq_ack(&desc->irq_data); chip->irq_ack(idata);
for (;;) { for (;;) {
/* Reading ISR acks pending (edge triggered) GPIO interrupts. /* Reading ISR acks pending (edge triggered) GPIO interrupts.
* When there none are pending, we're finished unless we need * When there none are pending, we're finished unless we need
...@@ -409,27 +408,15 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) ...@@ -409,27 +408,15 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
} }
pin = at91_gpio->chip.base; pin = at91_gpio->chip.base;
gpio = &irq_desc[pin];
while (isr) { while (isr) {
if (isr & 1) { if (isr & 1)
if (unlikely(gpio->depth)) { generic_handle_irq(pin);
/*
* The core ARM interrupt handler lazily disables IRQs so
* another IRQ must be generated before it actually gets
* here to be disabled on the GPIO controller.
*/
gpio_irq_mask(irq_get_irq_data(pin));
}
else
generic_handle_irq(pin);
}
pin++; pin++;
gpio++;
isr >>= 1; isr >>= 1;
} }
} }
desc->irq_data.chip->irq_unmask(&desc->irq_data); chip->irq_unmask(idata);
/* now it may re-trigger */ /* now it may re-trigger */
} }
...@@ -518,14 +505,14 @@ void __init at91_gpio_irq_setup(void) ...@@ -518,14 +505,14 @@ void __init at91_gpio_irq_setup(void)
__raw_writel(~0, this->regbase + PIO_IDR); __raw_writel(~0, this->regbase + PIO_IDR);
for (i = 0, pin = this->chip.base; i < 32; i++, pin++) { for (i = 0, pin = this->chip.base; i < 32; i++, pin++) {
lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class); irq_set_lockdep_class(pin, &gpio_lock_class);
/* /*
* Can use the "simple" and not "edge" handler since it's * Can use the "simple" and not "edge" handler since it's
* shorter, and the AIC handles interrupts sanely. * shorter, and the AIC handles interrupts sanely.
*/ */
set_irq_chip(pin, &gpio_irqchip); irq_set_chip_and_handler(pin, &gpio_irqchip,
set_irq_handler(pin, handle_simple_irq); handle_simple_irq);
set_irq_flags(pin, IRQF_VALID); set_irq_flags(pin, IRQF_VALID);
} }
...@@ -536,8 +523,8 @@ void __init at91_gpio_irq_setup(void) ...@@ -536,8 +523,8 @@ void __init at91_gpio_irq_setup(void)
if (prev && prev->next == this) if (prev && prev->next == this)
continue; continue;
set_irq_chip_data(id, this); irq_set_chip_data(id, this);
set_irq_chained_handler(id, gpio_irq_handler); irq_set_chained_handler(id, gpio_irq_handler);
} }
pr_info("AT91: %d gpio irqs in %d banks\n", pin - PIN_BASE, gpio_banks); pr_info("AT91: %d gpio irqs in %d banks\n", pin - PIN_BASE, gpio_banks);
} }
......
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
/* /*
* System Peripherals (offset from AT91_BASE_SYS) * System Peripherals (offset from AT91_BASE_SYS)
*/ */
#define AT91_SDRAMC (0xffffea00 - AT91_BASE_SYS) #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)
#define AT91_SMC (0xffffec00 - AT91_BASE_SYS) #define AT91_SMC (0xffffec00 - AT91_BASE_SYS)
#define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)
#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) #define AT91_AIC (0xfffff000 - AT91_BASE_SYS)
......
...@@ -143,8 +143,7 @@ void __init at91_aic_init(unsigned int priority[NR_AIC_IRQS]) ...@@ -143,8 +143,7 @@ void __init at91_aic_init(unsigned int priority[NR_AIC_IRQS])
/* Active Low interrupt, with the specified priority */ /* Active Low interrupt, with the specified priority */
at91_sys_write(AT91_AIC_SMR(i), AT91_AIC_SRCTYPE_LOW | priority[i]); at91_sys_write(AT91_AIC_SMR(i), AT91_AIC_SRCTYPE_LOW | priority[i]);
set_irq_chip(i, &at91_aic_chip); irq_set_chip_and_handler(i, &at91_aic_chip, handle_level_irq);
set_irq_handler(i, handle_level_irq);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
/* Perform 8 End Of Interrupt Command to make sure AIC will not Lock out nIRQ */ /* Perform 8 End Of Interrupt Command to make sure AIC will not Lock out nIRQ */
......
...@@ -93,11 +93,11 @@ static void vic_init(void __iomem *base, struct irq_chip *chip, ...@@ -93,11 +93,11 @@ static void vic_init(void __iomem *base, struct irq_chip *chip,
unsigned int i; unsigned int i;
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
unsigned int irq = irq_start + i; unsigned int irq = irq_start + i;
set_irq_chip(irq, chip); irq_set_chip(irq, chip);
set_irq_chip_data(irq, base); irq_set_chip_data(irq, base);
if (vic_sources & (1 << i)) { if (vic_sources & (1 << i)) {
set_irq_handler(irq, handle_level_irq); irq_set_handler(irq, handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
} }
...@@ -119,9 +119,9 @@ void __init bcmring_init_irq(void) ...@@ -119,9 +119,9 @@ void __init bcmring_init_irq(void)
/* special cases */ /* special cases */
if (INTCHW_INTC1_GPIO0 & IRQ_INTC1_VALID_MASK) { if (INTCHW_INTC1_GPIO0 & IRQ_INTC1_VALID_MASK) {
set_irq_handler(IRQ_GPIO0, handle_simple_irq); irq_set_handler(IRQ_GPIO0, handle_simple_irq);
} }
if (INTCHW_INTC1_GPIO1 & IRQ_INTC1_VALID_MASK) { if (INTCHW_INTC1_GPIO1 & IRQ_INTC1_VALID_MASK) {
set_irq_handler(IRQ_GPIO1, handle_simple_irq); irq_set_handler(IRQ_GPIO1, handle_simple_irq);
} }
} }
...@@ -112,13 +112,13 @@ void __init clps711x_init_irq(void) ...@@ -112,13 +112,13 @@ void __init clps711x_init_irq(void)
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
if (INT1_IRQS & (1 << i)) { if (INT1_IRQS & (1 << i)) {
set_irq_handler(i, handle_level_irq); irq_set_chip_and_handler(i, &int1_chip,
set_irq_chip(i, &int1_chip); handle_level_irq);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
} }
if (INT2_IRQS & (1 << i)) { if (INT2_IRQS & (1 << i)) {
set_irq_handler(i, handle_level_irq); irq_set_chip_and_handler(i, &int2_chip,
set_irq_chip(i, &int2_chip); handle_level_irq);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
} }
} }
......
...@@ -167,9 +167,9 @@ void __init cp_intc_init(void) ...@@ -167,9 +167,9 @@ void __init cp_intc_init(void)
/* Set up genirq dispatching for cp_intc */ /* Set up genirq dispatching for cp_intc */
for (i = 0; i < num_irq; i++) { for (i = 0; i < num_irq; i++) {
set_irq_chip(i, &cp_intc_irq_chip); irq_set_chip(i, &cp_intc_irq_chip);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
set_irq_handler(i, handle_edge_irq); irq_set_handler(i, handle_edge_irq);
} }
/* Enable global interrupt */ /* Enable global interrupt */
......
...@@ -62,7 +62,7 @@ static inline struct davinci_gpio_regs __iomem *irq2regs(int irq) ...@@ -62,7 +62,7 @@ static inline struct davinci_gpio_regs __iomem *irq2regs(int irq)
{ {
struct davinci_gpio_regs __iomem *g; struct davinci_gpio_regs __iomem *g;
g = (__force struct davinci_gpio_regs __iomem *)get_irq_chip_data(irq); g = (__force struct davinci_gpio_regs __iomem *)irq_get_chip_data(irq);
return g; return g;
} }
...@@ -208,7 +208,7 @@ pure_initcall(davinci_gpio_setup); ...@@ -208,7 +208,7 @@ pure_initcall(davinci_gpio_setup);
static void gpio_irq_disable(struct irq_data *d) static void gpio_irq_disable(struct irq_data *d)
{ {
struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); struct davinci_gpio_regs __iomem *g = irq2regs(d->irq);
u32 mask = (u32) irq_data_get_irq_data(d); u32 mask = (u32) irq_data_get_irq_handler_data(d);
__raw_writel(mask, &g->clr_falling); __raw_writel(mask, &g->clr_falling);
__raw_writel(mask, &g->clr_rising); __raw_writel(mask, &g->clr_rising);
...@@ -217,8 +217,8 @@ static void gpio_irq_disable(struct irq_data *d) ...@@ -217,8 +217,8 @@ static void gpio_irq_disable(struct irq_data *d)
static void gpio_irq_enable(struct irq_data *d) static void gpio_irq_enable(struct irq_data *d)
{ {
struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); struct davinci_gpio_regs __iomem *g = irq2regs(d->irq);
u32 mask = (u32) irq_data_get_irq_data(d); u32 mask = (u32) irq_data_get_irq_handler_data(d);
unsigned status = irq_desc[d->irq].status; unsigned status = irqd_get_trigger_type(d);
status &= IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING; status &= IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING;
if (!status) if (!status)
...@@ -233,21 +233,11 @@ static void gpio_irq_enable(struct irq_data *d) ...@@ -233,21 +233,11 @@ static void gpio_irq_enable(struct irq_data *d)
static int gpio_irq_type(struct irq_data *d, unsigned trigger) static int gpio_irq_type(struct irq_data *d, unsigned trigger)
{ {
struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); struct davinci_gpio_regs __iomem *g = irq2regs(d->irq);
u32 mask = (u32) irq_data_get_irq_data(d); u32 mask = (u32) irq_data_get_irq_handler_data(d);
if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
return -EINVAL; return -EINVAL;
irq_desc[d->irq].status &= ~IRQ_TYPE_SENSE_MASK;
irq_desc[d->irq].status |= trigger;
/* don't enable the IRQ if it's currently disabled */
if (irq_desc[d->irq].depth == 0) {
__raw_writel(mask, (trigger & IRQ_TYPE_EDGE_FALLING)
? &g->set_falling : &g->clr_falling);
__raw_writel(mask, (trigger & IRQ_TYPE_EDGE_RISING)
? &g->set_rising : &g->clr_rising);
}
return 0; return 0;
} }
...@@ -256,6 +246,7 @@ static struct irq_chip gpio_irqchip = { ...@@ -256,6 +246,7 @@ static struct irq_chip gpio_irqchip = {
.irq_enable = gpio_irq_enable, .irq_enable = gpio_irq_enable,
.irq_disable = gpio_irq_disable, .irq_disable = gpio_irq_disable,
.irq_set_type = gpio_irq_type, .irq_set_type = gpio_irq_type,
.flags = IRQCHIP_SET_TYPE_MASKED,
}; };
static void static void
...@@ -285,7 +276,7 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc) ...@@ -285,7 +276,7 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc)
status >>= 16; status >>= 16;
/* now demux them to the right lowlevel handler */ /* now demux them to the right lowlevel handler */
n = (int)get_irq_data(irq); n = (int)irq_get_handler_data(irq);
while (status) { while (status) {
res = ffs(status); res = ffs(status);
n += res; n += res;
...@@ -323,7 +314,7 @@ static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset) ...@@ -323,7 +314,7 @@ static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset)
static int gpio_irq_type_unbanked(struct irq_data *d, unsigned trigger) static int gpio_irq_type_unbanked(struct irq_data *d, unsigned trigger)
{ {
struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); struct davinci_gpio_regs __iomem *g = irq2regs(d->irq);
u32 mask = (u32) irq_data_get_irq_data(d); u32 mask = (u32) irq_data_get_irq_handler_data(d);
if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
return -EINVAL; return -EINVAL;
...@@ -395,7 +386,7 @@ static int __init davinci_gpio_irq_setup(void) ...@@ -395,7 +386,7 @@ static int __init davinci_gpio_irq_setup(void)
/* AINTC handles mask/unmask; GPIO handles triggering */ /* AINTC handles mask/unmask; GPIO handles triggering */
irq = bank_irq; irq = bank_irq;
gpio_irqchip_unbanked = *get_irq_desc_chip(irq_to_desc(irq)); gpio_irqchip_unbanked = *irq_get_chip(irq);
gpio_irqchip_unbanked.name = "GPIO-AINTC"; gpio_irqchip_unbanked.name = "GPIO-AINTC";
gpio_irqchip_unbanked.irq_set_type = gpio_irq_type_unbanked; gpio_irqchip_unbanked.irq_set_type = gpio_irq_type_unbanked;
...@@ -406,10 +397,10 @@ static int __init davinci_gpio_irq_setup(void) ...@@ -406,10 +397,10 @@ static int __init davinci_gpio_irq_setup(void)
/* set the direct IRQs up to use that irqchip */ /* set the direct IRQs up to use that irqchip */
for (gpio = 0; gpio < soc_info->gpio_unbanked; gpio++, irq++) { for (gpio = 0; gpio < soc_info->gpio_unbanked; gpio++, irq++) {
set_irq_chip(irq, &gpio_irqchip_unbanked); irq_set_chip(irq, &gpio_irqchip_unbanked);
set_irq_data(irq, (void *) __gpio_mask(gpio)); irq_set_handler_data(irq, (void *)__gpio_mask(gpio));
set_irq_chip_data(irq, (__force void *) g); irq_set_chip_data(irq, (__force void *)g);
irq_desc[irq].status |= IRQ_TYPE_EDGE_BOTH; irq_set_status_flags(irq, IRQ_TYPE_EDGE_BOTH);
} }
goto done; goto done;
...@@ -430,15 +421,15 @@ static int __init davinci_gpio_irq_setup(void) ...@@ -430,15 +421,15 @@ static int __init davinci_gpio_irq_setup(void)
__raw_writel(~0, &g->clr_rising); __raw_writel(~0, &g->clr_rising);
/* set up all irqs in this bank */ /* set up all irqs in this bank */
set_irq_chained_handler(bank_irq, gpio_irq_handler); irq_set_chained_handler(bank_irq, gpio_irq_handler);
set_irq_chip_data(bank_irq, (__force void *) g); irq_set_chip_data(bank_irq, (__force void *)g);
set_irq_data(bank_irq, (void *) irq); irq_set_handler_data(bank_irq, (void *)irq);
for (i = 0; i < 16 && gpio < ngpio; i++, irq++, gpio++) { for (i = 0; i < 16 && gpio < ngpio; i++, irq++, gpio++) {
set_irq_chip(irq, &gpio_irqchip); irq_set_chip(irq, &gpio_irqchip);
set_irq_chip_data(irq, (__force void *) g); irq_set_chip_data(irq, (__force void *)g);
set_irq_data(irq, (void *) __gpio_mask(gpio)); irq_set_handler_data(irq, (void *)__gpio_mask(gpio));
set_irq_handler(irq, handle_simple_irq); irq_set_handler(irq, handle_simple_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
......
...@@ -154,11 +154,11 @@ void __init davinci_irq_init(void) ...@@ -154,11 +154,11 @@ void __init davinci_irq_init(void)
/* set up genirq dispatch for ARM INTC */ /* set up genirq dispatch for ARM INTC */
for (i = 0; i < davinci_soc_info.intc_irq_num; i++) { for (i = 0; i < davinci_soc_info.intc_irq_num; i++) {
set_irq_chip(i, &davinci_irq_chip_0); irq_set_chip(i, &davinci_irq_chip_0);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
if (i != IRQ_TINT1_TINT34) if (i != IRQ_TINT1_TINT34)
set_irq_handler(i, handle_edge_irq); irq_set_handler(i, handle_edge_irq);
else else
set_irq_handler(i, handle_level_irq); irq_set_handler(i, handle_level_irq);
} }
} }
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
#define DOVE_MPP_GENERAL_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe803c) #define DOVE_MPP_GENERAL_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe803c)
#define DOVE_AU1_SPDIFO_GPIO_EN (1 << 1) #define DOVE_AU1_SPDIFO_GPIO_EN (1 << 1)
#define DOVE_NAND_GPIO_EN (1 << 0) #define DOVE_NAND_GPIO_EN (1 << 0)
#define DOVE_MPP_CTRL4_VIRT_BASE (DOVE_GPIO_VIRT_BASE + 0x40) #define DOVE_MPP_CTRL4_VIRT_BASE (DOVE_GPIO_LO_VIRT_BASE + 0x40)
#define DOVE_SPI_GPIO_SEL (1 << 5) #define DOVE_SPI_GPIO_SEL (1 << 5)
#define DOVE_UART1_GPIO_SEL (1 << 4) #define DOVE_UART1_GPIO_SEL (1 << 4)
#define DOVE_AU1_GPIO_SEL (1 << 3) #define DOVE_AU1_GPIO_SEL (1 << 3)
......
...@@ -86,8 +86,7 @@ static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc) ...@@ -86,8 +86,7 @@ static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
if (!(cause & (1 << irq))) if (!(cause & (1 << irq)))
continue; continue;
irq = pmu_to_irq(irq); irq = pmu_to_irq(irq);
desc = irq_desc + irq; generic_handle_irq(irq);
desc_handle_irq(irq, desc);
} }
} }
...@@ -103,14 +102,14 @@ void __init dove_init_irq(void) ...@@ -103,14 +102,14 @@ void __init dove_init_irq(void)
*/ */
orion_gpio_init(0, 32, DOVE_GPIO_LO_VIRT_BASE, 0, orion_gpio_init(0, 32, DOVE_GPIO_LO_VIRT_BASE, 0,
IRQ_DOVE_GPIO_START); IRQ_DOVE_GPIO_START);
set_irq_chained_handler(IRQ_DOVE_GPIO_0_7, gpio_irq_handler); irq_set_chained_handler(IRQ_DOVE_GPIO_0_7, gpio_irq_handler);
set_irq_chained_handler(IRQ_DOVE_GPIO_8_15, gpio_irq_handler); irq_set_chained_handler(IRQ_DOVE_GPIO_8_15, gpio_irq_handler);
set_irq_chained_handler(IRQ_DOVE_GPIO_16_23, gpio_irq_handler); irq_set_chained_handler(IRQ_DOVE_GPIO_16_23, gpio_irq_handler);
set_irq_chained_handler(IRQ_DOVE_GPIO_24_31, gpio_irq_handler); irq_set_chained_handler(IRQ_DOVE_GPIO_24_31, gpio_irq_handler);
orion_gpio_init(32, 32, DOVE_GPIO_HI_VIRT_BASE, 0, orion_gpio_init(32, 32, DOVE_GPIO_HI_VIRT_BASE, 0,
IRQ_DOVE_GPIO_START + 32); IRQ_DOVE_GPIO_START + 32);
set_irq_chained_handler(IRQ_DOVE_HIGH_GPIO, gpio_irq_handler); irq_set_chained_handler(IRQ_DOVE_HIGH_GPIO, gpio_irq_handler);
orion_gpio_init(64, 8, DOVE_GPIO2_VIRT_BASE, 0, orion_gpio_init(64, 8, DOVE_GPIO2_VIRT_BASE, 0,
IRQ_DOVE_GPIO_START + 64); IRQ_DOVE_GPIO_START + 64);
...@@ -122,10 +121,9 @@ void __init dove_init_irq(void) ...@@ -122,10 +121,9 @@ void __init dove_init_irq(void)
writel(0, PMU_INTERRUPT_CAUSE); writel(0, PMU_INTERRUPT_CAUSE);
for (i = IRQ_DOVE_PMU_START; i < NR_IRQS; i++) { for (i = IRQ_DOVE_PMU_START; i < NR_IRQS; i++) {
set_irq_chip(i, &pmu_irq_chip); irq_set_chip_and_handler(i, &pmu_irq_chip, handle_level_irq);
set_irq_handler(i, handle_level_irq); irq_set_status_flags(i, IRQ_LEVEL);
irq_desc[i].status |= IRQ_LEVEL;
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
set_irq_chained_handler(IRQ_DOVE_PMU, pmu_irq_handler); irq_set_chained_handler(IRQ_DOVE_PMU, pmu_irq_handler);
} }
...@@ -147,9 +147,6 @@ void __init dove_mpp_conf(unsigned int *mpp_list) ...@@ -147,9 +147,6 @@ void __init dove_mpp_conf(unsigned int *mpp_list)
u32 pmu_sig_ctrl[PMU_SIG_REGS]; u32 pmu_sig_ctrl[PMU_SIG_REGS];
int i; int i;
/* Initialize gpiolib. */
orion_gpio_init();
for (i = 0; i < MPP_NR_REGS; i++) for (i = 0; i < MPP_NR_REGS; i++)
mpp_ctrl[i] = readl(MPP_CTRL(i)); mpp_ctrl[i] = readl(MPP_CTRL(i));
......
...@@ -66,8 +66,8 @@ static void __init ebsa110_init_irq(void) ...@@ -66,8 +66,8 @@ static void __init ebsa110_init_irq(void)
local_irq_restore(flags); local_irq_restore(flags);
for (irq = 0; irq < NR_IRQS; irq++) { for (irq = 0; irq < NR_IRQS; irq++) {
set_irq_chip(irq, &ebsa110_irq_chip); irq_set_chip_and_handler(irq, &ebsa110_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
} }
......
...@@ -117,7 +117,7 @@ static void ep93xx_gpio_irq_ack(struct irq_data *d) ...@@ -117,7 +117,7 @@ static void ep93xx_gpio_irq_ack(struct irq_data *d)
int port = line >> 3; int port = line >> 3;
int port_mask = 1 << (line & 7); int port_mask = 1 << (line & 7);
if ((irq_desc[d->irq].status & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) { if (irqd_get_trigger_type(d) == IRQ_TYPE_EDGE_BOTH) {
gpio_int_type2[port] ^= port_mask; /* switch edge direction */ gpio_int_type2[port] ^= port_mask; /* switch edge direction */
ep93xx_gpio_update_int_params(port); ep93xx_gpio_update_int_params(port);
} }
...@@ -131,7 +131,7 @@ static void ep93xx_gpio_irq_mask_ack(struct irq_data *d) ...@@ -131,7 +131,7 @@ static void ep93xx_gpio_irq_mask_ack(struct irq_data *d)
int port = line >> 3; int port = line >> 3;
int port_mask = 1 << (line & 7); int port_mask = 1 << (line & 7);
if ((irq_desc[d->irq].status & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) if (irqd_get_trigger_type(d) == IRQ_TYPE_EDGE_BOTH)
gpio_int_type2[port] ^= port_mask; /* switch edge direction */ gpio_int_type2[port] ^= port_mask; /* switch edge direction */
gpio_int_unmasked[port] &= ~port_mask; gpio_int_unmasked[port] &= ~port_mask;
...@@ -165,10 +165,10 @@ static void ep93xx_gpio_irq_unmask(struct irq_data *d) ...@@ -165,10 +165,10 @@ static void ep93xx_gpio_irq_unmask(struct irq_data *d)
*/ */
static int ep93xx_gpio_irq_type(struct irq_data *d, unsigned int type) static int ep93xx_gpio_irq_type(struct irq_data *d, unsigned int type)
{ {
struct irq_desc *desc = irq_desc + d->irq;
const int gpio = irq_to_gpio(d->irq); const int gpio = irq_to_gpio(d->irq);
const int port = gpio >> 3; const int port = gpio >> 3;
const int port_mask = 1 << (gpio & 7); const int port_mask = 1 << (gpio & 7);
irq_flow_handler_t handler;
gpio_direction_input(gpio); gpio_direction_input(gpio);
...@@ -176,22 +176,22 @@ static int ep93xx_gpio_irq_type(struct irq_data *d, unsigned int type) ...@@ -176,22 +176,22 @@ static int ep93xx_gpio_irq_type(struct irq_data *d, unsigned int type)
case IRQ_TYPE_EDGE_RISING: case IRQ_TYPE_EDGE_RISING:
gpio_int_type1[port] |= port_mask; gpio_int_type1[port] |= port_mask;
gpio_int_type2[port] |= port_mask; gpio_int_type2[port] |= port_mask;
desc->handle_irq = handle_edge_irq; handler = handle_edge_irq;
break; break;
case IRQ_TYPE_EDGE_FALLING: case IRQ_TYPE_EDGE_FALLING:
gpio_int_type1[port] |= port_mask; gpio_int_type1[port] |= port_mask;
gpio_int_type2[port] &= ~port_mask; gpio_int_type2[port] &= ~port_mask;
desc->handle_irq = handle_edge_irq; handler = handle_edge_irq;
break; break;
case IRQ_TYPE_LEVEL_HIGH: case IRQ_TYPE_LEVEL_HIGH:
gpio_int_type1[port] &= ~port_mask; gpio_int_type1[port] &= ~port_mask;
gpio_int_type2[port] |= port_mask; gpio_int_type2[port] |= port_mask;
desc->handle_irq = handle_level_irq; handler = handle_level_irq;
break; break;
case IRQ_TYPE_LEVEL_LOW: case IRQ_TYPE_LEVEL_LOW:
gpio_int_type1[port] &= ~port_mask; gpio_int_type1[port] &= ~port_mask;
gpio_int_type2[port] &= ~port_mask; gpio_int_type2[port] &= ~port_mask;
desc->handle_irq = handle_level_irq; handler = handle_level_irq;
break; break;
case IRQ_TYPE_EDGE_BOTH: case IRQ_TYPE_EDGE_BOTH:
gpio_int_type1[port] |= port_mask; gpio_int_type1[port] |= port_mask;
...@@ -200,17 +200,16 @@ static int ep93xx_gpio_irq_type(struct irq_data *d, unsigned int type) ...@@ -200,17 +200,16 @@ static int ep93xx_gpio_irq_type(struct irq_data *d, unsigned int type)
gpio_int_type2[port] &= ~port_mask; /* falling */ gpio_int_type2[port] &= ~port_mask; /* falling */
else else
gpio_int_type2[port] |= port_mask; /* rising */ gpio_int_type2[port] |= port_mask; /* rising */
desc->handle_irq = handle_edge_irq; handler = handle_edge_irq;
break; break;
default: default:
pr_err("failed to set irq type %d for gpio %d\n", type, gpio); pr_err("failed to set irq type %d for gpio %d\n", type, gpio);
return -EINVAL; return -EINVAL;
} }
gpio_int_enabled[port] |= port_mask; __irq_set_handler_locked(d->irq, handler);
desc->status &= ~IRQ_TYPE_SENSE_MASK; gpio_int_enabled[port] |= port_mask;
desc->status |= type & IRQ_TYPE_SENSE_MASK;
ep93xx_gpio_update_int_params(port); ep93xx_gpio_update_int_params(port);
...@@ -232,20 +231,29 @@ void __init ep93xx_gpio_init_irq(void) ...@@ -232,20 +231,29 @@ void __init ep93xx_gpio_init_irq(void)
for (gpio_irq = gpio_to_irq(0); for (gpio_irq = gpio_to_irq(0);
gpio_irq <= gpio_to_irq(EP93XX_GPIO_LINE_MAX_IRQ); ++gpio_irq) { gpio_irq <= gpio_to_irq(EP93XX_GPIO_LINE_MAX_IRQ); ++gpio_irq) {
set_irq_chip(gpio_irq, &ep93xx_gpio_irq_chip); irq_set_chip_and_handler(gpio_irq, &ep93xx_gpio_irq_chip,
set_irq_handler(gpio_irq, handle_level_irq); handle_level_irq);
set_irq_flags(gpio_irq, IRQF_VALID); set_irq_flags(gpio_irq, IRQF_VALID);
} }
set_irq_chained_handler(IRQ_EP93XX_GPIO_AB, ep93xx_gpio_ab_irq_handler); irq_set_chained_handler(IRQ_EP93XX_GPIO_AB,
set_irq_chained_handler(IRQ_EP93XX_GPIO0MUX, ep93xx_gpio_f_irq_handler); ep93xx_gpio_ab_irq_handler);
set_irq_chained_handler(IRQ_EP93XX_GPIO1MUX, ep93xx_gpio_f_irq_handler); irq_set_chained_handler(IRQ_EP93XX_GPIO0MUX,
set_irq_chained_handler(IRQ_EP93XX_GPIO2MUX, ep93xx_gpio_f_irq_handler); ep93xx_gpio_f_irq_handler);
set_irq_chained_handler(IRQ_EP93XX_GPIO3MUX, ep93xx_gpio_f_irq_handler); irq_set_chained_handler(IRQ_EP93XX_GPIO1MUX,
set_irq_chained_handler(IRQ_EP93XX_GPIO4MUX, ep93xx_gpio_f_irq_handler); ep93xx_gpio_f_irq_handler);
set_irq_chained_handler(IRQ_EP93XX_GPIO5MUX, ep93xx_gpio_f_irq_handler); irq_set_chained_handler(IRQ_EP93XX_GPIO2MUX,
set_irq_chained_handler(IRQ_EP93XX_GPIO6MUX, ep93xx_gpio_f_irq_handler); ep93xx_gpio_f_irq_handler);
set_irq_chained_handler(IRQ_EP93XX_GPIO7MUX, ep93xx_gpio_f_irq_handler); irq_set_chained_handler(IRQ_EP93XX_GPIO3MUX,
ep93xx_gpio_f_irq_handler);
irq_set_chained_handler(IRQ_EP93XX_GPIO4MUX,
ep93xx_gpio_f_irq_handler);
irq_set_chained_handler(IRQ_EP93XX_GPIO5MUX,
ep93xx_gpio_f_irq_handler);
irq_set_chained_handler(IRQ_EP93XX_GPIO6MUX,
ep93xx_gpio_f_irq_handler);
irq_set_chained_handler(IRQ_EP93XX_GPIO7MUX,
ep93xx_gpio_f_irq_handler);
} }
......
...@@ -54,8 +54,8 @@ static void combiner_unmask_irq(struct irq_data *data) ...@@ -54,8 +54,8 @@ static void combiner_unmask_irq(struct irq_data *data)
static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
{ {
struct combiner_chip_data *chip_data = get_irq_data(irq); struct combiner_chip_data *chip_data = irq_get_handler_data(irq);
struct irq_chip *chip = get_irq_chip(irq); struct irq_chip *chip = irq_get_chip(irq);
unsigned int cascade_irq, combiner_irq; unsigned int cascade_irq, combiner_irq;
unsigned long status; unsigned long status;
...@@ -93,9 +93,9 @@ void __init combiner_cascade_irq(unsigned int combiner_nr, unsigned int irq) ...@@ -93,9 +93,9 @@ void __init combiner_cascade_irq(unsigned int combiner_nr, unsigned int irq)
{ {
if (combiner_nr >= MAX_COMBINER_NR) if (combiner_nr >= MAX_COMBINER_NR)
BUG(); BUG();
if (set_irq_data(irq, &combiner_data[combiner_nr]) != 0) if (irq_set_handler_data(irq, &combiner_data[combiner_nr]) != 0)
BUG(); BUG();
set_irq_chained_handler(irq, combiner_handle_cascade_irq); irq_set_chained_handler(irq, combiner_handle_cascade_irq);
} }
void __init combiner_init(unsigned int combiner_nr, void __iomem *base, void __init combiner_init(unsigned int combiner_nr, void __iomem *base,
...@@ -119,9 +119,8 @@ void __init combiner_init(unsigned int combiner_nr, void __iomem *base, ...@@ -119,9 +119,8 @@ void __init combiner_init(unsigned int combiner_nr, void __iomem *base,
for (i = irq_start; i < combiner_data[combiner_nr].irq_offset for (i = irq_start; i < combiner_data[combiner_nr].irq_offset
+ MAX_IRQ_IN_COMBINER; i++) { + MAX_IRQ_IN_COMBINER; i++) {
set_irq_chip(i, &combiner_chip); irq_set_chip_and_handler(i, &combiner_chip, handle_level_irq);
set_irq_chip_data(i, &combiner_data[combiner_nr]); irq_set_chip_data(i, &combiner_data[combiner_nr]);
set_irq_handler(i, handle_level_irq);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
} }
} }
...@@ -190,8 +190,8 @@ static void exynos4_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc) ...@@ -190,8 +190,8 @@ static void exynos4_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
{ {
u32 *irq_data = get_irq_data(irq); u32 *irq_data = irq_get_handler_data(irq);
struct irq_chip *chip = get_irq_chip(irq); struct irq_chip *chip = irq_get_chip(irq);
chip->irq_mask(&desc->irq_data); chip->irq_mask(&desc->irq_data);
...@@ -208,18 +208,19 @@ int __init exynos4_init_irq_eint(void) ...@@ -208,18 +208,19 @@ int __init exynos4_init_irq_eint(void)
int irq; int irq;
for (irq = 0 ; irq <= 31 ; irq++) { for (irq = 0 ; irq <= 31 ; irq++) {
set_irq_chip(IRQ_EINT(irq), &exynos4_irq_eint); irq_set_chip_and_handler(IRQ_EINT(irq), &exynos4_irq_eint,
set_irq_handler(IRQ_EINT(irq), handle_level_irq); handle_level_irq);
set_irq_flags(IRQ_EINT(irq), IRQF_VALID); set_irq_flags(IRQ_EINT(irq), IRQF_VALID);
} }
set_irq_chained_handler(IRQ_EINT16_31, exynos4_irq_demux_eint16_31); irq_set_chained_handler(IRQ_EINT16_31, exynos4_irq_demux_eint16_31);
for (irq = 0 ; irq <= 15 ; irq++) { for (irq = 0 ; irq <= 15 ; irq++) {
eint0_15_data[irq] = IRQ_EINT(irq); eint0_15_data[irq] = IRQ_EINT(irq);
set_irq_data(exynos4_get_irq_nr(irq), &eint0_15_data[irq]); irq_set_handler_data(exynos4_get_irq_nr(irq),
set_irq_chained_handler(exynos4_get_irq_nr(irq), &eint0_15_data[irq]);
irq_set_chained_handler(exynos4_get_irq_nr(irq),
exynos4_irq_eint0_15); exynos4_irq_eint0_15);
} }
......
...@@ -102,8 +102,7 @@ static void __init __fb_init_irq(void) ...@@ -102,8 +102,7 @@ static void __init __fb_init_irq(void)
*CSR_FIQ_DISABLE = -1; *CSR_FIQ_DISABLE = -1;
for (irq = _DC21285_IRQ(0); irq < _DC21285_IRQ(20); irq++) { for (irq = _DC21285_IRQ(0); irq < _DC21285_IRQ(20); irq++) {
set_irq_chip(irq, &fb_chip); irq_set_chip_and_handler(irq, &fb_chip, handle_level_irq);
set_irq_handler(irq, handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
} }
......
...@@ -30,7 +30,7 @@ static int cksrc_dc21285_enable(struct clocksource *cs) ...@@ -30,7 +30,7 @@ static int cksrc_dc21285_enable(struct clocksource *cs)
return 0; return 0;
} }
static int cksrc_dc21285_disable(struct clocksource *cs) static void cksrc_dc21285_disable(struct clocksource *cs)
{ {
*CSR_TIMER2_CNTL = 0; *CSR_TIMER2_CNTL = 0;
} }
......
...@@ -151,14 +151,14 @@ void __init isa_init_irq(unsigned int host_irq) ...@@ -151,14 +151,14 @@ void __init isa_init_irq(unsigned int host_irq)
if (host_irq != (unsigned int)-1) { if (host_irq != (unsigned int)-1) {
for (irq = _ISA_IRQ(0); irq < _ISA_IRQ(8); irq++) { for (irq = _ISA_IRQ(0); irq < _ISA_IRQ(8); irq++) {
set_irq_chip(irq, &isa_lo_chip); irq_set_chip_and_handler(irq, &isa_lo_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
for (irq = _ISA_IRQ(8); irq < _ISA_IRQ(16); irq++) { for (irq = _ISA_IRQ(8); irq < _ISA_IRQ(16); irq++) {
set_irq_chip(irq, &isa_hi_chip); irq_set_chip_and_handler(irq, &isa_hi_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
...@@ -166,7 +166,7 @@ void __init isa_init_irq(unsigned int host_irq) ...@@ -166,7 +166,7 @@ void __init isa_init_irq(unsigned int host_irq)
request_resource(&ioport_resource, &pic2_resource); request_resource(&ioport_resource, &pic2_resource);
setup_irq(IRQ_ISA_CASCADE, &irq_cascade); setup_irq(IRQ_ISA_CASCADE, &irq_cascade);
set_irq_chained_handler(host_irq, isa_irq_handler); irq_set_chained_handler(host_irq, isa_irq_handler);
/* /*
* On the NetWinder, don't automatically * On the NetWinder, don't automatically
......
...@@ -127,8 +127,8 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type) ...@@ -127,8 +127,8 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
{ {
unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
unsigned int gpio_irq_no, irq_stat; unsigned int gpio_irq_no, irq_stat;
unsigned int port = (unsigned int)get_irq_data(irq);
irq_stat = __raw_readl(GPIO_BASE(port) + GPIO_INT_STAT); irq_stat = __raw_readl(GPIO_BASE(port) + GPIO_INT_STAT);
...@@ -138,9 +138,7 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) ...@@ -138,9 +138,7 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
if ((irq_stat & 1) == 0) if ((irq_stat & 1) == 0)
continue; continue;
BUG_ON(!(irq_desc[gpio_irq_no].handle_irq)); generic_handle_irq(gpio_irq_no);
irq_desc[gpio_irq_no].handle_irq(gpio_irq_no,
&irq_desc[gpio_irq_no]);
} }
} }
...@@ -219,13 +217,13 @@ void __init gemini_gpio_init(void) ...@@ -219,13 +217,13 @@ void __init gemini_gpio_init(void)
for (j = GPIO_IRQ_BASE + i * 32; for (j = GPIO_IRQ_BASE + i * 32;
j < GPIO_IRQ_BASE + (i + 1) * 32; j++) { j < GPIO_IRQ_BASE + (i + 1) * 32; j++) {
set_irq_chip(j, &gpio_irq_chip); irq_set_chip_and_handler(j, &gpio_irq_chip,
set_irq_handler(j, handle_edge_irq); handle_edge_irq);
set_irq_flags(j, IRQF_VALID); set_irq_flags(j, IRQF_VALID);
} }
set_irq_chained_handler(IRQ_GPIO(i), gpio_irq_handler); irq_set_chained_handler(IRQ_GPIO(i), gpio_irq_handler);
set_irq_data(IRQ_GPIO(i), (void *)i); irq_set_handler_data(IRQ_GPIO(i), (void *)i);
} }
BUG_ON(gpiochip_add(&gemini_gpio_chip)); BUG_ON(gpiochip_add(&gemini_gpio_chip));
......
...@@ -81,13 +81,13 @@ void __init gemini_init_irq(void) ...@@ -81,13 +81,13 @@ void __init gemini_init_irq(void)
request_resource(&iomem_resource, &irq_resource); request_resource(&iomem_resource, &irq_resource);
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
set_irq_chip(i, &gemini_irq_chip); irq_set_chip(i, &gemini_irq_chip);
if((i >= IRQ_TIMER1 && i <= IRQ_TIMER3) || (i >= IRQ_SERIRQ0 && i <= IRQ_SERIRQ1)) { if((i >= IRQ_TIMER1 && i <= IRQ_TIMER3) || (i >= IRQ_SERIRQ0 && i <= IRQ_SERIRQ1)) {
set_irq_handler(i, handle_edge_irq); irq_set_handler(i, handle_edge_irq);
mode |= 1 << i; mode |= 1 << i;
level |= 1 << i; level |= 1 << i;
} else { } else {
set_irq_handler(i, handle_level_irq); irq_set_handler(i, handle_level_irq);
} }
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
} }
......
...@@ -199,29 +199,29 @@ void __init h720x_init_irq (void) ...@@ -199,29 +199,29 @@ void __init h720x_init_irq (void)
/* Initialize global IRQ's, fast path */ /* Initialize global IRQ's, fast path */
for (irq = 0; irq < NR_GLBL_IRQS; irq++) { for (irq = 0; irq < NR_GLBL_IRQS; irq++) {
set_irq_chip(irq, &h720x_global_chip); irq_set_chip_and_handler(irq, &h720x_global_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
} }
/* Initialize multiplexed IRQ's, slow path */ /* Initialize multiplexed IRQ's, slow path */
for (irq = IRQ_CHAINED_GPIOA(0) ; irq <= IRQ_CHAINED_GPIOD(31); irq++) { for (irq = IRQ_CHAINED_GPIOA(0) ; irq <= IRQ_CHAINED_GPIOD(31); irq++) {
set_irq_chip(irq, &h720x_gpio_chip); irq_set_chip_and_handler(irq, &h720x_gpio_chip,
set_irq_handler(irq, handle_edge_irq); handle_edge_irq);
set_irq_flags(irq, IRQF_VALID ); set_irq_flags(irq, IRQF_VALID );
} }
set_irq_chained_handler(IRQ_GPIOA, h720x_gpioa_demux_handler); irq_set_chained_handler(IRQ_GPIOA, h720x_gpioa_demux_handler);
set_irq_chained_handler(IRQ_GPIOB, h720x_gpiob_demux_handler); irq_set_chained_handler(IRQ_GPIOB, h720x_gpiob_demux_handler);
set_irq_chained_handler(IRQ_GPIOC, h720x_gpioc_demux_handler); irq_set_chained_handler(IRQ_GPIOC, h720x_gpioc_demux_handler);
set_irq_chained_handler(IRQ_GPIOD, h720x_gpiod_demux_handler); irq_set_chained_handler(IRQ_GPIOD, h720x_gpiod_demux_handler);
#ifdef CONFIG_CPU_H7202 #ifdef CONFIG_CPU_H7202
for (irq = IRQ_CHAINED_GPIOE(0) ; irq <= IRQ_CHAINED_GPIOE(31); irq++) { for (irq = IRQ_CHAINED_GPIOE(0) ; irq <= IRQ_CHAINED_GPIOE(31); irq++) {
set_irq_chip(irq, &h720x_gpio_chip); irq_set_chip_and_handler(irq, &h720x_gpio_chip,
set_irq_handler(irq, handle_edge_irq); handle_edge_irq);
set_irq_flags(irq, IRQF_VALID ); set_irq_flags(irq, IRQF_VALID );
} }
set_irq_chained_handler(IRQ_GPIOE, h720x_gpioe_demux_handler); irq_set_chained_handler(IRQ_GPIOE, h720x_gpioe_demux_handler);
#endif #endif
/* Enable multiplexed irq's */ /* Enable multiplexed irq's */
......
...@@ -141,13 +141,18 @@ h7202_timer_interrupt(int irq, void *dev_id) ...@@ -141,13 +141,18 @@ h7202_timer_interrupt(int irq, void *dev_id)
/* /*
* mask multiplexed timer IRQs * mask multiplexed timer IRQs
*/ */
static void inline mask_timerx_irq(struct irq_data *d) static void inline __mask_timerx_irq(unsigned int irq)
{ {
unsigned int bit; unsigned int bit;
bit = 2 << ((d->irq == IRQ_TIMER64B) ? 4 : (d->irq - IRQ_TIMER1)); bit = 2 << ((irq == IRQ_TIMER64B) ? 4 : (irq - IRQ_TIMER1));
CPU_REG (TIMER_VIRT, TIMER_TOPCTRL) &= ~bit; CPU_REG (TIMER_VIRT, TIMER_TOPCTRL) &= ~bit;
} }
static void inline mask_timerx_irq(struct irq_data *d)
{
__mask_timerx_irq(d->irq);
}
/* /*
* unmask multiplexed timer IRQs * unmask multiplexed timer IRQs
*/ */
...@@ -196,12 +201,12 @@ void __init h7202_init_irq (void) ...@@ -196,12 +201,12 @@ void __init h7202_init_irq (void)
for (irq = IRQ_TIMER1; for (irq = IRQ_TIMER1;
irq < IRQ_CHAINED_TIMERX(NR_TIMERX_IRQS); irq++) { irq < IRQ_CHAINED_TIMERX(NR_TIMERX_IRQS); irq++) {
mask_timerx_irq(irq); __mask_timerx_irq(irq);
set_irq_chip(irq, &h7202_timerx_chip); irq_set_chip_and_handler(irq, &h7202_timerx_chip,
set_irq_handler(irq, handle_edge_irq); handle_edge_irq);
set_irq_flags(irq, IRQF_VALID ); set_irq_flags(irq, IRQF_VALID );
} }
set_irq_chained_handler(IRQ_TIMERX, h7202_timerx_demux_handler); irq_set_chained_handler(IRQ_TIMERX, h7202_timerx_demux_handler);
h720x_init_irq(); h720x_init_irq();
} }
......
...@@ -224,15 +224,15 @@ void __init iop13xx_init_irq(void) ...@@ -224,15 +224,15 @@ void __init iop13xx_init_irq(void)
for(i = 0; i <= IRQ_IOP13XX_HPI; i++) { for(i = 0; i <= IRQ_IOP13XX_HPI; i++) {
if (i < 32) if (i < 32)
set_irq_chip(i, &iop13xx_irqchip1); irq_set_chip(i, &iop13xx_irqchip1);
else if (i < 64) else if (i < 64)
set_irq_chip(i, &iop13xx_irqchip2); irq_set_chip(i, &iop13xx_irqchip2);
else if (i < 96) else if (i < 96)
set_irq_chip(i, &iop13xx_irqchip3); irq_set_chip(i, &iop13xx_irqchip3);
else else
set_irq_chip(i, &iop13xx_irqchip4); irq_set_chip(i, &iop13xx_irqchip4);
set_irq_handler(i, handle_level_irq); irq_set_handler(i, handle_level_irq);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
} }
......
...@@ -118,7 +118,7 @@ static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc) ...@@ -118,7 +118,7 @@ static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
void __init iop13xx_msi_init(void) void __init iop13xx_msi_init(void)
{ {
set_irq_chained_handler(IRQ_IOP13XX_INBD_MSI, iop13xx_msi_handler); irq_set_chained_handler(IRQ_IOP13XX_INBD_MSI, iop13xx_msi_handler);
} }
/* /*
...@@ -178,7 +178,7 @@ int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc) ...@@ -178,7 +178,7 @@ int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc)
if (irq < 0) if (irq < 0)
return irq; return irq;
set_irq_msi(irq, desc); irq_set_msi_desc(irq, desc);
msg.address_hi = 0x0; msg.address_hi = 0x0;
msg.address_lo = IOP13XX_MU_MIMR_PCI; msg.address_lo = IOP13XX_MU_MIMR_PCI;
...@@ -187,7 +187,7 @@ int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc) ...@@ -187,7 +187,7 @@ int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc)
msg.data = (id << IOP13XX_MU_MIMR_CORE_SELECT) | (irq & 0x7f); msg.data = (id << IOP13XX_MU_MIMR_CORE_SELECT) | (irq & 0x7f);
write_msi_msg(irq, &msg); write_msi_msg(irq, &msg);
set_irq_chip_and_handler(irq, &iop13xx_msi_chip, handle_simple_irq); irq_set_chip_and_handler(irq, &iop13xx_msi_chip, handle_simple_irq);
return 0; return 0;
} }
...@@ -68,8 +68,7 @@ void __init iop32x_init_irq(void) ...@@ -68,8 +68,7 @@ void __init iop32x_init_irq(void)
*IOP3XX_PCIIRSR = 0x0f; *IOP3XX_PCIIRSR = 0x0f;
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
set_irq_chip(i, &ext_chip); irq_set_chip_and_handler(i, &ext_chip, handle_level_irq);
set_irq_handler(i, handle_level_irq);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
} }
} }
...@@ -110,8 +110,9 @@ void __init iop33x_init_irq(void) ...@@ -110,8 +110,9 @@ void __init iop33x_init_irq(void)
*IOP3XX_PCIIRSR = 0x0f; *IOP3XX_PCIIRSR = 0x0f;
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
set_irq_chip(i, (i < 32) ? &iop33x_irqchip1 : &iop33x_irqchip2); irq_set_chip_and_handler(i,
set_irq_handler(i, handle_level_irq); (i < 32) ? &iop33x_irqchip1 : &iop33x_irqchip2,
handle_level_irq);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
} }
} }
...@@ -476,8 +476,8 @@ void __init ixp2000_init_irq(void) ...@@ -476,8 +476,8 @@ void __init ixp2000_init_irq(void)
*/ */
for (irq = IRQ_IXP2000_SOFT_INT; irq <= IRQ_IXP2000_THDB3; irq++) { for (irq = IRQ_IXP2000_SOFT_INT; irq <= IRQ_IXP2000_THDB3; irq++) {
if ((1 << irq) & IXP2000_VALID_IRQ_MASK) { if ((1 << irq) & IXP2000_VALID_IRQ_MASK) {
set_irq_chip(irq, &ixp2000_irq_chip); irq_set_chip_and_handler(irq, &ixp2000_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} else set_irq_flags(irq, 0); } else set_irq_flags(irq, 0);
} }
...@@ -485,21 +485,21 @@ void __init ixp2000_init_irq(void) ...@@ -485,21 +485,21 @@ void __init ixp2000_init_irq(void)
for (irq = IRQ_IXP2000_DRAM0_MIN_ERR; irq <= IRQ_IXP2000_SP_INT; irq++) { for (irq = IRQ_IXP2000_DRAM0_MIN_ERR; irq <= IRQ_IXP2000_SP_INT; irq++) {
if((1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR)) & if((1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR)) &
IXP2000_VALID_ERR_IRQ_MASK) { IXP2000_VALID_ERR_IRQ_MASK) {
set_irq_chip(irq, &ixp2000_err_irq_chip); irq_set_chip_and_handler(irq, &ixp2000_err_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
else else
set_irq_flags(irq, 0); set_irq_flags(irq, 0);
} }
set_irq_chained_handler(IRQ_IXP2000_ERRSUM, ixp2000_err_irq_handler); irq_set_chained_handler(IRQ_IXP2000_ERRSUM, ixp2000_err_irq_handler);
for (irq = IRQ_IXP2000_GPIO0; irq <= IRQ_IXP2000_GPIO7; irq++) { for (irq = IRQ_IXP2000_GPIO0; irq <= IRQ_IXP2000_GPIO7; irq++) {
set_irq_chip(irq, &ixp2000_GPIO_irq_chip); irq_set_chip_and_handler(irq, &ixp2000_GPIO_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
set_irq_chained_handler(IRQ_IXP2000_GPIO, ixp2000_GPIO_irq_handler); irq_set_chained_handler(IRQ_IXP2000_GPIO, ixp2000_GPIO_irq_handler);
/* /*
* Enable PCI irqs. The actual PCI[AB] decoding is done in * Enable PCI irqs. The actual PCI[AB] decoding is done in
...@@ -508,8 +508,8 @@ void __init ixp2000_init_irq(void) ...@@ -508,8 +508,8 @@ void __init ixp2000_init_irq(void)
*/ */
ixp2000_reg_write(IXP2000_IRQ_ENABLE_SET, (1 << IRQ_IXP2000_PCI)); ixp2000_reg_write(IXP2000_IRQ_ENABLE_SET, (1 << IRQ_IXP2000_PCI));
for (irq = IRQ_IXP2000_PCIA; irq <= IRQ_IXP2000_PCIB; irq++) { for (irq = IRQ_IXP2000_PCIA; irq <= IRQ_IXP2000_PCIB; irq++) {
set_irq_chip(irq, &ixp2000_pci_irq_chip); irq_set_chip_and_handler(irq, &ixp2000_pci_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
} }
......
...@@ -158,13 +158,13 @@ void __init ixdp2x00_init_irq(volatile unsigned long *stat_reg, volatile unsigne ...@@ -158,13 +158,13 @@ void __init ixdp2x00_init_irq(volatile unsigned long *stat_reg, volatile unsigne
*board_irq_mask = 0xffffffff; *board_irq_mask = 0xffffffff;
for(irq = IXP2000_BOARD_IRQ(0); irq < IXP2000_BOARD_IRQ(board_irq_count); irq++) { for(irq = IXP2000_BOARD_IRQ(0); irq < IXP2000_BOARD_IRQ(board_irq_count); irq++) {
set_irq_chip(irq, &ixdp2x00_cpld_irq_chip); irq_set_chip_and_handler(irq, &ixdp2x00_cpld_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
/* Hook into PCI interrupt */ /* Hook into PCI interrupt */
set_irq_chained_handler(IRQ_IXP2000_PCIB, ixdp2x00_irq_handler); irq_set_chained_handler(IRQ_IXP2000_PCIB, ixdp2x00_irq_handler);
} }
/************************************************************************* /*************************************************************************
......
...@@ -115,8 +115,8 @@ void __init ixdp2x01_init_irq(void) ...@@ -115,8 +115,8 @@ void __init ixdp2x01_init_irq(void)
for (irq = NR_IXP2000_IRQS; irq < NR_IXDP2X01_IRQS; irq++) { for (irq = NR_IXP2000_IRQS; irq < NR_IXDP2X01_IRQS; irq++) {
if (irq & valid_irq_mask) { if (irq & valid_irq_mask) {
set_irq_chip(irq, &ixdp2x01_irq_chip); irq_set_chip_and_handler(irq, &ixdp2x01_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} else { } else {
set_irq_flags(irq, 0); set_irq_flags(irq, 0);
...@@ -124,7 +124,7 @@ void __init ixdp2x01_init_irq(void) ...@@ -124,7 +124,7 @@ void __init ixdp2x01_init_irq(void)
} }
/* Hook into PCI interrupts */ /* Hook into PCI interrupts */
set_irq_chained_handler(IRQ_IXP2000_PCIB, ixdp2x01_irq_handler); irq_set_chained_handler(IRQ_IXP2000_PCIB, ixdp2x01_irq_handler);
} }
......
...@@ -289,12 +289,12 @@ static void ixp23xx_config_irq(unsigned int irq, enum ixp23xx_irq_type type) ...@@ -289,12 +289,12 @@ static void ixp23xx_config_irq(unsigned int irq, enum ixp23xx_irq_type type)
{ {
switch (type) { switch (type) {
case IXP23XX_IRQ_LEVEL: case IXP23XX_IRQ_LEVEL:
set_irq_chip(irq, &ixp23xx_irq_level_chip); irq_set_chip_and_handler(irq, &ixp23xx_irq_level_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
break; break;
case IXP23XX_IRQ_EDGE: case IXP23XX_IRQ_EDGE:
set_irq_chip(irq, &ixp23xx_irq_edge_chip); irq_set_chip_and_handler(irq, &ixp23xx_irq_edge_chip,
set_irq_handler(irq, handle_edge_irq); handle_edge_irq);
break; break;
} }
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
...@@ -324,12 +324,12 @@ void __init ixp23xx_init_irq(void) ...@@ -324,12 +324,12 @@ void __init ixp23xx_init_irq(void)
} }
for (irq = IRQ_IXP23XX_INTA; irq <= IRQ_IXP23XX_INTB; irq++) { for (irq = IRQ_IXP23XX_INTA; irq <= IRQ_IXP23XX_INTB; irq++) {
set_irq_chip(irq, &ixp23xx_pci_irq_chip); irq_set_chip_and_handler(irq, &ixp23xx_pci_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
set_irq_chained_handler(IRQ_IXP23XX_PCI_INT_RPH, pci_handler); irq_set_chained_handler(IRQ_IXP23XX_PCI_INT_RPH, pci_handler);
} }
......
...@@ -136,8 +136,8 @@ void __init ixdp2351_init_irq(void) ...@@ -136,8 +136,8 @@ void __init ixdp2351_init_irq(void)
irq++) { irq++) {
if (IXDP2351_INTA_IRQ_MASK(irq) & IXDP2351_INTA_IRQ_VALID) { if (IXDP2351_INTA_IRQ_MASK(irq) & IXDP2351_INTA_IRQ_VALID) {
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
set_irq_handler(irq, handle_level_irq); irq_set_chip_and_handler(irq, &ixdp2351_inta_chip,
set_irq_chip(irq, &ixdp2351_inta_chip); handle_level_irq);
} }
} }
...@@ -147,13 +147,13 @@ void __init ixdp2351_init_irq(void) ...@@ -147,13 +147,13 @@ void __init ixdp2351_init_irq(void)
irq++) { irq++) {
if (IXDP2351_INTB_IRQ_MASK(irq) & IXDP2351_INTB_IRQ_VALID) { if (IXDP2351_INTB_IRQ_MASK(irq) & IXDP2351_INTB_IRQ_VALID) {
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
set_irq_handler(irq, handle_level_irq); irq_set_chip_and_handler(irq, &ixdp2351_intb_chip,
set_irq_chip(irq, &ixdp2351_intb_chip); handle_level_irq);
} }
} }
set_irq_chained_handler(IRQ_IXP23XX_INTA, ixdp2351_inta_handler); irq_set_chained_handler(IRQ_IXP23XX_INTA, ixdp2351_inta_handler);
set_irq_chained_handler(IRQ_IXP23XX_INTB, ixdp2351_intb_handler); irq_set_chained_handler(IRQ_IXP23XX_INTB, ixdp2351_intb_handler);
} }
/* /*
......
...@@ -110,8 +110,8 @@ static int __init roadrunner_map_irq(struct pci_dev *dev, u8 idsel, u8 pin) ...@@ -110,8 +110,8 @@ static int __init roadrunner_map_irq(struct pci_dev *dev, u8 idsel, u8 pin)
static void __init roadrunner_pci_preinit(void) static void __init roadrunner_pci_preinit(void)
{ {
set_irq_type(IRQ_ROADRUNNER_PCI_INTC, IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IRQ_ROADRUNNER_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
set_irq_type(IRQ_ROADRUNNER_PCI_INTD, IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IRQ_ROADRUNNER_PCI_INTD, IRQ_TYPE_LEVEL_LOW);
ixp23xx_pci_preinit(); ixp23xx_pci_preinit();
} }
......
...@@ -39,10 +39,10 @@ ...@@ -39,10 +39,10 @@
void __init avila_pci_preinit(void) void __init avila_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTD), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTD), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -252,8 +252,8 @@ void __init ixp4xx_init_irq(void) ...@@ -252,8 +252,8 @@ void __init ixp4xx_init_irq(void)
/* Default to all level triggered */ /* Default to all level triggered */
for(i = 0; i < NR_IRQS; i++) { for(i = 0; i < NR_IRQS; i++) {
set_irq_chip(i, &ixp4xx_irq_chip); irq_set_chip_and_handler(i, &ixp4xx_irq_chip,
set_irq_handler(i, handle_level_irq); handle_level_irq);
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
} }
......
...@@ -32,8 +32,8 @@ ...@@ -32,8 +32,8 @@
void __init coyote_pci_preinit(void) void __init coyote_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(SLOT0_INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(SLOT0_INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(SLOT1_INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(SLOT1_INTA), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -35,12 +35,12 @@ ...@@ -35,12 +35,12 @@
void __init dsmg600_pci_preinit(void) void __init dsmg600_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTD), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTD), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTE), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTE), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTF), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTF), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -32,9 +32,9 @@ ...@@ -32,9 +32,9 @@
void __init fsg_pci_preinit(void) void __init fsg_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -29,8 +29,8 @@ ...@@ -29,8 +29,8 @@
void __init gateway7001_pci_preinit(void) void __init gateway7001_pci_preinit(void)
{ {
set_irq_type(IRQ_IXP4XX_GPIO10, IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IRQ_IXP4XX_GPIO10, IRQ_TYPE_LEVEL_LOW);
set_irq_type(IRQ_IXP4XX_GPIO11, IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IRQ_IXP4XX_GPIO11, IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -420,8 +420,8 @@ static void __init gmlr_init(void) ...@@ -420,8 +420,8 @@ static void __init gmlr_init(void)
gpio_line_config(GPIO_HSS1_RTS_N, IXP4XX_GPIO_OUT); gpio_line_config(GPIO_HSS1_RTS_N, IXP4XX_GPIO_OUT);
gpio_line_config(GPIO_HSS0_DCD_N, IXP4XX_GPIO_IN); gpio_line_config(GPIO_HSS0_DCD_N, IXP4XX_GPIO_IN);
gpio_line_config(GPIO_HSS1_DCD_N, IXP4XX_GPIO_IN); gpio_line_config(GPIO_HSS1_DCD_N, IXP4XX_GPIO_IN);
set_irq_type(IXP4XX_GPIO_IRQ(GPIO_HSS0_DCD_N), IRQ_TYPE_EDGE_BOTH); irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_HSS0_DCD_N), IRQ_TYPE_EDGE_BOTH);
set_irq_type(IXP4XX_GPIO_IRQ(GPIO_HSS1_DCD_N), IRQ_TYPE_EDGE_BOTH); irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_HSS1_DCD_N), IRQ_TYPE_EDGE_BOTH);
set_control(CONTROL_HSS0_DTR_N, 1); set_control(CONTROL_HSS0_DTR_N, 1);
set_control(CONTROL_HSS1_DTR_N, 1); set_control(CONTROL_HSS1_DTR_N, 1);
...@@ -441,10 +441,10 @@ static void __init gmlr_init(void) ...@@ -441,10 +441,10 @@ static void __init gmlr_init(void)
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
static void __init gmlr_pci_preinit(void) static void __init gmlr_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(GPIO_IRQ_ETHA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_IRQ_ETHA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(GPIO_IRQ_ETHB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_IRQ_ETHB), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(GPIO_IRQ_NEC), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_IRQ_NEC), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(GPIO_IRQ_MPCI), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_IRQ_MPCI), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -43,8 +43,8 @@ ...@@ -43,8 +43,8 @@
*/ */
void __init gtwx5715_pci_preinit(void) void __init gtwx5715_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -36,10 +36,10 @@ ...@@ -36,10 +36,10 @@
void __init ixdp425_pci_preinit(void) void __init ixdp425_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTD), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTD), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
void __init ixdpg425_pci_preinit(void) void __init ixdpg425_pci_preinit(void)
{ {
set_irq_type(IRQ_IXP4XX_GPIO6, IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IRQ_IXP4XX_GPIO6, IRQ_TYPE_LEVEL_LOW);
set_irq_type(IRQ_IXP4XX_GPIO7, IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IRQ_IXP4XX_GPIO7, IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -33,11 +33,11 @@ ...@@ -33,11 +33,11 @@
void __init nas100d_pci_preinit(void) void __init nas100d_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTD), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTD), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTE), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTE), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -32,9 +32,9 @@ ...@@ -32,9 +32,9 @@
void __init nslu2_pci_preinit(void) void __init nslu2_pci_preinit(void)
{ {
set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -38,8 +38,8 @@ void __init vulcan_pci_preinit(void) ...@@ -38,8 +38,8 @@ void __init vulcan_pci_preinit(void)
pr_info("Vulcan PCI: limiting CardBus memory size to %dMB\n", pr_info("Vulcan PCI: limiting CardBus memory size to %dMB\n",
(int)(pci_cardbus_mem_size >> 20)); (int)(pci_cardbus_mem_size >> 20));
#endif #endif
set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW);
set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -29,8 +29,8 @@ ...@@ -29,8 +29,8 @@
void __init wg302v2_pci_preinit(void) void __init wg302v2_pci_preinit(void)
{ {
set_irq_type(IRQ_IXP4XX_GPIO8, IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IRQ_IXP4XX_GPIO8, IRQ_TYPE_LEVEL_LOW);
set_irq_type(IRQ_IXP4XX_GPIO9, IRQ_TYPE_LEVEL_LOW); irq_set_irq_type(IRQ_IXP4XX_GPIO9, IRQ_TYPE_LEVEL_LOW);
ixp4xx_pci_preinit(); ixp4xx_pci_preinit();
} }
......
...@@ -35,14 +35,15 @@ void __init kirkwood_init_irq(void) ...@@ -35,14 +35,15 @@ void __init kirkwood_init_irq(void)
*/ */
orion_gpio_init(0, 32, GPIO_LOW_VIRT_BASE, 0, orion_gpio_init(0, 32, GPIO_LOW_VIRT_BASE, 0,
IRQ_KIRKWOOD_GPIO_START); IRQ_KIRKWOOD_GPIO_START);
set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_0_7, gpio_irq_handler); irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_0_7, gpio_irq_handler);
set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_8_15, gpio_irq_handler); irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_8_15, gpio_irq_handler);
set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_16_23, gpio_irq_handler); irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_16_23, gpio_irq_handler);
set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_24_31, gpio_irq_handler); irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_24_31, gpio_irq_handler);
orion_gpio_init(32, 18, GPIO_HIGH_VIRT_BASE, 0, orion_gpio_init(32, 18, GPIO_HIGH_VIRT_BASE, 0,
IRQ_KIRKWOOD_GPIO_START + 32); IRQ_KIRKWOOD_GPIO_START + 32);
set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_0_7, gpio_irq_handler); irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_0_7, gpio_irq_handler);
set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_8_15, gpio_irq_handler); irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_8_15, gpio_irq_handler);
set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_16_23, gpio_irq_handler); irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_16_23,
gpio_irq_handler);
} }
...@@ -80,7 +80,7 @@ int ks8695_gpio_interrupt(unsigned int pin, unsigned int type) ...@@ -80,7 +80,7 @@ int ks8695_gpio_interrupt(unsigned int pin, unsigned int type)
local_irq_restore(flags); local_irq_restore(flags);
/* Set IRQ triggering type */ /* Set IRQ triggering type */
set_irq_type(gpio_irq[pin], type); irq_set_irq_type(gpio_irq[pin], type);
/* enable interrupt mode */ /* enable interrupt mode */
ks8695_gpio_mode(pin, 0); ks8695_gpio_mode(pin, 0);
......
...@@ -115,12 +115,12 @@ static int ks8695_irq_set_type(struct irq_data *d, unsigned int type) ...@@ -115,12 +115,12 @@ static int ks8695_irq_set_type(struct irq_data *d, unsigned int type)
} }
if (level_triggered) { if (level_triggered) {
set_irq_chip(d->irq, &ks8695_irq_level_chip); irq_set_chip_and_handler(d->irq, &ks8695_irq_level_chip,
set_irq_handler(d->irq, handle_level_irq); handle_level_irq);
} }
else { else {
set_irq_chip(d->irq, &ks8695_irq_edge_chip); irq_set_chip_and_handler(d->irq, &ks8695_irq_edge_chip,
set_irq_handler(d->irq, handle_edge_irq); handle_edge_irq);
} }
__raw_writel(ctrl, KS8695_GPIO_VA + KS8695_IOPC); __raw_writel(ctrl, KS8695_GPIO_VA + KS8695_IOPC);
...@@ -158,16 +158,18 @@ void __init ks8695_init_irq(void) ...@@ -158,16 +158,18 @@ void __init ks8695_init_irq(void)
case KS8695_IRQ_UART_RX: case KS8695_IRQ_UART_RX:
case KS8695_IRQ_COMM_TX: case KS8695_IRQ_COMM_TX:
case KS8695_IRQ_COMM_RX: case KS8695_IRQ_COMM_RX:
set_irq_chip(irq, &ks8695_irq_level_chip); irq_set_chip_and_handler(irq,
set_irq_handler(irq, handle_level_irq); &ks8695_irq_level_chip,
handle_level_irq);
break; break;
/* Edge-triggered interrupts */ /* Edge-triggered interrupts */
default: default:
/* clear pending bit */ /* clear pending bit */
ks8695_irq_ack(irq_get_irq_data(irq)); ks8695_irq_ack(irq_get_irq_data(irq));
set_irq_chip(irq, &ks8695_irq_edge_chip); irq_set_chip_and_handler(irq,
set_irq_handler(irq, handle_edge_irq); &ks8695_irq_edge_chip,
handle_edge_irq);
} }
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
......
...@@ -290,7 +290,7 @@ static int lpc32xx_set_irq_type(struct irq_data *d, unsigned int type) ...@@ -290,7 +290,7 @@ static int lpc32xx_set_irq_type(struct irq_data *d, unsigned int type)
} }
/* Ok to use the level handler for all types */ /* Ok to use the level handler for all types */
set_irq_handler(d->irq, handle_level_irq); irq_set_handler(d->irq, handle_level_irq);
return 0; return 0;
} }
...@@ -390,8 +390,8 @@ void __init lpc32xx_init_irq(void) ...@@ -390,8 +390,8 @@ void __init lpc32xx_init_irq(void)
/* Configure supported IRQ's */ /* Configure supported IRQ's */
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
set_irq_chip(i, &lpc32xx_irq_chip); irq_set_chip_and_handler(i, &lpc32xx_irq_chip,
set_irq_handler(i, handle_level_irq); handle_level_irq);
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
...@@ -406,8 +406,8 @@ void __init lpc32xx_init_irq(void) ...@@ -406,8 +406,8 @@ void __init lpc32xx_init_irq(void)
__raw_writel(0, LPC32XX_INTC_MASK(LPC32XX_SIC2_BASE)); __raw_writel(0, LPC32XX_INTC_MASK(LPC32XX_SIC2_BASE));
/* MIC SUBIRQx interrupts will route handling to the chain handlers */ /* MIC SUBIRQx interrupts will route handling to the chain handlers */
set_irq_chained_handler(IRQ_LPC32XX_SUB1IRQ, lpc32xx_sic1_handler); irq_set_chained_handler(IRQ_LPC32XX_SUB1IRQ, lpc32xx_sic1_handler);
set_irq_chained_handler(IRQ_LPC32XX_SUB2IRQ, lpc32xx_sic2_handler); irq_set_chained_handler(IRQ_LPC32XX_SUB2IRQ, lpc32xx_sic2_handler);
/* Initially disable all wake events */ /* Initially disable all wake events */
__raw_writel(0, LPC32XX_CLKPWR_P01_ER); __raw_writel(0, LPC32XX_CLKPWR_P01_ER);
......
...@@ -110,9 +110,9 @@ static void init_mux_irq(struct irq_chip *chip, int start, int num) ...@@ -110,9 +110,9 @@ static void init_mux_irq(struct irq_chip *chip, int start, int num)
if (chip->irq_ack) if (chip->irq_ack)
chip->irq_ack(d); chip->irq_ack(d);
set_irq_chip(irq, chip); irq_set_chip(irq, chip);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
set_irq_handler(irq, handle_level_irq); irq_set_handler(irq, handle_level_irq);
} }
} }
...@@ -122,7 +122,7 @@ void __init mmp2_init_icu(void) ...@@ -122,7 +122,7 @@ void __init mmp2_init_icu(void)
for (irq = 0; irq < IRQ_MMP2_MUX_BASE; irq++) { for (irq = 0; irq < IRQ_MMP2_MUX_BASE; irq++) {
icu_mask_irq(irq_get_irq_data(irq)); icu_mask_irq(irq_get_irq_data(irq));
set_irq_chip(irq, &icu_irq_chip); irq_set_chip(irq, &icu_irq_chip);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
switch (irq) { switch (irq) {
...@@ -133,7 +133,7 @@ void __init mmp2_init_icu(void) ...@@ -133,7 +133,7 @@ void __init mmp2_init_icu(void)
case IRQ_MMP2_SSP_MUX: case IRQ_MMP2_SSP_MUX:
break; break;
default: default:
set_irq_handler(irq, handle_level_irq); irq_set_handler(irq, handle_level_irq);
break; break;
} }
} }
...@@ -149,9 +149,9 @@ void __init mmp2_init_icu(void) ...@@ -149,9 +149,9 @@ void __init mmp2_init_icu(void)
init_mux_irq(&misc_irq_chip, IRQ_MMP2_MISC_BASE, 15); init_mux_irq(&misc_irq_chip, IRQ_MMP2_MISC_BASE, 15);
init_mux_irq(&ssp_irq_chip, IRQ_MMP2_SSP_BASE, 2); init_mux_irq(&ssp_irq_chip, IRQ_MMP2_SSP_BASE, 2);
set_irq_chained_handler(IRQ_MMP2_PMIC_MUX, pmic_irq_demux); irq_set_chained_handler(IRQ_MMP2_PMIC_MUX, pmic_irq_demux);
set_irq_chained_handler(IRQ_MMP2_RTC_MUX, rtc_irq_demux); irq_set_chained_handler(IRQ_MMP2_RTC_MUX, rtc_irq_demux);
set_irq_chained_handler(IRQ_MMP2_TWSI_MUX, twsi_irq_demux); irq_set_chained_handler(IRQ_MMP2_TWSI_MUX, twsi_irq_demux);
set_irq_chained_handler(IRQ_MMP2_MISC_MUX, misc_irq_demux); irq_set_chained_handler(IRQ_MMP2_MISC_MUX, misc_irq_demux);
set_irq_chained_handler(IRQ_MMP2_SSP_MUX, ssp_irq_demux); irq_set_chained_handler(IRQ_MMP2_SSP_MUX, ssp_irq_demux);
} }
...@@ -48,8 +48,7 @@ void __init icu_init_irq(void) ...@@ -48,8 +48,7 @@ void __init icu_init_irq(void)
for (irq = 0; irq < 64; irq++) { for (irq = 0; irq < 64; irq++) {
icu_mask_irq(irq_get_irq_data(irq)); icu_mask_irq(irq_get_irq_data(irq));
set_irq_chip(irq, &icu_irq_chip); irq_set_chip_and_handler(irq, &icu_irq_chip, handle_level_irq);
set_irq_handler(irq, handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
} }
...@@ -53,7 +53,7 @@ static void __init msm8960_init_irq(void) ...@@ -53,7 +53,7 @@ static void __init msm8960_init_irq(void)
*/ */
for (i = GIC_PPI_START; i < GIC_SPI_START; i++) { for (i = GIC_PPI_START; i < GIC_SPI_START; i++) {
if (i != AVS_SVICINT && i != AVS_SVICINTSWDONE) if (i != AVS_SVICINT && i != AVS_SVICINTSWDONE)
set_irq_handler(i, handle_percpu_irq); irq_set_handler(i, handle_percpu_irq);
} }
} }
......
...@@ -56,7 +56,7 @@ static void __init msm8x60_init_irq(void) ...@@ -56,7 +56,7 @@ static void __init msm8x60_init_irq(void)
*/ */
for (i = GIC_PPI_START; i < GIC_SPI_START; i++) { for (i = GIC_PPI_START; i < GIC_SPI_START; i++) {
if (i != AVS_SVICINT && i != AVS_SVICINTSWDONE) if (i != AVS_SVICINT && i != AVS_SVICINTSWDONE)
set_irq_handler(i, handle_percpu_irq); irq_set_handler(i, handle_percpu_irq);
} }
} }
......
...@@ -214,17 +214,17 @@ int __init trout_init_gpio(void) ...@@ -214,17 +214,17 @@ int __init trout_init_gpio(void)
{ {
int i; int i;
for(i = TROUT_INT_START; i <= TROUT_INT_END; i++) { for(i = TROUT_INT_START; i <= TROUT_INT_END; i++) {
set_irq_chip(i, &trout_gpio_irq_chip); irq_set_chip_and_handler(i, &trout_gpio_irq_chip,
set_irq_handler(i, handle_edge_irq); handle_edge_irq);
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
for (i = 0; i < ARRAY_SIZE(msm_gpio_banks); i++) for (i = 0; i < ARRAY_SIZE(msm_gpio_banks); i++)
gpiochip_add(&msm_gpio_banks[i].chip); gpiochip_add(&msm_gpio_banks[i].chip);
set_irq_type(MSM_GPIO_TO_INT(17), IRQF_TRIGGER_HIGH); irq_set_irq_type(MSM_GPIO_TO_INT(17), IRQF_TRIGGER_HIGH);
set_irq_chained_handler(MSM_GPIO_TO_INT(17), trout_gpio_irq_handler); irq_set_chained_handler(MSM_GPIO_TO_INT(17), trout_gpio_irq_handler);
set_irq_wake(MSM_GPIO_TO_INT(17), 1); irq_set_irq_wake(MSM_GPIO_TO_INT(17), 1);
return 0; return 0;
} }
......
...@@ -174,7 +174,7 @@ int __init trout_init_mmc(unsigned int sys_rev) ...@@ -174,7 +174,7 @@ int __init trout_init_mmc(unsigned int sys_rev)
if (IS_ERR(vreg_sdslot)) if (IS_ERR(vreg_sdslot))
return PTR_ERR(vreg_sdslot); return PTR_ERR(vreg_sdslot);
set_irq_wake(TROUT_GPIO_TO_INT(TROUT_GPIO_SDMC_CD_N), 1); irq_set_irq_wake(TROUT_GPIO_TO_INT(TROUT_GPIO_SDMC_CD_N), 1);
if (!opt_disable_sdcard) if (!opt_disable_sdcard)
msm_add_sdcc(2, &trout_sdslot_data, msm_add_sdcc(2, &trout_sdslot_data,
......
...@@ -230,18 +230,18 @@ static void msm_gpio_update_dual_edge_pos(unsigned gpio) ...@@ -230,18 +230,18 @@ static void msm_gpio_update_dual_edge_pos(unsigned gpio)
val, val2); val, val2);
} }
static void msm_gpio_irq_ack(unsigned int irq) static void msm_gpio_irq_ack(struct irq_data *d)
{ {
int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, irq); int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq);
writel(BIT(INTR_STATUS), GPIO_INTR_STATUS(gpio)); writel(BIT(INTR_STATUS), GPIO_INTR_STATUS(gpio));
if (test_bit(gpio, msm_gpio.dual_edge_irqs)) if (test_bit(gpio, msm_gpio.dual_edge_irqs))
msm_gpio_update_dual_edge_pos(gpio); msm_gpio_update_dual_edge_pos(gpio);
} }
static void msm_gpio_irq_mask(unsigned int irq) static void msm_gpio_irq_mask(struct irq_data *d)
{ {
int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, irq); int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq);
unsigned long irq_flags; unsigned long irq_flags;
spin_lock_irqsave(&tlmm_lock, irq_flags); spin_lock_irqsave(&tlmm_lock, irq_flags);
...@@ -251,9 +251,9 @@ static void msm_gpio_irq_mask(unsigned int irq) ...@@ -251,9 +251,9 @@ static void msm_gpio_irq_mask(unsigned int irq)
spin_unlock_irqrestore(&tlmm_lock, irq_flags); spin_unlock_irqrestore(&tlmm_lock, irq_flags);
} }
static void msm_gpio_irq_unmask(unsigned int irq) static void msm_gpio_irq_unmask(struct irq_data *d)
{ {
int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, irq); int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq);
unsigned long irq_flags; unsigned long irq_flags;
spin_lock_irqsave(&tlmm_lock, irq_flags); spin_lock_irqsave(&tlmm_lock, irq_flags);
...@@ -263,9 +263,9 @@ static void msm_gpio_irq_unmask(unsigned int irq) ...@@ -263,9 +263,9 @@ static void msm_gpio_irq_unmask(unsigned int irq)
spin_unlock_irqrestore(&tlmm_lock, irq_flags); spin_unlock_irqrestore(&tlmm_lock, irq_flags);
} }
static int msm_gpio_irq_set_type(unsigned int irq, unsigned int flow_type) static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
{ {
int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, irq); int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq);
unsigned long irq_flags; unsigned long irq_flags;
uint32_t bits; uint32_t bits;
...@@ -275,14 +275,14 @@ static int msm_gpio_irq_set_type(unsigned int irq, unsigned int flow_type) ...@@ -275,14 +275,14 @@ static int msm_gpio_irq_set_type(unsigned int irq, unsigned int flow_type)
if (flow_type & IRQ_TYPE_EDGE_BOTH) { if (flow_type & IRQ_TYPE_EDGE_BOTH) {
bits |= BIT(INTR_DECT_CTL); bits |= BIT(INTR_DECT_CTL);
irq_desc[irq].handle_irq = handle_edge_irq; __irq_set_handler_locked(d->irq, handle_edge_irq);
if ((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) if ((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH)
__set_bit(gpio, msm_gpio.dual_edge_irqs); __set_bit(gpio, msm_gpio.dual_edge_irqs);
else else
__clear_bit(gpio, msm_gpio.dual_edge_irqs); __clear_bit(gpio, msm_gpio.dual_edge_irqs);
} else { } else {
bits &= ~BIT(INTR_DECT_CTL); bits &= ~BIT(INTR_DECT_CTL);
irq_desc[irq].handle_irq = handle_level_irq; __irq_set_handler_locked(d->irq, handle_level_irq);
__clear_bit(gpio, msm_gpio.dual_edge_irqs); __clear_bit(gpio, msm_gpio.dual_edge_irqs);
} }
...@@ -309,6 +309,7 @@ static int msm_gpio_irq_set_type(unsigned int irq, unsigned int flow_type) ...@@ -309,6 +309,7 @@ static int msm_gpio_irq_set_type(unsigned int irq, unsigned int flow_type)
*/ */
static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc) static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc)
{ {
struct irq_data *data = irq_desc_get_irq_data(desc);
unsigned long i; unsigned long i;
for (i = find_first_bit(msm_gpio.enabled_irqs, NR_GPIO_IRQS); for (i = find_first_bit(msm_gpio.enabled_irqs, NR_GPIO_IRQS);
...@@ -318,21 +319,21 @@ static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc) ...@@ -318,21 +319,21 @@ static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc)
generic_handle_irq(msm_gpio_to_irq(&msm_gpio.gpio_chip, generic_handle_irq(msm_gpio_to_irq(&msm_gpio.gpio_chip,
i)); i));
} }
desc->chip->ack(irq); data->chip->irq_ack(data);
} }
static int msm_gpio_irq_set_wake(unsigned int irq, unsigned int on) static int msm_gpio_irq_set_wake(struct irq_data *d, unsigned int on)
{ {
int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, irq); int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq);
if (on) { if (on) {
if (bitmap_empty(msm_gpio.wake_irqs, NR_GPIO_IRQS)) if (bitmap_empty(msm_gpio.wake_irqs, NR_GPIO_IRQS))
set_irq_wake(TLMM_SCSS_SUMMARY_IRQ, 1); irq_set_irq_wake(TLMM_SCSS_SUMMARY_IRQ, 1);
set_bit(gpio, msm_gpio.wake_irqs); set_bit(gpio, msm_gpio.wake_irqs);
} else { } else {
clear_bit(gpio, msm_gpio.wake_irqs); clear_bit(gpio, msm_gpio.wake_irqs);
if (bitmap_empty(msm_gpio.wake_irqs, NR_GPIO_IRQS)) if (bitmap_empty(msm_gpio.wake_irqs, NR_GPIO_IRQS))
set_irq_wake(TLMM_SCSS_SUMMARY_IRQ, 0); irq_set_irq_wake(TLMM_SCSS_SUMMARY_IRQ, 0);
} }
return 0; return 0;
...@@ -340,11 +341,11 @@ static int msm_gpio_irq_set_wake(unsigned int irq, unsigned int on) ...@@ -340,11 +341,11 @@ static int msm_gpio_irq_set_wake(unsigned int irq, unsigned int on)
static struct irq_chip msm_gpio_irq_chip = { static struct irq_chip msm_gpio_irq_chip = {
.name = "msmgpio", .name = "msmgpio",
.mask = msm_gpio_irq_mask, .irq_mask = msm_gpio_irq_mask,
.unmask = msm_gpio_irq_unmask, .irq_unmask = msm_gpio_irq_unmask,
.ack = msm_gpio_irq_ack, .irq_ack = msm_gpio_irq_ack,
.set_type = msm_gpio_irq_set_type, .irq_set_type = msm_gpio_irq_set_type,
.set_wake = msm_gpio_irq_set_wake, .irq_set_wake = msm_gpio_irq_set_wake,
}; };
static int __devinit msm_gpio_probe(struct platform_device *dev) static int __devinit msm_gpio_probe(struct platform_device *dev)
...@@ -361,12 +362,12 @@ static int __devinit msm_gpio_probe(struct platform_device *dev) ...@@ -361,12 +362,12 @@ static int __devinit msm_gpio_probe(struct platform_device *dev)
for (i = 0; i < msm_gpio.gpio_chip.ngpio; ++i) { for (i = 0; i < msm_gpio.gpio_chip.ngpio; ++i) {
irq = msm_gpio_to_irq(&msm_gpio.gpio_chip, i); irq = msm_gpio_to_irq(&msm_gpio.gpio_chip, i);
set_irq_chip(irq, &msm_gpio_irq_chip); irq_set_chip_and_handler(irq, &msm_gpio_irq_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
set_irq_chained_handler(TLMM_SCSS_SUMMARY_IRQ, irq_set_chained_handler(TLMM_SCSS_SUMMARY_IRQ,
msm_summary_irq_handler); msm_summary_irq_handler);
return 0; return 0;
} }
...@@ -378,7 +379,7 @@ static int __devexit msm_gpio_remove(struct platform_device *dev) ...@@ -378,7 +379,7 @@ static int __devexit msm_gpio_remove(struct platform_device *dev)
if (ret < 0) if (ret < 0)
return ret; return ret;
set_irq_handler(TLMM_SCSS_SUMMARY_IRQ, NULL); irq_set_handler(TLMM_SCSS_SUMMARY_IRQ, NULL);
return 0; return 0;
} }
......
...@@ -293,10 +293,10 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type) ...@@ -293,10 +293,10 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
val = readl(msm_chip->regs.int_edge); val = readl(msm_chip->regs.int_edge);
if (flow_type & IRQ_TYPE_EDGE_BOTH) { if (flow_type & IRQ_TYPE_EDGE_BOTH) {
writel(val | mask, msm_chip->regs.int_edge); writel(val | mask, msm_chip->regs.int_edge);
irq_desc[d->irq].handle_irq = handle_edge_irq; __irq_set_handler_locked(d->irq, handle_edge_irq);
} else { } else {
writel(val & ~mask, msm_chip->regs.int_edge); writel(val & ~mask, msm_chip->regs.int_edge);
irq_desc[d->irq].handle_irq = handle_level_irq; __irq_set_handler_locked(d->irq, handle_level_irq);
} }
if ((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) { if ((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) {
msm_chip->both_edge_detect |= mask; msm_chip->both_edge_detect |= mask;
...@@ -354,9 +354,9 @@ static int __init msm_init_gpio(void) ...@@ -354,9 +354,9 @@ static int __init msm_init_gpio(void)
msm_gpio_chips[j].chip.base + msm_gpio_chips[j].chip.base +
msm_gpio_chips[j].chip.ngpio) msm_gpio_chips[j].chip.ngpio)
j++; j++;
set_irq_chip_data(i, &msm_gpio_chips[j]); irq_set_chip_data(i, &msm_gpio_chips[j]);
set_irq_chip(i, &msm_gpio_irq_chip); irq_set_chip_and_handler(i, &msm_gpio_irq_chip,
set_irq_handler(i, handle_edge_irq); handle_edge_irq);
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
...@@ -366,10 +366,10 @@ static int __init msm_init_gpio(void) ...@@ -366,10 +366,10 @@ static int __init msm_init_gpio(void)
gpiochip_add(&msm_gpio_chips[i].chip); gpiochip_add(&msm_gpio_chips[i].chip);
} }
set_irq_chained_handler(INT_GPIO_GROUP1, msm_gpio_irq_handler); irq_set_chained_handler(INT_GPIO_GROUP1, msm_gpio_irq_handler);
set_irq_chained_handler(INT_GPIO_GROUP2, msm_gpio_irq_handler); irq_set_chained_handler(INT_GPIO_GROUP2, msm_gpio_irq_handler);
set_irq_wake(INT_GPIO_GROUP1, 1); irq_set_irq_wake(INT_GPIO_GROUP1, 1);
set_irq_wake(INT_GPIO_GROUP2, 2); irq_set_irq_wake(INT_GPIO_GROUP2, 2);
return 0; return 0;
} }
......
...@@ -313,11 +313,11 @@ static int msm_irq_set_type(struct irq_data *d, unsigned int flow_type) ...@@ -313,11 +313,11 @@ static int msm_irq_set_type(struct irq_data *d, unsigned int flow_type)
type = msm_irq_shadow_reg[index].int_type; type = msm_irq_shadow_reg[index].int_type;
if (flow_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) { if (flow_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
type |= b; type |= b;
irq_desc[d->irq].handle_irq = handle_edge_irq; __irq_set_handler_locked(d->irq, handle_edge_irq);
} }
if (flow_type & (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW)) { if (flow_type & (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW)) {
type &= ~b; type &= ~b;
irq_desc[d->irq].handle_irq = handle_level_irq; __irq_set_handler_locked(d->irq, handle_level_irq);
} }
writel(type, treg); writel(type, treg);
msm_irq_shadow_reg[index].int_type = type; msm_irq_shadow_reg[index].int_type = type;
...@@ -357,8 +357,7 @@ void __init msm_init_irq(void) ...@@ -357,8 +357,7 @@ void __init msm_init_irq(void)
writel(3, VIC_INT_MASTEREN); writel(3, VIC_INT_MASTEREN);
for (n = 0; n < NR_MSM_IRQS; n++) { for (n = 0; n < NR_MSM_IRQS; n++) {
set_irq_chip(n, &msm_irq_chip); irq_set_chip_and_handler(n, &msm_irq_chip, handle_level_irq);
set_irq_handler(n, handle_level_irq);
set_irq_flags(n, IRQF_VALID); set_irq_flags(n, IRQF_VALID);
} }
} }
...@@ -100,11 +100,11 @@ static int msm_irq_set_type(struct irq_data *d, unsigned int flow_type) ...@@ -100,11 +100,11 @@ static int msm_irq_set_type(struct irq_data *d, unsigned int flow_type)
if (flow_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) { if (flow_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
writel(readl(treg) | b, treg); writel(readl(treg) | b, treg);
irq_desc[d->irq].handle_irq = handle_edge_irq; __irq_set_handler_locked(d->irq, handle_edge_irq);
} }
if (flow_type & (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW)) { if (flow_type & (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW)) {
writel(readl(treg) & (~b), treg); writel(readl(treg) & (~b), treg);
irq_desc[d->irq].handle_irq = handle_level_irq; __irq_set_handler_locked(d->irq, handle_level_irq);
} }
return 0; return 0;
} }
...@@ -145,8 +145,7 @@ void __init msm_init_irq(void) ...@@ -145,8 +145,7 @@ void __init msm_init_irq(void)
writel(1, VIC_INT_MASTEREN); writel(1, VIC_INT_MASTEREN);
for (n = 0; n < NR_MSM_IRQS; n++) { for (n = 0; n < NR_MSM_IRQS; n++) {
set_irq_chip(n, &msm_irq_chip); irq_set_chip_and_handler(n, &msm_irq_chip, handle_level_irq);
set_irq_handler(n, handle_level_irq);
set_irq_flags(n, IRQF_VALID); set_irq_flags(n, IRQF_VALID);
} }
} }
...@@ -105,10 +105,10 @@ static int sirc_irq_set_type(struct irq_data *d, unsigned int flow_type) ...@@ -105,10 +105,10 @@ static int sirc_irq_set_type(struct irq_data *d, unsigned int flow_type)
val = readl(sirc_regs.int_type); val = readl(sirc_regs.int_type);
if (flow_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) { if (flow_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
val |= mask; val |= mask;
irq_desc[d->irq].handle_irq = handle_edge_irq; __irq_set_handler_locked(d->irq, handle_edge_irq);
} else { } else {
val &= ~mask; val &= ~mask;
irq_desc[d->irq].handle_irq = handle_level_irq; __irq_set_handler_locked(d->irq, handle_level_irq);
} }
writel(val, sirc_regs.int_type); writel(val, sirc_regs.int_type);
...@@ -158,15 +158,14 @@ void __init msm_init_sirc(void) ...@@ -158,15 +158,14 @@ void __init msm_init_sirc(void)
wake_enable = 0; wake_enable = 0;
for (i = FIRST_SIRC_IRQ; i < LAST_SIRC_IRQ; i++) { for (i = FIRST_SIRC_IRQ; i < LAST_SIRC_IRQ; i++) {
set_irq_chip(i, &sirc_irq_chip); irq_set_chip_and_handler(i, &sirc_irq_chip, handle_edge_irq);
set_irq_handler(i, handle_edge_irq);
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
for (i = 0; i < ARRAY_SIZE(sirc_reg_table); i++) { for (i = 0; i < ARRAY_SIZE(sirc_reg_table); i++) {
set_irq_chained_handler(sirc_reg_table[i].cascade_irq, irq_set_chained_handler(sirc_reg_table[i].cascade_irq,
sirc_irq_handler); sirc_irq_handler);
set_irq_wake(sirc_reg_table[i].cascade_irq, 1); irq_set_irq_wake(sirc_reg_table[i].cascade_irq, 1);
} }
return; return;
} }
......
...@@ -38,8 +38,8 @@ void __init mv78xx0_init_irq(void) ...@@ -38,8 +38,8 @@ void __init mv78xx0_init_irq(void)
orion_gpio_init(0, 32, GPIO_VIRT_BASE, orion_gpio_init(0, 32, GPIO_VIRT_BASE,
mv78xx0_core_index() ? 0x18 : 0, mv78xx0_core_index() ? 0x18 : 0,
IRQ_MV78XX0_GPIO_START); IRQ_MV78XX0_GPIO_START);
set_irq_chained_handler(IRQ_MV78XX0_GPIO_0_7, gpio_irq_handler); irq_set_chained_handler(IRQ_MV78XX0_GPIO_0_7, gpio_irq_handler);
set_irq_chained_handler(IRQ_MV78XX0_GPIO_8_15, gpio_irq_handler); irq_set_chained_handler(IRQ_MV78XX0_GPIO_8_15, gpio_irq_handler);
set_irq_chained_handler(IRQ_MV78XX0_GPIO_16_23, gpio_irq_handler); irq_set_chained_handler(IRQ_MV78XX0_GPIO_16_23, gpio_irq_handler);
set_irq_chained_handler(IRQ_MV78XX0_GPIO_24_31, gpio_irq_handler); irq_set_chained_handler(IRQ_MV78XX0_GPIO_24_31, gpio_irq_handler);
} }
...@@ -199,12 +199,11 @@ static void __init mx31ads_init_expio(void) ...@@ -199,12 +199,11 @@ static void __init mx31ads_init_expio(void)
__raw_writew(0xFFFF, PBC_INTSTATUS_REG); __raw_writew(0xFFFF, PBC_INTSTATUS_REG);
for (i = MXC_EXP_IO_BASE; i < (MXC_EXP_IO_BASE + MXC_MAX_EXP_IO_LINES); for (i = MXC_EXP_IO_BASE; i < (MXC_EXP_IO_BASE + MXC_MAX_EXP_IO_LINES);
i++) { i++) {
set_irq_chip(i, &expio_irq_chip); irq_set_chip_and_handler(i, &expio_irq_chip, handle_level_irq);
set_irq_handler(i, handle_level_irq);
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
set_irq_type(EXPIO_PARENT_INT, IRQ_TYPE_LEVEL_HIGH); irq_set_irq_type(EXPIO_PARENT_INT, IRQ_TYPE_LEVEL_HIGH);
set_irq_chained_handler(EXPIO_PARENT_INT, mx31ads_expio_irq_handler); irq_set_chained_handler(EXPIO_PARENT_INT, mx31ads_expio_irq_handler);
} }
#ifdef CONFIG_MACH_MX31ADS_WM1133_EV1 #ifdef CONFIG_MACH_MX31ADS_WM1133_EV1
......
...@@ -212,7 +212,7 @@ void __init eukrea_mbimx51_baseboard_init(void) ...@@ -212,7 +212,7 @@ void __init eukrea_mbimx51_baseboard_init(void)
gpio_request(MBIMX51_TSC2007_GPIO, "tsc2007_irq"); gpio_request(MBIMX51_TSC2007_GPIO, "tsc2007_irq");
gpio_direction_input(MBIMX51_TSC2007_GPIO); gpio_direction_input(MBIMX51_TSC2007_GPIO);
set_irq_type(MBIMX51_TSC2007_IRQ, IRQF_TRIGGER_FALLING); irq_set_irq_type(MBIMX51_TSC2007_IRQ, IRQF_TRIGGER_FALLING);
i2c_register_board_info(1, mbimx51_i2c_devices, i2c_register_board_info(1, mbimx51_i2c_devices,
ARRAY_SIZE(mbimx51_i2c_devices)); ARRAY_SIZE(mbimx51_i2c_devices));
......
...@@ -136,7 +136,7 @@ static int mxs_gpio_set_irq_type(struct irq_data *d, unsigned int type) ...@@ -136,7 +136,7 @@ static int mxs_gpio_set_irq_type(struct irq_data *d, unsigned int type)
static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc) static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc)
{ {
u32 irq_stat; u32 irq_stat;
struct mxs_gpio_port *port = (struct mxs_gpio_port *)get_irq_data(irq); struct mxs_gpio_port *port = (struct mxs_gpio_port *)irq_get_handler_data(irq);
u32 gpio_irq_no_base = port->virtual_irq_start; u32 gpio_irq_no_base = port->virtual_irq_start;
desc->irq_data.chip->irq_ack(&desc->irq_data); desc->irq_data.chip->irq_ack(&desc->irq_data);
...@@ -265,14 +265,14 @@ int __init mxs_gpio_init(struct mxs_gpio_port *port, int cnt) ...@@ -265,14 +265,14 @@ int __init mxs_gpio_init(struct mxs_gpio_port *port, int cnt)
for (j = port[i].virtual_irq_start; for (j = port[i].virtual_irq_start;
j < port[i].virtual_irq_start + 32; j++) { j < port[i].virtual_irq_start + 32; j++) {
set_irq_chip(j, &gpio_irq_chip); irq_set_chip_and_handler(j, &gpio_irq_chip,
set_irq_handler(j, handle_level_irq); handle_level_irq);
set_irq_flags(j, IRQF_VALID); set_irq_flags(j, IRQF_VALID);
} }
/* setup one handler for each entry */ /* setup one handler for each entry */
set_irq_chained_handler(port[i].irq, mxs_gpio_irq_handler); irq_set_chained_handler(port[i].irq, mxs_gpio_irq_handler);
set_irq_data(port[i].irq, &port[i]); irq_set_handler_data(port[i].irq, &port[i]);
/* register gpio chip */ /* register gpio chip */
port[i].chip.direction_input = mxs_gpio_direction_input; port[i].chip.direction_input = mxs_gpio_direction_input;
......
...@@ -74,8 +74,7 @@ void __init icoll_init_irq(void) ...@@ -74,8 +74,7 @@ void __init icoll_init_irq(void)
mxs_reset_block(icoll_base + HW_ICOLL_CTRL); mxs_reset_block(icoll_base + HW_ICOLL_CTRL);
for (i = 0; i < MXS_INTERNAL_IRQS; i++) { for (i = 0; i < MXS_INTERNAL_IRQS; i++) {
set_irq_chip(i, &mxs_icoll_chip); irq_set_chip_and_handler(i, &mxs_icoll_chip, handle_level_irq);
set_irq_handler(i, handle_level_irq);
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
} }
...@@ -171,13 +171,13 @@ void __init netx_init_irq(void) ...@@ -171,13 +171,13 @@ void __init netx_init_irq(void)
vic_init(__io(io_p2v(NETX_PA_VIC)), 0, ~0, 0); vic_init(__io(io_p2v(NETX_PA_VIC)), 0, ~0, 0);
for (irq = NETX_IRQ_HIF_CHAINED(0); irq <= NETX_IRQ_HIF_LAST; irq++) { for (irq = NETX_IRQ_HIF_CHAINED(0); irq <= NETX_IRQ_HIF_LAST; irq++) {
set_irq_chip(irq, &netx_hif_chip); irq_set_chip_and_handler(irq, &netx_hif_chip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID); set_irq_flags(irq, IRQF_VALID);
} }
writel(NETX_DPMAS_INT_EN_GLB_EN, NETX_DPMAS_INT_EN); writel(NETX_DPMAS_INT_EN_GLB_EN, NETX_DPMAS_INT_EN);
set_irq_chained_handler(NETX_IRQ_HIF, netx_hif_demux_handler); irq_set_chained_handler(NETX_IRQ_HIF, netx_hif_demux_handler);
} }
static int __init netx_init(void) static int __init netx_init(void)
......
...@@ -107,8 +107,8 @@ void __init board_a9m9750dev_init_irq(void) ...@@ -107,8 +107,8 @@ void __init board_a9m9750dev_init_irq(void)
__func__); __func__);
for (i = FPGA_IRQ(0); i <= FPGA_IRQ(7); ++i) { for (i = FPGA_IRQ(0); i <= FPGA_IRQ(7); ++i) {
set_irq_chip(i, &a9m9750dev_fpga_chip); irq_set_chip_and_handler(i, &a9m9750dev_fpga_chip,
set_irq_handler(i, handle_level_irq); handle_level_irq);
set_irq_flags(i, IRQF_VALID); set_irq_flags(i, IRQF_VALID);
} }
...@@ -118,8 +118,8 @@ void __init board_a9m9750dev_init_irq(void) ...@@ -118,8 +118,8 @@ void __init board_a9m9750dev_init_irq(void)
REGSET(eic, SYS_EIC, LVEDG, LEVEL); REGSET(eic, SYS_EIC, LVEDG, LEVEL);
__raw_writel(eic, SYS_EIC(2)); __raw_writel(eic, SYS_EIC(2));
set_irq_chained_handler(IRQ_NS9XXX_EXT2, irq_set_chained_handler(IRQ_NS9XXX_EXT2,
a9m9750dev_fpga_demux_handler); a9m9750dev_fpga_demux_handler);
} }
void __init board_a9m9750dev_init_machine(void) void __init board_a9m9750dev_init_machine(void)
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册