4 * This file is part of BeRTOS.
6 * Bertos is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 * As a special exception, you may use this file as part of a free software
21 * library without restriction. Specifically, if other files instantiate
22 * templates or use macros or inline functions from this file, or you compile
23 * this file and link it with other files to produce an executable, this
24 * file does not by itself cause the resulting executable to be covered by
25 * the GNU General Public License. This exception does not however
26 * invalidate any other reasons why the executable file might be covered by
27 * the GNU General Public License.
29 * Copyright 2010,2011 Develer S.r.l. (http://www.develer.com/)
33 * \author Stefano Fedrigo <aleph@develer.com>
39 #include <cpu/detect.h>
40 #include <cfg/compiler.h>
47 #define SUPC_ID 0 ///< Supply Controller (SUPC)
48 #define RSTC_ID 1 ///< Reset Controller (RSTC)
49 #define RTC_ID 2 ///< Real Time Clock (RTC)
50 #define RTT_ID 3 ///< Real Time Timer (RTT)
51 #define WDT_ID 4 ///< Watchdog Timer (WDT)
52 #define PMC_ID 5 ///< Power Management Controller (PMC)
53 #define EEFC0_ID 6 ///< Enhanced Flash Controller
54 #define UART0_ID 8 ///< UART 0 (UART0)
55 #define UART1_ID 9 ///< UART 1 (UART1)
56 #define PIOA_ID 11 ///< Parallel I/O Controller A (PIOA)
57 #define PIOB_ID 12 ///< Parallel I/O Controller B (PIOB)
58 #define PIOC_ID 13 ///< Parallel I/O Controller C (PIOC)
59 #define US0_ID 14 ///< USART 0 (USART0)
60 #define US1_ID 15 ///< USART 1 (USART1)
61 #define TWI0_ID 19 ///< Two Wire Interface 0 (TWI0)
62 #define TWI1_ID 20 ///< Two Wire Interface 1 (TWI1)
63 #define SPI0_ID 21 ///< Serial Peripheral Interface (SPI)
64 #define TC0_ID 23 ///< Timer/Counter 0 (TC0)
65 #define TC1_ID 24 ///< Timer/Counter 1 (TC1)
66 #define TC2_ID 25 ///< Timer/Counter 2 (TC2)
67 #define TC3_ID 26 ///< Timer/Counter 3 (TC3)
68 #define TC4_ID 27 ///< Timer/Counter 4 (TC4)
69 #define TC5_ID 28 ///< Timer/Counter 5 (TC5)
70 #define ADC_ID 29 ///< Analog To Digital Converter (ADC)
71 #define DACC_ID 30 ///< Digital To Analog Converter (DACC)
72 #define PWM_ID 31 ///< Pulse Width Modulation (PWM)
74 #define SUPC_ID 0 ///< Supply Controller (SUPC)
75 #define RSTC_ID 1 ///< Reset Controller (RSTC)
76 #define RTC_ID 2 ///< Real Time Clock (RTC)
77 #define RTT_ID 3 ///< Real Time Timer (RTT)
78 #define WDT_ID 4 ///< Watchdog Timer (WDT)
79 #define PMC_ID 5 ///< Power Management Controller (PMC)
80 #define EEFC0_ID 6 ///< Enhanced Flash Controller
81 #define EEFC1_ID 7 ///< Enhanced Flash Controller
82 #define UART0_ID 8 ///< UART 0 (UART0)
83 #define SMC_SDRAMC_ID 9 ///< Satic memory controller / SDRAM controller
84 #define SDRAMC_ID 10 ///< Satic memory controller / SDRAM controller
85 #define PIOA_ID 11 ///< Parallel I/O Controller A
86 #define PIOB_ID 12 ///< Parallel I/O Controller B
87 #define PIOC_ID 13 ///< Parallel I/O Controller C
88 #define PIOD_ID 14 ///< Parallel I/O Controller D
89 #define PIOE_ID 15 ///< Parallel I/O Controller E
90 #define PIOF_ID 16 ///< Parallel I/O Controller F
91 #define US0_ID 17 ///< USART 0
92 #define US1_ID 18 ///< USART 1
93 #define US2_ID 19 ///< USART 2
94 #define US3_ID 20 ///< USART 3
95 #define HSMCI_ID 21 ///< High speed multimedia card interface
96 #define TWI0_ID 22 ///< Two Wire Interface 0
97 #define TWI1_ID 23 ///< Two Wire Interface 1
98 #define SPI0_ID 24 ///< Serial Peripheral Interface
99 #define SPI1_ID 25 ///< Serial Peripheral Interface
100 #define SSC_ID 26 ///< Synchronous serial controller
101 #define TC0_ID 27 ///< Timer/Counter 0
102 #define TC1_ID 28 ///< Timer/Counter 1
103 #define TC2_ID 29 ///< Timer/Counter 2
104 #define TC3_ID 30 ///< Timer/Counter 3
105 #define TC4_ID 31 ///< Timer/Counter 4
106 #define TC5_ID 32 ///< Timer/Counter 5
107 #define TC6_ID 33 ///< Timer/Counter 6
108 #define TC7_ID 34 ///< Timer/Counter 7
109 #define TC8_ID 35 ///< Timer/Counter 8
110 #define PWM_ID 36 ///< Pulse width modulation controller
111 #define ADC_ID 37 ///< ADC controller
112 #define DACC_ID 38 ///< DAC controller
113 #define DMAC_ID 39 ///< DMA controller
114 #define UOTGHS_ID 40 ///< USB OTG high speed
115 #define TRNG_ID 41 ///< True random number generator
116 #define EMAC_ID 42 ///< Ethernet MAC
117 #define CAN0_ID 43 ///< CAN controller 0
118 #define CAN1_ID 44 ///< CAN controller 1
120 #error Peripheral IDs undefined
125 * Hardware features for drivers.
127 #define USART_HAS_PDC 1
128 #define SPI_HAS_PDC 1
131 #define PERIPH_RPR_OFF 0x100 // Receive Pointer Register.
132 #define PERIPH_RCR_OFF 0x104 // Receive Counter Register.
133 #define PERIPH_TPR_OFF 0x108 // Transmit Pointer Register.
134 #define PERIPH_TCR_OFF 0x10C // Transmit Counter Register.
135 #define PERIPH_RNPR_OFF 0x110 // Receive Next Pointer Register.
136 #define PERIPH_RNCR_OFF 0x114 // Receive Next Counter Register.
137 #define PERIPH_TNPR_OFF 0x118 // Transmit Next Pointer Register.
138 #define PERIPH_TNCR_OFF 0x11C // Transmit Next Counter Register.
139 #define PERIPH_PTCR_OFF 0x120 // PDC Transfer Control Register.
140 #define PERIPH_PTSR_OFF 0x124 // PDC Transfer Status Register.
148 #include "sam3_sysctl.h"
149 #include "sam3_pmc.h"
150 #include "sam3_ints.h"
151 #include "sam3_pio.h"
152 #include "sam3_nvic.h"
153 #include "sam3_uart.h"
154 #include "sam3_usart.h"
155 #include "sam3_spi.h"
156 #include "sam3_flash.h"
157 #include "sam3_wdt.h"