Skip to content

Commit 46bada6

Browse files
committed
Merge branch 'kevin' into fixes
2 parents 626f991 + 7b86cef commit 46bada6

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

drivers/gpio/gpio-omap.c

+13-1
Original file line numberDiff line numberDiff line change
@@ -174,12 +174,22 @@ static inline void _gpio_dbck_enable(struct gpio_bank *bank)
174174
if (bank->dbck_enable_mask && !bank->dbck_enabled) {
175175
clk_enable(bank->dbck);
176176
bank->dbck_enabled = true;
177+
178+
__raw_writel(bank->dbck_enable_mask,
179+
bank->base + bank->regs->debounce_en);
177180
}
178181
}
179182

180183
static inline void _gpio_dbck_disable(struct gpio_bank *bank)
181184
{
182185
if (bank->dbck_enable_mask && bank->dbck_enabled) {
186+
/*
187+
* Disable debounce before cutting it's clock. If debounce is
188+
* enabled but the clock is not, GPIO module seems to be unable
189+
* to detect events and generate interrupts at least on OMAP3.
190+
*/
191+
__raw_writel(0, bank->base + bank->regs->debounce_en);
192+
183193
clk_disable(bank->dbck);
184194
bank->dbck_enabled = false;
185195
}
@@ -1081,7 +1091,6 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)
10811091
bank->is_mpuio = pdata->is_mpuio;
10821092
bank->non_wakeup_gpios = pdata->non_wakeup_gpios;
10831093
bank->loses_context = pdata->loses_context;
1084-
bank->get_context_loss_count = pdata->get_context_loss_count;
10851094
bank->regs = pdata->regs;
10861095
#ifdef CONFIG_OF_GPIO
10871096
bank->chip.of_node = of_node_get(node);
@@ -1135,6 +1144,9 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)
11351144
omap_gpio_chip_init(bank);
11361145
omap_gpio_show_rev(bank);
11371146

1147+
if (bank->loses_context)
1148+
bank->get_context_loss_count = pdata->get_context_loss_count;
1149+
11381150
pm_runtime_put(bank->dev);
11391151

11401152
list_add_tail(&bank->node, &omap_gpio_list);

0 commit comments

Comments
 (0)