1*10465441SEvalZero /* 2*10465441SEvalZero * File : serial.h 3*10465441SEvalZero * This file is part of RT-Thread RTOS 4*10465441SEvalZero * COPYRIGHT (C) 2009 - 2010, RT-Thread Development Team 5*10465441SEvalZero * 6*10465441SEvalZero * The license and distribution terms for this file may be 7*10465441SEvalZero * found in the file LICENSE in this distribution or at 8*10465441SEvalZero * http://www.rt-thread.org/license/LICENSE 9*10465441SEvalZero * 10*10465441SEvalZero * Change Logs: 11*10465441SEvalZero * Date Author Notes 12*10465441SEvalZero * 2009-01-05 Bernard first version 13*10465441SEvalZero * 2010-03-29 Bernard remove interrupt tx and DMA rx mode. 14*10465441SEvalZero * 2010-03-30 Kyle Ported from STM32 to AVR32. 15*10465441SEvalZero */ 16*10465441SEvalZero #ifndef __RT_HW_SERIAL_H__ 17*10465441SEvalZero #define __RT_HW_SERIAL_H__ 18*10465441SEvalZero 19*10465441SEvalZero #include <rthw.h> 20*10465441SEvalZero #include <rtthread.h> 21*10465441SEvalZero #include "compiler.h" 22*10465441SEvalZero #include "usart.h" 23*10465441SEvalZero 24*10465441SEvalZero #define UART_RX_BUFFER_SIZE 64 25*10465441SEvalZero #define UART_TX_DMA_NODE_SIZE 4 26*10465441SEvalZero 27*10465441SEvalZero /* data node for Tx Mode */ 28*10465441SEvalZero struct avr32_serial_data_node 29*10465441SEvalZero { 30*10465441SEvalZero rt_uint8_t *data_ptr; 31*10465441SEvalZero rt_size_t data_size; 32*10465441SEvalZero struct avr32_serial_data_node *next, *prev; 33*10465441SEvalZero }; 34*10465441SEvalZero 35*10465441SEvalZero struct avr32_serial_int_rx 36*10465441SEvalZero { 37*10465441SEvalZero rt_uint8_t rx_buffer[UART_RX_BUFFER_SIZE]; 38*10465441SEvalZero rt_uint32_t read_index, save_index; 39*10465441SEvalZero }; 40*10465441SEvalZero 41*10465441SEvalZero struct avr32_serial_device 42*10465441SEvalZero { 43*10465441SEvalZero avr32_usart_t *uart_device; 44*10465441SEvalZero 45*10465441SEvalZero /* rx structure */ 46*10465441SEvalZero struct avr32_serial_int_rx* int_rx; 47*10465441SEvalZero }; 48*10465441SEvalZero 49*10465441SEvalZero rt_err_t rt_hw_serial_register(rt_device_t device, const char* name, rt_uint32_t flag, struct avr32_serial_device *serial); 50*10465441SEvalZero 51*10465441SEvalZero void rt_hw_serial_isr(); 52*10465441SEvalZero 53*10465441SEvalZero #endif 54