atsam: Move irq handler code above irq setup
Only code movement. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
6338f6a5f0
commit
fc879456db
|
@ -179,29 +179,6 @@ handle_end_reset(void)
|
||||||
UOTGHS->UOTGHS_DEVICR = UOTGHS_DEVICR_EORSTC;
|
UOTGHS->UOTGHS_DEVICR = UOTGHS_DEVICR_EORSTC;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
usbserial_init(void)
|
|
||||||
{
|
|
||||||
// Setup USB clock
|
|
||||||
enable_pclock(ID_UOTGHS);
|
|
||||||
PMC->CKGR_UCKR = CKGR_UCKR_UPLLCOUNT(3) | CKGR_UCKR_UPLLEN;
|
|
||||||
while (!(PMC->PMC_SR & PMC_SR_LOCKU))
|
|
||||||
;
|
|
||||||
PMC->PMC_USB = PMC_USB_USBS | PMC_USB_USBDIV(0);
|
|
||||||
PMC->PMC_SCER = PMC_SCER_UOTGCLK;
|
|
||||||
|
|
||||||
// Enable USB
|
|
||||||
UOTGHS->UOTGHS_CTRL = (UOTGHS_CTRL_UIMOD | UOTGHS_CTRL_OTGPADE
|
|
||||||
| UOTGHS_CTRL_USBE);
|
|
||||||
UOTGHS->UOTGHS_DEVCTRL = UOTGHS_DEVCTRL_SPDCONF_FORCED_FS;
|
|
||||||
|
|
||||||
// Enable interrupts
|
|
||||||
NVIC_SetPriority(UOTGHS_IRQn, 1);
|
|
||||||
NVIC_EnableIRQ(UOTGHS_IRQn);
|
|
||||||
UOTGHS->UOTGHS_DEVIER = UOTGHS_DEVIER_EORSTES;
|
|
||||||
}
|
|
||||||
DECL_INIT(usbserial_init);
|
|
||||||
|
|
||||||
void __visible
|
void __visible
|
||||||
UOTGHS_Handler(void)
|
UOTGHS_Handler(void)
|
||||||
{
|
{
|
||||||
|
@ -227,3 +204,26 @@ UOTGHS_Handler(void)
|
||||||
if (s & (UOTGHS_DEVISR_PEP_0 << USB_CDC_EP_BULK_IN))
|
if (s & (UOTGHS_DEVISR_PEP_0 << USB_CDC_EP_BULK_IN))
|
||||||
usb_notify_bulk_in();
|
usb_notify_bulk_in();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
usbserial_init(void)
|
||||||
|
{
|
||||||
|
// Setup USB clock
|
||||||
|
enable_pclock(ID_UOTGHS);
|
||||||
|
PMC->CKGR_UCKR = CKGR_UCKR_UPLLCOUNT(3) | CKGR_UCKR_UPLLEN;
|
||||||
|
while (!(PMC->PMC_SR & PMC_SR_LOCKU))
|
||||||
|
;
|
||||||
|
PMC->PMC_USB = PMC_USB_USBS | PMC_USB_USBDIV(0);
|
||||||
|
PMC->PMC_SCER = PMC_SCER_UOTGCLK;
|
||||||
|
|
||||||
|
// Enable USB
|
||||||
|
UOTGHS->UOTGHS_CTRL = (UOTGHS_CTRL_UIMOD | UOTGHS_CTRL_OTGPADE
|
||||||
|
| UOTGHS_CTRL_USBE);
|
||||||
|
UOTGHS->UOTGHS_DEVCTRL = UOTGHS_DEVCTRL_SPDCONF_FORCED_FS;
|
||||||
|
|
||||||
|
// Enable interrupts
|
||||||
|
NVIC_SetPriority(UOTGHS_IRQn, 1);
|
||||||
|
NVIC_EnableIRQ(UOTGHS_IRQn);
|
||||||
|
UOTGHS->UOTGHS_DEVIER = UOTGHS_DEVIER_EORSTES;
|
||||||
|
}
|
||||||
|
DECL_INIT(usbserial_init);
|
||||||
|
|
|
@ -160,26 +160,6 @@ usb_set_configure(void)
|
||||||
UDP->UDP_GLB_STAT |= UDP_GLB_STAT_CONFG;
|
UDP->UDP_GLB_STAT |= UDP_GLB_STAT_CONFG;
|
||||||
}
|
}
|
||||||
|
|
||||||
DECL_CONSTANT_STR("RESERVE_PINS_USB", "PB10,PB11");
|
|
||||||
|
|
||||||
void
|
|
||||||
usbserial_init(void)
|
|
||||||
{
|
|
||||||
// Enable clocks
|
|
||||||
enable_pclock(ID_UDP);
|
|
||||||
PMC->PMC_USB = PMC_USB_USBDIV(5 - 1); // PLLA=240Mhz; divide by 5 for 48Mhz
|
|
||||||
PMC->PMC_SCER = PMC_SCER_UDP;
|
|
||||||
|
|
||||||
// Enable USB pullup
|
|
||||||
UDP->UDP_TXVC = UDP_TXVC_PUON | UDP_TXVC_TXVDIS;
|
|
||||||
|
|
||||||
// Enable interrupts
|
|
||||||
UDP->UDP_ICR = 0xffffffff;
|
|
||||||
NVIC_SetPriority(UDP_IRQn, 1);
|
|
||||||
NVIC_EnableIRQ(UDP_IRQn);
|
|
||||||
}
|
|
||||||
DECL_INIT(usbserial_init);
|
|
||||||
|
|
||||||
// Configure endpoint 0 after usb reset completes
|
// Configure endpoint 0 after usb reset completes
|
||||||
static void
|
static void
|
||||||
handle_end_reset(void)
|
handle_end_reset(void)
|
||||||
|
@ -216,3 +196,23 @@ UDP_Handler(void)
|
||||||
if (s & (1<<USB_CDC_EP_BULK_IN))
|
if (s & (1<<USB_CDC_EP_BULK_IN))
|
||||||
usb_notify_bulk_in();
|
usb_notify_bulk_in();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECL_CONSTANT_STR("RESERVE_PINS_USB", "PB10,PB11");
|
||||||
|
|
||||||
|
void
|
||||||
|
usbserial_init(void)
|
||||||
|
{
|
||||||
|
// Enable clocks
|
||||||
|
enable_pclock(ID_UDP);
|
||||||
|
PMC->PMC_USB = PMC_USB_USBDIV(5 - 1); // PLLA=240Mhz; divide by 5 for 48Mhz
|
||||||
|
PMC->PMC_SCER = PMC_SCER_UDP;
|
||||||
|
|
||||||
|
// Enable USB pullup
|
||||||
|
UDP->UDP_TXVC = UDP_TXVC_PUON | UDP_TXVC_TXVDIS;
|
||||||
|
|
||||||
|
// Enable interrupts
|
||||||
|
UDP->UDP_ICR = 0xffffffff;
|
||||||
|
NVIC_SetPriority(UDP_IRQn, 1);
|
||||||
|
NVIC_EnableIRQ(UDP_IRQn);
|
||||||
|
}
|
||||||
|
DECL_INIT(usbserial_init);
|
||||||
|
|
|
@ -34,6 +34,28 @@ static const uint32_t tx_pin = GPIO('A', 10);
|
||||||
DECL_CONSTANT_STR("RESERVE_PINS_serial", "PA9,PA10");
|
DECL_CONSTANT_STR("RESERVE_PINS_serial", "PA9,PA10");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void __visible
|
||||||
|
Serial_IRQ_Handler(void)
|
||||||
|
{
|
||||||
|
uint32_t status = Port->UART_SR;
|
||||||
|
if (status & UART_SR_RXRDY)
|
||||||
|
serial_rx_byte(Port->UART_RHR);
|
||||||
|
if (status & UART_SR_TXRDY) {
|
||||||
|
uint8_t data;
|
||||||
|
int ret = serial_get_tx_byte(&data);
|
||||||
|
if (ret)
|
||||||
|
Port->UART_IDR = UART_IDR_TXRDY;
|
||||||
|
else
|
||||||
|
Port->UART_THR = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
serial_enable_tx_irq(void)
|
||||||
|
{
|
||||||
|
Port->UART_IER = UART_IDR_TXRDY;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
serial_init(void)
|
serial_init(void)
|
||||||
{
|
{
|
||||||
|
@ -57,25 +79,3 @@ serial_init(void)
|
||||||
Port->UART_CR = UART_CR_RXEN | UART_CR_TXEN;
|
Port->UART_CR = UART_CR_RXEN | UART_CR_TXEN;
|
||||||
}
|
}
|
||||||
DECL_INIT(serial_init);
|
DECL_INIT(serial_init);
|
||||||
|
|
||||||
void __visible
|
|
||||||
Serial_IRQ_Handler(void)
|
|
||||||
{
|
|
||||||
uint32_t status = Port->UART_SR;
|
|
||||||
if (status & UART_SR_RXRDY)
|
|
||||||
serial_rx_byte(Port->UART_RHR);
|
|
||||||
if (status & UART_SR_TXRDY) {
|
|
||||||
uint8_t data;
|
|
||||||
int ret = serial_get_tx_byte(&data);
|
|
||||||
if (ret)
|
|
||||||
Port->UART_IDR = UART_IDR_TXRDY;
|
|
||||||
else
|
|
||||||
Port->UART_THR = data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
serial_enable_tx_irq(void)
|
|
||||||
{
|
|
||||||
Port->UART_IER = UART_IDR_TXRDY;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue