summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Sanders <nsanders@chromium.org>2018-08-14 17:44:52 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-08-15 23:25:35 +0000
commit437c505467a56d76d4f60036e1005464b6da9822 (patch)
tree642b81ec447df9ec8a95a452753e65b9a72ec4ce
parent5add44ba82e7a02fdbe52c7d29134075895dae65 (diff)
downloadchrome-ec-437c505467a56d76d4f60036e1005464b6da9822.tar.gz
servo_micro: enable dma, increase queue size
servo_micro can drop incoming UART chars is there are unfortunately timed interrupts. We'll add DMA RX and extra queueing. BRANCH=servo BUG=b:80540170,chromium:865478 TEST=stress servo_micro console and ec console. No chars dropped anymore. Change-Id: I939bec0862c318686a0215ec8081823aa8c35fec Signed-off-by: Nick Sanders <nsanders@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1175321 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Mary Ruthven <mruthven@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org> (cherry picked from commit 428e0323cd3373519cac05389587becf444ec0aa) Reviewed-on: https://chromium-review.googlesource.com/1176522
-rw-r--r--board/servo_micro/board.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/board/servo_micro/board.c b/board/servo_micro/board.c
index 0e17692dfb..2f33f66725 100644
--- a/board/servo_micro/board.c
+++ b/board/servo_micro/board.c
@@ -29,8 +29,8 @@
* Forward UARTs as a USB serial interface.
*/
-#define USB_STREAM_RX_SIZE 16
-#define USB_STREAM_TX_SIZE 16
+#define USB_STREAM_RX_SIZE 32
+#define USB_STREAM_TX_SIZE 32
/******************************************************************************
* Forward USART2 as a simple USB serial interface.
@@ -39,14 +39,17 @@
static struct usart_config const usart2;
struct usb_stream_config const usart2_usb;
-static struct queue const usart2_to_usb = QUEUE_DIRECT(64, uint8_t,
+static struct queue const usart2_to_usb = QUEUE_DIRECT(256, uint8_t,
usart2.producer, usart2_usb.consumer);
static struct queue const usb_to_usart2 = QUEUE_DIRECT(64, uint8_t,
usart2_usb.producer, usart2.consumer);
+static struct usart_rx_dma const usart2_rx_dma =
+ USART_RX_DMA(STM32_DMAC_CH5, 32);
+
static struct usart_config const usart2 =
USART_CONFIG(usart2_hw,
- usart_rx_interrupt,
+ usart2_rx_dma.usart_rx,
usart_tx_interrupt,
115200,
usart2_to_usb,
@@ -70,14 +73,17 @@ USB_STREAM_CONFIG_USART_IFACE(usart2_usb,
static struct usart_config const usart3;
struct usb_stream_config const usart3_usb;
-static struct queue const usart3_to_usb = QUEUE_DIRECT(64, uint8_t,
+static struct queue const usart3_to_usb = QUEUE_DIRECT(256, uint8_t,
usart3.producer, usart3_usb.consumer);
static struct queue const usb_to_usart3 = QUEUE_DIRECT(64, uint8_t,
usart3_usb.producer, usart3.consumer);
+static struct usart_rx_dma const usart3_rx_dma =
+ USART_RX_DMA(STM32_DMAC_CH3, 32);
+
static struct usart_config const usart3 =
USART_CONFIG(usart3_hw,
- usart_rx_interrupt,
+ usart3_rx_dma.usart_rx,
usart_tx_interrupt,
115200,
usart3_to_usb,
@@ -101,14 +107,17 @@ USB_STREAM_CONFIG_USART_IFACE(usart3_usb,
static struct usart_config const usart4;
struct usb_stream_config const usart4_usb;
-static struct queue const usart4_to_usb = QUEUE_DIRECT(64, uint8_t,
+static struct queue const usart4_to_usb = QUEUE_DIRECT(256, uint8_t,
usart4.producer, usart4_usb.consumer);
static struct queue const usb_to_usart4 = QUEUE_DIRECT(64, uint8_t,
usart4_usb.producer, usart4.consumer);
+static struct usart_rx_dma const usart4_rx_dma =
+ USART_RX_DMA(STM32_DMAC_CH6, 32);
+
static struct usart_config const usart4 =
USART_CONFIG(usart4_hw,
- usart_rx_interrupt,
+ usart4_rx_dma.usart_rx,
usart_tx_interrupt,
115200,
usart4_to_usb,