RTEMS 6.3
Loading...
Searching...
No Matches
fsl_flexio_i2s_edma.h
1/*
2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
3 * Copyright 2016-2019 NXP
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8#ifndef _FSL_FLEXIO_I2S_EDMA_H_
9#define _FSL_FLEXIO_I2S_EDMA_H_
10
11#include "fsl_flexio_i2s.h"
12#include "fsl_edma.h"
13
18
19/*******************************************************************************
20 * Definitions
21 ******************************************************************************/
22
26#define FSL_FLEXIO_I2S_EDMA_DRIVER_VERSION (MAKE_VERSION(2, 1, 7))
28
29typedef struct _flexio_i2s_edma_handle flexio_i2s_edma_handle_t;
30
33 flexio_i2s_edma_handle_t *handle,
34 status_t status,
35 void *userData);
36
52
53/*******************************************************************************
54 * APIs
55 ******************************************************************************/
56#if defined(__cplusplus)
57extern "C" {
58#endif
59
64
79 flexio_i2s_edma_handle_t *handle,
81 void *userData,
82 edma_handle_t *dmaHandle);
83
98 flexio_i2s_edma_handle_t *handle,
100 void *userData,
101 edma_handle_t *dmaHandle);
102
115 flexio_i2s_edma_handle_t *handle,
117 uint32_t srcClock_Hz);
118
133 flexio_i2s_edma_handle_t *handle,
135
151 flexio_i2s_edma_handle_t *handle,
153
160void FLEXIO_I2S_TransferAbortSendEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle);
161
168void FLEXIO_I2S_TransferAbortReceiveEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle);
169
179status_t FLEXIO_I2S_TransferGetSendCountEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, size_t *count);
180
190status_t FLEXIO_I2S_TransferGetReceiveCountEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, size_t *count);
191
193
194#if defined(__cplusplus)
195}
196#endif
197
201#endif
struct _edma_tcd edma_tcd_t
eDMA TCD.
struct _edma_handle edma_handle_t
eDMA transfer handle structure
void FLEXIO_I2S_TransferTxCreateHandleEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, flexio_i2s_edma_callback_t callback, void *userData, edma_handle_t *dmaHandle)
Initializes the FlexIO I2S eDMA handle.
Definition fsl_flexio_i2s_edma.c:118
status_t FLEXIO_I2S_TransferReceiveEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, flexio_i2s_transfer_t *xfer)
Performs a non-blocking FlexIO I2S receive using eDMA.
Definition fsl_flexio_i2s_edma.c:299
void FLEXIO_I2S_TransferRxCreateHandleEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, flexio_i2s_edma_callback_t callback, void *userData, edma_handle_t *dmaHandle)
Initializes the FlexIO I2S Rx eDMA handle.
Definition fsl_flexio_i2s_edma.c:160
status_t FLEXIO_I2S_TransferGetSendCountEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, size_t *count)
Gets the remaining bytes to be sent.
Definition fsl_flexio_i2s_edma.c:398
void FLEXIO_I2S_TransferAbortReceiveEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle)
Aborts a FlexIO I2S receive using eDMA.
Definition fsl_flexio_i2s_edma.c:375
void FLEXIO_I2S_TransferAbortSendEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle)
Aborts a FlexIO I2S transfer using eDMA.
Definition fsl_flexio_i2s_edma.c:355
void(*) flexio_i2s_edma_callback_t(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, status_t status, void *userData)
FlexIO I2S eDMA transfer callback function for finish and error.
Definition fsl_flexio_i2s_edma.h:32
status_t FLEXIO_I2S_TransferSendEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, flexio_i2s_transfer_t *xfer)
Performs a non-blocking FlexIO I2S transfer using DMA.
Definition fsl_flexio_i2s_edma.c:235
status_t FLEXIO_I2S_TransferGetReceiveCountEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, size_t *count)
Get the remaining bytes to be received.
Definition fsl_flexio_i2s_edma.c:427
void FLEXIO_I2S_TransferSetFormatEDMA(FLEXIO_I2S_Type *base, flexio_i2s_edma_handle_t *handle, flexio_i2s_format_t *format, uint32_t srcClock_Hz)
Configures the FlexIO I2S Tx audio format.
Definition fsl_flexio_i2s_edma.c:200
struct _flexio_i2s_transfer flexio_i2s_transfer_t
Define FlexIO I2S transfer structure.
#define FLEXIO_I2S_XFER_QUEUE_SIZE
FlexIO I2S transfer queue size, user can refine it according to use case.
Definition fsl_flexio_i2s.h:102
struct _flexio_i2s_type FLEXIO_I2S_Type
Define FlexIO I2S access structure typedef.
struct _flexio_i2s_format flexio_i2s_format_t
FlexIO I2S audio format, FlexIO I2S only support the same format in Tx and Rx.
int32_t status_t
Type used for all status and error return values.
Definition fsl_common.h:225
FlexIO I2S DMA transfer handle, users should not touch the content of the handle.
Definition fsl_flexio_i2s_edma.h:39
size_t transferSize[FLEXIO_I2S_XFER_QUEUE_SIZE]
Definition fsl_flexio_i2s_edma.h:48
flexio_i2s_transfer_t queue[FLEXIO_I2S_XFER_QUEUE_SIZE]
Definition fsl_flexio_i2s_edma.h:47
edma_handle_t * dmaHandle
Definition fsl_flexio_i2s_edma.h:40
volatile uint8_t queueUser
Definition fsl_flexio_i2s_edma.h:49
uint8_t nbytes
Definition fsl_flexio_i2s_edma.h:42
flexio_i2s_edma_callback_t callback
Definition fsl_flexio_i2s_edma.h:44
void * userData
Definition fsl_flexio_i2s_edma.h:45
uint32_t state
Definition fsl_flexio_i2s_edma.h:43
volatile uint8_t queueDriver
Definition fsl_flexio_i2s_edma.h:50
edma_tcd_t tcd[FLEXIO_I2S_XFER_QUEUE_SIZE+1U]
Definition fsl_flexio_i2s_edma.h:46
uint8_t bytesPerFrame
Definition fsl_flexio_i2s_edma.h:41
Definition mknod-pack_dev.c:254