diff options
author | Vic Yang <victoryang@google.com> | 2015-01-15 15:05:41 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-01-17 01:00:02 +0000 |
commit | 7e8567fd5ecba1dbac6773667b66a58cbd9b85b2 (patch) | |
tree | 70870979dbe8d40576b8099c0aea2956c6b7287f | |
parent | 535bbbb7749d846d48d17f4f9f6d12701e489d2f (diff) | |
download | chrome-ec-7e8567fd5ecba1dbac6773667b66a58cbd9b85b2.tar.gz |
mec1322: Clear interrupt status before enabling GPIO interrupt
Before enabling GPIO interrupts on boot, we should clear pending
interrupt status to make sure the interrupts don't fire unexpectedly.
BRANCH=None
BUG=chrome-os-partner:35308
TEST=Boot on Glower and make sure GPIO interrupts aren't triggered on
boot.
Change-Id: I2729b4a5046063e4ee4c08dcb7084a329bfdf042
Signed-off-by: Vic Yang <victoryang@google.com>
Reviewed-on: https://chromium-review.googlesource.com/241112
Tested-by: Vic Yang <victoryang@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Queue: Vic Yang <victoryang@chromium.org>
-rw-r--r-- | chip/mec1322/gpio.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/chip/mec1322/gpio.c b/chip/mec1322/gpio.c index 1be969e60c..783fa52bf4 100644 --- a/chip/mec1322/gpio.c +++ b/chip/mec1322/gpio.c @@ -181,13 +181,20 @@ void gpio_pre_init(void) gpio_set_flags_by_mask(g->port, g->mask, g->flags); } +/* Clear any interrupt flags before enabling GPIO interrupt */ +#define ENABLE_GPIO_GIRQ(x) \ + do { \ + MEC1322_INT_SOURCE(x) |= MEC1322_INT_RESULT(x); \ + task_enable_irq(MEC1322_IRQ_GIRQ ## x); \ + } while (0) + static void gpio_init(void) { - task_enable_irq(MEC1322_IRQ_GIRQ8); - task_enable_irq(MEC1322_IRQ_GIRQ9); - task_enable_irq(MEC1322_IRQ_GIRQ10); - task_enable_irq(MEC1322_IRQ_GIRQ11); - task_enable_irq(MEC1322_IRQ_GIRQ20); + ENABLE_GPIO_GIRQ(8); + ENABLE_GPIO_GIRQ(9); + ENABLE_GPIO_GIRQ(10); + ENABLE_GPIO_GIRQ(11); + ENABLE_GPIO_GIRQ(20); } DECLARE_HOOK(HOOK_INIT, gpio_init, HOOK_PRIO_DEFAULT); |