XDAIS
dais-x04
Main Page
Modules
Data Structures
Files
Related Pages
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Groups
Pages
packages
ti
xdais
idma.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2006-2013, Texas Instruments Incorporated
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
*
9
* * Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
*
12
* * Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
*
16
* * Neither the name of Texas Instruments Incorporated nor the names of
17
* its contributors may be used to endorse or promote products derived
18
* from this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*
32
*/
33
/*
34
* @file idma.h
35
*
36
* @brief Declaration of the IDMA interface. (Deprecated)
37
*
38
* @idmaDeprecated
39
*
40
*/
41
#ifndef IDMA_
42
#define IDMA_
43
44
#include "
ialg.h
"
45
46
#ifdef __cplusplus
47
extern
"C"
{
48
#endif
49
50
/*
51
* ======== IDMA_Handle ========
52
* Handle to "logical" DMA channel.
53
*/
54
typedef
struct
IDMA_Obj *
IDMA_Handle
;
55
56
/*
57
* ======== IDMA_ElementSize ========
58
* 8, 16 or 32-bit aligned transfer.
59
*/
60
typedef
enum
IDMA_ElementSize
{
61
IDMA_ELEM8
,
/* 8-bit data element */
62
IDMA_ELEM16
,
/* 16-bit data element */
63
IDMA_ELEM32
/* 32-bit data element */
64
}
IDMA_ElementSize
;
65
66
/*
67
* ======== IDMA_TransferType ========
68
* Type of the DMA transfer.
69
*/
70
typedef
enum
IDMA_TransferType
{
71
IDMA_1D1D
,
/* 1-dimensional to 1-dimensional transfer */
72
IDMA_1D2D
,
/* 1-dimensional to 2-dimensional transfer */
73
IDMA_2D1D
,
/* 2-dimensional to 1-dimensional transfer */
74
IDMA_2D2D
/* 2-dimensional to 2-dimensional transfer */
75
}
IDMA_TransferType
;
76
77
/*
78
* ======== IDMA_Params ========
79
* DMA transfer specific parameters. Defines the configuration of a
80
* logical channel.
81
*/
82
typedef
struct
IDMA_Params
{
83
IDMA_TransferType
xType
;
/* 1D1D, 1D2D, 2D1D or 2D2D */
84
IDMA_ElementSize
elemSize
;
/* Element transfer size */
85
Int
numFrames
;
/* Num of frames for 2D transfers */
86
Int
stride
;
/* Jump in elemSize for 2D transfers */
87
}
IDMA_Params
;
88
89
/*
90
* ======== IDMA_ChannelRec ========
91
* DMA record used to describe the logical channels.
92
*/
93
typedef
struct
IDMA_ChannelRec
{
94
Int
depth
;
/* Num max (concurrent) queued transfers */
95
Bool
dimensions
;
/* 0 = only 1D transfers, 2D otherwise */
96
IDMA_Handle
handle
;
/* Handle to logical DMA channel */
97
}
IDMA_ChannelRec
;
98
99
/*
100
* ======== IDMA_Fxns ========
101
* These fxns are used to query/grant the DMA resources requested by
102
* the algorithm at initialization time, and to change these resources
103
* at runtime. All these fxns are implemented by the algorithm, and
104
* called by the client of the algorithm.
105
*
106
* implementationId - unique pointer that identifies the module
107
* implementing this interface.
108
* dmaChangeChannels() - apps call this whenever the logical channels
109
* are moved at runtime.
110
* dmaGetChannelCnt() - apps call this to query algorithm about max
111
* number of logical dma channel requested.
112
* dmaGetChannels() - apps call this to query algorithm about its
113
* dma channel requests at init time, or to get
114
* the current channel holdings.
115
* dmaInit() - apps call this to grant dma handle(s) to the
116
* algorithm at initialization. Algorithm initializes
117
* the instance object.
118
*/
119
typedef
struct
IDMA_Fxns
{
120
Void *
implementationId
;
121
Void (*
dmaChangeChannels
)(
IALG_Handle
,
IDMA_ChannelRec
*);
122
Int (*
dmaGetChannelCnt
)(Void);
123
Int (*
dmaGetChannels
)(
IALG_Handle
,
IDMA_ChannelRec
*);
124
Int (*
dmaInit
)(
IALG_Handle
,
IDMA_ChannelRec
*);
125
}
IDMA_Fxns
;
126
127
#ifdef __cplusplus
128
}
129
#endif
130
131
#endif
/* IDMA_ */
132
Copyright 2013, Texas Instruments Incorporated