summaryrefslogtreecommitdiff
path: root/chip/mec1322/gpio.c
diff options
context:
space:
mode:
authorVic Yang <victoryang@google.com>2015-01-15 15:05:41 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-01-17 01:00:02 +0000
commit7e8567fd5ecba1dbac6773667b66a58cbd9b85b2 (patch)
tree70870979dbe8d40576b8099c0aea2956c6b7287f /chip/mec1322/gpio.c
parent535bbbb7749d846d48d17f4f9f6d12701e489d2f (diff)
downloadchrome-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>
Diffstat (limited to 'chip/mec1322/gpio.c')
-rw-r--r--chip/mec1322/gpio.c17
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);