RTEMS  5.1
qspi_dma.h
Go to the documentation of this file.
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 
37 #ifndef QSPI_DMA_H
38 #define QSPI_DMA_H
39 
40 /*----------------------------------------------------------------------------
41  * Headers
42  *----------------------------------------------------------------------------*/
43 
44 #include "chip.h"
45 #ifndef __rtems__
46 #include "../../../../utils/utility.h"
47 #endif /* __rtems__ */
48 
49 /*----------------------------------------------------------------------------
50  * Definitions
51  *----------------------------------------------------------------------------*/
52 
54 #define QSPID_ERROR 1
55 
57 #define QSPID_ERROR_LOCK 2
58 
59 #define QSPID_CH_NOT_ENABLED 0xFF
60 /*----------------------------------------------------------------------------
61  * Types
62  *----------------------------------------------------------------------------*/
63 
65 typedef void (*QspidCallback)(uint8_t, void *);
66 
69 typedef struct _Qspid {
70  Qspid_t Qspid;
74  uint8_t Polling;
76  uint8_t TxChNum;
78  uint8_t RxChNum;
80  volatile uint8_t progress;
81 } QspiDma_t;
82 
83 #ifdef __cplusplus
84 extern "C" {
85 #endif
86 /*----------------------------------------------------------------------------
87  * Exported functions
88  *----------------------------------------------------------------------------*/
89 
90 uint32_t QSPID_Configure(QspiDma_t *pQspidma, QspiMode_t Mode,
91  uint32_t dwConfiguration, sXdmad *pXdmad);
92 
93 uint32_t QSPID_EnableQspiRxChannel(QspiDma_t *pQspidma);
94 
95 uint32_t QSPID_EnableQspiTxChannel(QspiDma_t *pQspidma);
96 
97 uint32_t QSPID_DisableQspiRxChannel(QspiDma_t *pQspidma);
98 
99 uint32_t QSPID_DisableQspiTxChannel(QspiDma_t *pQspidma);
100 
101 uint32_t QSPID_DisableSpiChannel(QspiDma_t *pQspidma);
102 
103 uint32_t QSPID_EnableSpiChannel(QspiDma_t *pQspidma);
104 
105 uint32_t QSPID_ReadWriteQSPI(QspiDma_t *pQspidma, Access_t const ReadWrite);
106 
107 uint32_t QSPID_ReadWriteSPI(QspiDma_t *pQspidma, Access_t const ReadWrite);
108 
109 uint32_t QSPID_IsBusy(volatile uint8_t *QspiSemaphore);
110 
111 #ifdef __cplusplus
112 }
113 #endif
114 
115 #endif /* #ifndef _SPI_DMA_ */
uint32_t QSPID_ReadWriteQSPI(QspiDma_t *pQspidma, Access_t const ReadWrite)
Starts a QSPI read or write operation.
Definition: qspi_dma.c:533
Definition: qspi_dma.h:69
uint32_t QSPID_DisableQspiTxChannel(QspiDma_t *pQspidma)
Disables a QSPI Tx channel. This function will de-allocate previous allocated dma Tx channel for QSPI...
Definition: qspi_dma.c:475
struct _Qspid QspiDma_t
uint32_t QSPID_IsBusy(volatile uint8_t *QspiSemaphore)
Check if the QSPI driver is busy.
Definition: qspi_dma.c:613
volatile uint8_t progress
Definition: qspi_dma.h:80
uint8_t Polling
Definition: qspi_dma.h:74
Access_t
qspi access modes
Definition: qspi.h:80
uint32_t QSPID_EnableQspiRxChannel(QspiDma_t *pQspidma)
Enables a QSPI Rx channel. This function will allocate a dma Rx channel for QSPI.
Definition: qspi_dma.c:315
uint8_t RxChNum
Definition: qspi_dma.h:78
void(* QspidCallback)(uint8_t, void *)
Definition: qspi_dma.h:65
uint32_t QSPID_Configure(QspiDma_t *pQspidma, QspiMode_t Mode, uint32_t dwConfiguration, sXdmad *pXdmad)
Initializes the pQspidma structure and the corresponding QSPI & DMA . hardware select value.
Definition: qspi_dma.c:284
uint32_t QSPID_DisableQspiRxChannel(QspiDma_t *pQspidma)
Disables a QSPI Rx channel. This function will de-allocate previous allocated dma Rx channel for QSPI...
Definition: qspi_dma.c:446
qspi driver structure
Definition: qspi.h:176
uint32_t QSPID_DisableSpiChannel(QspiDma_t *pQspidma)
Disables a QSPI SPI Rx and Tx channels. This function will de-allocate privious allocated dma Rx,...
Definition: qspi_dma.c:502
uint32_t QSPID_EnableQspiTxChannel(QspiDma_t *pQspidma)
Enables a QSPI Tx channel. This function will allocate a dma Tx channel for QSPI.
Definition: qspi_dma.c:352
QspiMode_t
qspi modes SPI or QSPI
Definition: qspi.h:88
sXdmad * pXdmad
Definition: qspi_dma.h:72
uint8_t TxChNum
Definition: qspi_dma.h:76
Definition: xdmad.h:127
uint32_t QSPID_ReadWriteSPI(QspiDma_t *pQspidma, Access_t const ReadWrite)
Starts a SPI master transfer. This is a non blocking function. It will return as soon as the transfer...
Definition: qspi_dma.c:576
uint32_t QSPID_EnableSpiChannel(QspiDma_t *pQspidma)
Enables a QSPI SPI Rx channel. This function will allocate a dma Rx channel for QSPI SPI mode.
Definition: qspi_dma.c:389