diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2019-08-21 18:56:10 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2019-08-22 09:58:58 -0400 |
commit | 6338f6a5f0894da236f3b3929d7cc8b13b754d83 (patch) | |
tree | 61c871dbcc1ed1dd2bdeb4e1d9d0f923b3b34bfa /src/atsamd/serial.c | |
parent | 4990fe814d55b5b1f63c405852bb3ae0bcc28708 (diff) | |
download | kutter-6338f6a5f0894da236f3b3929d7cc8b13b754d83.tar.gz kutter-6338f6a5f0894da236f3b3929d7cc8b13b754d83.tar.xz kutter-6338f6a5f0894da236f3b3929d7cc8b13b754d83.zip |
atsamd: Update code to use armcm_boot mechanism
Replace the custom linker scripts with the src/generic/armcm_boot.c
mechanism.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/atsamd/serial.c')
-rw-r--r-- | src/atsamd/serial.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/src/atsamd/serial.c b/src/atsamd/serial.c index f38fb3d8..5b45931a 100644 --- a/src/atsamd/serial.c +++ b/src/atsamd/serial.c @@ -4,6 +4,7 @@ // // This file may be distributed under the terms of the GNU GPLv3 license. +#include "board/armcm_boot.h" // armcm_enable_irq #include "board/serial_irq.h" // serial_rx_data #include "command.h" // DECL_CONSTANT_STR #include "internal.h" // enable_pclock @@ -15,7 +16,7 @@ serial_enable_tx_irq(void) SERCOM0->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE; } -void __visible +void SERCOM0_Handler(void) { uint32_t status = SERCOM0->USART.INTFLAG.reg; @@ -31,16 +32,6 @@ SERCOM0_Handler(void) } } -// Aliases for irq handler on SAMD51 -void SERCOM0_0_Handler(void) - __visible __attribute__((alias("SERCOM0_Handler"))); -void SERCOM0_1_Handler(void) - __visible __attribute__((alias("SERCOM0_Handler"))); -void SERCOM0_2_Handler(void) - __visible __attribute__((alias("SERCOM0_Handler"))); -void SERCOM0_3_Handler(void) - __visible __attribute__((alias("SERCOM0_Handler"))); - DECL_CONSTANT_STR("RESERVE_PINS_serial", "PA11,PA10"); void @@ -69,17 +60,12 @@ serial_init(void) su->INTENSET.reg = SERCOM_USART_INTENSET_RXC; su->CTRLA.reg = areg | SERCOM_USART_CTRLA_ENABLE; #if CONFIG_MACH_SAMD21 - NVIC_SetPriority(SERCOM0_IRQn, 0); - NVIC_EnableIRQ(SERCOM0_IRQn); + armcm_enable_irq(SERCOM0_Handler, SERCOM0_IRQn, 0); #elif CONFIG_MACH_SAMD51 - NVIC_SetPriority(SERCOM0_0_IRQn, 0); - NVIC_SetPriority(SERCOM0_1_IRQn, 0); - NVIC_SetPriority(SERCOM0_2_IRQn, 0); - NVIC_SetPriority(SERCOM0_3_IRQn, 0); - NVIC_EnableIRQ(SERCOM0_0_IRQn); - NVIC_EnableIRQ(SERCOM0_1_IRQn); - NVIC_EnableIRQ(SERCOM0_2_IRQn); - NVIC_EnableIRQ(SERCOM0_3_IRQn); + armcm_enable_irq(SERCOM0_Handler, SERCOM0_0_IRQn, 0); + armcm_enable_irq(SERCOM0_Handler, SERCOM0_1_IRQn, 0); + armcm_enable_irq(SERCOM0_Handler, SERCOM0_2_IRQn, 0); + armcm_enable_irq(SERCOM0_Handler, SERCOM0_3_IRQn, 0); #endif } DECL_INIT(serial_init); |