Loading drivers/gpio/gpio-omap.c +13 −1 Original line number Original line Diff line number Diff line Loading @@ -174,12 +174,22 @@ static inline void _gpio_dbck_enable(struct gpio_bank *bank) if (bank->dbck_enable_mask && !bank->dbck_enabled) { if (bank->dbck_enable_mask && !bank->dbck_enabled) { clk_enable(bank->dbck); clk_enable(bank->dbck); bank->dbck_enabled = true; bank->dbck_enabled = true; __raw_writel(bank->dbck_enable_mask, bank->base + bank->regs->debounce_en); } } } } static inline void _gpio_dbck_disable(struct gpio_bank *bank) static inline void _gpio_dbck_disable(struct gpio_bank *bank) { { if (bank->dbck_enable_mask && bank->dbck_enabled) { if (bank->dbck_enable_mask && bank->dbck_enabled) { /* * Disable debounce before cutting it's clock. If debounce is * enabled but the clock is not, GPIO module seems to be unable * to detect events and generate interrupts at least on OMAP3. */ __raw_writel(0, bank->base + bank->regs->debounce_en); clk_disable(bank->dbck); clk_disable(bank->dbck); bank->dbck_enabled = false; bank->dbck_enabled = false; } } Loading Loading @@ -1081,7 +1091,6 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) bank->is_mpuio = pdata->is_mpuio; bank->is_mpuio = pdata->is_mpuio; bank->non_wakeup_gpios = pdata->non_wakeup_gpios; bank->non_wakeup_gpios = pdata->non_wakeup_gpios; bank->loses_context = pdata->loses_context; bank->loses_context = pdata->loses_context; bank->get_context_loss_count = pdata->get_context_loss_count; bank->regs = pdata->regs; bank->regs = pdata->regs; #ifdef CONFIG_OF_GPIO #ifdef CONFIG_OF_GPIO bank->chip.of_node = of_node_get(node); bank->chip.of_node = of_node_get(node); Loading Loading @@ -1135,6 +1144,9 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) omap_gpio_chip_init(bank); omap_gpio_chip_init(bank); omap_gpio_show_rev(bank); omap_gpio_show_rev(bank); if (bank->loses_context) bank->get_context_loss_count = pdata->get_context_loss_count; pm_runtime_put(bank->dev); pm_runtime_put(bank->dev); list_add_tail(&bank->node, &omap_gpio_list); list_add_tail(&bank->node, &omap_gpio_list); Loading Loading
drivers/gpio/gpio-omap.c +13 −1 Original line number Original line Diff line number Diff line Loading @@ -174,12 +174,22 @@ static inline void _gpio_dbck_enable(struct gpio_bank *bank) if (bank->dbck_enable_mask && !bank->dbck_enabled) { if (bank->dbck_enable_mask && !bank->dbck_enabled) { clk_enable(bank->dbck); clk_enable(bank->dbck); bank->dbck_enabled = true; bank->dbck_enabled = true; __raw_writel(bank->dbck_enable_mask, bank->base + bank->regs->debounce_en); } } } } static inline void _gpio_dbck_disable(struct gpio_bank *bank) static inline void _gpio_dbck_disable(struct gpio_bank *bank) { { if (bank->dbck_enable_mask && bank->dbck_enabled) { if (bank->dbck_enable_mask && bank->dbck_enabled) { /* * Disable debounce before cutting it's clock. If debounce is * enabled but the clock is not, GPIO module seems to be unable * to detect events and generate interrupts at least on OMAP3. */ __raw_writel(0, bank->base + bank->regs->debounce_en); clk_disable(bank->dbck); clk_disable(bank->dbck); bank->dbck_enabled = false; bank->dbck_enabled = false; } } Loading Loading @@ -1081,7 +1091,6 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) bank->is_mpuio = pdata->is_mpuio; bank->is_mpuio = pdata->is_mpuio; bank->non_wakeup_gpios = pdata->non_wakeup_gpios; bank->non_wakeup_gpios = pdata->non_wakeup_gpios; bank->loses_context = pdata->loses_context; bank->loses_context = pdata->loses_context; bank->get_context_loss_count = pdata->get_context_loss_count; bank->regs = pdata->regs; bank->regs = pdata->regs; #ifdef CONFIG_OF_GPIO #ifdef CONFIG_OF_GPIO bank->chip.of_node = of_node_get(node); bank->chip.of_node = of_node_get(node); Loading Loading @@ -1135,6 +1144,9 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) omap_gpio_chip_init(bank); omap_gpio_chip_init(bank); omap_gpio_show_rev(bank); omap_gpio_show_rev(bank); if (bank->loses_context) bank->get_context_loss_count = pdata->get_context_loss_count; pm_runtime_put(bank->dev); pm_runtime_put(bank->dev); list_add_tail(&bank->node, &omap_gpio_list); list_add_tail(&bank->node, &omap_gpio_list); Loading