diff options
| author | David S. Miller <davem@davemloft.net> | 2012-07-19 11:17:30 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-07-19 11:17:30 -0700 | 
| commit | abaa72d7fd9a20a67b62e6afa0e746e27851dc33 (patch) | |
| tree | ebe4134fcc93a6e205e6004b3e652d7a62281651 /drivers/gpio/gpio-omap.c | |
| parent | 67da22d23fa6f3324e03bcd0580b914b2e4afbf3 (diff) | |
| parent | 3e4b9459fb0e149c6b74c9e89399a8fc39a92b44 (diff) | |
| download | olio-linux-3.10-abaa72d7fd9a20a67b62e6afa0e746e27851dc33.tar.xz olio-linux-3.10-abaa72d7fd9a20a67b62e6afa0e746e27851dc33.zip  | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
	drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
Diffstat (limited to 'drivers/gpio/gpio-omap.c')
| -rw-r--r-- | drivers/gpio/gpio-omap.c | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index c4ed1722734..4fbc208c32c 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c @@ -174,12 +174,22 @@ static inline void _gpio_dbck_enable(struct gpio_bank *bank)  	if (bank->dbck_enable_mask && !bank->dbck_enabled) {  		clk_enable(bank->dbck);  		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)  {  	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);  		bank->dbck_enabled = false;  	} @@ -1081,7 +1091,6 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)  	bank->is_mpuio = pdata->is_mpuio;  	bank->non_wakeup_gpios = pdata->non_wakeup_gpios;  	bank->loses_context = pdata->loses_context; -	bank->get_context_loss_count = pdata->get_context_loss_count;  	bank->regs = pdata->regs;  #ifdef CONFIG_OF_GPIO  	bank->chip.of_node = of_node_get(node); @@ -1135,6 +1144,9 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)  	omap_gpio_chip_init(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);  	list_add_tail(&bank->node, &omap_gpio_list);  |