Commit f04989bb authored by Hartley Sweeten's avatar Hartley Sweeten Committed by Russell King

[ARM] 5575/1: ep93xx: Show gpio interrupt type in debugfs output.

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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: default avatarRyan Mallon <ryan@bluewatersys.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent ddf4f3d9
...@@ -111,15 +111,61 @@ static void ep93xx_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) ...@@ -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); struct ep93xx_gpio_chip *ep93xx_chip = to_ep93xx_gpio_chip(chip);
u8 data_reg, data_dir_reg; u8 data_reg, data_dir_reg;
int i; int gpio, i;
data_reg = __raw_readb(ep93xx_chip->data_reg); data_reg = __raw_readb(ep93xx_chip->data_reg);
data_dir_reg = __raw_readb(ep93xx_chip->data_dir_reg); data_dir_reg = __raw_readb(ep93xx_chip->data_dir_reg);
for (i = 0; i < chip->ngpio; i++) gpio = ep93xx_chip->chip.base;
seq_printf(s, "GPIO %s%d: %s %s\n", chip->label, i, for (i = 0; i < chip->ngpio; i++, gpio++) {
(data_reg & (1 << i)) ? "set" : "clear", int is_out = data_dir_reg & (1 << i);
(data_dir_reg & (1 << i)) ? "out" : "in");
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) \ #define EP93XX_GPIO_BANK(name, dr, ddr, base_gpio) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment