diff options
-rw-r--r-- | drivers/gpio/gpio-nomadik.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/drivers/gpio/gpio-nomadik.c b/drivers/gpio/gpio-nomadik.c index 307b8131aa8c..380204781f84 100644 --- a/drivers/gpio/gpio-nomadik.c +++ b/drivers/gpio/gpio-nomadik.c | |||
@@ -811,20 +811,43 @@ static void nmk_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) | |||
811 | bool pull; | 811 | bool pull; |
812 | u32 bit = 1 << i; | 812 | u32 bit = 1 << i; |
813 | 813 | ||
814 | if (!label) | ||
815 | continue; | ||
816 | |||
817 | is_out = readl(nmk_chip->addr + NMK_GPIO_DIR) & bit; | 814 | is_out = readl(nmk_chip->addr + NMK_GPIO_DIR) & bit; |
818 | pull = !(readl(nmk_chip->addr + NMK_GPIO_PDIS) & bit); | 815 | pull = !(readl(nmk_chip->addr + NMK_GPIO_PDIS) & bit); |
819 | mode = nmk_gpio_get_mode(gpio); | 816 | mode = nmk_gpio_get_mode(gpio); |
820 | seq_printf(s, " gpio-%-3d (%-20.20s) %s %s %s %s", | 817 | seq_printf(s, " gpio-%-3d (%-20.20s) %s %s %s %s", |
821 | gpio, label, | 818 | gpio, label ?: "(none)", |
822 | is_out ? "out" : "in ", | 819 | is_out ? "out" : "in ", |
823 | chip->get | 820 | chip->get |
824 | ? (chip->get(chip, i) ? "hi" : "lo") | 821 | ? (chip->get(chip, i) ? "hi" : "lo") |
825 | : "? ", | 822 | : "? ", |
826 | (mode < 0) ? "unknown" : modes[mode], | 823 | (mode < 0) ? "unknown" : modes[mode], |
827 | pull ? "pull" : "none"); | 824 | pull ? "pull" : "none"); |
825 | |||
826 | if (label && !is_out) { | ||
827 | int irq = gpio_to_irq(gpio); | ||
828 | struct irq_desc *desc = irq_to_desc(irq); | ||
829 | |||
830 | /* This races with request_irq(), set_irq_type(), | ||
831 | * and set_irq_wake() ... but those are "rare". | ||
832 | */ | ||
833 | if (irq >= 0 && desc->action) { | ||
834 | char *trigger; | ||
835 | u32 bitmask = nmk_gpio_get_bitmask(gpio); | ||
836 | |||
837 | if (nmk_chip->edge_rising & bitmask) | ||
838 | trigger = "edge-rising"; | ||
839 | else if (nmk_chip->edge_falling & bitmask) | ||
840 | trigger = "edge-falling"; | ||
841 | else | ||
842 | trigger = "edge-undefined"; | ||
843 | |||
844 | seq_printf(s, " irq-%d %s%s", | ||
845 | irq, trigger, | ||
846 | irqd_is_wakeup_set(&desc->irq_data) | ||
847 | ? " wakeup" : ""); | ||
848 | } | ||
849 | } | ||
850 | |||
828 | seq_printf(s, "\n"); | 851 | seq_printf(s, "\n"); |
829 | } | 852 | } |
830 | } | 853 | } |