aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpio-tegra.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpio/gpio-tegra.c')
-rw-r--r--drivers/gpio/gpio-tegra.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index ec891a27952f..661b0e34e067 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -98,7 +98,6 @@ struct tegra_gpio_info {
98 const struct tegra_gpio_soc_config *soc; 98 const struct tegra_gpio_soc_config *soc;
99 struct gpio_chip gc; 99 struct gpio_chip gc;
100 struct irq_chip ic; 100 struct irq_chip ic;
101 struct lock_class_key lock_class;
102 u32 bank_count; 101 u32 bank_count;
103}; 102};
104 103
@@ -547,6 +546,12 @@ static const struct dev_pm_ops tegra_gpio_pm_ops = {
547 SET_SYSTEM_SLEEP_PM_OPS(tegra_gpio_suspend, tegra_gpio_resume) 546 SET_SYSTEM_SLEEP_PM_OPS(tegra_gpio_suspend, tegra_gpio_resume)
548}; 547};
549 548
549/*
550 * This lock class tells lockdep that GPIO irqs are in a different category
551 * than their parents, so it won't report false recursion.
552 */
553static struct lock_class_key gpio_lock_class;
554
550static int tegra_gpio_probe(struct platform_device *pdev) 555static int tegra_gpio_probe(struct platform_device *pdev)
551{ 556{
552 const struct tegra_gpio_soc_config *config; 557 const struct tegra_gpio_soc_config *config;
@@ -660,7 +665,7 @@ static int tegra_gpio_probe(struct platform_device *pdev)
660 665
661 bank = &tgi->bank_info[GPIO_BANK(gpio)]; 666 bank = &tgi->bank_info[GPIO_BANK(gpio)];
662 667
663 irq_set_lockdep_class(irq, &tgi->lock_class); 668 irq_set_lockdep_class(irq, &gpio_lock_class);
664 irq_set_chip_data(irq, bank); 669 irq_set_chip_data(irq, bank);
665 irq_set_chip_and_handler(irq, &tgi->ic, handle_simple_irq); 670 irq_set_chip_and_handler(irq, &tgi->ic, handle_simple_irq);
666 } 671 }