SCSI2SD/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/USBFS_cydmac.h
2017-05-01 09:07:22 +10:00

279 lines
10 KiB
C
Executable File

/***************************************************************************//**
* \file USBFS_cydmac.h
* \version 3.10
*
* \brief
* This file provides macros implemenation of DMA_P4 functions.
*
********************************************************************************
* \copyright
* Copyright 2008-2016, 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.
*******************************************************************************/
#if !defined(CY_USBFS_USBFS_cydmac_H)
#define CY_USBFS_USBFS_cydmac_H
#include "USBFS_pvt.h"
/*******************************************************************************
* Function Name: USBFS_CyDmaSetConfiguration
****************************************************************************//**
*
* Sets configuration information for the specified descriptor.
*
* \param ch: DMA ch modified by this function.
* \param descr: Descriptor (0 or 1) modified by this function.
* \param cfg: Descriptor control register.
*
* \sideeffect
* The status register associated with the specified descriptor is reset to
* zero after this function call. This function should not be called while
* the descriptor is active. This can be checked by calling CyDmaGetStatus().
*
*******************************************************************************/
#define USBFS_CyDmaSetConfiguration(ch, descr, cfg) \
do{ \
CYDMA_DESCR_BASE.descriptor[ch][descr].ctl = (cfg); \
}while(0)
/*******************************************************************************
* Function Name: USBFS_CyDmaSetInterruptMask
****************************************************************************//**
*
* Enables the DMA channel interrupt.
*
* \param ch: Channel used by this function.
*
*
*******************************************************************************/
#define USBFS_CyDmaSetInterruptMask(ch) \
do{ \
CYDMA_INTR_MASK_REG |= ((uint32)(1UL << (ch))); \
}while(0)
/*******************************************************************************
* Function Name:USBFS_CyDmaSetDescriptor0Next
****************************************************************************//**
*
* Sets the descriptor 0 that should be run the next time the channel is
* triggered.
*
* \param channel: Channel used by this function.
*
*
*******************************************************************************/
#define USBFS_CyDmaSetDescriptor0Next(ch) \
do{ \
CYDMA_CH_CTL_BASE.ctl[(ch)] &= (uint32) ~CYDMA_DESCRIPTOR; \
}while(0)
/*******************************************************************************
* Function Name: USBFS_CyDmaSetNumDataElements
****************************************************************************//**
*
* Sets the number of data elements to transfer for specified descriptor.
*
* \param ch: Channel used by this function.
* \param descr: Descriptor (0 or 1) modified by this function.
* \param numEl: Total number of data elements this descriptor transfers - 1u.
* Valid ranges are 0 to 65535.
*
*
* \sideeffect
* This function should not be called when the specified descriptor is active
* in the DMA transfer engine. This can be checked by calling CyDmaGetStatus().
*
*******************************************************************************/
#define USBFS_CyDmaSetNumDataElements(ch, descr, numEl) \
do{ \
CYDMA_DESCR_BASE.descriptor[(ch)][(descr)].ctl = \
((CYDMA_DESCR_BASE.descriptor[(ch)][(descr)].ctl & (uint32) ~CYDMA_DATA_NR) | ((uint32) (numEl))); \
}while(0)
/*******************************************************************************
* Function Name: USBFS_CyDmaGetSrcAddress
****************************************************************************//**
*
* Returns the source address for the specified descriptor.
*
* \param ch: Channel used by this function.
* \param descr: Specifies descriptor (0 or 1) used by this function.
*
* \return
* Source address written to specified descriptor.
*
*******************************************************************************/
#define USBFS_CyDmaGetSrcAddress(ch, descr) CYDMA_DESCR_BASE.descriptor[(ch)][(descr)].src
/*******************************************************************************
* Function Name: USBFS_CyDmaSetSrcAddress
****************************************************************************//**
*
* Configures the source address for the specified descriptor.
*
* \param ch: Channel used by this function.
* \param descr: Descriptor (0 or 1) modified by this function.
* \param srcAddress: Address of DMA transfer source.
*
*
* \sideeffect
* This function should not be called when the specified descriptor is active
* in the DMA transfer engine. This can be checked by calling CyDmaGetStatus().
*
*******************************************************************************/
#define USBFS_CyDmaSetSrcAddress(ch, descr, srcAddress) \
do{ \
CYDMA_DESCR_BASE.descriptor[(ch)][(descr)].src = (srcAddress); \
}while(0)
/*******************************************************************************
* Function Name: USBFS_CyDmaGetDstAddress
****************************************************************************//**
*
* Returns the destination address for the specified descriptor, set by
* CyDmaSetDstAddress().
*
* \param ch: Channel used by this function.
* \param descr: Specifies descriptor (0 or 1) used by this function.
*
* \return
* Destination address written to specified descriptor.
*
*******************************************************************************/
#define USBFS_CyDmaGetDstAddress(ch, descr) CYDMA_DESCR_BASE.descriptor[(ch)][(descr)].dst
/*******************************************************************************
* Function Name: USBFS_CyDmaSetDstAddress
****************************************************************************//**
*
* Configures the destination address for the specified descriptor.
*
* \param ch: Channel used by this function.
* \param descr: Descriptor (0 or 1) modified by this function.
* \param dstAddress: Address of DMA transfer destination.
*
*
* \sideeffect
* This function should not be called when the specified descriptor is active
* in the DMA transfer engine. This can be checked by calling CyDmaGetStatus().
*
*******************************************************************************/
#define USBFS_CyDmaSetDstAddress(ch, descr, dstAddress) \
do{ \
CYDMA_DESCR_BASE.descriptor[(ch)][(descr)].dst = (dstAddress); \
}while(0)
/*******************************************************************************
* Function Name: USBFS_CyDmaValidateDescriptor
****************************************************************************//**
*
* Validates the specified descriptor after it has been invalidated.
*
* \param ch: Channel used by this function.
* \param descr: Descriptor (0 or 1) modified by this function.
*
*
* \sideeffect
* The status register associated with the specified descriptor is reset to
* zero after this function call.
* This function should not be called when the specified descriptor is active
* in the DMA transfer engine. This can be checked by calling CyDmaGetStatus().
*
*******************************************************************************/
#define USBFS_CyDmaValidateDescriptor(ch, descr) \
do{ \
CYDMA_DESCR_BASE.descriptor[(ch)][(descr)].status = CYDMA_VALID; \
}while(0)
/*******************************************************************************
* Function Name: USBFS_CyDmaChEnable
****************************************************************************//**
*
* Enables the DMA ch.
*
* \param ch: Channel used by this function.
*
*
* \sideeffect
* If this function is called before DMA is completely configured the operation
* of the DMA is undefined and could result in system data corruption.
*
*******************************************************************************/
#define USBFS_CyDmaChEnable(ch) \
do{ \
CYDMA_CH_CTL_BASE.ctl[(ch)] |= CYDMA_ENABLED; \
}while(0)
/*******************************************************************************
* Function Name: CyDmaChDisable
****************************************************************************//**
*
* Disables the DMA ch.
*
* \param ch: Channel used by this function.
*
*
* \sideeffect
* If this function is called during a DMA transfer the transfer is aborted.
*
*******************************************************************************/
#define USBFS_CyDmaChDisable(ch) \
do{ \
CYDMA_CH_CTL_BASE.ctl[(ch)] &= (uint32) ~CYDMA_ENABLED; \
}while(0)
/*******************************************************************************
* Function Name: USBFS_CyDmaTriggerIn
****************************************************************************//**
*
* Triggers the DMA channel to execute a transfer. The tr_in signal is
* triggered.
*
* \param trSel: trigger to be activated.
*
*
*******************************************************************************/
#define USBFS_DMA_USB_REQ_TR_OUT (0xC0020100U)
#define USBFS_CyDmaTriggerIn(trSel) \
do{ \
CYDMA_TR_CTL_REG = USBFS_DMA_USB_REQ_TR_OUT | (uint32)(trSel); \
}while(0)
/*******************************************************************************
* Function Name: USBFS_CyDmaTriggerOut
****************************************************************************//**
*
* Triggers the DMA channel to generate a transfer completion signal without
* actual transfer executed. The tr_out signal is triggered.
*
* \param trSel: trigger to be activated.
*
*
*******************************************************************************/
#define USBFS_DMA_USB_BURST_END_TR_OUT (0xC0020300U)
#define USBFS_CyDmaTriggerOut(trSel) \
do{ \
CYDMA_TR_CTL_REG = USBFS_DMA_USB_BURST_END_TR_OUT | (uint32)(trSel); \
}while(0)
#endif /* (CY_USBFS_USBFS_cydmac_H) */
/* [] END OF FILE */