SCSI2SD/software/SCSI2SD/v5.2/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.c
2020-10-10 10:30:13 +10:00

142 lines
3.9 KiB
C

/***************************************************************************
* File Name: SCSI_RX_DMA_dma.c
* Version 1.70
*
* Description:
* Provides an API for the DMAC component. The API includes functions
* for the DMA controller, DMA channels and Transfer Descriptors.
*
*
* Note:
* This module requires the developer to finish or fill in the auto
* generated funcions and setup the dma channel and TD's.
*
********************************************************************************
* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved.
* You may use this file only in accordance with the license, terms, conditions,
* disclaimers, and limitations in the end user license agreement accompanying
* the software package with which this file was provided.
********************************************************************************/
#include <CYLIB.H>
#include <CYDMAC.H>
#include <SCSI_RX_DMA_dma.H>
/****************************************************************************
*
* The following defines are available in Cyfitter.h
*
*
*
* SCSI_RX_DMA__DRQ_CTL_REG
*
*
* SCSI_RX_DMA__DRQ_NUMBER
*
* Number of TD's used by this channel.
* SCSI_RX_DMA__NUMBEROF_TDS
*
* Priority of this channel.
* SCSI_RX_DMA__PRIORITY
*
* True if SCSI_RX_DMA_TERMIN_SEL is used.
* SCSI_RX_DMA__TERMIN_EN
*
* TERMIN interrupt line to signal terminate.
* SCSI_RX_DMA__TERMIN_SEL
*
*
* True if SCSI_RX_DMA_TERMOUT0_SEL is used.
* SCSI_RX_DMA__TERMOUT0_EN
*
*
* TERMOUT0 interrupt line to signal completion.
* SCSI_RX_DMA__TERMOUT0_SEL
*
*
* True if SCSI_RX_DMA_TERMOUT1_SEL is used.
* SCSI_RX_DMA__TERMOUT1_EN
*
*
* TERMOUT1 interrupt line to signal completion.
* SCSI_RX_DMA__TERMOUT1_SEL
*
****************************************************************************/
/* Zero based index of SCSI_RX_DMA dma channel */
uint8 SCSI_RX_DMA_DmaHandle = DMA_INVALID_CHANNEL;
/*********************************************************************
* Function Name: uint8 SCSI_RX_DMA_DmaInitalize
**********************************************************************
* Summary:
* Allocates and initialises a channel of the DMAC to be used by the
* caller.
*
* Parameters:
* BurstCount.
*
*
* ReqestPerBurst.
*
*
* UpperSrcAddress.
*
*
* UpperDestAddress.
*
*
* Return:
* The channel that can be used by the caller for DMA activity.
* DMA_INVALID_CHANNEL (0xFF) if there are no channels left.
*
*
*******************************************************************/
uint8 SCSI_RX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress)
{
/* Allocate a DMA channel. */
SCSI_RX_DMA_DmaHandle = (uint8)SCSI_RX_DMA__DRQ_NUMBER;
/* Configure the channel. */
(void)CyDmaChSetConfiguration(SCSI_RX_DMA_DmaHandle,
BurstCount,
ReqestPerBurst,
(uint8)SCSI_RX_DMA__TERMOUT0_SEL,
(uint8)SCSI_RX_DMA__TERMOUT1_SEL,
(uint8)SCSI_RX_DMA__TERMIN_SEL);
/* Set the extended address for the transfers */
(void)CyDmaChSetExtendedAddress(SCSI_RX_DMA_DmaHandle, UpperSrcAddress, UpperDestAddress);
/* Set the priority for this channel */
(void)CyDmaChPriority(SCSI_RX_DMA_DmaHandle, (uint8)SCSI_RX_DMA__PRIORITY);
return SCSI_RX_DMA_DmaHandle;
}
/*********************************************************************
* Function Name: void SCSI_RX_DMA_DmaRelease
**********************************************************************
* Summary:
* Frees the channel associated with SCSI_RX_DMA.
*
*
* Parameters:
* void.
*
*
*
* Return:
* void.
*
*******************************************************************/
void SCSI_RX_DMA_DmaRelease(void)
{
/* Disable the channel */
(void)CyDmaChDisable(SCSI_RX_DMA_DmaHandle);
}