diff options
author | Nick Sanders <nsanders@chromium.org> | 2018-08-21 15:08:20 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-08-27 09:43:27 -0700 |
commit | 538f722d8cb63e581ce1756868ee249caafc4ee8 (patch) | |
tree | 0b83cc538708acf06ef032c7ef560410dd1cc18b /board/servo_micro/board.c | |
parent | 90bd02480e50f8c4a5d8f45fa0f894c02e85c0a1 (diff) | |
download | chrome-ec-538f722d8cb63e581ce1756868ee249caafc4ee8.tar.gz |
servo_micro: Fix DMA mappings
UART3 and 4 had DMA collisions. Remove DMA from UART4.
BRANCH=servo-9040
BUG=b:112701646,chromium:865478
TEST=reboot EC, no crashy
Change-Id: Ic44b363dafe938d6420b350eb1c5ab796da81f3c
Signed-off-by: Nick Sanders <nsanders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1188514
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Diffstat (limited to 'board/servo_micro/board.c')
-rw-r--r-- | board/servo_micro/board.c | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/board/servo_micro/board.c b/board/servo_micro/board.c index 355c091a77..a665b3dfe8 100644 --- a/board/servo_micro/board.c +++ b/board/servo_micro/board.c @@ -27,6 +27,31 @@ #include "gpio_list.h" +void board_config_pre_init(void) +{ + /* enable SYSCFG clock */ + STM32_RCC_APB2ENR |= STM32_RCC_SYSCFGEN; + + /* + * the DMA mapping is : + * Chan 3 : USART3_RX + * Chan 5 : USART2_RX + * Chan 6 : USART4_RX (Disable) + * Chan 6 : SPI2_RX + * Chan 7 : SPI2_TX + * + * i2c : no dma + * tim16/17: no dma + */ + STM32_SYSCFG_CFGR1 |= (1 << 26); /* Remap USART3 RX/TX DMA */ + + /* Remap SPI2 to DMA channels 6 and 7 */ + /* STM32F072 SPI2 defaults to using DMA channels 4 and 5 */ + /* but cros_ec hardcodes a 6/7 assumption in registers.h */ + STM32_SYSCFG_CFGR1 |= (1 << 24); + +} + /****************************************************************************** * Forward UARTs as a USB serial interface. */ @@ -35,13 +60,13 @@ #define USB_STREAM_TX_SIZE 32 /****************************************************************************** - * Forward USART2 as a simple USB serial interface. + * Forward USART2 (EC) as a simple USB serial interface. */ static struct usart_config const usart2; struct usb_stream_config const usart2_usb; -static struct queue const usart2_to_usb = QUEUE_DIRECT(256, uint8_t, +static struct queue const usart2_to_usb = QUEUE_DIRECT(128, uint8_t, usart2.producer, usart2_usb.consumer); static struct queue const usb_to_usart2 = QUEUE_DIRECT(64, uint8_t, usart2_usb.producer, usart2.consumer); @@ -70,13 +95,13 @@ USB_STREAM_CONFIG_USART_IFACE(usart2_usb, /****************************************************************************** - * Forward USART3 as a simple USB serial interface. + * Forward USART3 (CPU) as a simple USB serial interface. */ static struct usart_config const usart3; struct usb_stream_config const usart3_usb; -static struct queue const usart3_to_usb = QUEUE_DIRECT(256, uint8_t, +static struct queue const usart3_to_usb = QUEUE_DIRECT(128, uint8_t, usart3.producer, usart3_usb.consumer); static struct queue const usb_to_usart3 = QUEUE_DIRECT(64, uint8_t, usart3_usb.producer, usart3.consumer); @@ -105,23 +130,21 @@ USB_STREAM_CONFIG_USART_IFACE(usart3_usb, /****************************************************************************** - * Forward USART4 as a simple USB serial interface. + * Forward USART4 (cr50) as a simple USB serial interface. + * We cannot enable DMA due to lack of DMA channels. */ static struct usart_config const usart4; struct usb_stream_config const usart4_usb; -static struct queue const usart4_to_usb = QUEUE_DIRECT(256, uint8_t, +static struct queue const usart4_to_usb = QUEUE_DIRECT(64, 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, - usart4_rx_dma.usart_rx, + usart_rx_interrupt, usart_tx_interrupt, 115200, 0, @@ -504,11 +527,6 @@ const unsigned int spi_devices_used = ARRAY_SIZE(spi_devices); void usb_spi_board_enable(struct usb_spi_config const *config) { - /* Remap SPI2 to DMA channels 6 and 7 */ - /* STM32F072 SPI2 defaults to using DMA channels 4 and 5 */ - /* but cros_ec hardcodes a 6/7 assumption in registers.h */ - STM32_SYSCFG_CFGR1 |= (1 << 24); - /* Configure SPI GPIOs */ gpio_config_module(MODULE_SPI_FLASH, 1); |