summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru M Stan <amstan@chromium.org>2015-01-15 13:51:59 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-01-16 20:37:07 +0000
commitfe294979d6cc80a7ab71c2997502bfa2abd2912a (patch)
treea322c36b20cf7d8ef1f895f35d84de5deb32f03b
parent7893715cb7ef471002893ed128c241a8e8dfdacb (diff)
downloadchrome-ec-fe294979d6cc80a7ab71c2997502bfa2abd2912a.tar.gz
I2C: Increase priority of i2c_init
Chipset sometimes needs I2C, therefore i2c_init should have a higher priority than power_common_init so i2c is available by the time the chipset might be talking to the battery. BUG=chrome-os-partner:35502, chrome-os-partner:35173 TEST=There is no "battery not responding" message at startup on veyron TEST=EC boot takes less than 1 second on veyron BRANCH=none Change-Id: Ib10b653decc7703e706d4dd1976abf0fdbc25ac2 Signed-off-by: Alexandru M Stan <amstan@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/241102 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r--chip/lm4/i2c.c2
-rw-r--r--chip/mec1322/i2c.c2
-rw-r--r--chip/npcx/i2c.c2
-rw-r--r--chip/nrf51/i2c.c2
-rw-r--r--chip/stm32/i2c-stm32f.c2
-rw-r--r--chip/stm32/i2c-stm32f0.c2
-rw-r--r--chip/stm32/i2c-stm32l.c2
-rw-r--r--include/hooks.h12
8 files changed, 14 insertions, 12 deletions
diff --git a/chip/lm4/i2c.c b/chip/lm4/i2c.c
index 51470eed70..56b4666330 100644
--- a/chip/lm4/i2c.c
+++ b/chip/lm4/i2c.c
@@ -406,7 +406,7 @@ static void i2c_init(void)
i2c_set_timeout(i, 0);
}
}
-DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_INIT_I2C);
/**
* Handle an interrupt on the specified port.
diff --git a/chip/mec1322/i2c.c b/chip/mec1322/i2c.c
index adc3cef04d..038d4763d9 100644
--- a/chip/mec1322/i2c.c
+++ b/chip/mec1322/i2c.c
@@ -340,7 +340,7 @@ static void i2c_init(void)
for (i = 0; i < i2c_ports_used; ++i)
configure_port(i2c_ports[i].port, i2c_ports[i].kbps);
}
-DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_INIT_I2C);
static void handle_interrupt(int port)
{
diff --git a/chip/npcx/i2c.c b/chip/npcx/i2c.c
index 1e71ed6c7b..e09bda30b6 100644
--- a/chip/npcx/i2c.c
+++ b/chip/npcx/i2c.c
@@ -589,4 +589,4 @@ static void i2c_init(void)
task_enable_irq(i2c_irqs[port]);
}
}
-DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_INIT_I2C);
diff --git a/chip/nrf51/i2c.c b/chip/nrf51/i2c.c
index 7065345580..6ef109ea0e 100644
--- a/chip/nrf51/i2c.c
+++ b/chip/nrf51/i2c.c
@@ -63,7 +63,7 @@ static void i2c_init(void)
for (i = 0; i < i2c_ports_used; i++)
i2c_init_port(i);
}
-DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_INIT_I2C);
static void dump_i2c_reg(int port)
{
diff --git a/chip/stm32/i2c-stm32f.c b/chip/stm32/i2c-stm32f.c
index 674808277c..88728f1eb1 100644
--- a/chip/stm32/i2c-stm32f.c
+++ b/chip/stm32/i2c-stm32f.c
@@ -380,7 +380,7 @@ static void i2c_init(void)
task_enable_irq(STM32_IRQ_I2C2_EV);
task_enable_irq(STM32_IRQ_I2C2_ER);
}
-DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_INIT_I2C);
/*****************************************************************************/
/* STM32 Host I2C */
diff --git a/chip/stm32/i2c-stm32f0.c b/chip/stm32/i2c-stm32f0.c
index 28726307ef..a72233d462 100644
--- a/chip/stm32/i2c-stm32f0.c
+++ b/chip/stm32/i2c-stm32f0.c
@@ -443,7 +443,7 @@ static void i2c_init(void)
task_enable_irq(IRQ_SLAVE);
#endif
}
-DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_INIT_I2C);
#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR
/**
diff --git a/chip/stm32/i2c-stm32l.c b/chip/stm32/i2c-stm32l.c
index 8b37eb3ef9..510c138410 100644
--- a/chip/stm32/i2c-stm32l.c
+++ b/chip/stm32/i2c-stm32l.c
@@ -408,7 +408,7 @@ static void i2c_init(void)
for (i = 0; i < i2c_ports_used; i++, p++)
i2c_init_port(p);
}
-DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, i2c_init, HOOK_PRIO_INIT_I2C);
/*****************************************************************************/
/* Console commands */
diff --git a/include/hooks.h b/include/hooks.h
index 579aa0470f..a4a518354a 100644
--- a/include/hooks.h
+++ b/include/hooks.h
@@ -21,16 +21,18 @@ enum hook_priority {
HOOK_PRIO_INIT_DMA = HOOK_PRIO_FIRST + 1,
/* LPC inits before modules which need memory-mapped I/O */
HOOK_PRIO_INIT_LPC = HOOK_PRIO_FIRST + 1,
+ /* I2C is needed before chipset inits (battery communications). */
+ HOOK_PRIO_INIT_I2C = HOOK_PRIO_FIRST + 2,
/* Chipset inits before modules which need to know its initial state. */
- HOOK_PRIO_INIT_CHIPSET = HOOK_PRIO_FIRST + 2,
+ HOOK_PRIO_INIT_CHIPSET = HOOK_PRIO_FIRST + 3,
/* Lid switch inits before power button */
- HOOK_PRIO_INIT_LID = HOOK_PRIO_FIRST + 3,
+ HOOK_PRIO_INIT_LID = HOOK_PRIO_FIRST + 4,
/* Power button inits before chipset and switch */
- HOOK_PRIO_INIT_POWER_BUTTON = HOOK_PRIO_FIRST + 4,
+ HOOK_PRIO_INIT_POWER_BUTTON = HOOK_PRIO_FIRST + 5,
/* PWM inits before modules which might use it (fans, LEDs) */
- HOOK_PRIO_INIT_PWM = HOOK_PRIO_FIRST + 5,
+ HOOK_PRIO_INIT_PWM = HOOK_PRIO_FIRST + 6,
/* Extpower inits before modules which might use it (battery, LEDs) */
- HOOK_PRIO_INIT_EXTPOWER = HOOK_PRIO_FIRST + 6,
+ HOOK_PRIO_INIT_EXTPOWER = HOOK_PRIO_FIRST + 7,
/* Specific values to lump temperature-related hooks together */
HOOK_PRIO_TEMP_SENSOR = 6000,