/*""FILE COMMENT""*******************************************************
* System Name	: I/O Port API
* File Name		: r_pdl_io_port.h
* Version		: 1.02
* Contents		: I/O Port API header
* Customer		: 
* Model			: 
* Order			: 
* CPU			: RX
* Compiler		: RXC
* OS			:
* Programmer	: 
* Note			: 
************************************************************************
* Copyright, 2011. Renesas Electronics Corporation
* and Renesas Solutions Corporation
************************************************************************
* History		: 2011.04.08
*				: Ver 1.02
*				: CS-5 release.
*""FILE COMMENT END""**************************************************/

#ifndef R_PDL_IO_PORT_H
#define R_PDL_IO_PORT_H

#include "r_pdl_common_defs_RX62Nxx.h"

/* Function prototypes */
bool R_IO_PORT_Set(
	uint16_t,
	uint8_t
);
bool R_IO_PORT_ReadControl(
	uint16_t,
	uint8_t,
	uint8_t *
);
bool R_IO_PORT_ModifyControl(
	uint16_t,
	uint8_t,
	uint8_t
);
bool R_IO_PORT_Read(
	uint16_t,
	uint8_t *
);
bool R_IO_PORT_Write(
	uint16_t,
	uint8_t
);
bool R_IO_PORT_Compare(
	uint16_t,
	uint8_t,
	void *
);
bool R_IO_PORT_Modify(
	uint16_t,
	uint8_t,
	uint8_t
);
bool R_IO_PORT_Wait(
	uint16_t,
	uint8_t
);

/* I/O Ports*/
#define PDL_IO_PORT_0	0xF000u	/* Port 0 */
#define PDL_IO_PORT_1	0xF001u	/* Port 1 */
#define PDL_IO_PORT_2	0xF002u	/* Port 2 */
#define PDL_IO_PORT_3	0xF003u	/* Port 3 */
#define PDL_IO_PORT_4	0xF004u	/* Port 4 */
#define PDL_IO_PORT_5	0xF005u	/* Port 5 */
#define PDL_IO_PORT_6	0xF006u	/* Port 6 */
#define PDL_IO_PORT_7	0xF007u	/* Port 7 */
#define PDL_IO_PORT_8	0xF008u	/* Port 8 */
#define PDL_IO_PORT_9	0xF009u	/* Port 9 */
#define PDL_IO_PORT_A	0xF00Au	/* Port A */
#define PDL_IO_PORT_B	0xF00Bu	/* Port B */
#define PDL_IO_PORT_C	0xF00Cu	/* Port C */
#define PDL_IO_PORT_D	0xF00Du	/* Port D */
#define PDL_IO_PORT_E	0xF00Eu	/* Port E */
#define PDL_IO_PORT_F	0xF00Fu	/* Port F */
#define PDL_IO_PORT_G	0xF010u	/* Port G */

/* I/O port pins */
#define PDL_IO_PORT_0_0 0x0001u	/* P00 */
#define PDL_IO_PORT_0_1 0x0002u	/* P01 */
#define PDL_IO_PORT_0_2 0x0004u	/* P02 */
#define PDL_IO_PORT_0_3 0x0008u	/* P03 */
#define PDL_IO_PORT_0_5 0x0020u	/* P05 */
#define PDL_IO_PORT_0_7 0x0080u	/* P07 */

#define PDL_IO_PORT_1_0 0x0101u	/* P10 */
#define PDL_IO_PORT_1_1 0x0102u	/* P11 */
#define PDL_IO_PORT_1_2 0x0104u	/* P12 */
#define PDL_IO_PORT_1_3 0x0108u	/* P13 */
#define PDL_IO_PORT_1_4 0x0110u	/* P14 */
#define PDL_IO_PORT_1_5 0x0120u	/* P15 */
#define PDL_IO_PORT_1_6 0x0140u	/* P16 */
#define PDL_IO_PORT_1_7 0x0180u	/* P17 */

#define PDL_IO_PORT_2_0 0x0201u	/* P20 */
#define PDL_IO_PORT_2_1 0x0202u	/* P21 */
#define PDL_IO_PORT_2_2 0x0204u	/* P22 */
#define PDL_IO_PORT_2_3 0x0208u	/* P23 */
#define PDL_IO_PORT_2_4 0x0210u	/* P24 */
#define PDL_IO_PORT_2_5 0x0220u	/* P25 */
#define PDL_IO_PORT_2_6 0x0240u	/* P26 */
#define PDL_IO_PORT_2_7 0x0280u	/* P27 */

#define PDL_IO_PORT_3_0 0x0301u	/* P30 */
#define PDL_IO_PORT_3_1 0x0302u	/* P31 */
#define PDL_IO_PORT_3_2 0x0304u	/* P32 */
#define PDL_IO_PORT_3_3 0x0308u	/* P33 */
#define PDL_IO_PORT_3_4 0x0310u	/* P34 */
#define PDL_IO_PORT_3_5 0x0320u	/* P35 */

#define PDL_IO_PORT_4_0 0x0401u	/* P40 */
#define PDL_IO_PORT_4_1 0x0402u	/* P41 */
#define PDL_IO_PORT_4_2 0x0404u	/* P42 */
#define PDL_IO_PORT_4_3 0x0408u	/* P43 */
#define PDL_IO_PORT_4_4 0x0410u	/* P44 */
#define PDL_IO_PORT_4_5 0x0420u	/* P45 */
#define PDL_IO_PORT_4_6 0x0440u	/* P46 */
#define PDL_IO_PORT_4_7 0x0480u	/* P47 */

#define PDL_IO_PORT_5_0 0x0501u	/* P50 */
#define PDL_IO_PORT_5_1 0x0502u	/* P51 */
#define PDL_IO_PORT_5_2 0x0504u	/* P52 */
#define PDL_IO_PORT_5_3 0x0508u	/* P53 */
#define PDL_IO_PORT_5_4 0x0510u	/* P54 */
#define PDL_IO_PORT_5_5 0x0520u	/* P55 */
#define PDL_IO_PORT_5_6 0x0540u	/* P56 */
#define PDL_IO_PORT_5_7 0x0580u	/* P57 */

#define PDL_IO_PORT_6_0 0x0601u	/* P60 */
#define PDL_IO_PORT_6_1 0x0602u	/* P61 */
#define PDL_IO_PORT_6_2 0x0604u	/* P62 */
#define PDL_IO_PORT_6_3 0x0608u	/* P63 */
#define PDL_IO_PORT_6_4 0x0610u	/* P64 */
#define PDL_IO_PORT_6_5 0x0620u	/* P65 */
#define PDL_IO_PORT_6_6 0x0640u	/* P66 */
#define PDL_IO_PORT_6_7 0x0680u	/* P67 */

#define PDL_IO_PORT_7_0 0x0701u	/* P70 */
#define PDL_IO_PORT_7_1 0x0702u	/* P71 */
#define PDL_IO_PORT_7_2 0x0704u	/* P72 */
#define PDL_IO_PORT_7_3 0x0708u	/* P73 */
#define PDL_IO_PORT_7_4 0x0710u	/* P74 */
#define PDL_IO_PORT_7_5 0x0720u	/* P75 */
#define PDL_IO_PORT_7_6 0x0740u	/* P76 */
#define PDL_IO_PORT_7_7 0x0780u	/* P77 */

#define PDL_IO_PORT_8_0 0x0801u	/* P80 */
#define PDL_IO_PORT_8_1 0x0802u	/* P81 */
#define PDL_IO_PORT_8_2 0x0804u	/* P82 */
#define PDL_IO_PORT_8_3 0x0808u	/* P83 */
#define PDL_IO_PORT_8_4 0x0810u	/* P84 */
#define PDL_IO_PORT_8_5 0x0820u	/* P85 */

#define PDL_IO_PORT_9_0 0x0901u	/* P90 */
#define PDL_IO_PORT_9_1 0x0902u	/* P91 */
#define PDL_IO_PORT_9_2 0x0904u	/* P92 */
#define PDL_IO_PORT_9_3 0x0908u	/* P93 */
#define PDL_IO_PORT_9_4 0x0910u	/* P94 */
#define PDL_IO_PORT_9_5 0x0920u	/* P95 */
#define PDL_IO_PORT_9_6 0x0940u	/* P96 */
#define PDL_IO_PORT_9_7 0x0980u	/* P97 */

#define PDL_IO_PORT_A_0 0x0A01u	/* PA0 */
#define PDL_IO_PORT_A_1 0x0A02u	/* PA1 */
#define PDL_IO_PORT_A_2 0x0A04u	/* PA2 */
#define PDL_IO_PORT_A_3 0x0A08u	/* PA3 */
#define PDL_IO_PORT_A_4 0x0A10u	/* PA4 */
#define PDL_IO_PORT_A_5 0x0A20u	/* PA5 */
#define PDL_IO_PORT_A_6 0x0A40u	/* PA6 */
#define PDL_IO_PORT_A_7 0x0A80u	/* PA7 */

#define PDL_IO_PORT_B_0 0x0B01u	/* PB0 */
#define PDL_IO_PORT_B_1 0x0B02u	/* PB1 */
#define PDL_IO_PORT_B_2 0x0B04u	/* PB2 */
#define PDL_IO_PORT_B_3 0x0B08u	/* PB3 */
#define PDL_IO_PORT_B_4 0x0B10u	/* PB4 */
#define PDL_IO_PORT_B_5 0x0B20u	/* PB5 */
#define PDL_IO_PORT_B_6 0x0B40u	/* PB6 */
#define PDL_IO_PORT_B_7 0x0B80u	/* PB7 */

#define PDL_IO_PORT_C_0 0x0C01u	/* PC0 */
#define PDL_IO_PORT_C_1 0x0C02u	/* PC1 */
#define PDL_IO_PORT_C_2 0x0C04u	/* PC2 */
#define PDL_IO_PORT_C_3 0x0C08u	/* PC3 */
#define PDL_IO_PORT_C_4 0x0C10u	/* PC4 */
#define PDL_IO_PORT_C_5 0x0C20u	/* PC5 */
#define PDL_IO_PORT_C_6 0x0C40u	/* PC6 */
#define PDL_IO_PORT_C_7 0x0C80u	/* PC7 */

#define PDL_IO_PORT_D_0 0x0D01u	/* PD0 */
#define PDL_IO_PORT_D_1 0x0D02u	/* PD1 */
#define PDL_IO_PORT_D_2 0x0D04u	/* PD2 */
#define PDL_IO_PORT_D_3 0x0D08u	/* PD3 */
#define PDL_IO_PORT_D_4 0x0D10u	/* PD4 */
#define PDL_IO_PORT_D_5 0x0D20u	/* PD5 */
#define PDL_IO_PORT_D_6 0x0D40u	/* PD6 */
#define PDL_IO_PORT_D_7 0x0D80u	/* PD7 */

#define PDL_IO_PORT_E_0 0x0E01u	/* PE0 */
#define PDL_IO_PORT_E_1 0x0E02u	/* PE1 */
#define PDL_IO_PORT_E_2 0x0E04u	/* PE2 */
#define PDL_IO_PORT_E_3 0x0E08u	/* PE3 */
#define PDL_IO_PORT_E_4 0x0E10u	/* PE4 */
#define PDL_IO_PORT_E_5 0x0E20u	/* PE5 */
#define PDL_IO_PORT_E_6 0x0E40u	/* PE6 */
#define PDL_IO_PORT_E_7 0x0E80u	/* PE7 */

#define PDL_IO_PORT_F_0 0x0F01u	/* PF0 */
#define PDL_IO_PORT_F_1 0x0F02u	/* PF1 */
#define PDL_IO_PORT_F_2 0x0F04u	/* PF2 */
#define PDL_IO_PORT_F_3 0x0F08u	/* PF3 */
#define PDL_IO_PORT_F_4 0x0F10u	/* PF4 */

#define PDL_IO_PORT_G_0 0x1001u	/* PG0 */
#define PDL_IO_PORT_G_1 0x1002u	/* PG1 */
#define PDL_IO_PORT_G_2 0x1004u	/* PG2 */
#define PDL_IO_PORT_G_3 0x1008u	/* PG3 */
#define PDL_IO_PORT_G_4 0x1010u	/* PG4 */
#define PDL_IO_PORT_G_5 0x1020u	/* PG5 */
#define PDL_IO_PORT_G_6 0x1040u	/* PG6 */
#define PDL_IO_PORT_G_7 0x1080u	/* PG7 */

/* Settings */
#define PDL_IO_PORT_INPUT				0x01u	/* Input port */
#define PDL_IO_PORT_OUTPUT				0x02u	/* Output port */
#define PDL_IO_PORT_INPUT_BUFFER_ON		0x04u	/* The input buffer is enabled */
#define PDL_IO_PORT_INPUT_BUFFER_OFF	0x08u	/* The input buffer is disabled */
#define PDL_IO_PORT_PULL_UP_ON			0x10u	/* Pulled high */
#define PDL_IO_PORT_PULL_UP_OFF			0x20u	/* Not pulled high */
#define PDL_IO_PORT_OPEN_DRAIN			0x40u	/* NMOS open-drain output */
#define PDL_IO_PORT_CMOS				0x80u	/* CMOS output */

/* Control register selection */
#define PDL_IO_PORT_DIRECTION		0x01u
#define PDL_IO_PORT_INPUT_BUFFER	0x02u
#define PDL_IO_PORT_PULL_UP			0x04u
#define PDL_IO_PORT_TYPE			0x08u

/* Logical operations */
#define PDL_IO_PORT_AND				0x10u
#define PDL_IO_PORT_OR				0x20u
#define PDL_IO_PORT_XOR				0x40u

#endif
/* End of file */