diff options
author | Florian Heilmann <Florian.Heilmann@gmx.net> | 2019-01-13 02:14:50 +0100 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2019-01-12 20:14:50 -0500 |
commit | 6256599a6dfc0c52a3c5e019c470d4cc46feeb82 (patch) | |
tree | 4453913a6178a06e3f58dbfc530e6d65291473d3 /src/samd21/serial.c | |
parent | 432e6c490a229f71d608ec0391773ab7f90534d1 (diff) | |
download | kutter-6256599a6dfc0c52a3c5e019c470d4cc46feeb82.tar.gz kutter-6256599a6dfc0c52a3c5e019c470d4cc46feeb82.tar.xz kutter-6256599a6dfc0c52a3c5e019c470d4cc46feeb82.zip |
src: Rename source folders for atsam and atsamd architectures
Signed-off-by: Florian Heilmann <Florian.Heilmann@gmx.net>
Diffstat (limited to 'src/samd21/serial.c')
-rw-r--r-- | src/samd21/serial.c | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/src/samd21/serial.c b/src/samd21/serial.c deleted file mode 100644 index 895ffb27..00000000 --- a/src/samd21/serial.c +++ /dev/null @@ -1,61 +0,0 @@ -// samd21 serial port -// -// Copyright (C) 2018 Kevin O'Connor <kevin@koconnor.net> -// -// This file may be distributed under the terms of the GNU GPLv3 license. - -#include "autoconf.h" // CONFIG_SERIAL_BAUD -#include "board/serial_irq.h" // serial_rx_data -#include "internal.h" // enable_pclock -#include "samd21.h" // SERCOM0 -#include "sched.h" // DECL_INIT - -void -serial_init(void) -{ - // Enable serial clock - enable_pclock(SERCOM0_GCLK_ID_CORE, PM_APBCMASK_SERCOM0); - // Enable pins - gpio_peripheral(GPIO('A', 10), 'C', 0); - gpio_peripheral(GPIO('A', 11), 'C', 0); - // Configure serial - SercomUsart *su = &SERCOM0->USART; - su->CTRLA.reg = 0; - uint32_t areg = (SERCOM_USART_CTRLA_MODE_USART_INT_CLK - | SERCOM_USART_CTRLA_DORD - | SERCOM_USART_CTRLA_SAMPR(1) - | SERCOM_USART_CTRLA_TXPO(1) - | SERCOM_USART_CTRLA_RXPO(3)); - su->CTRLA.reg = areg; - su->CTRLB.reg = SERCOM_USART_CTRLB_TXEN | SERCOM_USART_CTRLB_RXEN; - uint32_t baud8 = CONFIG_CLOCK_FREQ / (2 * CONFIG_SERIAL_BAUD); - su->BAUD.reg = (SERCOM_USART_BAUD_FRAC_BAUD(baud8 / 8) - | SERCOM_USART_BAUD_FRAC_FP(baud8 % 8)); - NVIC_SetPriority(SERCOM0_IRQn, 0); - NVIC_EnableIRQ(SERCOM0_IRQn); - su->INTENSET.reg = SERCOM_USART_INTENSET_RXC; - su->CTRLA.reg = areg | SERCOM_USART_CTRLA_ENABLE; -} -DECL_INIT(serial_init); - -void __visible -SERCOM0_Handler(void) -{ - uint32_t status = SERCOM0->USART.INTFLAG.reg; - if (status & SERCOM_USART_INTFLAG_RXC) - serial_rx_byte(SERCOM0->USART.DATA.reg); - if (status & SERCOM_USART_INTFLAG_DRE) { - uint8_t data; - int ret = serial_get_tx_byte(&data); - if (ret) - SERCOM0->USART.INTENCLR.reg = SERCOM_USART_INTENSET_DRE; - else - SERCOM0->USART.DATA.reg = data; - } -} - -void -serial_enable_tx_irq(void) -{ - SERCOM0->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE; -} |