aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/jz4740/gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/jz4740/gpio.c')
-rw-r--r--arch/mips/jz4740/gpio.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/arch/mips/jz4740/gpio.c b/arch/mips/jz4740/gpio.c
index 1e28b758de1f..9bb0770fa76e 100644
--- a/arch/mips/jz4740/gpio.c
+++ b/arch/mips/jz4740/gpio.c
@@ -86,7 +86,6 @@ struct jz_gpio_chip {
86 spinlock_t lock; 86 spinlock_t lock;
87 87
88 struct gpio_chip gpio_chip; 88 struct gpio_chip gpio_chip;
89 struct irq_chip irq_chip;
90 struct sys_device sysdev; 89 struct sys_device sysdev;
91}; 90};
92 91
@@ -435,6 +434,17 @@ static int jz_gpio_irq_set_wake(struct irq_data *data, unsigned int on)
435 return 0; 434 return 0;
436} 435}
437 436
437static struct irq_chip jz_gpio_irq_chip = {
438 .name = "GPIO",
439 .irq_mask = jz_gpio_irq_mask,
440 .irq_unmask = jz_gpio_irq_unmask,
441 .irq_ack = jz_gpio_irq_ack,
442 .irq_startup = jz_gpio_irq_startup,
443 .irq_shutdown = jz_gpio_irq_shutdown,
444 .irq_set_type = jz_gpio_irq_set_type,
445 .irq_set_wake = jz_gpio_irq_set_wake,
446};
447
438/* 448/*
439 * This lock class tells lockdep that GPIO irqs are in a different 449 * This lock class tells lockdep that GPIO irqs are in a different
440 * category than their parents, so it won't report false recursion. 450 * category than their parents, so it won't report false recursion.
@@ -453,16 +463,6 @@ static struct lock_class_key gpio_lock_class;
453 .base = JZ4740_GPIO_BASE_ ## _bank, \ 463 .base = JZ4740_GPIO_BASE_ ## _bank, \
454 .ngpio = JZ4740_GPIO_NUM_ ## _bank, \ 464 .ngpio = JZ4740_GPIO_NUM_ ## _bank, \
455 }, \ 465 }, \
456 .irq_chip = { \
457 .name = "GPIO Bank " # _bank, \
458 .irq_mask = jz_gpio_irq_mask, \
459 .irq_unmask = jz_gpio_irq_unmask, \
460 .irq_ack = jz_gpio_irq_ack, \
461 .irq_startup = jz_gpio_irq_startup, \
462 .irq_shutdown = jz_gpio_irq_shutdown, \
463 .irq_set_type = jz_gpio_irq_set_type, \
464 .irq_set_wake = jz_gpio_irq_set_wake, \
465 }, \
466} 466}
467 467
468static struct jz_gpio_chip jz4740_gpio_chips[] = { 468static struct jz_gpio_chip jz4740_gpio_chips[] = {
@@ -529,7 +529,8 @@ static int jz4740_gpio_chip_init(struct jz_gpio_chip *chip, unsigned int id)
529 for (irq = chip->irq_base; irq < chip->irq_base + chip->gpio_chip.ngpio; ++irq) { 529 for (irq = chip->irq_base; irq < chip->irq_base + chip->gpio_chip.ngpio; ++irq) {
530 lockdep_set_class(&irq_desc[irq].lock, &gpio_lock_class); 530 lockdep_set_class(&irq_desc[irq].lock, &gpio_lock_class);
531 set_irq_chip_data(irq, chip); 531 set_irq_chip_data(irq, chip);
532 set_irq_chip_and_handler(irq, &chip->irq_chip, handle_level_irq); 532 set_irq_chip_and_handler(irq, &jz_gpio_irq_chip,
533 handle_level_irq);
533 } 534 }
534 535
535 return 0; 536 return 0;