summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@chromium.org>2012-02-17 15:55:32 -0800
committerBill Richardson <wfrichar@chromium.org>2012-02-17 15:55:32 -0800
commit737fbbd032ef937b37f2e5e833fa52455aa19c64 (patch)
tree81299d711c04775a4793e37bd103b60df4178e53
parentad7a0d5ae67cd73fe11c92c1964496455490f2c9 (diff)
downloadchrome-ec-737fbbd032ef937b37f2e5e833fa52455aa19c64.tar.gz
Delay enabling UART1 until after LPC bus is enabled.
BUG=none TEST=manual Try it on a bds with no LPC bus. It gets a BusFault without this patch. Change-Id: If3f38df5f7bebaf4c7045a9f48fbe3ac66e8bdbf
-rw-r--r--chip/lm4/uart.c18
-rw-r--r--common/main.c1
-rw-r--r--include/uart.h3
3 files changed, 17 insertions, 5 deletions
diff --git a/chip/lm4/uart.c b/chip/lm4/uart.c
index 84916a07fb..96059c6e13 100644
--- a/chip/lm4/uart.c
+++ b/chip/lm4/uart.c
@@ -179,8 +179,20 @@ int uart_init(void)
LM4_UART_CTL(ch) |= 0x0001;
}
- /* Enable interrupts */
+ /* Enable interrupts for UART0 only. UART1 will have to wait until the
+ * LPC bus is initialized.
+ */
task_enable_irq(LM4_IRQ_UART0);
+
+ return EC_SUCCESS;
+}
+
+
+/*****************************************************************************/
+/* COMx functions */
+
+void uart_comx_enable(void)
+{
task_enable_irq(LM4_IRQ_UART1);
/* Print hello on UART1 for debugging */
@@ -190,12 +202,8 @@ int uart_init(void)
while (*c)
uart_comx_putc(*c++);
}
-
- return EC_SUCCESS;
}
-/*****************************************************************************/
-/* COMx functions */
int uart_comx_putc_ok(void)
{
diff --git a/common/main.c b/common/main.c
index 36c913cabb..7058aad009 100644
--- a/common/main.c
+++ b/common/main.c
@@ -74,6 +74,7 @@ int main(void)
#ifdef CONFIG_LPC
port_80_init();
lpc_init();
+ uart_comx_enable();
#endif
#ifdef CONFIG_PWM
pwm_init();
diff --git a/include/uart.h b/include/uart.h
index 334ee624bb..1d43206731 100644
--- a/include/uart.h
+++ b/include/uart.h
@@ -173,6 +173,9 @@ void uart_process(void);
/*****************************************************************************/
/* COMx functions */
+/* Enables comx interrupts */
+void uart_comx_enable(void);
+
/* Returns non-zero if ok to put a character via uart_comx_putc(). */
int uart_comx_putc_ok(void);