2013-01-25 12:28:06 +01:00
|
|
|
/** @file
|
|
|
|
|
|
|
|
Abstractions for simple OMAP DMA.
|
|
|
|
OMAP_DMA4 structure elements are described in the OMAP35xx TRM.
|
|
|
|
|
|
|
|
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
|
|
|
|
|
|
|
This program and the accompanying materials
|
|
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef __OMAP_DMA_LIB_H__
|
|
|
|
#define __OMAP_DMA_LIB_H__
|
|
|
|
|
|
|
|
|
|
|
|
// Example from DMA chapter of the OMAP35xx spec
|
2010-05-08 21:32:03 +02:00
|
|
|
typedef struct {
|
|
|
|
UINT8 DataType; // DMA4_CSDPi[1:0]
|
|
|
|
UINT8 ReadPortAccessType; // DMA4_CSDPi[8:7]
|
|
|
|
UINT8 WritePortAccessType; // DMA4_CSDPi[15:14]
|
|
|
|
UINT8 SourceEndiansim; // DMA4_CSDPi[21]
|
|
|
|
UINT8 DestinationEndianism; // DMA4_CSDPi[19]
|
|
|
|
UINT8 WriteMode; // DMA4_CSDPi[17:16]
|
|
|
|
UINT8 SourcePacked; // DMA4_CSDPi[6]
|
|
|
|
UINT8 DestinationPacked; // DMA4_CSDPi[13]
|
|
|
|
UINT32 NumberOfElementPerFrame; // DMA4_CENi
|
|
|
|
UINT32 NumberOfFramePerTransferBlock; // DMA4_CFNi
|
|
|
|
UINT32 SourceStartAddress; // DMA4_CSSAi
|
|
|
|
UINT32 DestinationStartAddress; // DMA4_CDSAi
|
|
|
|
UINT32 SourceElementIndex; // DMA4_CSEi
|
|
|
|
UINT32 SourceFrameIndex; // DMA4_CSFi
|
|
|
|
UINT32 DestinationElementIndex; // DMA4_CDEi
|
|
|
|
UINT32 DestinationFrameIndex; // DMA4_CDFi
|
|
|
|
UINT8 ReadPortAccessMode; // DMA4_CCRi[13:12]
|
|
|
|
UINT8 WritePortAccessMode; // DMA4_CCRi[15:14]
|
|
|
|
UINT8 ReadPriority; // DMA4_CCRi[6]
|
|
|
|
UINT8 WritePriority; // DMA4_CCRi[23]
|
|
|
|
UINT8 ReadRequestNumber; // DMA4_CCRi[4:0]
|
2013-01-25 12:28:06 +01:00
|
|
|
UINT8 WriteRequestNumber; // DMA4_CCRi[20:19]
|
|
|
|
} OMAP_DMA4;
|
|
|
|
|
|
|
|
|
2010-05-08 21:32:03 +02:00
|
|
|
/**
|
|
|
|
Configure OMAP DMA Channel
|
|
|
|
|
|
|
|
@param Channel DMA Channel to configure
|
|
|
|
@param Dma4 Pointer to structure used to initialize DMA registers for the Channel
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.
|
|
|
|
@retval EFI_INVALID_PARAMETER Channel is not valid
|
|
|
|
@retval EFI_DEVICE_ERROR The system hardware could not map the requested information.
|
|
|
|
|
2013-01-25 12:28:06 +01:00
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
EFIAPI
|
|
|
|
EnableDmaChannel (
|
|
|
|
IN UINTN Channel,
|
|
|
|
IN OMAP_DMA4 *Dma4
|
|
|
|
);
|
|
|
|
|
2010-05-08 21:32:03 +02:00
|
|
|
/**
|
|
|
|
Turn of DMA channel configured by EnableDma().
|
|
|
|
|
|
|
|
@param Channel DMA Channel to configure
|
2010-05-11 02:06:47 +02:00
|
|
|
@param SuccesMask Bits in DMA4_CSR register indicate EFI_SUCCESS
|
|
|
|
@param ErrorMask Bits in DMA4_CSR register indicate EFI_DEVICE_ERROR
|
2010-05-08 21:32:03 +02:00
|
|
|
|
|
|
|
@retval EFI_SUCCESS DMA hardware disabled
|
|
|
|
@retval EFI_INVALID_PARAMETER Channel is not valid
|
|
|
|
@retval EFI_DEVICE_ERROR The system hardware could not map the requested information.
|
|
|
|
|
2013-01-25 12:28:06 +01:00
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
EFIAPI
|
|
|
|
DisableDmaChannel (
|
|
|
|
IN UINTN Channel,
|
|
|
|
IN UINT32 SuccessMask,
|
|
|
|
IN UINT32 ErrorMask
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|