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 /board/discovery/board.c | |
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>
Diffstat (limited to 'board/discovery/board.c')
-rw-r--r-- | board/discovery/board.c | 45 |
1 files changed, 43 insertions, 2 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); |