diff options
Diffstat (limited to 'chip/stm32/usart_rx_dma.c')
-rw-r--r-- | chip/stm32/usart_rx_dma.c | 47 |
1 files changed, 20 insertions, 27 deletions
diff --git a/chip/stm32/usart_rx_dma.c b/chip/stm32/usart_rx_dma.c index c75ebdde41..21c8313c73 100644 --- a/chip/stm32/usart_rx_dma.c +++ b/chip/stm32/usart_rx_dma.c @@ -1,4 +1,4 @@ -/* Copyright 2015 The Chromium OS Authors. All rights reserved. +/* Copyright 2015 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -14,7 +14,7 @@ #include "util.h" typedef size_t (*add_data_t)(struct usart_config const *config, - const uint8_t *src, size_t count); + const uint8_t *src, size_t count); void usart_rx_dma_init(struct usart_config const *config) { @@ -25,10 +25,9 @@ void usart_rx_dma_init(struct usart_config const *config) struct dma_option options = { .channel = dma_config->channel, - .periph = (void *)&STM32_USART_RDR(base), - .flags = (STM32_DMA_CCR_MSIZE_8_BIT | - STM32_DMA_CCR_PSIZE_8_BIT | - STM32_DMA_CCR_CIRC), + .periph = (void *)&STM32_USART_RDR(base), + .flags = (STM32_DMA_CCR_MSIZE_8_BIT | + STM32_DMA_CCR_PSIZE_8_BIT | STM32_DMA_CCR_CIRC), }; if (IS_ENABLED(CHIP_FAMILY_STM32F4)) @@ -38,31 +37,29 @@ void usart_rx_dma_init(struct usart_config const *config) STM32_USART_CR1(base) |= STM32_USART_CR1_RE; STM32_USART_CR3(base) |= STM32_USART_CR3_DMAR; - dma_config->state->index = 0; + dma_config->state->index = 0; dma_config->state->max_bytes = 0; dma_start_rx(&options, dma_config->fifo_size, dma_config->fifo_buffer); } -static void usart_rx_dma_interrupt_common( - struct usart_config const *config, - add_data_t add_data) +static void usart_rx_dma_interrupt_common(struct usart_config const *config, + add_data_t add_data) { struct usart_rx_dma const *dma_config = DOWNCAST(config->rx, struct usart_rx_dma const, usart_rx); - dma_chan_t *channel = dma_get_channel(dma_config->channel); - size_t new_index = dma_bytes_done(channel, dma_config->fifo_size); - size_t old_index = dma_config->state->index; - size_t new_bytes = 0; - size_t added = 0; + dma_chan_t *channel = dma_get_channel(dma_config->channel); + size_t new_index = dma_bytes_done(channel, dma_config->fifo_size); + size_t old_index = dma_config->state->index; + size_t new_bytes = 0; + size_t added = 0; if (new_index > old_index) { new_bytes = new_index - old_index; - added = add_data(config, - dma_config->fifo_buffer + old_index, - new_bytes); + added = add_data(config, dma_config->fifo_buffer + old_index, + new_bytes); } else if (new_index < old_index) { /* * Handle the case where the received bytes are not contiguous @@ -71,12 +68,9 @@ static void usart_rx_dma_interrupt_common( */ new_bytes = dma_config->fifo_size - (old_index - new_index); - added = add_data(config, - dma_config->fifo_buffer + old_index, - dma_config->fifo_size - old_index) + - add_data(config, - dma_config->fifo_buffer, - new_index); + added = add_data(config, dma_config->fifo_buffer + old_index, + dma_config->fifo_size - old_index) + + add_data(config, dma_config->fifo_buffer, new_index); } else { /* (new_index == old_index): nothing to add to the queue. */ } @@ -89,8 +83,8 @@ static void usart_rx_dma_interrupt_common( dma_config->state->index = new_index; } -static size_t queue_add(struct usart_config const *config, - const uint8_t *src, size_t count) +static size_t queue_add(struct usart_config const *config, const uint8_t *src, + size_t count) { return queue_add_units(config->producer.queue, (void *)src, count); } @@ -100,7 +94,6 @@ void usart_rx_dma_interrupt(struct usart_config const *config) usart_rx_dma_interrupt_common(config, &queue_add); } - #if defined(CONFIG_USART_HOST_COMMAND) void usart_host_command_rx_dma_interrupt(struct usart_config const *config) { |