/* This file is a temporary workaround for mapping of the generated information
 * to the current driver definitions.  This will be removed when the drivers
 * are modified to handle the generated information, or the mapping of
 * generated data matches the driver definitions.
 */

#define CONFIG_NUM_IRQ_PRIO_BITS	ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
#define CONFIG_UART_ATMEL_SAM3_NAME		ATMEL_SAM_UART_400E0800_LABEL
#define CONFIG_UART_SAM_PORT_0_NAME	ATMEL_SAM_UART_400E0800_LABEL
#define CONFIG_UART_SAM_PORT_0_BAUD_RATE	ATMEL_SAM_UART_400E0800_CURRENT_SPEED

#define CONFIG_USART_SAM_PORT_0_NAME	ATMEL_SAM_USART_40098000_LABEL
#define CONFIG_USART_SAM_PORT_0_BAUD_RATE	ATMEL_SAM_USART_40098000_CURRENT_SPEED
#define CONFIG_USART_SAM_PORT_1_NAME	ATMEL_SAM_USART_4009C000_LABEL
#define CONFIG_USART_SAM_PORT_1_BAUD_RATE	ATMEL_SAM_USART_4009C000_CURRENT_SPEED
#define CONFIG_USART_SAM_PORT_2_NAME	ATMEL_SAM_USART_400A0000_LABEL
#define CONFIG_USART_SAM_PORT_2_BAUD_RATE	ATMEL_SAM_USART_400A0000_CURRENT_SPEED
#define CONFIG_USART_SAM_PORT_3_NAME	ATMEL_SAM_USART_400A4000_LABEL
#define CONFIG_USART_SAM_PORT_3_BAUD_RATE	ATMEL_SAM_USART_400A4000_CURRENT_SPEED
