RTEMS 6.1-rc1
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
65typedef void (*QspidCallback)(uint8_t, void *);
66
69typedef struct _Qspid {
70 Qspid_t Qspid;
74 uint8_t Polling;
76 uint8_t TxChNum;
78 uint8_t RxChNum;
80 volatile uint8_t progress;
82
83#ifdef __cplusplus
84extern "C" {
85#endif
86/*----------------------------------------------------------------------------
87 * Exported functions
88 *----------------------------------------------------------------------------*/
89
90uint32_t QSPID_Configure(QspiDma_t *pQspidma, QspiMode_t Mode,
91 uint32_t dwConfiguration, sXdmad *pXdmad);
92
93uint32_t QSPID_EnableQspiRxChannel(QspiDma_t *pQspidma);
94
95uint32_t QSPID_EnableQspiTxChannel(QspiDma_t *pQspidma);
96
97uint32_t QSPID_DisableQspiRxChannel(QspiDma_t *pQspidma);
98
99uint32_t QSPID_DisableQspiTxChannel(QspiDma_t *pQspidma);
100
101uint32_t QSPID_DisableSpiChannel(QspiDma_t *pQspidma);
102
103uint32_t QSPID_EnableSpiChannel(QspiDma_t *pQspidma);
104
105uint32_t QSPID_ReadWriteQSPI(QspiDma_t *pQspidma, Access_t const ReadWrite);
106
107uint32_t QSPID_ReadWriteSPI(QspiDma_t *pQspidma, Access_t const ReadWrite);
108
109uint32_t QSPID_IsBusy(volatile uint8_t *QspiSemaphore);
110
111#ifdef __cplusplus
112}
113#endif
114
115#endif /* #ifndef _SPI_DMA_ */
QspiMode_t
qspi modes SPI or QSPI
Definition: qspi.h:88
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
uint32_t QSPID_ReadWriteQSPI(QspiDma_t *pQspidma, Access_t const ReadWrite)
Starts a QSPI read or write operation.
Definition: qspi_dma.c:533
void(* QspidCallback)(uint8_t, void *)
Definition: qspi_dma.h:65
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_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
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
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_IsBusy(volatile uint8_t *QspiSemaphore)
Check if the QSPI driver is busy.
Definition: qspi_dma.c:613
struct _Qspid QspiDma_t
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
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
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
qspi driver structure
Definition: qspi.h:176
Definition: qspi_dma.h:69
volatile uint8_t progress
Definition: qspi_dma.h:80
uint8_t TxChNum
Definition: qspi_dma.h:76
uint8_t Polling
Definition: qspi_dma.h:74
sXdmad * pXdmad
Definition: qspi_dma.h:72
uint8_t RxChNum
Definition: qspi_dma.h:78
Definition: xdmad.h:127