source: rtems/c/src/lib/libbsp/arm/atsam/libraries/libchip/include/uart_dma.h @ e1eeb883

5
Last change on this file since e1eeb883 was e1eeb883, checked in by Sebastian Huber <sebastian.huber@…>, on 01/12/16 at 14:34:31

bsp/atsam: Import SAM Software Package

Import selected files of the "SAM V71 / V70 / E70 / S70 Software
Package" obtained from the "SAMV71-XULT GNU Software Package 1.5".

Converted files via dos2unix before import.

Update #2529.

  • Property mode set to 100644
File size: 5.2 KB
Line 
1/* ---------------------------------------------------------------------------- */
2/*                  Atmel Microcontroller Software Support                      */
3/*                       SAM Software Package License                           */
4/* ---------------------------------------------------------------------------- */
5/* Copyright (c) 2015, Atmel Corporation                                        */
6/*                                                                              */
7/* All rights reserved.                                                         */
8/*                                                                              */
9/* Redistribution and use in source and binary forms, with or without           */
10/* modification, are permitted provided that the following condition is met:    */
11/*                                                                              */
12/* - Redistributions of source code must retain the above copyright notice,     */
13/* this list of conditions and the disclaimer below.                            */
14/*                                                                              */
15/* Atmel's name may not be used to endorse or promote products derived from     */
16/* this software without specific prior written permission.                     */
17/*                                                                              */
18/* DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR   */
19/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
20/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE   */
21/* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,      */
22/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
23/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,  */
24/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    */
25/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING         */
26/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
27/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                           */
28/* ---------------------------------------------------------------------------- */
29
30/**
31 * \file
32 *
33 * Implementation of UART driver, transfer data through DMA.
34 *
35 */
36
37#ifndef _UART_DMA_
38#define _UART_DMA_
39
40/*----------------------------------------------------------------------------
41 *        Headers
42 *----------------------------------------------------------------------------*/
43
44#include "chip.h"
45
46/*----------------------------------------------------------------------------
47 *        Definitions
48 *----------------------------------------------------------------------------*/
49
50/** An unspecified error has occurred.*/
51#define UARTD_ERROR          1
52
53/** UART driver is currently in use.*/
54#define UARTD_ERROR_LOCK     2
55
56
57#ifdef __cplusplus
58extern "C" {
59#endif
60
61/*----------------------------------------------------------------------------
62 *        Types
63 *----------------------------------------------------------------------------*/
64
65/** UART transfer complete callback. */
66typedef void (*UartdCallback)(uint8_t, void *);
67
68/** \brief usart Transfer Request prepared by the application upper layer.
69 *
70 * This structure is sent to the UART_Send or UART_Rcv to start the transfer.
71 * At the end of the transfer, the callback is invoked by the interrupt handler.
72 */
73typedef struct {
74        /** Pointer to the Buffer. */
75        uint8_t *pBuff;
76        /** Buff size in bytes. */
77        uint32_t BuffSize;
78        /** Dma channel num. */
79        uint32_t ChNum;
80        /** Callback function invoked at the end of transfer. */
81        UartdCallback callback;
82        /** Callback arguments. */
83        void *pArgument;
84        /** flag to indicate the current transfer. */
85        volatile uint8_t sempaphore;
86        /* DMA LLI structure */
87        LinkedListDescriporView1    *pLLIview;
88        /* DMA transfer type */
89        eXdmadProgState dmaProgrammingMode;
90        /* DMA LLI size */
91        uint16_t dmaBlockSize;
92        /* Flag using ring buffer or FiFo*/
93        uint8_t dmaRingBuffer;
94} UartChannel;
95
96/** Constant structure associated with UART port. This structure prevents
97    client applications to have access in the same time. */
98typedef struct {
99        /** USART Id as defined in the product datasheet */
100        uint8_t uartId;
101        /** Pointer to DMA driver */
102        sXdmad *pXdmad;
103        /** Pointer to UART Hardware registers */
104        Uart *pUartHw;
105        /** Current Uart Rx channel */
106        UartChannel *pRxChannel;
107        /** Current Uart Tx channel */
108        UartChannel *pTxChannel;
109} UartDma;
110
111/*----------------------------------------------------------------------------
112 *        Exported functions
113 *----------------------------------------------------------------------------*/
114
115uint32_t UARTD_Configure(UartDma *pUartd ,
116                                                  uint8_t uartId,
117                                                  uint32_t uartMode,
118                                                  uint32_t baud,
119                                                  uint32_t clk);
120
121uint32_t UARTD_EnableTxChannels(UartDma *pUartd, UartChannel *pTxCh);
122
123uint32_t UARTD_EnableRxChannels(UartDma *pUartd, UartChannel *pRxCh);
124
125uint32_t UARTD_DisableTxChannels(UartDma *pUartd, UartChannel *pTxCh);
126
127uint32_t UARTD_DisableRxChannels(UartDma *pUartd, UartChannel *pRxCh);
128
129uint32_t UARTD_SendData(UartDma *pUartd);
130
131uint32_t UARTD_RcvData(UartDma *pUartd);
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif /* #ifndef _UART_DMA_ */
Note: See TracBrowser for help on using the repository browser.