blob: 881444d5c641eb32aafd6dcc5cc0f5ca39d3666e [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
28#include "simtrace.h"
29
30#define MIN(a, b) ((a < b) ? a : b)
31
32#ifdef __GNUC__
33#undef __GNUC__
34#endif
35
36/** Family definition (already defined) */
37#define sam3s
38/** Core definition */
39#define cortexm3
40
41#define BOARD_MAINOSC 18432000
42#define BOARD_MCK 48000000
43
44#define LED_RED PIO_PA17
45#define LED_GREEN PIO_PA18
46
47#define PIN_LED_RED {LED_RED, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
48#define PIN_LED_GREEN {LED_GREEN, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
49#define PINS_LEDS PIN_LED_RED, PIN_LED_GREEN
50
51#define LED_NUM_RED 0
52#define LED_NUM_GREEN 1
53
54/** USART0 pin RX */
55#define PIN_USART0_RXD {PIO_PA9A_URXD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
56/** USART0 pin TX */
57#define PIN_USART0_TXD {PIO_PA10A_UTXD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
58
59#define BOARD_PIN_USART_RXD PIN_USART0_RXD
60#define BOARD_PIN_USART_TXD PIN_USART0_TXD
61
62#define BOARD_ID_USART ID_USART0
63#define BOARD_USART_BASE USART0
64
65#define PINS_UART { PIO_PA9A_URXD0|PIO_PA10A_UTXD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
66
67/** UART0 */
68/** Console baudrate always using 115200. */
69#define CONSOLE_BAUDRATE 115200
70/** Usart Hw interface used by the console (UART0). */
71#define CONSOLE_USART UART0
72/** Usart Hw ID used by the console (UART0). */
73#define CONSOLE_ID ID_UART0
74/** Pins description corresponding to Rxd,Txd, (UART pins) */
75#define CONSOLE_PINS {PINS_UART}
76
77/// Smartcard detection pin
78// FIXME: add connect pin as iso pin...should it be periph b or interrupt oder input?
79#define BOARD_ISO7816_BASE_USART USART0
80#define BOARD_ISO7816_ID_USART ID_USART0
81
82#define USART_SIM USART0
83#define ID_USART_SIM ID_USART0
84#define USART_PHONE USART1
85#define ID_USART_PHONE ID_USART1
86
87#define SIM_PWEN PIO_PA5
88#define VCC_FWD PIO_PA26
89
90
91//** USB **/
92// USB pull-up control pin definition (PA16).
93// Default: 1 (USB Pullup deactivated)
94#define PIN_USB_PULLUP {1 << 16, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
95
96// Board has UDP controller
97#define BOARD_USB_UDP
98// D+ has external pull-up
99#define BOARD_USB_PULLUP_EXTERNAL
100
101#define BOARD_USB_NUMENDPOINTS 8
102
103// FIXME: in all other cases return 0?
104#define BOARD_USB_ENDPOINTS_MAXPACKETSIZE(i) (((i == 4) || (i == 5))? 512 : 64)
105#define BOARD_USB_ENDPOINTS_BANKS(i) (((i == 0) || (i == 3)) ? 1 : 2)
106
107/// USB attributes configuration descriptor (bus or self powered, remote wakeup)
108//#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_NORWAKEUP
109#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_BUSPOWERED_NORWAKEUP
110//#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_RWAKEUP
111
112#endif