1 /** @file
2 
3   Abstractions for simple OMAP DMA.
4   OMAP_DMA4 structure elements are described in the OMAP35xx TRM.
5 
6   Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
7 
8   This program and the accompanying materials
9   are licensed and made available under the terms and conditions of the BSD License
10   which accompanies this distribution.  The full text of the license may be found at
11   http://opensource.org/licenses/bsd-license.php
12 
13   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 
16 **/
17 
18 #ifndef __OMAP_DMA_LIB_H__
19 #define __OMAP_DMA_LIB_H__
20 
21 
22 // Example from DMA chapter of the OMAP35xx spec
23 typedef struct {
24   UINT8     DataType;                      // DMA4_CSDPi[1:0]
25   UINT8     ReadPortAccessType;            // DMA4_CSDPi[8:7]
26   UINT8     WritePortAccessType;           // DMA4_CSDPi[15:14]
27   UINT8     SourceEndiansim;               // DMA4_CSDPi[21]
28   UINT8     DestinationEndianism;          // DMA4_CSDPi[19]
29   UINT8     WriteMode;                     // DMA4_CSDPi[17:16]
30   UINT8     SourcePacked;                  // DMA4_CSDPi[6]
31   UINT8     DestinationPacked;             // DMA4_CSDPi[13]
32   UINT32    NumberOfElementPerFrame;       // DMA4_CENi
33   UINT32    NumberOfFramePerTransferBlock; // DMA4_CFNi
34   UINT32    SourceStartAddress;            // DMA4_CSSAi
35   UINT32    DestinationStartAddress;       // DMA4_CDSAi
36   UINT32    SourceElementIndex;            // DMA4_CSEi
37   UINT32    SourceFrameIndex;              // DMA4_CSFi
38   UINT32    DestinationElementIndex;       // DMA4_CDEi
39   UINT32    DestinationFrameIndex;         // DMA4_CDFi
40   UINT8     ReadPortAccessMode;            // DMA4_CCRi[13:12]
41   UINT8     WritePortAccessMode;           // DMA4_CCRi[15:14]
42   UINT8     ReadPriority;                  // DMA4_CCRi[6]
43   UINT8     WritePriority;                 // DMA4_CCRi[23]
44   UINT8     ReadRequestNumber;             // DMA4_CCRi[4:0]
45   UINT8     WriteRequestNumber;            // DMA4_CCRi[20:19]
46 } OMAP_DMA4;
47 
48 
49 /**
50   Configure OMAP DMA Channel
51 
52   @param  Channel               DMA Channel to configure
53   @param  Dma4                  Pointer to structure used to initialize DMA registers for the Channel
54 
55   @retval EFI_SUCCESS           The range was mapped for the returned NumberOfBytes.
56   @retval EFI_INVALID_PARAMETER Channel is not valid
57   @retval EFI_DEVICE_ERROR      The system hardware could not map the requested information.
58 
59 **/
60 EFI_STATUS
61 EFIAPI
62 EnableDmaChannel (
63   IN  UINTN       Channel,
64   IN  OMAP_DMA4   *Dma4
65   );
66 
67 /**
68   Turn of DMA channel configured by EnableDma().
69 
70   @param  Channel               DMA Channel to configure
71   @param  SuccesMask            Bits in DMA4_CSR register indicate EFI_SUCCESS
72   @param  ErrorMask             Bits in DMA4_CSR register indicate EFI_DEVICE_ERROR
73 
74   @retval EFI_SUCCESS           DMA hardware disabled
75   @retval EFI_INVALID_PARAMETER Channel is not valid
76   @retval EFI_DEVICE_ERROR      The system hardware could not map the requested information.
77 
78 **/
79 EFI_STATUS
80 EFIAPI
81 DisableDmaChannel (
82   IN  UINTN       Channel,
83   IN  UINT32      SuccessMask,
84   IN  UINT32      ErrorMask
85   );
86 
87 
88 
89 #endif
90 
91