blob: cac0ef8de6cea797892188a72b8131d9ec41bdb1 [file] [log] [blame]
Harald Welte2d3371e2015-11-30 11:59:03 +01001#ifndef _BOARD_
2#define _BOARD_
3
4/** Headers */
5#include "chip.h"
6/* We need this for a nop instruction in USB_HAL.c */
7#define __CC_ARM
8
9/** Board */
10#include "board_lowlevel.h"
11#include "uart_console.h"
12#include "iso7816_4.h"
13#include "led.h"
14#include "cciddriver.h"
15#include "usart.h"
16#include "USBD.h"
17
18#include "USBD_Config.h"
19#include "USBDDriver.h"
20
21/** Highlevel */
22#include "trace.h"
23#include "stdio.h"
24#include "stdlib.h"
25#include "string.h"
26#include "inttypes.h"
27
Harald Welte2d3371e2015-11-30 11:59:03 +010028#define MIN(a, b) ((a < b) ? a : b)
29
30#ifdef __GNUC__
31#undef __GNUC__
32#endif
33
34/** Family definition (already defined) */
35#define sam3s
36/** Core definition */
37#define cortexm3
38
39#define BOARD_MAINOSC 18432000
40#define BOARD_MCK 48000000
41
42#define LED_RED PIO_PA17
43#define LED_GREEN PIO_PA18
44
45#define PIN_LED_RED {LED_RED, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
46#define PIN_LED_GREEN {LED_GREEN, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
47#define PINS_LEDS PIN_LED_RED, PIN_LED_GREEN
48
49#define LED_NUM_RED 0
50#define LED_NUM_GREEN 1
51
52/** USART0 pin RX */
53#define PIN_USART0_RXD {PIO_PA9A_URXD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
54/** USART0 pin TX */
55#define PIN_USART0_TXD {PIO_PA10A_UTXD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
56
57#define BOARD_PIN_USART_RXD PIN_USART0_RXD
58#define BOARD_PIN_USART_TXD PIN_USART0_TXD
59
60#define BOARD_ID_USART ID_USART0
61#define BOARD_USART_BASE USART0
62
63#define PINS_UART { PIO_PA9A_URXD0|PIO_PA10A_UTXD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
64
65/** UART0 */
66/** Console baudrate always using 115200. */
Harald Welte715bc052016-03-02 10:31:59 +010067#define CONSOLE_BAUDRATE 230400
Harald Welte2d3371e2015-11-30 11:59:03 +010068/** Usart Hw interface used by the console (UART0). */
69#define CONSOLE_USART UART0
70/** Usart Hw ID used by the console (UART0). */
71#define CONSOLE_ID ID_UART0
72/** Pins description corresponding to Rxd,Txd, (UART pins) */
73#define CONSOLE_PINS {PINS_UART}
74
75/// Smartcard detection pin
76// FIXME: add connect pin as iso pin...should it be periph b or interrupt oder input?
77#define BOARD_ISO7816_BASE_USART USART0
78#define BOARD_ISO7816_ID_USART ID_USART0
79
80#define USART_SIM USART0
81#define ID_USART_SIM ID_USART0
82#define USART_PHONE USART1
83#define ID_USART_PHONE ID_USART1
84
85#define SIM_PWEN PIO_PA5
86#define VCC_FWD PIO_PA26
87
88
89//** USB **/
90// USB pull-up control pin definition (PA16).
91// Default: 1 (USB Pullup deactivated)
92#define PIN_USB_PULLUP {1 << 16, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
93
94// Board has UDP controller
95#define BOARD_USB_UDP
96// D+ has external pull-up
97#define BOARD_USB_PULLUP_EXTERNAL
98
99#define BOARD_USB_NUMENDPOINTS 8
100
101// FIXME: in all other cases return 0?
102#define BOARD_USB_ENDPOINTS_MAXPACKETSIZE(i) (((i == 4) || (i == 5))? 512 : 64)
103#define BOARD_USB_ENDPOINTS_BANKS(i) (((i == 0) || (i == 3)) ? 1 : 2)
104
105/// USB attributes configuration descriptor (bus or self powered, remote wakeup)
106//#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_NORWAKEUP
107#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_BUSPOWERED_NORWAKEUP
108//#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_RWAKEUP
109
110#endif