diff options
author | Anton Staaf <robotboy@chromium.org> | 2015-07-22 09:17:23 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-08-10 17:54:22 +0000 |
commit | 68b2809ee8f611d089f6d946dba10bb1b6d5c507 (patch) | |
tree | a21fcdb1d9b73f4c409811c8421fcba1e5a0c418 | |
parent | 014d180b1da90a5e23f2ebd4df3d00457bc5fb28 (diff) | |
download | chrome-ec-68b2809ee8f611d089f6d946dba10bb1b6d5c507.tar.gz |
Discovery: Configure USART2 as a loopback device
This gives a test case for the USART driver on an STM32L. Eventually
this will be a good place to test that even in a downclocked configuration
the STM32L USART driver can handle 115200 without dropping characters.
This also gives a convenient build test for the STM32L version of the
USART driver.
Signed-off-by: Anton Staaf <robotboy@chromium.org>
BRANCH=None
BUG=None
TEST=make buildall -j
Cross connect a Discovery and a Discovery-stm32f072
Change-Id: Ifb8dfc1179e8a0be84390d36e0bc3ff15f4f4685
Reviewed-on: https://chromium-review.googlesource.com/288979
Tested-by: Anton Staaf <robotboy@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Queue: Anton Staaf <robotboy@chromium.org>
Trybot-Ready: Anton Staaf <robotboy@chromium.org>
-rw-r--r-- | board/discovery/board.c | 45 | ||||
-rw-r--r-- | board/discovery/board.h | 6 | ||||
-rw-r--r-- | board/discovery/gpio.inc | 4 |
3 files changed, 51 insertions, 4 deletions
diff --git a/board/discovery/board.c b/board/discovery/board.c index 1821cb6f7c..eb58434aa7 100644 --- a/board/discovery/board.c +++ b/board/discovery/board.c @@ -7,19 +7,60 @@ #include "common.h" #include "gpio.h" #include "hooks.h" +#include "queue_policies.h" #include "registers.h" #include "task.h" +#include "usart-stm32f0.h" +#include "usart_tx_dma.h" #include "util.h" +void button_event(enum gpio_signal signal); + +#include "gpio_list.h" + void button_event(enum gpio_signal signal) { + static int count; + + gpio_set_level(GPIO_LED_GREEN, ++count & 0x02); } -#include "gpio_list.h" +void usb_gpio_tick(void) +{ + static int count; + + gpio_set_level(GPIO_LED_BLUE, ++count & 0x01); +} +DECLARE_HOOK(HOOK_TICK, usb_gpio_tick, HOOK_PRIO_DEFAULT); -/* Initialize board. */ +/****************************************************************************** + * Setup USART2 as a loopback device, it just echo's back anything sent to it. + */ +static struct usart_config const loopback_usart; + +static struct queue const loopback_queue = + QUEUE_DIRECT(64, uint8_t, + loopback_usart.producer, + loopback_usart.consumer); + +static struct usart_tx_dma const loopback_tx_dma = + USART_TX_DMA(STM32_DMAC_CH7, 16); + +static struct usart_config const loopback_usart = + USART_CONFIG(usart2_hw, + usart_rx_interrupt, + loopback_tx_dma.usart_tx, + 115200, + loopback_queue, + loopback_queue); + +/****************************************************************************** + * Initialize board. + */ static void board_init(void) { gpio_enable_interrupt(GPIO_USER_BUTTON); + + usart_init(&loopback_usart); } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); diff --git a/board/discovery/board.h b/board/discovery/board.h index 2fb8a84edf..c66a21eac9 100644 --- a/board/discovery/board.h +++ b/board/discovery/board.h @@ -9,9 +9,13 @@ #define __CROS_EC_BOARD_H /* Optional features */ -#undef CONFIG_WATCHDOG_HELP +#undef CONFIG_WATCHDOG_HELP #undef CONFIG_LID_SWITCH +/* Enable USART2 */ +#define CONFIG_STREAM_USART +#define CONFIG_STREAM_USART2 + /* * Allow dangerous commands all the time, since we don't have a write protect * switch. diff --git a/board/discovery/gpio.inc b/board/discovery/gpio.inc index 7f762017e3..619b4396a0 100644 --- a/board/discovery/gpio.inc +++ b/board/discovery/gpio.inc @@ -16,4 +16,6 @@ GPIO(LED_GREEN, PIN(B, 7), GPIO_OUT_LOW) UNIMPLEMENTED(ENTERING_RW) UNIMPLEMENTED(WP_L) -ALTERNATE(PIN_MASK(A, 0x0600), GPIO_ALT_USART, MODULE_UART, 0) +ALTERNATE(PIN_MASK(A, 0x0600), GPIO_ALT_USART, MODULE_UART, 0) /* USART1: PA09/PA10 */ +ALTERNATE(PIN_MASK(A, 0x000C), GPIO_ALT_USART, MODULE_USART, 0) /* USART2: PA02/PA03 */ +ALTERNATE(PIN_MASK(B, 0x0C00), GPIO_ALT_USART, MODULE_USART, 0) /* USART3: PB10/PB11 */ |