aboutsummaryrefslogtreecommitdiff
path: root/include/libopencm3/lpc43xx
diff options
context:
space:
mode:
authorchrysn2012-10-18 18:00:28 +0200
committerchrysn2012-10-18 18:00:28 +0200
commit771f504757e0ac5553c95308ce66412b417fa8d1 (patch)
treea46efc5067f2bec546514cdfccaddd0587cc6268 /include/libopencm3/lpc43xx
parent172ce56e3cbc7e64fd3e6a3dc564eb10e0ca766a (diff)
parentc69916ffb6d515b1dd644830ba27daef4fc75b58 (diff)
vector.c unification
this makes the previous hackish vector.c assemblies into dispatched files (using the same mechanism as for nvic, just this time in lib). the old irq.h files that were generated manually from the old vector.c files were dropped in the process, as were the nvic.h files, and replaced with very simple yaml lists that generate the headers. file generation takes place both in the include/ and the lib/ part, as some of it is definitely header stuff (the NVIC_name_IRQ defines), and some of it needs to be included in specific compilation units (the weak pragmas).
Diffstat (limited to 'include/libopencm3/lpc43xx')
-rw-r--r--include/libopencm3/lpc43xx/irq.h234
-rw-r--r--include/libopencm3/lpc43xx/irq.yaml55
-rw-r--r--include/libopencm3/lpc43xx/nvic.h68
3 files changed, 55 insertions, 302 deletions
diff --git a/include/libopencm3/lpc43xx/irq.h b/include/libopencm3/lpc43xx/irq.h
deleted file mode 100644
index a83a8d7..0000000
--- a/include/libopencm3/lpc43xx/irq.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * This file is part of the libopencm3 project.
- *
- * Copyright (C) 2010 Piotr Esden-Tempski <piotr@esden.net>
- * Copyright (C) 2012 Michael Ossmann <mike@ossmann.com>
- * Copyright (C) 2012 chrysn <chrysn@fsfe.org>
- *
- * This library is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef LIBOPENCM3_LPC43XX_IRQ_H
-#define LIBOPENCM3_LPC43XX_IRQ_H
-
-#define IRQ_DAC 0
-#define IRQ_M0CORE 1
-#define IRQ_DMA 2
-/* reserved: 3 */
-/* reserved: 4 */
-#define IRQ_ETHERNET 5
-#define IRQ_SDIO 6
-#define IRQ_LCD 7
-#define IRQ_USB0 8
-#define IRQ_USB1 9
-#define IRQ_SCT 10
-#define IRQ_RITIMER 11
-#define IRQ_TIMER0 12
-#define IRQ_TIMER1 13
-#define IRQ_TIMER2 14
-#define IRQ_TIMER3 15
-#define IRQ_MCPWM 16
-#define IRQ_ADC0 17
-#define IRQ_I2C0 18
-#define IRQ_I2C1 19
-#define IRQ_SPI 20
-#define IRQ_ADC1 21
-#define IRQ_SSP0 22
-#define IRQ_SSP1 23
-#define IRQ_USART0 24
-#define IRQ_UART1 25
-#define IRQ_USART2 26
-#define IRQ_USART3 27
-#define IRQ_I2S0 28
-#define IRQ_I2S1 29
-#define IRQ_SPIFI 30
-#define IRQ_SGPIO 31
-#define IRQ_PIN_INT0 32
-#define IRQ_PIN_INT1 33
-#define IRQ_PIN_INT2 34
-#define IRQ_PIN_INT3 35
-#define IRQ_PIN_INT4 36
-#define IRQ_PIN_INT5 37
-#define IRQ_PIN_INT6 38
-#define IRQ_PIN_INT7 39
-#define IRQ_GINT0 40
-#define IRQ_GINT1 41
-#define IRQ_EVENTROUTER 42
-#define IRQ_C_CAN1 43
-/* reserved: 44 */
-/* reserved: 45 */
-#define IRQ_ATIMER 46
-#define IRQ_RTC 47
-/* reserved: 48 */
-#define IRQ_WWDT 49
-/* reserved: 50 */
-#define IRQ_C_CAN0 51
-#define IRQ_QEI 52
-
-#define IRQ_COUNT 53
-
-#define WEAK __attribute__ ((weak))
-
-void WEAK dac_irqhandler(void);
-void WEAK m0core_irqhandler(void);
-void WEAK dma_irqhandler(void);
-void WEAK ethernet_irqhandler(void);
-void WEAK sdio_irqhandler(void);
-void WEAK lcd_irqhandler(void);
-void WEAK usb0_irqhandler(void);
-void WEAK usb1_irqhandler(void);
-void WEAK sct_irqhandler(void);
-void WEAK ritimer_irqhandler(void);
-void WEAK timer0_irqhandler(void);
-void WEAK timer1_irqhandler(void);
-void WEAK timer2_irqhandler(void);
-void WEAK timer3_irqhandler(void);
-void WEAK mcpwm_irqhandler(void);
-void WEAK adc0_irqhandler(void);
-void WEAK i2c0_irqhandler(void);
-void WEAK i2c1_irqhandler(void);
-void WEAK spi_irqhandler(void);
-void WEAK adc1_irqhandler(void);
-void WEAK ssp0_irqhandler(void);
-void WEAK ssp1_irqhandler(void);
-void WEAK usart0_irqhandler(void);
-void WEAK uart1_irqhandler(void);
-void WEAK usart2_irqhandler(void);
-void WEAK usart3_irqhandler(void);
-void WEAK i2s0_irqhandler(void);
-void WEAK i2s1_irqhandler(void);
-void WEAK spifi_irqhandler(void);
-void WEAK sgpio_irqhandler(void);
-void WEAK pin_int0_irqhandler(void);
-void WEAK pin_int1_irqhandler(void);
-void WEAK pin_int2_irqhandler(void);
-void WEAK pin_int3_irqhandler(void);
-void WEAK pin_int4_irqhandler(void);
-void WEAK pin_int5_irqhandler(void);
-void WEAK pin_int6_irqhandler(void);
-void WEAK pin_int7_irqhandler(void);
-void WEAK gint0_irqhandler(void);
-void WEAK gint1_irqhandler(void);
-void WEAK eventrouter_irqhandler(void);
-void WEAK c_can1_irqhandler(void);
-void WEAK atimer_irqhandler(void);
-void WEAK rtc_irqhandler(void);
-void WEAK wwdt_irqhandler(void);
-void WEAK c_can0_irqhandler(void);
-void WEAK qei_irqhandler(void);
-
-#pragma weak dac_irqhandler = null_handler
-#pragma weak m0core_irqhandler = null_handler
-#pragma weak dma_irqhandler = null_handler
-#pragma weak ethernet_irqhandler = null_handler
-#pragma weak sdio_irqhandler = null_handler
-#pragma weak lcd_irqhandler = null_handler
-#pragma weak usb0_irqhandler = null_handler
-#pragma weak usb1_irqhandler = null_handler
-#pragma weak sct_irqhandler = null_handler
-#pragma weak ritimer_irqhandler = null_handler
-#pragma weak timer0_irqhandler = null_handler
-#pragma weak timer1_irqhandler = null_handler
-#pragma weak timer2_irqhandler = null_handler
-#pragma weak timer3_irqhandler = null_handler
-#pragma weak mcpwm_irqhandler = null_handler
-#pragma weak adc0_irqhandler = null_handler
-#pragma weak i2c0_irqhandler = null_handler
-#pragma weak i2c1_irqhandler = null_handler
-#pragma weak spi_irqhandler = null_handler
-#pragma weak adc1_irqhandler = null_handler
-#pragma weak ssp0_irqhandler = null_handler
-#pragma weak ssp1_irqhandler = null_handler
-#pragma weak usart0_irqhandler = null_handler
-#pragma weak uart1_irqhandler = null_handler
-#pragma weak usart2_irqhandler = null_handler
-#pragma weak usart3_irqhandler = null_handler
-#pragma weak i2s0_irqhandler = null_handler
-#pragma weak i2s1_irqhandler = null_handler
-#pragma weak spifi_irqhandler = null_handler
-#pragma weak sgpio_irqhandler = null_handler
-#pragma weak pin_int0_irqhandler = null_handler
-#pragma weak pin_int1_irqhandler = null_handler
-#pragma weak pin_int2_irqhandler = null_handler
-#pragma weak pin_int3_irqhandler = null_handler
-#pragma weak pin_int4_irqhandler = null_handler
-#pragma weak pin_int5_irqhandler = null_handler
-#pragma weak pin_int6_irqhandler = null_handler
-#pragma weak pin_int7_irqhandler = null_handler
-#pragma weak gint0_irqhandler = null_handler
-#pragma weak gint1_irqhandler = null_handler
-#pragma weak eventrouter_irqhandler = null_handler
-#pragma weak c_can1_irqhandler = null_handler
-#pragma weak atimer_irqhandler = null_handler
-#pragma weak rtc_irqhandler = null_handler
-#pragma weak wwdt_irqhandler = null_handler
-#pragma weak c_can0_irqhandler = null_handler
-#pragma weak qei_irqhandler = null_handler
-
-#define IRQ_HANDLERS \
- dac_irqhandler, \
- m0core_irqhandler, \
- dma_irqhandler, \
- 0, /* reserved */ \
- 0, /* reserved */ \
- ethernet_irqhandler, \
- sdio_irqhandler, \
- lcd_irqhandler, \
- usb0_irqhandler, \
- usb1_irqhandler, \
- sct_irqhandler, \
- ritimer_irqhandler, \
- timer0_irqhandler, \
- timer1_irqhandler, \
- timer2_irqhandler, \
- timer3_irqhandler, \
- mcpwm_irqhandler, \
- adc0_irqhandler, \
- i2c0_irqhandler, \
- i2c1_irqhandler, \
- spi_irqhandler, \
- adc1_irqhandler, \
- ssp0_irqhandler, \
- ssp1_irqhandler, \
- usart0_irqhandler, \
- uart1_irqhandler, \
- usart2_irqhandler, \
- usart3_irqhandler, \
- i2s0_irqhandler, \
- i2s1_irqhandler, \
- spifi_irqhandler, \
- sgpio_irqhandler, \
- pin_int0_irqhandler, \
- pin_int1_irqhandler, \
- pin_int2_irqhandler, \
- pin_int3_irqhandler, \
- pin_int4_irqhandler, \
- pin_int5_irqhandler, \
- pin_int6_irqhandler, \
- pin_int7_irqhandler, \
- gint0_irqhandler, \
- gint1_irqhandler, \
- eventrouter_irqhandler, \
- c_can1_irqhandler, \
- 0, /* reserved */ \
- 0, /* reserved */ \
- atimer_irqhandler, \
- rtc_irqhandler, \
- 0, /* reserved */ \
- wwdt_irqhandler, \
- 0, /* reserved */ \
- c_can0_irqhandler, \
- qei_irqhandler,
-
-#endif
diff --git a/include/libopencm3/lpc43xx/irq.yaml b/include/libopencm3/lpc43xx/irq.yaml
new file mode 100644
index 0000000..bc9536b
--- /dev/null
+++ b/include/libopencm3/lpc43xx/irq.yaml
@@ -0,0 +1,55 @@
+includeguard: LIBOPENCM3_LPC43xx_NVIC_H
+partname_humanreadable: LPC 43xx series
+partname_doxygen: LPC43xx
+irqs:
+ 0: dac
+ 1: m0core
+ 2: dma
+# reserved: 3, 4
+ 5: ethernet
+ 6: sdio
+ 7: lcd
+ 8: usb0
+ 9: usb1
+ 10: sct
+ 11: ritimer
+ 12: timer0
+ 13: timer1
+ 14: timer2
+ 15: timer3
+ 16: mcpwm
+ 17: adc0
+ 18: i2c0
+ 19: i2c1
+ 20: spi
+ 21: adc1
+ 22: ssp0
+ 23: ssp1
+ 24: usart0
+ 25: uart1
+ 26: usart2
+ 27: usart3
+ 28: i2s0
+ 29: i2s1
+ 30: spifi
+ 31: sgpio
+ 32: pin_int0
+ 33: pin_int1
+ 34: pin_int2
+ 35: pin_int3
+ 36: pin_int4
+ 37: pin_int5
+ 38: pin_int6
+ 39: pin_int7
+ 40: gint0
+ 41: gint1
+ 42: eventrouter
+ 43: c_can1
+# reserved: 44, 45
+ 46: atimer
+ 47: rtc
+# reserved: 48
+ 49: wwdt
+# reserved: 50
+ 51: c_can0
+ 52: qei
diff --git a/include/libopencm3/lpc43xx/nvic.h b/include/libopencm3/lpc43xx/nvic.h
deleted file mode 100644
index 0fc5cc6..0000000
--- a/include/libopencm3/lpc43xx/nvic.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* --- IRQ channel numbers-------------------------------------------------- */
-
-/* Cortex M4 System Interrupts */
-#define NVIC_NMI_IRQ -14
-#define NVIC_HARD_FAULT_IRQ -13
-#define NVIC_MEM_MANAGE_IRQ -12
-#define NVIC_BUS_FAULT_IRQ -11
-#define NVIC_USAGE_FAULT_IRQ -10
-/* irq numbers -6 to -9 are reserved */
-#define NVIC_SV_CALL_IRQ -5
-#define DEBUG_MONITOR_IRQ -4
-/* irq number -3 reserved */
-#define NVIC_PENDSV_IRQ -2
-#define NVIC_SYSTICK_IRQ -1
-
-/* LPC43xx M4 specific user interrupts */
-#define NVIC_M4_DAC_IRQ 0
-#define NVIC_M4_M0CORE_IRQ 1
-#define NVIC_M4_DMA_IRQ 2
-#define NVIC_M4_ETHERNET_IRQ 5
-#define NVIC_M4_SDIO_IRQ 6
-#define NVIC_M4_LCD_IRQ 7
-#define NVIC_M4_USB0_IRQ 8
-#define NVIC_M4_USB1_IRQ 9
-#define NVIC_M4_SCT_IRQ 10
-#define NVIC_M4_RITIMER_IRQ 11
-#define NVIC_M4_TIMER0_IRQ 12
-#define NVIC_M4_TIMER1_IRQ 13
-#define NVIC_M4_TIMER2_IRQ 14
-#define NVIC_M4_TIMER3_IRQ 15
-#define NVIC_M4_MCPWM_IRQ 16
-#define NVIC_M4_ADC0_IRQ 17
-#define NVIC_M4_I2C0_IRQ 18
-#define NVIC_M4_I2C1_IRQ 19
-#define NVIC_M4_SPI_IRQ 20
-#define NVIC_M4_ADC1_IRQ 21
-#define NVIC_M4_SSP0_IRQ 22
-#define NVIC_M4_SSP1_IRQ 23
-#define NVIC_M4_USART0_IRQ 24
-#define NVIC_M4_UART1_IRQ 25
-#define NVIC_M4_USART2_IRQ 26
-#define NVIC_M4_USART3_IRQ 27
-#define NVIC_M4_I2S0_IRQ 28
-#define NVIC_M4_I2S1_IRQ 29
-#define NVIC_M4_SPIFI_IRQ 30
-#define NVIC_M4_SGPIO_IRQ 31
-#define NVIC_M4_PIN_INT0_IRQ 32
-#define NVIC_M4_PIN_INT1_IRQ 33
-#define NVIC_M4_PIN_INT2_IRQ 34
-#define NVIC_M4_PIN_INT3_IRQ 35
-#define NVIC_M4_PIN_INT4_IRQ 36
-#define NVIC_M4_PIN_INT5_IRQ 37
-#define NVIC_M4_PIN_INT6_IRQ 38
-#define NVIC_M4_PIN_INT7_IRQ 39
-#define NVIC_M4_GINT0_IRQ 40
-#define NVIC_M4_GINT1_IRQ 41
-#define NVIC_M4_EVENTROUTER_IRQ 42
-#define NVIC_M4_C_CAN1_IRQ 43
-#define NVIC_M4_ATIMER_IRQ 46
-#define NVIC_M4_RTC_IRQ 47
-#define NVIC_M4_WWDT_IRQ 49
-#define NVIC_M4_C_CAN0_IRQ 51
-#define NVIC_M4_QEI_IRQ 52
-
-#define NVIC_IRQ_COUNT 53
-
-/* LPC43xx M0 specific user interrupts */
-//TODO