Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=581d62ab304fb43d2ae4de06527676661b171cf6
Commit:     581d62ab304fb43d2ae4de06527676661b171cf6
Parent:     5e10b4a653b9c7942fd1044fe5b592d544736897
Author:     Michael Hennerich <[EMAIL PROTECTED]>
AuthorDate: Thu Jun 14 13:30:23 2007 +0800
Committer:  Bryan Wu <[EMAIL PROTECTED]>
CommitDate: Thu Jun 14 13:30:23 2007 +0800

    Blackfin arch: fix bug can not wakeup from sleep via push buttons
    
    Signed-off-by: Michael Hennerich <[EMAIL PROTECTED]>
    Signed-off-by: Bryan Wu <[EMAIL PROTECTED]>
---
 arch/blackfin/kernel/bfin_gpio.c |   12 ++++++++++--
 include/asm-blackfin/gpio.h      |    1 +
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c
index 8cefed8..bb1f4fb 100644
--- a/arch/blackfin/kernel/bfin_gpio.c
+++ b/arch/blackfin/kernel/bfin_gpio.c
@@ -494,19 +494,24 @@ u32 gpio_pm_setup(void)
                        gpio_bank_saved[bank].dir   = gpio_bankb[bank]->dir;
                        gpio_bank_saved[bank].edge  = gpio_bankb[bank]->edge;
                        gpio_bank_saved[bank].both  = gpio_bankb[bank]->both;
+                       gpio_bank_saved[bank].reserved = reserved_map[bank];
 
                        gpio = i;
 
                        while (mask) {
                                if (mask & 1) {
-                                       bfin_gpio_wakeup_type(gpio, 
wakeup_flags_map[gpio]);
+                                       reserved_map[gpio_bank(gpio)] |=
+                                                       gpio_bit(gpio);
+                                       bfin_gpio_wakeup_type(gpio,
+                                               wakeup_flags_map[gpio]);
                                        set_gpio_data(gpio, 0); /*Clear*/
                                }
                                gpio++;
                                mask >>= 1;
                        }
 
-                       sic_iwr |= 1 << (sic_iwr_irqs[bank] - (IRQ_CORETMR + 
1));
+                       sic_iwr |= 1 <<
+                               (sic_iwr_irqs[bank] - (IRQ_CORETMR + 1));
                        gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)];
                }
        }
@@ -535,6 +540,9 @@ void gpio_pm_restore(void)
                        gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
                        gpio_bankb[bank]->edge  = gpio_bank_saved[bank].edge;
                        gpio_bankb[bank]->both  = gpio_bank_saved[bank].both;
+
+                       reserved_map[bank] = gpio_bank_saved[bank].reserved;
+
                }
 
                gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb;
diff --git a/include/asm-blackfin/gpio.h b/include/asm-blackfin/gpio.h
index aa0d550..d98d77a 100644
--- a/include/asm-blackfin/gpio.h
+++ b/include/asm-blackfin/gpio.h
@@ -332,6 +332,7 @@ struct gpio_port_s {
        unsigned short inen;
 
        unsigned short fer;
+       unsigned short reserved;
 };
 #endif /*CONFIG_PM*/
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to