Skip to content

Commit

Permalink
[ARM] 5575/1: ep93xx: Show gpio interrupt type in debugfs output.
Browse files Browse the repository at this point in the history
ep93xx: Show gpio interrupt type in debugfs output.

EP93xx uses a private implementation for the debugfs output.
Modify this output so it includes the interrupt type when the
gpio is configured as an interrupt

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: Ryan Mallon <ryan@bluewatersys.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Hartley Sweeten authored and Russell King committed Jun 27, 2009
1 parent ddf4f3d commit f04989b
Showing 1 changed file with 51 additions and 5 deletions.
56 changes: 51 additions & 5 deletions arch/arm/mach-ep93xx/gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,15 +111,61 @@ static void ep93xx_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
{
struct ep93xx_gpio_chip *ep93xx_chip = to_ep93xx_gpio_chip(chip);
u8 data_reg, data_dir_reg;
int i;
int gpio, i;

data_reg = __raw_readb(ep93xx_chip->data_reg);
data_dir_reg = __raw_readb(ep93xx_chip->data_dir_reg);

for (i = 0; i < chip->ngpio; i++)
seq_printf(s, "GPIO %s%d: %s %s\n", chip->label, i,
(data_reg & (1 << i)) ? "set" : "clear",
(data_dir_reg & (1 << i)) ? "out" : "in");
gpio = ep93xx_chip->chip.base;
for (i = 0; i < chip->ngpio; i++, gpio++) {
int is_out = data_dir_reg & (1 << i);

seq_printf(s, " %s%d gpio-%-3d (%-12s) %s %s",
chip->label, i, gpio,
gpiochip_is_requested(chip, i) ? : "",
is_out ? "out" : "in ",
(data_reg & (1 << i)) ? "hi" : "lo");

if (!is_out) {
int irq = gpio_to_irq(gpio);
struct irq_desc *desc = irq_desc + irq;

if (irq >= 0 && desc->action) {
char *trigger;

switch (desc->status & IRQ_TYPE_SENSE_MASK) {
case IRQ_TYPE_NONE:
trigger = "(default)";
break;
case IRQ_TYPE_EDGE_FALLING:
trigger = "edge-falling";
break;
case IRQ_TYPE_EDGE_RISING:
trigger = "edge-rising";
break;
case IRQ_TYPE_EDGE_BOTH:
trigger = "edge-both";
break;
case IRQ_TYPE_LEVEL_HIGH:
trigger = "level-high";
break;
case IRQ_TYPE_LEVEL_LOW:
trigger = "level-low";
break;
default:
trigger = "?trigger?";
break;
}

seq_printf(s, " irq-%d %s%s",
irq, trigger,
(desc->status & IRQ_WAKEUP)
? " wakeup" : "");
}
}

seq_printf(s, "\n");
}
}

#define EP93XX_GPIO_BANK(name, dr, ddr, base_gpio) \
Expand Down

0 comments on commit f04989b

Please sign in to comment.