rt-thread/bsp/gkipc/libraries/drv/710X/gd/inc/gd_gpio.h

418 lines
40 KiB
C
Raw Normal View History

2018-03-04 08:21:19 +08:00
/*
*******************************************************************************
**
** \file gd_gpio.h
**
** \brief General purpose input output driver.
**
**
** Copyright: 2012 - 2013 (C) GoKe Microelectronics ShangHai Branch
**
** \attention THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS
** ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR
** OMMISSIONS.
**
** \version
**
*******************************************************************************
*/
#ifndef _GD_GPIO_H_
#define _GD_GPIO_H_
#include <gtypes.h>
#include <gmodids.h>
//#include "gd_int.h"
/*!
*******************************************************************************
**
** \brief GPIO driver error codes.
**
*******************************************************************************
*/
#define GD_GPIO_ERR_BASE (GD_GPIO_MODULE_ID<<16) //!< The GPIO base error code.
enum
{
/*!
** The GPIO is not of the right mode to to perform
** a requested function, e.g. writing to a GPIO which was
** configured as input.
*/
GD_ERR_GPIO_INVALID_TYPE = GD_GPIO_ERR_BASE,
GD_ERR_GPIO_OPEN_FAILED,
};
/*!
*******************************************************************************
**
** \brief All available GPIO pins named by number.
**
** \sa GD_GPIO_Open()
** \sa GD_GPIO_OpenFunctionMode()
** \sa GD_GPIO_SetType()
**
*******************************************************************************
*/
typedef enum
{
GD_GPIO_0 = 0, //!< Value representing GPIO 0.
GD_GPIO_1 = 1, //!< Value representing GPIO 1.
GD_GPIO_2 = 2, //!< Value representing GPIO 2.
GD_GPIO_3 = 3, //!< Value representing GPIO 3.
GD_GPIO_4 = 4, //!< Value representing GPIO 4.
GD_GPIO_5 = 5, //!< Value representing GPIO 5.
GD_GPIO_6 = 6, //!< Value representing GPIO 6.
GD_GPIO_7 = 7, //!< Value representing GPIO 7.
GD_GPIO_8 = 8, //!< Value representing GPIO 8.
GD_GPIO_9 = 9, //!< Value representing GPIO 9.
GD_GPIO_10 = 10, //!< Value representing GPIO 10.
GD_GPIO_11 = 11, //!< Value representing GPIO 11.
GD_GPIO_12 = 12, //!< Value representing GPIO 12.
GD_GPIO_13 = 13, //!< Value representing GPIO 13.
GD_GPIO_14 = 14, //!< Value representing GPIO 14.
GD_GPIO_15 = 15, //!< Value representing GPIO 15.
GD_GPIO_16 = 16, //!< Value representing GPIO 16.
GD_GPIO_17 = 17, //!< Value representing GPIO 17.
GD_GPIO_18 = 18, //!< Value representing GPIO 18.
GD_GPIO_19 = 19, //!< Value representing GPIO 19.
GD_GPIO_20 = 20, //!< Value representing GPIO 20.
GD_GPIO_21 = 21, //!< Value representing GPIO 21.
GD_GPIO_22 = 22, //!< Value representing GPIO 22.
GD_GPIO_23 = 23, //!< Value representing GPIO 23.
GD_GPIO_24 = 24, //!< Value representing GPIO 24.
GD_GPIO_25 = 25, //!< Value representing GPIO 25.
GD_GPIO_26 = 26, //!< Value representing GPIO 26.
GD_GPIO_27 = 27, //!< Value representing GPIO 27.
GD_GPIO_28 = 28, //!< Value representing GPIO 28.
GD_GPIO_29 = 29, //!< Value representing GPIO 29.
GD_GPIO_30 = 30, //!< Value representing GPIO 30.
GD_GPIO_31 = 31, //!< Value representing GPIO 31.
GD_GPIO_32 = 32, //!< Value representing GPIO 32.
GD_GPIO_33 = 33, //!< Value representing GPIO 33.
GD_GPIO_34 = 34, //!< Value representing GPIO 34.
GD_GPIO_35 = 35, //!< Value representing GPIO 35.
GD_GPIO_36 = 36, //!< Value representing GPIO 36.
GD_GPIO_37 = 37, //!< Value representing GPIO 37.
GD_GPIO_38 = 38, //!< Value representing GPIO 38.
GD_GPIO_39 = 39, //!< Value representing GPIO 39.
GD_GPIO_40 = 40, //!< Value representing GPIO 40.
GD_GPIO_41 = 41, //!< Value representing GPIO 41.
GD_GPIO_42 = 42, //!< Value representing GPIO 42.
GD_GPIO_43 = 43, //!< Value representing GPIO 43.
GD_GPIO_44 = 44, //!< Value representing GPIO 44.
GD_GPIO_45 = 45, //!< Value representing GPIO 45.
GD_GPIO_46 = 46, //!< Value representing GPIO 46.
GD_GPIO_47 = 47, //!< Value representing GPIO 47.
GD_GPIO_48 = 48, //!< Value representing GPIO 48.
GD_GPIO_49 = 49, //!< Value representing GPIO 49.
GD_GPIO_50 = 50, //!< Value representing GPIO 50.
GD_GPIO_51 = 51, //!< Value representing GPIO 51.
GD_GPIO_52 = 52, //!< Value representing GPIO 52.
GD_GPIO_53 = 53, //!< Value representing GPIO 53.
GD_GPIO_54 = 54, //!< Value representing GPIO 54.
GD_GPIO_55 = 55, //!< Value representing GPIO 55.
GD_GPIO_NUM,
}GD_GPIO_PIN_E;;
/*!
*******************************************************************************
**
** \brief GPIO types.
** \high 30-31:00:unused; 01: in; 10:out; 11:in & out.
** \[ 7: 0]: OUTPUT_CFG out_sel
** \ 0x00: tied to 1<EFBFBD><EFBFBD>b0, always output 0
** \ 0x01: tied to 1<EFBFBD><EFBFBD>b1, always output 1
** \ 0x02~0x3f: data inputs from internal modules
** \[15: 8]: INPUT_CFG in_sel
** \ 0x00: tied to 1<EFBFBD><EFBFBD>b0, module<EFBFBD><EFBFBD>s input is always 0
** \ 0x01: tied to 1<EFBFBD><EFBFBD>b1, module<EFBFBD><EFBFBD>s input is always 1
** \ 0x02~0x3f: mux selection(gpio_input[61:0])
** \[21:16]: OUTPUT_CFG oen_sel
** \ 0x00: tied to 1<EFBFBD><EFBFBD>b0, always output
** \ 0x01: tied to 1<EFBFBD><EFBFBD>b1, always input
** \ 0x02~0x3f: oen inputs from internal modules
** \[22:22]: out_invert
** \[23:23]: oen_invert
** \[29:24]: IOCTRL
** \ [25:24]: 0=2mA,1=4mA,2=8mA,3=12mA
** \ [29:28]: tied to 1<EFBFBD><EFBFBD>b0, always output
**
** \sa GD_GPIO_SetType()
** \sa GD_GPIO_Open()
**
*******************************************************************************
*/
#define GD_GPIO_OUT_SEL(n) ((n))
#define GD_GPIO_IN_SEL(n) ((n)<<8)
#define GD_GPIO_OEN_SEL(n) ((n)<<16)
#define GD_GPIO_OUT_INVERT(n) ((n)<<22)
#define GD_GPIO_OEN_INVERT(n) ((n)<<23)
#define GD_GPIO_IOCTRL(n) ((n)<<24)
#define GD_GPIO_FUNC(n) ((n)<<30)
#define GD_GPIO_GET_OUT_SEL(n) (((n)&0x000000FF))
#define GD_GPIO_GET_IN_SEL(n) (((n)&0x0000FF00)>>8)
#define GD_GPIO_GET_OEN_SEL(n) (((n)&0x003F0000)>>16)
#define GD_GPIO_GET_OUT_INVERT(n) (((n)&0x00400000)>>22)
#define GD_GPIO_GET_OEN_INVERT(n) (((n)&0x00800000)>>23)
#define GD_GPIO_GET_IOCTRL(n) (((n)&0x3F000000)>>24)
#define GD_GPIO_GET_FUNC(n) (((n)&0xC0000000)>>30)
#define GD_GPIO_FUNC_IN 1
#define GD_GPIO_FUNC_OUT 2
#define GD_GPIO_FUNC_INOUT 3
#define IOCTRL_NORMAL 0x00 //!< Hi-z
#define IOCTRL_PULL_UP 0x10 //!< PULL_UP
#define IOCTRL_PULL_DOWN 0x20 //!< PULL_DOWN
#define IOCTRL_REPEAT 0x30 //!< REPEAT
#define IOCTRL_2MA 0x00 //!< 2mA
#define IOCTRL_4MA 0x01 //!< 4mA
#define IOCTRL_8MA 0x02 //!< 8mA
#define IOCTRL_12MA 0x03 //!< 12mA
typedef enum
{
/* ----------------------------------- GPIO output function define ----------------------------------- */
GD_GPIO_TYPE_OUTPUT_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 0), //!< Output type: value = 0
GD_GPIO_TYPE_OUTPUT_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 1), //!< Output type: value = 1
GD_GPIO_TYPE_OUTPUT_SPI1_SO = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 2) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 2), //!< Output type: tssi_txd
GD_GPIO_TYPE_OUTPUT_SPI1_CS0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 3), //!< Output type: tssi_cs0_n
GD_GPIO_TYPE_OUTPUT_SPI1_SCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 4), //!< Output type: tssi_sclk_out
GD_GPIO_TYPE_OUTPUT_UART2_RTS_N = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 5), //!< Output type: uart2_rts_n
GD_GPIO_TYPE_OUTPUT_UART2_DTR_N = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 6), //!< Output type: uart2_dtr_n
GD_GPIO_TYPE_OUTPUT_UART2_TX = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 7), //!< Output type: uart2_tx
GD_GPIO_TYPE_OUTPUT_UART1_TX = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 8), //!< Output type: uart1_tx
GD_GPIO_TYPE_OUTPUT_UART0_TX = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 9), //!< Output type: uart0_tx
GD_GPIO_TYPE_OUTPUT_PWM3_OUT = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(10), //!< Output type: pwm3_out
GD_GPIO_TYPE_OUTPUT_PWM2_OUT = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(11), //!< Output type: pwm2_out
GD_GPIO_TYPE_OUTPUT_PWM1_OUT = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(12), //!< Output type: pwm1_out
GD_GPIO_TYPE_OUTPUT_PWM0_OUT = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(13), //!< Output type: pwm0_out
GD_GPIO_TYPE_OUTPUT_SPI0_SO = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 7) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(14), //!< Output type: ssi_txd
GD_GPIO_TYPE_OUTPUT_SPI0_CS7 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(15), //!< Output type: ssi_cs7_n
GD_GPIO_TYPE_OUTPUT_SPI0_CS6 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(16), //!< Output type: ssi_cs6_n
GD_GPIO_TYPE_OUTPUT_SPI0_CS5 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(17), //!< Output type: ssi_cs5_n
GD_GPIO_TYPE_OUTPUT_SPI0_CS4 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(18), //!< Output type: ssi_cs4_n
GD_GPIO_TYPE_OUTPUT_SPI0_CS1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(19), //!< Output type: ssi_cs1_n
GD_GPIO_TYPE_OUTPUT_SPI0_CS0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(20), //!< Output type: ssi_cs0_n
GD_GPIO_TYPE_OUTPUT_SPI0_SCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(21), //!< Output type: ssi_sclk_out
//GD_GPIO_TYPE_INOUT_SD_DATA_0 GD_GPIO_OEN_SEL( 8) GD_GPIO_OUT_SEL(22)
//GD_GPIO_TYPE_INOUT_SD_DATA_1 GD_GPIO_OEN_SEL( 9) GD_GPIO_OUT_SEL(23)
//GD_GPIO_TYPE_INOUT_SD_DATA_2 GD_GPIO_OEN_SEL(10) GD_GPIO_OUT_SEL(24)
//GD_GPIO_TYPE_INOUT_SD_DATA_3 GD_GPIO_OEN_SEL(11) GD_GPIO_OUT_SEL(25)
//GD_GPIO_TYPE_INOUT_SD_DATA_4 GD_GPIO_OEN_SEL(12) GD_GPIO_OUT_SEL(26)
//GD_GPIO_TYPE_INOUT_SD_DATA_5 GD_GPIO_OEN_SEL(13) GD_GPIO_OUT_SEL(27)
//GD_GPIO_TYPE_INOUT_SD_DATA_6 GD_GPIO_OEN_SEL(14) GD_GPIO_OUT_SEL(28)
//GD_GPIO_TYPE_INOUT_SD_DATA_7 GD_GPIO_OEN_SEL(15) GD_GPIO_OUT_SEL(29)
//GD_GPIO_TYPE_INOUT_SDIO_CMD GD_GPIO_OEN_SEL(16) GD_GPIO_OUT_SEL(30)
GD_GPIO_TYPE_OUTPUT_SDIO_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(31), //!< Output type: sd_clk_sdcard
GD_GPIO_TYPE_OUTPUT_AOMCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(32), //!< Output type: i2s_au_clk
GD_GPIO_TYPE_OUTPUT_AOBCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(17) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(33), //!< Output type: i2s_clk_o
GD_GPIO_TYPE_OUTPUT_AOLRCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(18) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(34), //!< Output type: i2s_ws_o
GD_GPIO_TYPE_OUTPUT_AO_DATA0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(35), //!< Output type: i2s_so
GD_GPIO_TYPE_OUTPUT_SF_CS0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(36), //!< Output type: sf_cs0_n
GD_GPIO_TYPE_OUTPUT_SF_CS1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(37), //!< Output type: sf_cs1_n
GD_GPIO_TYPE_OUTPUT_EPHY_LED_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(38), //!< Output type: ephy_led[0] hcd ok
GD_GPIO_TYPE_OUTPUT_EPHY_LED_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(39), //!< Output type: ephy_led[1] duplex
GD_GPIO_TYPE_OUTPUT_EPHY_LED_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(40), //!< Output type: ephy_led[2] 10M CRS out
GD_GPIO_TYPE_OUTPUT_EPHY_LED_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(41), //!< Output type: ephy_led[3] 100M CRS out
GD_GPIO_TYPE_OUTPUT_EPHY_LED_4 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(42), //!< Output type: ephy_led[4] clo gs
GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(43), //!< Output type: enet_phy_txd[0]
GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(44), //!< Output type: enet_phy_txd[1]
GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(45), //!< Output type: enet_phy_txd[2]
GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(46), //!< Output type: enet_phy_txd[3]
GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXER = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(47), //!< Output type: enet_phy_txer
GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXEN = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(48), //!< Output type: enet_phy_txen
// GD_GPIO_TYPE_INOUT_ETH_MDIO GD_GPIO_OUT_SEL(49)
GD_GPIO_TYPE_OUTPUT_ENET_PHY_RESET = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(61), //!< Output type: enet_phy_reset
GD_GPIO_TYPE_OUTPUT_ENET_GMII_MDC_O = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(50), //!< Output type: enet_gmii_mdc_o
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(51), //!< Output type: ahb_dac_dr[0]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(52), //!< Output type: ahb_dac_dr[1]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(53), //!< Output type: ahb_dac_dr[2]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(54), //!< Output type: ahb_dac_dr[3]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_4 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(55), //!< Output type: ahb_dac_dr[4]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_5 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(56), //!< Output type: ahb_dac_dr[5]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_6 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(57), //!< Output type: ahb_dac_dr[6]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_7 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(58), //!< Output type: ahb_dac_dr[7]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_8 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(59), //!< Output type: ahb_dac_dr[8]
GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_9 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(60), //!< Output type: ahb_dac_dr[9]
/* ----------------------------------- GPIO input function define ----------------------------------- */
GD_GPIO_TYPE_INPUT_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 0), //!< Input type: normal input
GD_GPIO_TYPE_INPUT_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL( 1) | GD_GPIO_OUT_SEL( 0), //!< Input type: normal input
GD_GPIO_TYPE_INPUT_SPI1_SI = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 0) | GD_GPIO_OUT_SEL( 0), //!< Input type: tssi_rxd
//GD_GPIO_TYPE_INOUT_I2C_DATA GD_GPIO_IN_SEL(2+ 1)
//GD_GPIO_TYPE_INOUT_I2C_CLK GD_GPIO_IN_SEL(2+ 2)
//GD_GPIO_TYPE_INOUT_I2C_DATA2 GD_GPIO_IN_SEL(2+ 3)
//GD_GPIO_TYPE_INOUT_I2C_CLK2 GD_GPIO_IN_SEL(2+ 4)
GD_GPIO_TYPE_INPUT_UART2_RX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 5) | GD_GPIO_OUT_SEL( 0), //!< Input type: uart2_rx
GD_GPIO_TYPE_INPUT_UART1_RX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 6) | GD_GPIO_OUT_SEL( 0), //!< Input type: uart1_rx
GD_GPIO_TYPE_INPUT_UART0_RX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 7) | GD_GPIO_OUT_SEL( 0), //!< Input type: uart0_rx
GD_GPIO_TYPE_INPUT_TIMER1_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 8) | GD_GPIO_OUT_SEL( 0), //!< Input type: timer1_clk
GD_GPIO_TYPE_INPUT_TIMER2_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 9) | GD_GPIO_OUT_SEL( 0), //!< Input type: timer2_clk
GD_GPIO_TYPE_INPUT_TIMER3_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+10) | GD_GPIO_OUT_SEL( 0), //!< Input type: timer3_clk
GD_GPIO_TYPE_INPUT_SPI0_SI = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+11) | GD_GPIO_OUT_SEL( 0), //!< Input type: ssi_rxd
GD_GPIO_TYPE_INPUT_SD_WP_N = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+12) | GD_GPIO_OUT_SEL( 0), //!< Input type: sd_wp_n
GD_GPIO_TYPE_INPUT_SD_CD_N = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+13) | GD_GPIO_OUT_SEL( 0), //!< Input type: sd_cd_n
//GD_GPIO_TYPE_INOUT_SD_DATA_0 GD_GPIO_IN_SEL(2+14)
//GD_GPIO_TYPE_INOUT_SD_DATA_1 GD_GPIO_IN_SEL(2+15)
//GD_GPIO_TYPE_INOUT_SD_DATA_2 GD_GPIO_IN_SEL(2+16)
//GD_GPIO_TYPE_INOUT_SD_DATA_3 GD_GPIO_IN_SEL(2+17)
//GD_GPIO_TYPE_INOUT_SD_DATA_4 GD_GPIO_IN_SEL(2+18)
//GD_GPIO_TYPE_INOUT_SD_DATA_5 GD_GPIO_IN_SEL(2+19)
//GD_GPIO_TYPE_INOUT_SD_DATA_6 GD_GPIO_IN_SEL(2+20)
//GD_GPIO_TYPE_INOUT_SD_DATA_7 GD_GPIO_IN_SEL(2+21)
//GD_GPIO_TYPE_INOUT_SDIO_CMD GD_GPIO_IN_SEL(2+22)
GD_GPIO_TYPE_INPUT_I2S_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+23) | GD_GPIO_OUT_SEL( 0), //!< Input type: i2s_clk
GD_GPIO_TYPE_INPUT_I2S_WS = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+24) | GD_GPIO_OUT_SEL( 0), //!< Input type: i2s_ws
GD_GPIO_TYPE_INPUT_I2S_SI = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+25) | GD_GPIO_OUT_SEL( 0), //!< Input type: i2s_si
GD_GPIO_TYPE_INPUT_CLK_AU = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+26) | GD_GPIO_OUT_SEL( 0), //!< Input type: clk_au
GD_GPIO_TYPE_INPUT_ENET_PHY_RXD_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+27) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxd[0]
GD_GPIO_TYPE_INPUT_ENET_PHY_RXD_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+28) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxd[1]
GD_GPIO_TYPE_INPUT_ENET_PHY_RXD_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+29) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxd[2]
GD_GPIO_TYPE_INPUT_ENET_PHY_RXD_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+30) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxd[3]
GD_GPIO_TYPE_INPUT_ENET_PHY_COL = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+31) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_col
GD_GPIO_TYPE_INPUT_ENET_PHY_CRS = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+32) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_crs
GD_GPIO_TYPE_INPUT_ENET_PHY_RXER = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+33) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxer
GD_GPIO_TYPE_INPUT_ENET_PHY_RXDV = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+34) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxdv
// GD_GPIO_TYPE_INOUT_ETH_MDIO GD_GPIO_IN_SEL(2+35)
GD_GPIO_TYPE_INPUT_ENET_CLK_RX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+36) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_clk_rx
GD_GPIO_TYPE_INPUT_ENET_CLK_TX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+37) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_clk_tx
/* ----------------------------------- GPIO input&&output function define ----------------------------------- */
GD_GPIO_TYPE_INOUT_I2C_DATA = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 3) | GD_GPIO_IN_SEL(2+ 1) | GD_GPIO_OUT_SEL( 0), //!< Input/Output type: i2c_sda
GD_GPIO_TYPE_INOUT_I2C_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 4) | GD_GPIO_IN_SEL(2+ 2) | GD_GPIO_OUT_SEL( 0), //!< Input/Output type: i2c_scl
GD_GPIO_TYPE_INOUT_I2C_DATA2 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 5) | GD_GPIO_IN_SEL(2+ 3) | GD_GPIO_OUT_SEL( 0), //!< Input/Output type: i2c_sda2
GD_GPIO_TYPE_INOUT_I2C_CLK2 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 6) | GD_GPIO_IN_SEL(2+ 4) | GD_GPIO_OUT_SEL( 0), //!< Input/Output type: i2c_scl2
GD_GPIO_TYPE_INOUT_ETH_MDIO = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(19) | GD_GPIO_IN_SEL(2+35) | GD_GPIO_OUT_SEL(49), //!< Input/Output type: enet_gmii_mdi/enet_gmii_mod_o
GD_GPIO_TYPE_INOUT_SD_DATA_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 8) | GD_GPIO_IN_SEL(2+14) | GD_GPIO_OUT_SEL(22), //!< Input/Output type: sd_data_out[0]
GD_GPIO_TYPE_INOUT_SD_DATA_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 9) | GD_GPIO_IN_SEL(2+15) | GD_GPIO_OUT_SEL(23), //!< Input/Output type: sd_data_out[1]
GD_GPIO_TYPE_INOUT_SD_DATA_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(10) | GD_GPIO_IN_SEL(2+16) | GD_GPIO_OUT_SEL(24), //!< Input/Output type: sd_data_out[2]
GD_GPIO_TYPE_INOUT_SD_DATA_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(11) | GD_GPIO_IN_SEL(2+17) | GD_GPIO_OUT_SEL(25), //!< Input/Output type: sd_data_out[3]
GD_GPIO_TYPE_INOUT_SD_DATA_4 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(12) | GD_GPIO_IN_SEL(2+18) | GD_GPIO_OUT_SEL(26), //!< Input/Output type: sd_data_out[4]
GD_GPIO_TYPE_INOUT_SD_DATA_5 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(13) | GD_GPIO_IN_SEL(2+19) | GD_GPIO_OUT_SEL(27), //!< Input/Output type: sd_data_out[5]
GD_GPIO_TYPE_INOUT_SD_DATA_6 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(14) | GD_GPIO_IN_SEL(2+20) | GD_GPIO_OUT_SEL(28), //!< Input/Output type: sd_data_out[6]
GD_GPIO_TYPE_INOUT_SD_DATA_7 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(15) | GD_GPIO_IN_SEL(2+21) | GD_GPIO_OUT_SEL(29), //!< Input/Output type: sd_data_out[7]
GD_GPIO_TYPE_INOUT_SD_CMD = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(16) | GD_GPIO_IN_SEL(2+22) | GD_GPIO_OUT_SEL(30), //!< Input/Output : sd_cmd
GD_GPIO_TYPE_UNDEFINED = 0,
} GD_GPIO_TYPE_E;
/*!
*******************************************************************************
**
** \brief Interrupt trigger types.
**
*******************************************************************************
*/
typedef enum
{
GD_GPIO_INT_TRIGGER_LOW_LEVEL, //!< Interrupt trigger on low level.
GD_GPIO_INT_TRIGGER_HIGH_LEVEL, //!< Interrupt trigger on high level.
GD_GPIO_INT_TRIGGER_RISING_EDGE, //!< Interrupt trigger on rising edge.
GD_GPIO_INT_TRIGGER_FALLING_EDGE, //!< Interrupt trigger on falling edge.
GD_GPIO_INT_TRIGGER_BOTH_EDGE //!< Interrupt trigger on both edge.
}GD_GPIO_INT_TRIGGER_E;
/*!
*******************************************************************************
**
** \brief Interrupt configuration.
**
** \sa GD_GPIO_Open()
**
*******************************************************************************
*/
typedef struct
{
/*!
** The interrupt trigger type.
*/
GD_GPIO_INT_TRIGGER_E trigger;
/*!
** Flag to enable/disable the interrupt.
*/
GBOOL enable;
/*!
** The notification function which shall be called when an interrupt
** occurs.
*/
void (*notifyFct)();
}GD_GPIO_INT_CONFIG_S;
/*!
*******************************************************************************
**
** \brief GPIO cross reference between GPIO pins and functions.
**
** \sa GD_GPIO_Init()
**
*******************************************************************************
*/
typedef struct
{
U8 pin;
GD_GPIO_TYPE_E type;
}GD_GPIO_XREF_S;
/*!
*******************************************************************************
**
** \brief Parameters for initialisation.
**
** \sa GD_GPIO_Init()
**
*******************************************************************************
*/
typedef struct
{
/*!
** General interrupt priority for all GPIO interrupts,
** either #GD_INT_LOW_PRIORITY or #GD_INT_MID_PRIORITY.
*/
S8 irqPriority;
U8 phyType;
U8 Reserve;
U16 xrefTableCount;
GD_GPIO_XREF_S* xrefTable;
}GD_GPIO_INIT_PARAMS_S;
/*
*******************************************************************************
**
** \brief Available API functions.
**
*******************************************************************************
*/
#ifdef __cplusplus
extern "C" {
#endif
GERR GD_GPIO_Init(GD_GPIO_INIT_PARAMS_S* pInitParams);
GERR GD_GPIO_Exit(void);
GERR GD_GPIO_Open(U8 number, GD_GPIO_TYPE_E type, GD_GPIO_INT_CONFIG_S* pIntConfig, GD_HANDLE* pHandle);
GERR GD_GPIO_Close(GD_HANDLE* pHandle);
GERR GD_GPIO_CloseWithType(U32 type);
GERR GD_GPIO_Read(GD_HANDLE handle, U8 *pBit);
GERR GD_GPIO_Write(GD_HANDLE handle, U8 bit);
GERR GD_GPIO_SetType(GD_HANDLE handle, GD_GPIO_TYPE_E type);
GERR GD_GPIO_DisableInterrupt(void);
GERR GD_GPIO_EnableInterrupt(void);
GERR GD_GPIO_OpenFunctionMode(GD_GPIO_TYPE_E type, GD_HANDLE* pHandle);
GERR GD_GPIO_ControlInvertData(GD_HANDLE handle, U8 modeValue);
GERR GD_GPIO_ControlInvertEnable(GD_HANDLE handle, U8 modeValue);
#ifdef __cplusplus
}
#endif
#endif