text: /*""FILE COMMENT""*******************************************************
  * System Name	: DMAC API for RX62Nxx
  * File Name		: r_pdl_dmac.h
  * Version		: 0.10
  * Contents		: DMAC API header
  * Customer		: 
  * Model			: 
  * Order			: 
  * CPU			: RX600
  * Compiler		: RXC
  * OS			: Nothing
  * Programmer	: 
  * Note			: 
  ************************************************************************
  * Copyright,2010 RENESAS ELECTRONICS CORPORATION
  * AND RENESAS SOLUTIONS CORPORATION
  ************************************************************************
  * History		: 2010.04.27
  *				: Ver 0.10
  *				: First draft
  *				: 2010.09.01
  *				: Ver 0.11
  *				: Added DTC trigger control.
  *""FILE COMMENT END""**************************************************/
  
  #ifndef R_PDL_DMAC_H
  #define R_PDL_DMAC_H
  
  #include "r_pdl_common_defs_RX62Nxx.h"
  
  /* Function prototypes */
  bool R_DMAC_Create(
  	uint8_t,
  	uint32_t,
  	uint8_t,
  	void *,
  	void *,
  	uint16_t,
  	uint16_t,
  	int32_t,
  	uint32_t,
  	uint32_t,
  	void *,
  	uint8_t
  );
  bool R_DMAC_Destroy(
  	uint8_t
  );
  bool R_DMAC_Control(
  	uint8_t,
  	uint16_t,
  	void *,
  	void *,
  	uint16_t,
  	uint16_t,
  	int32_t,
  	uint32_t,
  	uint32_t
  );
  bool R_DMAC_GetStatus(
  	uint8_t,
  	uint8_t *,
  	uint32_t *,
  	uint32_t *,
  	uint16_t *,
  	uint16_t *
  );
  	
  /* Transfer mode selection */
  #define PDL_DMAC_NORMAL						0x00000001ul
  #define PDL_DMAC_REPEAT						0x00000002ul
  #define PDL_DMAC_BLOCK						0x00000004ul
  #define PDL_DMAC_SOURCE						0x00000008ul
  #define PDL_DMAC_DESTINATION				0x00000010ul
  
  /* Address addition direction selection */
  #define PDL_DMAC_SOURCE_ADDRESS_FIXED		0x00000020ul
  #define PDL_DMAC_SOURCE_ADDRESS_PLUS		0x00000040ul
  #define PDL_DMAC_SOURCE_ADDRESS_MINUS		0x00000080ul
  #define PDL_DMAC_SOURCE_ADDRESS_OFFSET		0x00000100ul
  #define PDL_DMAC_DESTINATION_ADDRESS_FIXED	0x00000200ul
  #define PDL_DMAC_DESTINATION_ADDRESS_PLUS	0x00000400ul
  #define PDL_DMAC_DESTINATION_ADDRESS_MINUS	0x00000800ul
  #define PDL_DMAC_DESTINATION_ADDRESS_OFFSET	0x00001000ul
  
  /* Transfer data size */
  #define PDL_DMAC_SIZE_8						0x00002000ul
  #define PDL_DMAC_SIZE_16					0x00004000ul
  #define PDL_DMAC_SIZE_32					0x00008000ul
  
  /* Interrupt generation */
  #define PDL_DMAC_IRQ_END					0x00010000ul
  #define PDL_DMAC_IRQ_ESCAPE_END				0x00020000ul
  #define PDL_DMAC_IRQ_REPEAT_SIZE_END		0x00040000ul
  #define PDL_DMAC_IRQ_EXT_SOURCE				0x00080000ul
  #define PDL_DMAC_IRQ_EXT_DESTINATION		0x00100000ul
  
  /* Start trigger forwarding */
  #define PDL_DMAC_TRIGGER_CLEAR				0x00200000ul
  #define PDL_DMAC_TRIGGER_FORWARD			0x00400000ul
  
  /* DTC trigger control */
  #define PDL_DMAC_DTC_TRIGGER_DISABLE		0x00800000ul
  #define PDL_DMAC_DTC_TRIGGER_ENABLE			0x01000000ul
  
  /* DMAC activation source */
  #define PDL_DMAC_TRIGGER_SW			0x00u
  #define PDL_DMAC_TRIGGER_CMT0		VECT_CMT0_CMI0
  #define PDL_DMAC_TRIGGER_CMT1		VECT_CMT1_CMI1
  #define PDL_DMAC_TRIGGER_CMT2		VECT_CMT2_CMI2
  #define PDL_DMAC_TRIGGER_CMT3		VECT_CMT3_CMI3
  #define PDL_DMAC_TRIGGER_USB0_D0	VECT_USB0_D0FIFO0
  #define PDL_DMAC_TRIGGER_USB0_D1	VECT_USB0_D1FIFO0
  #define PDL_DMAC_TRIGGER_USB1_D0	VECT_USB1_D0FIFO1
  #define PDL_DMAC_TRIGGER_USB1_D1	VECT_USB1_D1FIFO1
  #define PDL_DMAC_TRIGGER_SPI0_RX	VECT_RSPI0_SPRI0
  #define PDL_DMAC_TRIGGER_SPI0_TX	VECT_RSPI0_SPTI0
  #define PDL_DMAC_TRIGGER_SPI1_RX	VECT_RSPI1_SPRI1
  #define PDL_DMAC_TRIGGER_SPI1_TX	VECT_RSPI1_SPTI1
  #define PDL_DMAC_TRIGGER_IRQ0		VECT__IRQ0
  #define PDL_DMAC_TRIGGER_IRQ1		VECT__IRQ1
  #define PDL_DMAC_TRIGGER_IRQ2		VECT__IRQ2
  #define PDL_DMAC_TRIGGER_IRQ3		VECT__IRQ3
  #define PDL_DMAC_TRIGGER_ADC10_0	VECT_AD0_ADI0
  #define PDL_DMAC_TRIGGER_ADC10_1	VECT_AD1_ADI1
  #define PDL_DMAC_TRIGGER_ADC12		VECT_S12AD_ADI
  #define PDL_DMAC_TRIGGER_MTU0		VECT_MTU0_TGIA0
  #define PDL_DMAC_TRIGGER_MTU1		VECT_MTU1_TGIA1
  #define PDL_DMAC_TRIGGER_MTU2		VECT_MTU2_TGIA2
  #define PDL_DMAC_TRIGGER_MTU3		VECT_MTU3_TGIA3
  #define PDL_DMAC_TRIGGER_MTU4		VECT_MTU4_TGIA4
  #define PDL_DMAC_TRIGGER_MTU6		VECT_MTU6_TGIA6
  #define PDL_DMAC_TRIGGER_MTU7		VECT_MTU7_TGIA7
  #define PDL_DMAC_TRIGGER_MTU8		VECT_MTU8_TGIA8
  #define PDL_DMAC_TRIGGER_MTU9		VECT_MTU9_TGIA9
  #define PDL_DMAC_TRIGGER_MTU10		VECT_MTU10_TGIA10
  #define PDL_DMAC_TRIGGER_SCI0_RX	VECT_SCI0_RXI0
  #define PDL_DMAC_TRIGGER_SCI0_TX	VECT_SCI0_TXI0
  #define PDL_DMAC_TRIGGER_SCI1_RX	VECT_SCI1_RXI1
  #define PDL_DMAC_TRIGGER_SCI1_TX	VECT_SCI1_TXI1
  #define PDL_DMAC_TRIGGER_SCI2_RX	VECT_SCI2_RXI2
  #define PDL_DMAC_TRIGGER_SCI2_TX	VECT_SCI2_TXI2
  #define PDL_DMAC_TRIGGER_SCI3_RX	VECT_SCI3_RXI3
  #define PDL_DMAC_TRIGGER_SCI3_TX	VECT_SCI3_TXI3
  #define PDL_DMAC_TRIGGER_SCI5_RX	VECT_SCI5_RXI5
  #define PDL_DMAC_TRIGGER_SCI5_TX	VECT_SCI5_TXI5
  #define PDL_DMAC_TRIGGER_SCI6_RX	VECT_SCI6_RXI6
  #define PDL_DMAC_TRIGGER_SCI6_TX	VECT_SCI6_TXI6
  #define PDL_DMAC_TRIGGER_IIC0_RX	VECT_RIIC0_ICRXI0
  #define PDL_DMAC_TRIGGER_IIC0_TX	VECT_RIIC0_ICTXI0
  #define PDL_DMAC_TRIGGER_IIC1_RX	VECT_RIIC1_ICRXI1
  #define PDL_DMAC_TRIGGER_IIC1_TX	VECT_RIIC1_ICTXI1
  
  /* Enable / suspend control */
  #define PDL_DMAC_ENABLE						0x0001u
  #define PDL_DMAC_SUSPEND					0x0002u
  
  /* Software trigger control */
  #define PDL_DMAC_START						0x0004u
  #define PDL_DMAC_START_RUN					0x0008u
  
  /* Transfer end interrupt flag control */
  #define PDL_DMAC_CLEAR_DTIF					0x0010u
  #define PDL_DMAC_CLEAR_ESIF					0x0020u
  
  /* Modify registers selection */
  #define PDL_DMAC_UPDATE_SOURCE				0x0040u
  #define PDL_DMAC_UPDATE_DESTINATION			0x0080u
  #define PDL_DMAC_UPDATE_COUNT				0x0100u
  #define PDL_DMAC_UPDATE_SIZE				0x0200u
  #define PDL_DMAC_UPDATE_OFFSET				0x0400u
  #define PDL_DMAC_UPDATE_REPEAT_SOURCE		0x0800u
  #define PDL_DMAC_UPDATE_REPEAT_DESTINATION	0x1000u
  
  #endif
  /* End of file */